From 2a14894b1eeebc940923d7a64ce1309d5ff83a2c Mon Sep 17 00:00:00 2001 From: sunxuold <30644316+sunxuold@users.noreply.github.com> Date: Mon, 29 Mar 2021 10:29:19 +0800 Subject: [PATCH] libretro branch added add libretro support for OpenLara --- src/core.h | 35 +- src/game.h | 41 +- src/gameflow.h | 2 +- src/inventory.h | 12 + src/level.h | 4 +- src/platform/libretro/Makefile | 97 + src/platform/libretro/Makefile.common | 29 + src/platform/libretro/README.md | 22 + src/platform/libretro/jni/Android.mk | 27 + src/platform/libretro/jni/Application.mk | 3 + .../libretro/libretro-common/.gitignore | 5 + .../compat/compat_strcasestr.c | 58 + .../libretro-common/compat/compat_strl.c | 69 + .../libretro-common/encodings/encoding_utf.c | 522 +++ .../libretro/libretro-common/file/file_path.c | 1218 +++++++ .../libretro/libretro-common/glsym/README.md | 12 + .../libretro/libretro-common/glsym/glgen.py | 158 + .../libretro-common/glsym/glsym_es2.c | 410 +++ .../libretro-common/glsym/glsym_es3.c | 414 +++ .../libretro/libretro-common/glsym/glsym_gl.c | 2542 +++++++++++++ .../libretro/libretro-common/glsym/rglgen.c | 43 + .../libretro/libretro-common/glsym/rglgen.py | 151 + .../libretro/libretro-common/glsym/xglgen.py | 159 + .../libretro-common/include/boolean.h | 39 + .../include/compat/posix_string.h | 61 + .../include/compat/strcasestr.h | 49 + .../libretro-common/include/compat/strl.h | 60 + .../libretro-common/include/encodings/utf.h | 67 + .../libretro-common/include/file/file_path.h | 495 +++ .../libretro-common/include/glsym/glsym.h | 42 + .../libretro-common/include/glsym/glsym_es2.h | 639 ++++ .../libretro-common/include/glsym/glsym_es3.h | 650 ++++ .../libretro-common/include/glsym/glsym_gl.h | 3140 +++++++++++++++++ .../libretro-common/include/glsym/rglgen.h | 47 + .../include/glsym/rglgen_headers.h | 87 + .../libretro-common/include/libretro.h | 2752 +++++++++++++++ .../libretro-common/include/retro_assert.h | 36 + .../include/retro_common_api.h | 118 + .../libretro-common/include/retro_inline.h | 39 + .../include/retro_miscellaneous.h | 172 + .../include/string/stdstring.h | 140 + src/platform/libretro/libretro_core_options.h | 308 ++ src/platform/libretro/link.T | 5 + src/platform/libretro/main.cpp | 816 +++++ src/savegame.h | 1 - src/ui.h | 2 +- src/utils.h | 2 +- 47 files changed, 15777 insertions(+), 23 deletions(-) create mode 100644 src/platform/libretro/Makefile create mode 100644 src/platform/libretro/Makefile.common create mode 100644 src/platform/libretro/README.md create mode 100644 src/platform/libretro/jni/Android.mk create mode 100644 src/platform/libretro/jni/Application.mk create mode 100644 src/platform/libretro/libretro-common/.gitignore create mode 100644 src/platform/libretro/libretro-common/compat/compat_strcasestr.c create mode 100644 src/platform/libretro/libretro-common/compat/compat_strl.c create mode 100644 src/platform/libretro/libretro-common/encodings/encoding_utf.c create mode 100644 src/platform/libretro/libretro-common/file/file_path.c create mode 100644 src/platform/libretro/libretro-common/glsym/README.md create mode 100644 src/platform/libretro/libretro-common/glsym/glgen.py create mode 100644 src/platform/libretro/libretro-common/glsym/glsym_es2.c create mode 100644 src/platform/libretro/libretro-common/glsym/glsym_es3.c create mode 100644 src/platform/libretro/libretro-common/glsym/glsym_gl.c create mode 100644 src/platform/libretro/libretro-common/glsym/rglgen.c create mode 100644 src/platform/libretro/libretro-common/glsym/rglgen.py create mode 100644 src/platform/libretro/libretro-common/glsym/xglgen.py create mode 100644 src/platform/libretro/libretro-common/include/boolean.h create mode 100644 src/platform/libretro/libretro-common/include/compat/posix_string.h create mode 100644 src/platform/libretro/libretro-common/include/compat/strcasestr.h create mode 100644 src/platform/libretro/libretro-common/include/compat/strl.h create mode 100644 src/platform/libretro/libretro-common/include/encodings/utf.h create mode 100644 src/platform/libretro/libretro-common/include/file/file_path.h create mode 100644 src/platform/libretro/libretro-common/include/glsym/glsym.h create mode 100644 src/platform/libretro/libretro-common/include/glsym/glsym_es2.h create mode 100644 src/platform/libretro/libretro-common/include/glsym/glsym_es3.h create mode 100644 src/platform/libretro/libretro-common/include/glsym/glsym_gl.h create mode 100644 src/platform/libretro/libretro-common/include/glsym/rglgen.h create mode 100644 src/platform/libretro/libretro-common/include/glsym/rglgen_headers.h create mode 100644 src/platform/libretro/libretro-common/include/libretro.h create mode 100644 src/platform/libretro/libretro-common/include/retro_assert.h create mode 100644 src/platform/libretro/libretro-common/include/retro_common_api.h create mode 100644 src/platform/libretro/libretro-common/include/retro_inline.h create mode 100644 src/platform/libretro/libretro-common/include/retro_miscellaneous.h create mode 100644 src/platform/libretro/libretro-common/include/string/stdstring.h create mode 100644 src/platform/libretro/libretro_core_options.h create mode 100644 src/platform/libretro/link.T create mode 100644 src/platform/libretro/main.cpp diff --git a/src/core.h b/src/core.h index b5f43d71..b1f93ba9 100644 --- a/src/core.h +++ b/src/core.h @@ -13,6 +13,11 @@ #define USE_CUBEMAP_MIPS + + + + + #ifdef __UWP__ #define _OS_UWP 1 #define _GAPI_D3D11 1 @@ -24,7 +29,16 @@ #undef OS_PTHREAD_MT #elif WIN32 #define _OS_WIN 1 - #define _GAPI_GL 1 + + #ifdef __LIBRETRO__ + #define _GAPI_GL 1 + #ifdef __LIBRETRO_GLES__ + #define _GAPI_GLES 1 + #endif + #else + #define _GAPI_GL 1 + #endif + //#define _GAPI_GL 1 //#define _GAPI_D3D9 1 //#define _GAPI_D3D11 1 //#define _GAPI_VULKAN 1 @@ -43,7 +57,6 @@ #define _OS_ANDROID 1 #define _GAPI_GL 1 #define _GAPI_GLES 1 - //#define _GAPI_VULKAN #define VR_SUPPORT #elif __SDL2__ @@ -86,6 +99,7 @@ #elif __linux__ #define _OS_LINUX 1 #define _GAPI_GL 1 + #define _GAPI_GLES 1 //sunxu?? #elif __APPLE__ #define _GAPI_GL 1 #include "TargetConditionals.h" @@ -714,7 +728,9 @@ namespace Core { void stop() { if (fpsTime < Core::getTime()) { +#ifndef __LIBRETRO__ LOG("FPS: %d DIP: %d TRI: %d RT: %d\n", fps, dips, tris, rt); +#endif #ifdef PROFILE LOG("frame time: %d mcs\n", tFrame / 1000); LOG("sound: mix %d rev %d ren %d/%d ogg %d\n", Sound::stats.mixer, Sound::stats.reverb, Sound::stats.render[0], Sound::stats.render[1], Sound::stats.ogg); @@ -735,6 +751,8 @@ namespace Core { #include "gapi/sw.h" #elif _GAPI_GL #include "gapi/gl.h" +#elif _GAPI_GLES + #include "gapi/gl.h" #elif _GAPI_D3D8 #include "gapi/d3d8.h" #elif _GAPI_D3D9 @@ -894,10 +912,10 @@ namespace Core { // init settings settings.version = SETTINGS_VERSION; - settings.detail.setFilter (Core::Settings::HIGH); - settings.detail.setLighting (Core::Settings::HIGH); - settings.detail.setShadows (Core::Settings::HIGH); - settings.detail.setWater (Core::Settings::HIGH); + settings.detail.setFilter (Core::Settings::MEDIUM); + settings.detail.setLighting (Core::Settings::MEDIUM); + settings.detail.setShadows (Core::Settings::MEDIUM); + settings.detail.setWater (Core::Settings::MEDIUM); settings.detail.simple = false; settings.detail.vsync = true; settings.detail.stereo = Settings::STEREO_OFF; @@ -961,6 +979,11 @@ namespace Core { settings.controls[0].keys[ cAction ].key = ikS; #endif +#ifdef __LIBRETRO__ + settings.controls[0].keys[ cInventory ].key = ikTab; + settings.controls[0].keys[ cStart ].key = ikEnter; + settings.detail.vsync = false; +#endif // use D key for jump in browsers #ifdef _OS_WEB settings.controls[0].keys[ cJump ].key = ikD; diff --git a/src/game.h b/src/game.h index dd0c3ae7..52c8066b 100644 --- a/src/game.h +++ b/src/game.h @@ -227,6 +227,7 @@ namespace Game { if (!level || TR::isTitleLevel(level->level.id) || TR::isCutsceneLevel(level->level.id)) { return; } + printf("quickSave level->level.id :%d \n", level->level.id); level->saveGame(level->level.id, true, false); } @@ -234,7 +235,9 @@ namespace Game { if (!level) return; int slot = getSaveSlot(level->level.id, true); - + + printf("quickLoad slot :%d \n", slot); + if (slot == -1) { slot = getSaveSlot(level->level.id, false); } @@ -261,8 +264,11 @@ namespace Game { PROFILE_MARKER("UPDATE"); + +#ifndef __LIBRETRO__ if (!Core::update()) return false; +#endif float delta = Core::deltaTime; @@ -289,16 +295,29 @@ namespace Game { } #endif - if (Input::down[ik5] && !inventory->isActive()) { - if (level->players[0]->canSaveGame()) - quickSave(); - Input::down[ik5] = false; - } - - if (Input::down[ik9] && !inventory->isActive()) { - quickLoad(); - Input::down[ik9] = false; - } + if (Input::down[ik5]) + { + printf("get ik5 input \n"); + if( !inventory->isActive()) { + printf("inventory->isActive() \n"); + if (level->players[0]->canSaveGame()) + { + printf("quickSave \n"); + quickSave(); + } + Input::down[ik5] = false; + } + } + + if (Input::down[ik9]) + { + printf("get ik9 input \n"); + if(!inventory->isActive()) { + printf("quickSave \n"); + quickLoad(); + } + Input::down[ik9] = false; + } if (!level->level.isCutsceneLevel()) delta = min(0.2f, delta); diff --git a/src/gameflow.h b/src/gameflow.h index 5eab3e94..bd85042d 100644 --- a/src/gameflow.h +++ b/src/gameflow.h @@ -1421,7 +1421,7 @@ namespace TR { CHECK_FILE("data/TITLE.PCX"); // PC CHECK_FILE("pix/title.pcx"); // PC CHECK_FILE("PIXUS/TITLEUS.RAW"); // PSX US - CHECK_FILE("PIXJAP/TITLEJAP.RAW"); // PSX US + //CHECK_FILE("PIXJAP/TITLEJAP.RAW"); // PSX US return "level/2/TITLEUS.PNG"; // WEB case LVL_TR2_ASSAULT : case LVL_TR2_HOUSE : diff --git a/src/inventory.h b/src/inventory.h index 310a844a..2b676e68 100644 --- a/src/inventory.h +++ b/src/inventory.h @@ -167,8 +167,12 @@ static const OptionItem optDetail[] = { OptionItem( OptionItem::TYPE_PARAM, STR_OPT_SIMPLE_ITEMS, SETTINGS( detail.simple ), STR_OFF, 0, 1 ), #ifdef INV_QUALITY OptionItem( OptionItem::TYPE_PARAM, STR_OPT_RESOLUTION, SETTINGS( detail.scale ), STR_SCALE_100, 0, 3 ), + +#if !defined(__LIBRETRO__) OptionItem( OptionItem::TYPE_PARAM, STR_OPT_DETAIL_VSYNC, SETTINGS( detail.vsync ), STR_OFF, 0, 1 ), #endif + +#endif #ifdef INV_STEREO OptionItem( OptionItem::TYPE_PARAM, STR_OPT_DETAIL_STEREO, SETTINGS( detail.stereo ), STR_NO_STEREO, 0, #if defined(_OS_WIN) || defined(_OS_ANDROID) @@ -209,8 +213,12 @@ static const OptionItem optControls[] = { #ifdef INV_GAMEPAD_ONLY OptionItem( OptionItem::TYPE_PARAM, STR_EMPTY , SETTINGS( ctrlIndex ), STR_OPT_CONTROLS_KEYBOARD, 0, 0xFF ), #else + #ifndef __LIBRETRO__ OptionItem( OptionItem::TYPE_PARAM, STR_EMPTY , SETTINGS( ctrlIndex ), STR_OPT_CONTROLS_KEYBOARD, 0, 1 ), + #endif #endif + +#ifndef __LIBRETRO__ OptionItem( OptionItem::TYPE_KEY, STR_CTRL_FIRST + cUp , SETTINGS( controls[0].keys[ cUp ] ), STR_KEY_FIRST ), OptionItem( OptionItem::TYPE_KEY, STR_CTRL_FIRST + cDown , SETTINGS( controls[0].keys[ cDown ] ), STR_KEY_FIRST ), OptionItem( OptionItem::TYPE_KEY, STR_CTRL_FIRST + cRight , SETTINGS( controls[0].keys[ cRight ] ), STR_KEY_FIRST ), @@ -227,6 +235,8 @@ static const OptionItem optControls[] = { OptionItem( OptionItem::TYPE_KEY, STR_CTRL_FIRST + cRoll , SETTINGS( controls[0].keys[ cRoll ] ), STR_KEY_FIRST ), OptionItem( OptionItem::TYPE_KEY, STR_CTRL_FIRST + cInventory , SETTINGS( controls[0].keys[ cInventory ] ), STR_KEY_FIRST ), OptionItem( OptionItem::TYPE_KEY, STR_CTRL_FIRST + cStart , SETTINGS( controls[0].keys[ cStart ] ), STR_KEY_FIRST ), +#endif + }; static OptionItem optControlsPlayer[COUNT(optControls)]; @@ -2092,6 +2102,7 @@ struct Inventory { } // inventory controls help +#ifndef __LIBRETRO__ if (page == targetPage && Input::touchTimerVis <= 0.0f) { float dx = 32.0f; char buf[64]; @@ -2110,6 +2121,7 @@ struct Inventory { UI::textOut(vec2(eye, 480 - 64), buf, UI::aRight, UI::width - dx); } } +#endif if (index == targetIndex && page == targetPage) { renderItemText(items[getGlobalIndex(page, index)]); diff --git a/src/level.h b/src/level.h index 42dbd50a..a439a889 100644 --- a/src/level.h +++ b/src/level.h @@ -200,7 +200,7 @@ struct Level : IGame { } slot.size = int32(ptr - slot.data); - + printf("createSaveSlot size is %d \n", slot.size); return slot; } @@ -285,7 +285,7 @@ struct Level : IGame { UI::showHint(STR_HINT_SAVING_ERROR, 3.0f); } } - + virtual void saveGame(TR::LevelID id, bool checkpoint, bool updateStats) { ASSERT(saveResult != SAVE_RESULT_WAIT); diff --git a/src/platform/libretro/Makefile b/src/platform/libretro/Makefile new file mode 100644 index 00000000..fb59e7d1 --- /dev/null +++ b/src/platform/libretro/Makefile @@ -0,0 +1,97 @@ +platform = unix +GLES := 1 +# system platform +system_platform = unix + +TARGET_NAME = openlara + +CORE_DIR := . + +TARGET := $(TARGET_NAME)_libretro.so +fpic := -fPIC +SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined + +GL_LIB := -lGLESv2 +GLES := 1 +GLES31 :=1 +LIBS += -lpthread + +CXXFLAGS += -I. +CFLAGS += -I. +CXXFLAGS += -I.. +CFLAGS += -I.. + + +CXXFLAGS += -DARM +CFLAGS += -DARM + +CXXFLAGS += -I/opt/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/include +CFLAGS += -I/opt/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/include +LIBS += --sysroot=/opt/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu + +CC = /opt/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc +CXX = /opt/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++ + +ifeq ($(DEBUG), 1) + CXXFLAGS += -O0 -g + CFLAGS += -O0 -g +else + CXXFLAGS += -Ofast -mcpu=cortex-a35 -ffast-math -Wall -fomit-frame-pointer + CFLAGS += -Ofast -mcpu=cortex-a35 -ffast-math -Wall -fomit-frame-pointer +endif + + +CFLAGS += -std=c99 + +include Makefile.common + +OBJECTS := $(SOURCES_C:.c=.o) $(SOURCES_CXX:.cpp=.o) +CXXFLAGS += $(fpic) +CFLAGS += -Wall -pedantic $(fpic) + +CXXFLAGS += -std=c++11 +CFLAGS += $(INCFLAGS) $(FLAGS) +CXXFLAGS += $(INCFLAGS) $(FLAGS) + +ifeq ($(GLES), 1) + CXXFLAGS += -DHAVE_OPENGLES -DHAVE_OPENGLES2 + CFLAGS += -DHAVE_OPENGLES -DHAVE_OPENGLES2 + CXXFLAGS += -D__LIBRETRO_GLES__ + CFLAGS += -D__LIBRETRO_GLES__ + ifeq ($(GLES31), 1) + CXXFLAGS += -DHAVE_OPENGLES3 -DHAVE_OPENGLES_3_1 + CFLAGS += -DHAVE_OPENGLES3 -DHAVE_OPENGLES_3_1 + else ifeq ($(GLES3), 1) + CXXFLAGS += -DHAVE_OPENGLES3 + CFLAGS += -DHAVE_OPENGLES3 + endif + LIBS += -lGLESv2 # Still link against GLESv2 when using GLES3 API, at least on desktop Linux. +# LIBS += -lEGL +else + LIBS += $(GL_LIB) +endif + +ifeq ($(CORE), 1) + CXXFLAGS += -DCORE + CFLAGS += -DCORE +endif + +CXXFLAGS += -D__LIBRETRO__ +CFLAGS += -D__LIBRETRO__ + +all: $(TARGET) + +$(TARGET): $(OBJECTS) + $(CXX) $(LDFLAGS) $(fpic) $(SHARED) $(INCLUDES) -o $@ $(OBJECTS) $(LIBS) -lm $(EXTRA_GL_LIBS) + +%.o: %.cpp + $(CXX) $(CXXFLAGS) $(fpic) -c -o $@ $< + +%.o: %.c + $(CC) $(CFLAGS) $(fpic) -c -o $@ $< + +clean: + rm -f $(OBJECTS) $(TARGET) + +.PHONY: clean + diff --git a/src/platform/libretro/Makefile.common b/src/platform/libretro/Makefile.common new file mode 100644 index 00000000..37b11089 --- /dev/null +++ b/src/platform/libretro/Makefile.common @@ -0,0 +1,29 @@ +LIBRETRO_COMM_DIR := $(CORE_DIR)/libretro-common + +INCFLAGS := -I$(CORE_DIR) \ + -I$(CORE_DIR)/../.. \ + -I$(LIBRETRO_COMM_DIR)/include \ + -I$(LIBRETRO_COMM_DIR)/glsym + + +LIBS_DIR := $(CORE_DIR)/../../libs +SOURCES_C := $(LIBRETRO_COMM_DIR)/glsym/rglgen.c \ + $(LIBS_DIR)/stb_vorbis/stb_vorbis.c \ + $(LIBS_DIR)/tinf/tinflate.c \ + $(LIBRETRO_COMM_DIR)/compat/compat_strl.c \ + $(LIBRETRO_COMM_DIR)/compat/compat_strcasestr.c \ + $(LIBRETRO_COMM_DIR)/file/file_path.c \ + $(LIBRETRO_COMM_DIR)/encodings/encoding_utf.c + +ifeq ($(GLES), 1) +ifeq ($(GLES3), 1) +SOURCES_C += $(LIBRETRO_COMM_DIR)/glsym/glsym_es3.c +else +SOURCES_C += $(LIBRETRO_COMM_DIR)/glsym/glsym_es2.c +endif +else +SOURCES_C += $(LIBRETRO_COMM_DIR)/glsym/glsym_gl.c +endif + +SOURCES_CXX := $(CORE_DIR)/main.cpp \ + $(LIBS_DIR)/minimp3/minimp3.cpp diff --git a/src/platform/libretro/README.md b/src/platform/libretro/README.md new file mode 100644 index 00000000..3f434a7c --- /dev/null +++ b/src/platform/libretro/README.md @@ -0,0 +1,22 @@ +# libretro_test_gl_shaders +This sample demonstrates a libretro core using programmable pipeline OpenGL (GL 2.0 and later / OpenGL ES 2.0). It works on both desktop (OpenGL 2.0 and later) and mobile (OpenGL ES 2.0 and later) + +## Requirements +On the desktop - A graphics card driver supporting OpenGL 2.0 and/or higher. + +On mobile - A graphics card driver supporting OpenGLES 2.0 and/or higher. + +## Programming language +C + +## Building +To compile, you will need a C compiler and assorted toolchain installed. + + make + +This targets [libretro](http://libretro.com) GL interface, so you need a libretro frontend supporting this interface, such as [RetroArch](https://github.com/libretro/RetroArch), installed. + +## Running +After building, this command should run the program: + + retroarch -L testgl_libretro.so diff --git a/src/platform/libretro/jni/Android.mk b/src/platform/libretro/jni/Android.mk new file mode 100644 index 00000000..b32552c2 --- /dev/null +++ b/src/platform/libretro/jni/Android.mk @@ -0,0 +1,27 @@ +LOCAL_PATH := $(call my-dir) + +CORE_DIR := $(LOCAL_PATH)/.. + +GLES := 1 +GLES3 := 1 + +include $(CORE_DIR)/Makefile.common + +COREFLAGS := -Wall -ffast-math -DHAVE_OPENGLES -D__LIBRETRO__ $(INCFLAGS) + +ifeq ($(GLES3),1) + COREFLAGS += -DHAVE_OPENGLES3 + GLES_LIB := -lGLESv3 +else ifeq ($(GLES),1) + COREFLAGS += -DHAVE_OPENGLES2 + GLES_LIB := -lGLESv2 +endif + +include $(CLEAR_VARS) +LOCAL_MODULE := retro +LOCAL_SRC_FILES := $(SOURCES_C) $(SOURCES_CXX) +LOCAL_CXXFLAGS := -std=c++11 $(COREFLAGS) +LOCAL_CFLAGS := $(COREFLAGS) +LOCAL_LDFLAGS := -Wl,-version-script=$(CORE_DIR)/link.T +LOCAL_LDLIBS := $(GLES_LIB) +include $(BUILD_SHARED_LIBRARY) diff --git a/src/platform/libretro/jni/Application.mk b/src/platform/libretro/jni/Application.mk new file mode 100644 index 00000000..9e4cb46a --- /dev/null +++ b/src/platform/libretro/jni/Application.mk @@ -0,0 +1,3 @@ +APP_ABI := all +APP_PLATFORM := android-18 + diff --git a/src/platform/libretro/libretro-common/.gitignore b/src/platform/libretro/libretro-common/.gitignore new file mode 100644 index 00000000..6467048e --- /dev/null +++ b/src/platform/libretro/libretro-common/.gitignore @@ -0,0 +1,5 @@ +*.dll +*.exe +*.c~ +*.un~ +*.o diff --git a/src/platform/libretro/libretro-common/compat/compat_strcasestr.c b/src/platform/libretro/libretro-common/compat/compat_strcasestr.c new file mode 100644 index 00000000..54c93a48 --- /dev/null +++ b/src/platform/libretro/libretro-common/compat/compat_strcasestr.c @@ -0,0 +1,58 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (compat_strcasestr.c). + * --------------------------------------------------------------------------------------- + * + * 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. + */ + +#include + +#include + +/* Pretty much strncasecmp. */ +static int casencmp(const char *a, const char *b, size_t n) +{ + size_t i; + + for (i = 0; i < n; i++) + { + int a_lower = tolower(a[i]); + int b_lower = tolower(b[i]); + if (a_lower != b_lower) + return a_lower - b_lower; + } + + return 0; +} + +char *strcasestr_retro__(const char *haystack, const char *needle) +{ + size_t i, search_off; + size_t hay_len = strlen(haystack); + size_t needle_len = strlen(needle); + + if (needle_len > hay_len) + return NULL; + + search_off = hay_len - needle_len; + for (i = 0; i <= search_off; i++) + if (!casencmp(haystack + i, needle, needle_len)) + return (char*)haystack + i; + + return NULL; +} diff --git a/src/platform/libretro/libretro-common/compat/compat_strl.c b/src/platform/libretro/libretro-common/compat/compat_strl.c new file mode 100644 index 00000000..94cb39b6 --- /dev/null +++ b/src/platform/libretro/libretro-common/compat/compat_strl.c @@ -0,0 +1,69 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (compat_strl.c). + * --------------------------------------------------------------------------------------- + * + * 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. + */ + +#include +#include + +#include + +/* Implementation of strlcpy()/strlcat() based on OpenBSD. */ + +#ifndef __MACH__ + +size_t strlcpy(char *dest, const char *source, size_t size) +{ + size_t src_size = 0; + size_t n = size; + + if (n) + while (--n && (*dest++ = *source++)) src_size++; + + if (!n) + { + if (size) *dest = '\0'; + while (*source++) src_size++; + } + + return src_size; +} + +size_t strlcat(char *dest, const char *source, size_t size) +{ + size_t len = strlen(dest); + + dest += len; + + if (len > size) + size = 0; + else + size -= len; + + return len + strlcpy(dest, source, size); +} +#endif + +char *strldup(const char *s, size_t n) +{ + char *dst = (char*)malloc(sizeof(char) * (n + 1)); + strlcpy(dst, s, n); + return dst; +} diff --git a/src/platform/libretro/libretro-common/encodings/encoding_utf.c b/src/platform/libretro/libretro-common/encodings/encoding_utf.c new file mode 100644 index 00000000..2852fa10 --- /dev/null +++ b/src/platform/libretro/libretro-common/encodings/encoding_utf.c @@ -0,0 +1,522 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (encoding_utf.c). + * --------------------------------------------------------------------------------------- + * + * 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. + */ + +#ifdef __STDC_ALLOC_LIB__ +#define __STDC_WANT_LIB_EXT2__ 1 +#else +#define _POSIX_C_SOURCE 200809L +#endif + +#include +#include +#include +#include + +#include +#include +#include + +#include + +#if defined(_WIN32) && !defined(_XBOX) +#include +#elif defined(_XBOX) +#include +#endif + +static unsigned leading_ones(uint8_t c) +{ + unsigned ones = 0; + while (c & 0x80) + { + ones++; + c <<= 1; + } + + return ones; +} + +/* Simple implementation. Assumes the sequence is + * properly synchronized and terminated. */ + +size_t utf8_conv_utf32(uint32_t *out, size_t out_chars, + const char *in, size_t in_size) +{ + unsigned i; + size_t ret = 0; + while (in_size && out_chars) + { + unsigned extra, shift; + uint32_t c; + uint8_t first = *in++; + unsigned ones = leading_ones(first); + + if (ones > 6 || ones == 1) /* Invalid or desync. */ + break; + + extra = ones ? ones - 1 : ones; + if (1 + extra > in_size) /* Overflow. */ + break; + + shift = (extra - 1) * 6; + c = (first & ((1 << (7 - ones)) - 1)) << (6 * extra); + + for (i = 0; i < extra; i++, in++, shift -= 6) + c |= (*in & 0x3f) << shift; + + *out++ = c; + in_size -= 1 + extra; + out_chars--; + ret++; + } + + return ret; +} + +bool utf16_conv_utf8(uint8_t *out, size_t *out_chars, + const uint16_t *in, size_t in_size) +{ + static uint8_t kUtf8Limits[5] = { 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; + size_t out_pos = 0; + size_t in_pos = 0; + + for (;;) + { + unsigned numAdds; + uint32_t value; + + if (in_pos == in_size) + { + *out_chars = out_pos; + return true; + } + value = in[in_pos++]; + if (value < 0x80) + { + if (out) + out[out_pos] = (char)value; + out_pos++; + continue; + } + + if (value >= 0xD800 && value < 0xE000) + { + uint32_t c2; + + if (value >= 0xDC00 || in_pos == in_size) + break; + c2 = in[in_pos++]; + if (c2 < 0xDC00 || c2 >= 0xE000) + break; + value = (((value - 0xD800) << 10) | (c2 - 0xDC00)) + 0x10000; + } + + for (numAdds = 1; numAdds < 5; numAdds++) + if (value < (((uint32_t)1) << (numAdds * 5 + 6))) + break; + if (out) + out[out_pos] = (char)(kUtf8Limits[numAdds - 1] + + (value >> (6 * numAdds))); + out_pos++; + do + { + numAdds--; + if (out) + out[out_pos] = (char)(0x80 + + ((value >> (6 * numAdds)) & 0x3F)); + out_pos++; + }while (numAdds != 0); + } + + *out_chars = out_pos; + return false; +} + +/* Acts mostly like strlcpy. + * + * Copies the given number of UTF-8 characters, + * but at most d_len bytes. + * + * Always NULL terminates. + * Does not copy half a character. + * + * Returns number of bytes. 's' is assumed valid UTF-8. + * Use only if 'chars' is considerably less than 'd_len'. */ +size_t utf8cpy(char *d, size_t d_len, const char *s, size_t chars) +{ + const uint8_t *sb = (const uint8_t*)s; + const uint8_t *sb_org = sb; + + if (!s) + return 0; + + while (*sb && chars-- > 0) + { + sb++; + while ((*sb & 0xC0) == 0x80) sb++; + } + + if ((size_t)(sb - sb_org) > d_len-1 /* NUL */) + { + sb = sb_org + d_len-1; + while ((*sb & 0xC0) == 0x80) sb--; + } + + memcpy(d, sb_org, sb-sb_org); + d[sb-sb_org] = '\0'; + + return sb-sb_org; +} + +const char *utf8skip(const char *str, size_t chars) +{ + const uint8_t *strb = (const uint8_t*)str; + if (!chars) + return str; + do + { + strb++; + while ((*strb & 0xC0)==0x80) strb++; + chars--; + } while(chars); + return (const char*)strb; +} + +size_t utf8len(const char *string) +{ + size_t ret = 0; + + if (!string) + return 0; + + while (*string) + { + if ((*string & 0xC0) != 0x80) + ret++; + string++; + } + return ret; +} + +static uint8_t utf8_walkbyte(const char **string) +{ + return *((*string)++); +} + +/* Does not validate the input, returns garbage if it's not UTF-8. */ +uint32_t utf8_walk(const char **string) +{ + uint8_t first = utf8_walkbyte(string); + uint32_t ret = 0; + + if (first < 128) + return first; + + ret = (ret << 6) | (utf8_walkbyte(string) & 0x3F); + if (first >= 0xE0) + ret = (ret << 6) | (utf8_walkbyte(string) & 0x3F); + if (first >= 0xF0) + ret = (ret << 6) | (utf8_walkbyte(string) & 0x3F); + + if (first >= 0xF0) + return ret | (first & 7) << 18; + if (first >= 0xE0) + return ret | (first & 15) << 12; + return ret | (first & 31) << 6; +} + +static bool utf16_to_char(uint8_t **utf_data, + size_t *dest_len, const uint16_t *in) +{ + unsigned len = 0; + + while (in[len] != '\0') + len++; + + utf16_conv_utf8(NULL, dest_len, in, len); + *dest_len += 1; + *utf_data = (uint8_t*)malloc(*dest_len); + if (*utf_data == 0) + return false; + + return utf16_conv_utf8(*utf_data, dest_len, in, len); +} + +bool utf16_to_char_string(const uint16_t *in, char *s, size_t len) +{ + size_t dest_len = 0; + uint8_t *utf16_data = NULL; + bool ret = utf16_to_char(&utf16_data, &dest_len, in); + + if (ret) + { + utf16_data[dest_len] = 0; + strlcpy(s, (const char*)utf16_data, len); + } + + free(utf16_data); + utf16_data = NULL; + + return ret; +} + +/* Returned pointer MUST be freed by the caller if non-NULL. */ +static char* mb_to_mb_string_alloc(const char *str, + enum CodePage cp_in, enum CodePage cp_out) +{ + char *path_buf = NULL; + wchar_t *path_buf_wide = NULL; + int path_buf_len = 0; + int path_buf_wide_len = 0; + + if (!str || !*str) + return NULL; + + (void)path_buf; + (void)path_buf_wide; + (void)path_buf_len; + (void)path_buf_wide_len; + +#if !defined(_WIN32) || defined(_XBOX) + /* assume string needs no modification if not on Windows */ + return strdup(str); +#else +#ifdef UNICODE + /* TODO/FIXME: Not implemented. */ + return strdup(str); +#else + + /* Windows 95 will return 0 from these functions with a UTF8 codepage set without MSLU. From an unknown MSDN version (others omit this info): + * - CP_UTF8 Windows 98/Me, Windows NT 4.0 and later: Translate using UTF-8. When this is set, dwFlags must be zero. + * - Windows 95: Under the Microsoft Layer for Unicode, MultiByteToWideChar also supports CP_UTF7 and CP_UTF8. + */ + path_buf_wide_len = MultiByteToWideChar(cp_in, 0, str, -1, NULL, 0); + + if (path_buf_wide_len) + { + path_buf_wide = (wchar_t*) + calloc(path_buf_wide_len + sizeof(wchar_t), sizeof(wchar_t)); + + if (path_buf_wide) + { + MultiByteToWideChar(cp_in, 0, + str, -1, path_buf_wide, path_buf_wide_len); + + if (*path_buf_wide) + { + path_buf_len = WideCharToMultiByte(cp_out, 0, + path_buf_wide, -1, NULL, 0, NULL, NULL); + + if (path_buf_len) + { + path_buf = (char*) + calloc(path_buf_len + sizeof(char), sizeof(char)); + + if (path_buf) + { + WideCharToMultiByte(cp_out, 0, + path_buf_wide, -1, path_buf, + path_buf_len, NULL, NULL); + + free(path_buf_wide); + + if (*path_buf) + return path_buf; + + free(path_buf); + return NULL; + } + } + else + { + free(path_buf_wide); + return strdup(str); + } + } + } + } + else + return strdup(str); + + if (path_buf_wide) + free(path_buf_wide); + + return NULL; +#endif +#endif +} + +/* Returned pointer MUST be freed by the caller if non-NULL. */ +char* utf8_to_local_string_alloc(const char *str) +{ + return mb_to_mb_string_alloc(str, CODEPAGE_UTF8, CODEPAGE_LOCAL); +} + +/* Returned pointer MUST be freed by the caller if non-NULL. */ +char* local_to_utf8_string_alloc(const char *str) +{ + return mb_to_mb_string_alloc(str, CODEPAGE_LOCAL, CODEPAGE_UTF8); +} + +/* Returned pointer MUST be freed by the caller if non-NULL. */ +wchar_t* utf8_to_utf16_string_alloc(const char *str) +{ +#ifdef _WIN32 + int len = 0; + int out_len = 0; +#else + size_t len = 0; + size_t out_len = 0; +#endif + wchar_t *buf = NULL; + + if (!str || !*str) + return NULL; + +#ifdef _WIN32 + len = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0); + + if (len) + { + buf = (wchar_t*)calloc(len, sizeof(wchar_t)); + + if (!buf) + return NULL; + + out_len = MultiByteToWideChar(CP_UTF8, 0, str, -1, buf, len); + } + else + { + /* fallback to ANSI codepage instead */ + len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); + + if (len) + { + buf = (wchar_t*)calloc(len, sizeof(wchar_t)); + + if (!buf) + return NULL; + + out_len = MultiByteToWideChar(CP_ACP, 0, str, -1, buf, len); + } + } + + if (out_len < 0) + { + free(buf); + return NULL; + } +#else + /* NOTE: For now, assume non-Windows platforms' locale is already UTF-8. */ + len = mbstowcs(NULL, str, 0) + 1; + + if (len) + { + buf = (wchar_t*)calloc(len, sizeof(wchar_t)); + + if (!buf) + return NULL; + + out_len = mbstowcs(buf, str, len); + } + + if (out_len == (size_t)-1) + { + free(buf); + return NULL; + } +#endif + + return buf; +} + +/* Returned pointer MUST be freed by the caller if non-NULL. */ +char* utf16_to_utf8_string_alloc(const wchar_t *str) +{ +#ifdef _WIN32 + int len = 0; + int out_len = 0; +#else + size_t len = 0; + size_t out_len = 0; +#endif + char *buf = NULL; + + if (!str || !*str) + return NULL; + +#ifdef _WIN32 + len = WideCharToMultiByte(CP_UTF8, 0, str, -1, NULL, 0, NULL, NULL); + + if (len) + { + buf = (char*)calloc(len, sizeof(char)); + + if (!buf) + return NULL; + + out_len = WideCharToMultiByte(CP_UTF8, 0, str, -1, buf, len, NULL, NULL); + } + else + { + /* fallback to ANSI codepage instead */ + len = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL); + + if (len) + { + buf = (char*)calloc(len, sizeof(char)); + + if (!buf) + return NULL; + + out_len = WideCharToMultiByte(CP_ACP, 0, str, -1, buf, len, NULL, NULL); + } + } + + if (out_len < 0) + { + free(buf); + return NULL; + } +#else + /* NOTE: For now, assume non-Windows platforms' locale is already UTF-8. */ + len = wcstombs(NULL, str, 0) + 1; + + if (len) + { + buf = (char*)calloc(len, sizeof(char)); + + if (!buf) + return NULL; + + out_len = wcstombs(buf, str, len); + } + + if (out_len == (size_t)-1) + { + free(buf); + return NULL; + } +#endif + + return buf; +} diff --git a/src/platform/libretro/libretro-common/file/file_path.c b/src/platform/libretro/libretro-common/file/file_path.c new file mode 100644 index 00000000..df950e67 --- /dev/null +++ b/src/platform/libretro/libretro-common/file/file_path.c @@ -0,0 +1,1218 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (file_path.c). + * --------------------------------------------------------------------------------------- + * + * 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. + */ + +#ifdef __STDC_ALLOC_LIB__ +#define __STDC_WANT_LIB_EXT2__ 1 +#else +#define _POSIX_C_SOURCE 200809L +#endif + +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + +#ifdef __APPLE__ +#include +#endif +#ifdef __HAIKU__ +#include +#endif +#ifndef __MACH__ +#include +#include +#endif +#include +#include +#include + +#if defined(_WIN32) +#ifdef _MSC_VER +#define setmode _setmode +#endif +#include +#ifdef _XBOX +#include +#define INVALID_FILE_ATTRIBUTES -1 +#else +#include +#include +#include +#include +#if defined(_MSC_VER) && _MSC_VER <= 1200 +#define INVALID_FILE_ATTRIBUTES ((DWORD)-1) +#endif +#endif +#elif defined(VITA) +#define SCE_ERROR_ERRNO_EEXIST 0x80010011 +#include +#include +#include +#else +#include +#include +#include +#endif + +#if defined(PSP) +#include +#endif + +#if defined(__CELLOS_LV2__) +#include +#endif + +#if defined(VITA) +#define FIO_S_ISDIR SCE_S_ISDIR +#endif + +#if (defined(__CELLOS_LV2__) && !defined(__PSL1GHT__)) || defined(__QNX__) || defined(PSP) +#include /* stat() is defined here */ +#endif + +/* Assume W-functions do not work below Win2K and Xbox platforms */ +#if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0500 || defined(_XBOX) + +#ifndef LEGACY_WIN32 +#define LEGACY_WIN32 +#endif + +#endif + +enum stat_mode +{ + IS_DIRECTORY = 0, + IS_CHARACTER_SPECIAL, + IS_VALID +}; + +static bool path_stat(const char *path, enum stat_mode mode, int32_t *size) +{ +#if defined(VITA) || defined(PSP) + SceIoStat buf; + char *tmp = strdup(path); + size_t len = strlen(tmp); + if (tmp[len-1] == '/') + tmp[len-1]='\0'; + + if (sceIoGetstat(tmp, &buf) < 0) + { + free(tmp); + return false; + } + free(tmp); + +#elif defined(__CELLOS_LV2__) + CellFsStat buf; + if (cellFsStat(path, &buf) < 0) + return false; +#elif defined(_WIN32) + struct _stat buf; + char *path_local; + wchar_t *path_wide; + DWORD file_info; + + if (!path || !*path) + return false; + + (void)path_wide; + (void)path_local; + (void)file_info; + +#if defined(LEGACY_WIN32) + path_local = utf8_to_local_string_alloc(path); + file_info = GetFileAttributes(path_local); + + _stat(path_local, &buf); + + if (path_local) + free(path_local); +#else + path_wide = utf8_to_utf16_string_alloc(path); + file_info = GetFileAttributesW(path_wide); + + _wstat(path_wide, &buf); + + if (path_wide) + free(path_wide); +#endif + + if (file_info == INVALID_FILE_ATTRIBUTES) + return false; +#else + struct stat buf; + if (stat(path, &buf) < 0) + return false; +#endif + + if (size) + *size = (int32_t)buf.st_size; + + switch (mode) + { + case IS_DIRECTORY: +#if defined(VITA) || defined(PSP) + return FIO_S_ISDIR(buf.st_mode); +#elif defined(__CELLOS_LV2__) + return ((buf.st_mode & S_IFMT) == S_IFDIR); +#elif defined(_WIN32) + return (file_info & FILE_ATTRIBUTE_DIRECTORY); +#else + return S_ISDIR(buf.st_mode); +#endif + case IS_CHARACTER_SPECIAL: +#if defined(VITA) || defined(PSP) || defined(__CELLOS_LV2__) || defined(_WIN32) + return false; +#else + return S_ISCHR(buf.st_mode); +#endif + case IS_VALID: + return true; + } + + return false; +} + +/** + * path_is_directory: + * @path : path + * + * Checks if path is a directory. + * + * Returns: true (1) if path is a directory, otherwise false (0). + */ +bool path_is_directory(const char *path) +{ + return path_stat(path, IS_DIRECTORY, NULL); +} + +bool path_is_character_special(const char *path) +{ + return path_stat(path, IS_CHARACTER_SPECIAL, NULL); +} + +bool path_is_valid(const char *path) +{ + return path_stat(path, IS_VALID, NULL); +} + +int32_t path_get_size(const char *path) +{ + int32_t filesize = 0; + if (path_stat(path, IS_VALID, &filesize)) + return filesize; + + return -1; +} + +static bool path_mkdir_error(int ret) +{ +#if defined(VITA) + return (ret == SCE_ERROR_ERRNO_EEXIST); +#elif defined(PSP) || defined(_3DS) || defined(WIIU) || defined(SWITCH) + return (ret == -1); +#else + return (ret < 0 && errno == EEXIST); +#endif +} + +/** + * path_mkdir: + * @dir : directory + * + * Create directory on filesystem. + * + * Returns: true (1) if directory could be created, otherwise false (0). + **/ +bool path_mkdir(const char *dir) +{ + /* Use heap. Real chance of stack overflow if we recurse too hard. */ + const char *target = NULL; + bool sret = false; + bool norecurse = false; + char *basedir = NULL; + + if (dir && *dir) + basedir = strdup(dir); + + if (!basedir) + return false; + + path_parent_dir(basedir); + if (!*basedir || !strcmp(basedir, dir)) + goto end; + + if (path_is_directory(basedir)) + { + target = dir; + norecurse = true; + } + else + { + target = basedir; + sret = path_mkdir(basedir); + + if (sret) + { + target = dir; + norecurse = true; + } + } + + if (norecurse) + { +#if defined(_WIN32) +#ifdef LEGACY_WIN32 + int ret = _mkdir(dir); +#else + wchar_t *dirW = utf8_to_utf16_string_alloc(dir); + int ret = -1; + + if (dirW) + { + ret = _wmkdir(dirW); + free(dirW); + } +#endif +#elif defined(IOS) + int ret = mkdir(dir, 0755); +#elif defined(VITA) || defined(PSP) + int ret = sceIoMkdir(dir, 0777); +#elif defined(__QNX__) + int ret = mkdir(dir, 0777); +#else + int ret = mkdir(dir, 0750); +#endif + + /* Don't treat this as an error. */ + if (path_mkdir_error(ret) && path_is_directory(dir)) + ret = 0; + + if (ret < 0) + printf("mkdir(%s) error: %s.\n", dir, strerror(errno)); + sret = (ret == 0); + } + +end: + if (target && !sret) + printf("Failed to create directory: \"%s\".\n", target); + free(basedir); + return sret; +} + +/** + * path_get_archive_delim: + * @path : path + * + * Find delimiter of an archive file. Only the first '#' + * after a compression extension is considered. + * + * Returns: pointer to the delimiter in the path if it contains + * a path inside a compressed file, otherwise NULL. + */ +const char *path_get_archive_delim(const char *path) +{ + const char *last = find_last_slash(path); + const char *delim = NULL; + + if (last) + { + delim = strcasestr(last, ".zip#"); + + if (!delim) + delim = strcasestr(last, ".apk#"); + } + + if (delim) + return delim + 4; + + if (last) + delim = strcasestr(last, ".7z#"); + + if (delim) + return delim + 3; + + return NULL; +} + +/** + * path_get_extension: + * @path : path + * + * Gets extension of file. Only '.'s + * after the last slash are considered. + * + * Returns: extension part from the path. + */ +const char *path_get_extension(const char *path) +{ + const char *ext = !string_is_empty(path) + ? strrchr(path_basename(path), '.') : NULL; + if (!ext) + return ""; + return ext + 1; +} + +/** + * path_remove_extension: + * @path : path + * + * Mutates path by removing its extension. Removes all + * text after and including the last '.'. + * Only '.'s after the last slash are considered. + * + * Returns: + * 1) If path has an extension, returns path with the + * extension removed. + * 2) If there is no extension, returns NULL. + * 3) If path is empty or NULL, returns NULL + */ +char *path_remove_extension(char *path) +{ + char *last = !string_is_empty(path) + ? (char*)strrchr(path_basename(path), '.') : NULL; + if (!last) + return NULL; + if (*last) + *last = '\0'; + return path; +} + +/** + * path_is_compressed_file: + * @path : path + * + * Checks if path is a compressed file. + * + * Returns: true (1) if path is a compressed file, otherwise false (0). + **/ +bool path_is_compressed_file(const char* path) +{ + const char *ext = path_get_extension(path); + + if ( strcasestr(ext, "zip") + || strcasestr(ext, "apk") + || strcasestr(ext, "7z")) + return true; + + return false; +} + +/** + * fill_pathname: + * @out_path : output path + * @in_path : input path + * @replace : what to replace + * @size : buffer size of output path + * + * FIXME: Verify + * + * Replaces filename extension with 'replace' and outputs result to out_path. + * The extension here is considered to be the string from the last '.' + * to the end. + * + * Only '.'s after the last slash are considered as extensions. + * If no '.' is present, in_path and replace will simply be concatenated. + * 'size' is buffer size of 'out_path'. + * E.g.: in_path = "/foo/bar/baz/boo.c", replace = ".asm" => + * out_path = "/foo/bar/baz/boo.asm" + * E.g.: in_path = "/foo/bar/baz/boo.c", replace = "" => + * out_path = "/foo/bar/baz/boo" + */ +void fill_pathname(char *out_path, const char *in_path, + const char *replace, size_t size) +{ + char tmp_path[PATH_MAX_LENGTH]; + char *tok = NULL; + + tmp_path[0] = '\0'; + + strlcpy(tmp_path, in_path, sizeof(tmp_path)); + if ((tok = (char*)strrchr(path_basename(tmp_path), '.'))) + *tok = '\0'; + + fill_pathname_noext(out_path, tmp_path, replace, size); +} + +/** + * fill_pathname_noext: + * @out_path : output path + * @in_path : input path + * @replace : what to replace + * @size : buffer size of output path + * + * Appends a filename extension 'replace' to 'in_path', and outputs + * result in 'out_path'. + * + * Assumes in_path has no extension. If an extension is still + * present in 'in_path', it will be ignored. + * + */ +void fill_pathname_noext(char *out_path, const char *in_path, + const char *replace, size_t size) +{ + strlcpy(out_path, in_path, size); + strlcat(out_path, replace, size); +} + +char *find_last_slash(const char *str) +{ + const char *slash = strrchr(str, '/'); +#ifdef _WIN32 + const char *backslash = strrchr(str, '\\'); + + if (backslash && ((slash && backslash > slash) || !slash)) + slash = backslash; +#endif + + return (char*)slash; +} + +/** + * fill_pathname_slash: + * @path : path + * @size : size of path + * + * Assumes path is a directory. Appends a slash + * if not already there. + **/ +void fill_pathname_slash(char *path, size_t size) +{ + size_t path_len = strlen(path); + const char *last_slash = find_last_slash(path); + + /* Try to preserve slash type. */ + if (last_slash && (last_slash != (path + path_len - 1))) + { + char join_str[2]; + + join_str[0] = '\0'; + + strlcpy(join_str, last_slash, sizeof(join_str)); + strlcat(path, join_str, size); + } + else if (!last_slash) + strlcat(path, path_default_slash(), size); +} + +/** + * fill_pathname_dir: + * @in_dir : input directory path + * @in_basename : input basename to be appended to @in_dir + * @replace : replacement to be appended to @in_basename + * @size : size of buffer + * + * Appends basename of 'in_basename', to 'in_dir', along with 'replace'. + * Basename of in_basename is the string after the last '/' or '\\', + * i.e the filename without directories. + * + * If in_basename has no '/' or '\\', the whole 'in_basename' will be used. + * 'size' is buffer size of 'in_dir'. + * + * E.g..: in_dir = "/tmp/some_dir", in_basename = "/some_content/foo.c", + * replace = ".asm" => in_dir = "/tmp/some_dir/foo.c.asm" + **/ +void fill_pathname_dir(char *in_dir, const char *in_basename, + const char *replace, size_t size) +{ + const char *base = NULL; + + fill_pathname_slash(in_dir, size); + base = path_basename(in_basename); + strlcat(in_dir, base, size); + strlcat(in_dir, replace, size); +} + +/** + * fill_pathname_base: + * @out : output path + * @in_path : input path + * @size : size of output path + * + * Copies basename of @in_path into @out_path. + **/ +void fill_pathname_base(char *out, const char *in_path, size_t size) +{ + const char *ptr = path_basename(in_path); + + if (!ptr) + ptr = in_path; + + strlcpy(out, ptr, size); +} + +void fill_pathname_base_noext(char *out, const char *in_path, size_t size) +{ + fill_pathname_base(out, in_path, size); + path_remove_extension(out); +} + +void fill_pathname_base_ext(char *out, const char *in_path, const char *ext, + size_t size) +{ + fill_pathname_base_noext(out, in_path, size); + strlcat(out, ext, size); +} + +/** + * fill_pathname_basedir: + * @out_dir : output directory + * @in_path : input path + * @size : size of output directory + * + * Copies base directory of @in_path into @out_path. + * If in_path is a path without any slashes (relative current directory), + * @out_path will get path "./". + **/ +void fill_pathname_basedir(char *out_dir, + const char *in_path, size_t size) +{ + if (out_dir != in_path) + strlcpy(out_dir, in_path, size); + path_basedir(out_dir); +} + +void fill_pathname_basedir_noext(char *out_dir, + const char *in_path, size_t size) +{ + fill_pathname_basedir(out_dir, in_path, size); + path_remove_extension(out_dir); +} + +/** + * fill_pathname_parent_dir_name: + * @out_dir : output directory + * @in_dir : input directory + * @size : size of output directory + * + * Copies only the parent directory name of @in_dir into @out_dir. + * The two buffers must not overlap. Removes trailing '/'. + * Returns true on success, false if a slash was not found in the path. + **/ +bool fill_pathname_parent_dir_name(char *out_dir, + const char *in_dir, size_t size) +{ + char *temp = strdup(in_dir); + char *last = find_last_slash(temp); + bool ret = false; + + *last = '\0'; + + in_dir = find_last_slash(temp); + + if (in_dir && in_dir + 1) + { + strlcpy(out_dir, in_dir + 1, size); + ret = true; + } + else + ret = false; + + free(temp); + + return ret; +} + +/** + * fill_pathname_parent_dir: + * @out_dir : output directory + * @in_dir : input directory + * @size : size of output directory + * + * Copies parent directory of @in_dir into @out_dir. + * Assumes @in_dir is a directory. Keeps trailing '/'. + **/ +void fill_pathname_parent_dir(char *out_dir, + const char *in_dir, size_t size) +{ + if (out_dir != in_dir) + strlcpy(out_dir, in_dir, size); + path_parent_dir(out_dir); +} + +/** + * fill_dated_filename: + * @out_filename : output filename + * @ext : extension of output filename + * @size : buffer size of output filename + * + * Creates a 'dated' filename prefixed by 'RetroArch', and + * concatenates extension (@ext) to it. + * + * E.g.: + * out_filename = "RetroArch-{month}{day}-{Hours}{Minutes}.{@ext}" + **/ +void fill_dated_filename(char *out_filename, + const char *ext, size_t size) +{ + time_t cur_time = time(NULL); + + strftime(out_filename, size, + "RetroArch-%m%d-%H%M%S.", localtime(&cur_time)); + strlcat(out_filename, ext, size); +} + +/** + * fill_str_dated_filename: + * @out_filename : output filename + * @in_str : input string + * @ext : extension of output filename + * @size : buffer size of output filename + * + * Creates a 'dated' filename prefixed by the string @in_str, and + * concatenates extension (@ext) to it. + * + * E.g.: + * out_filename = "RetroArch-{year}{month}{day}-{Hour}{Minute}{Second}.{@ext}" + **/ +void fill_str_dated_filename(char *out_filename, + const char *in_str, const char *ext, size_t size) +{ + char format[256]; + time_t cur_time = time(NULL); + + format[0] = '\0'; + + strftime(format, sizeof(format), "-%y%m%d-%H%M%S.", localtime(&cur_time)); + + fill_pathname_join_concat_noext(out_filename, + in_str, format, ext, + size); +} + +/** + * path_basedir: + * @path : path + * + * Extracts base directory by mutating path. + * Keeps trailing '/'. + **/ +void path_basedir(char *path) +{ + char *last = NULL; + if (strlen(path) < 2) + return; + + last = find_last_slash(path); + + if (last) + last[1] = '\0'; + else + snprintf(path, 3, ".%s", path_default_slash()); +} + +/** + * path_parent_dir: + * @path : path + * + * Extracts parent directory by mutating path. + * Assumes that path is a directory. Keeps trailing '/'. + **/ +void path_parent_dir(char *path) +{ + size_t len = strlen(path); + if (len && path_char_is_slash(path[len - 1])) + path[len - 1] = '\0'; + path_basedir(path); +} + +/** + * path_basename: + * @path : path + * + * Get basename from @path. + * + * Returns: basename from path. + **/ +const char *path_basename(const char *path) +{ + /* We cut either at the first compression-related hash + * or the last slash; whichever comes last */ + const char *last = find_last_slash(path); + const char *delim = path_get_archive_delim(path); + + if (delim) + return delim + 1; + + if (last) + return last + 1; + + return path; +} + +/** + * path_is_absolute: + * @path : path + * + * Checks if @path is an absolute path or a relative path. + * + * Returns: true if path is absolute, false if path is relative. + **/ +bool path_is_absolute(const char *path) +{ + if (path[0] == '/') + return true; +#ifdef _WIN32 + /* Many roads lead to Rome ... */ + if (( strstr(path, "\\\\") == path) + || strstr(path, ":/") + || strstr(path, ":\\") + || strstr(path, ":\\\\")) + return true; +#elif defined(__wiiu__) + if (strstr(path, ":/")) + return true; +#endif + return false; +} + +/** + * path_resolve_realpath: + * @buf : buffer for path + * @size : size of buffer + * + * Turns relative paths into absolute path. + * If relative, rebases on current working dir. + **/ +void path_resolve_realpath(char *buf, size_t size) +{ +#if !defined(RARCH_CONSOLE) && defined(RARCH_INTERNAL) + char tmp[PATH_MAX_LENGTH]; + + tmp[0] = '\0'; + + strlcpy(tmp, buf, sizeof(tmp)); + +#ifdef _WIN32 + if (!_fullpath(buf, tmp, size)) + strlcpy(buf, tmp, size); +#else + + /* NOTE: realpath() expects at least PATH_MAX_LENGTH bytes in buf. + * Technically, PATH_MAX_LENGTH needn't be defined, but we rely on it anyways. + * POSIX 2008 can automatically allocate for you, + * but don't rely on that. */ + if (!realpath(tmp, buf)) + strlcpy(buf, tmp, size); +#endif +#endif +} + +/** + * fill_pathname_resolve_relative: + * @out_path : output path + * @in_refpath : input reference path + * @in_path : input path + * @size : size of @out_path + * + * Joins basedir of @in_refpath together with @in_path. + * If @in_path is an absolute path, out_path = in_path. + * E.g.: in_refpath = "/foo/bar/baz.a", in_path = "foobar.cg", + * out_path = "/foo/bar/foobar.cg". + **/ +void fill_pathname_resolve_relative(char *out_path, + const char *in_refpath, const char *in_path, size_t size) +{ + if (path_is_absolute(in_path)) + { + strlcpy(out_path, in_path, size); + return; + } + + fill_pathname_basedir(out_path, in_refpath, size); + strlcat(out_path, in_path, size); +} + +/** + * fill_pathname_join: + * @out_path : output path + * @dir : directory + * @path : path + * @size : size of output path + * + * Joins a directory (@dir) and path (@path) together. + * Makes sure not to get two consecutive slashes + * between directory and path. + **/ +void fill_pathname_join(char *out_path, + const char *dir, const char *path, size_t size) +{ + if (out_path != dir) + strlcpy(out_path, dir, size); + + if (*out_path) + fill_pathname_slash(out_path, size); + + strlcat(out_path, path, size); +} + +void fill_pathname_join_special_ext(char *out_path, + const char *dir, const char *path, + const char *last, const char *ext, + size_t size) +{ + fill_pathname_join(out_path, dir, path, size); + if (*out_path) + fill_pathname_slash(out_path, size); + + strlcat(out_path, last, size); + strlcat(out_path, ext, size); +} + +void fill_pathname_join_concat_noext( + char *out_path, + const char *dir, const char *path, + const char *concat, + size_t size) +{ + fill_pathname_noext(out_path, dir, path, size); + strlcat(out_path, concat, size); +} + +void fill_pathname_join_concat(char *out_path, + const char *dir, const char *path, + const char *concat, + size_t size) +{ + fill_pathname_join(out_path, dir, path, size); + strlcat(out_path, concat, size); +} + +void fill_pathname_join_noext(char *out_path, + const char *dir, const char *path, size_t size) +{ + fill_pathname_join(out_path, dir, path, size); + path_remove_extension(out_path); +} + + +/** + * fill_pathname_join_delim: + * @out_path : output path + * @dir : directory + * @path : path + * @delim : delimiter + * @size : size of output path + * + * Joins a directory (@dir) and path (@path) together + * using the given delimiter (@delim). + **/ +void fill_pathname_join_delim(char *out_path, const char *dir, + const char *path, const char delim, size_t size) +{ + size_t copied; + /* behavior of strlcpy is undefined if dst and src overlap */ + if (out_path == dir) + copied = strlen(dir); + else + copied = strlcpy(out_path, dir, size); + + out_path[copied] = delim; + out_path[copied+1] = '\0'; + + strlcat(out_path, path, size); +} + +void fill_pathname_join_delim_concat(char *out_path, const char *dir, + const char *path, const char delim, const char *concat, + size_t size) +{ + fill_pathname_join_delim(out_path, dir, path, delim, size); + strlcat(out_path, concat, size); +} + +/** + * fill_short_pathname_representation: + * @out_rep : output representation + * @in_path : input path + * @size : size of output representation + * + * Generates a short representation of path. It should only + * be used for displaying the result; the output representation is not + * binding in any meaningful way (for a normal path, this is the same as basename) + * In case of more complex URLs, this should cut everything except for + * the main image file. + * + * E.g.: "/path/to/game.img" -> game.img + * "/path/to/myarchive.7z#folder/to/game.img" -> game.img + */ +void fill_short_pathname_representation(char* out_rep, + const char *in_path, size_t size) +{ + char path_short[PATH_MAX_LENGTH]; + + path_short[0] = '\0'; + + fill_pathname(path_short, path_basename(in_path), "", + sizeof(path_short)); + + strlcpy(out_rep, path_short, size); +} + +void fill_short_pathname_representation_noext(char* out_rep, + const char *in_path, size_t size) +{ + fill_short_pathname_representation(out_rep, in_path, size); + path_remove_extension(out_rep); +} + +void fill_pathname_expand_special(char *out_path, + const char *in_path, size_t size) +{ +#if !defined(RARCH_CONSOLE) && defined(RARCH_INTERNAL) + if (*in_path == '~') + { + const char *home = getenv("HOME"); + if (home) + { + size_t src_size = strlcpy(out_path, home, size); + retro_assert(src_size < size); + + out_path += src_size; + size -= src_size; + in_path++; + } + } + else if ((in_path[0] == ':') && + ( + (in_path[1] == '/') +#ifdef _WIN32 + || (in_path[1] == '\\') +#endif + ) + ) + { + size_t src_size; + char *application_dir = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); + + application_dir[0] = '\0'; + + fill_pathname_application_path(application_dir, + PATH_MAX_LENGTH * sizeof(char)); + path_basedir_wrapper(application_dir); + + src_size = strlcpy(out_path, application_dir, size); + retro_assert(src_size < size); + + free(application_dir); + + out_path += src_size; + size -= src_size; + in_path += 2; + } +#endif + + retro_assert(strlcpy(out_path, in_path, size) < size); +} + +void fill_pathname_abbreviate_special(char *out_path, + const char *in_path, size_t size) +{ +#if !defined(RARCH_CONSOLE) && defined(RARCH_INTERNAL) + unsigned i; + const char *candidates[3]; + const char *notations[3]; + char *application_dir = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); + const char *home = getenv("HOME"); + + application_dir[0] = '\0'; + + /* application_dir could be zero-string. Safeguard against this. + * + * Keep application dir in front of home, moving app dir to a + * new location inside home would break otherwise. */ + + /* ugly hack - use application_dir pointer + * before filling it in. C89 reasons */ + candidates[0] = application_dir; + candidates[1] = home; + candidates[2] = NULL; + + notations [0] = ":"; + notations [1] = "~"; + notations [2] = NULL; + + fill_pathname_application_path(application_dir, + PATH_MAX_LENGTH * sizeof(char)); + path_basedir_wrapper(application_dir); + + for (i = 0; candidates[i]; i++) + { + if (!string_is_empty(candidates[i]) && + strstr(in_path, candidates[i]) == in_path) + { + size_t src_size = strlcpy(out_path, notations[i], size); + + retro_assert(src_size < size); + + out_path += src_size; + size -= src_size; + in_path += strlen(candidates[i]); + + if (!path_char_is_slash(*in_path)) + { + retro_assert(strlcpy(out_path, + path_default_slash(), size) < size); + out_path++; + size--; + } + + break; /* Don't allow more abbrevs to take place. */ + } + } + + free(application_dir); +#endif + + retro_assert(strlcpy(out_path, in_path, size) < size); +} + +/** + * path_basedir: + * @path : path + * + * Extracts base directory by mutating path. + * Keeps trailing '/'. + **/ +void path_basedir_wrapper(char *path) +{ + char *last = NULL; + if (strlen(path) < 2) + return; + +#ifdef HAVE_COMPRESSION + /* We want to find the directory with the archive in basedir. */ + last = (char*)path_get_archive_delim(path); + if (last) + *last = '\0'; +#endif + + last = find_last_slash(path); + + if (last) + last[1] = '\0'; + else + snprintf(path, 3, ".%s", path_default_slash()); +} + +#if !defined(RARCH_CONSOLE) && defined(RARCH_INTERNAL) +void fill_pathname_application_path(char *s, size_t len) +{ + size_t i; +#ifdef __APPLE__ + CFBundleRef bundle = CFBundleGetMainBundle(); +#endif +#ifdef _WIN32 + DWORD ret; + wchar_t wstr[PATH_MAX_LENGTH] = {0}; +#endif +#ifdef __HAIKU__ + image_info info; + int32_t cookie = 0; +#endif + (void)i; + + if (!len) + return; + +#ifdef _WIN32 +#ifdef LEGACY_WIN32 + ret = GetModuleFileNameA(GetModuleHandle(NULL), s, len); +#else + ret = GetModuleFileNameW(GetModuleHandle(NULL), wstr, ARRAY_SIZE(wstr)); + + if (*wstr) + { + char *str = utf16_to_utf8_string_alloc(wstr); + + if (str) + { + strlcpy(s, str, len); + free(str); + } + } +#endif + s[ret] = '\0'; +#elif defined(__APPLE__) + if (bundle) + { + CFURLRef bundle_url = CFBundleCopyBundleURL(bundle); + CFStringRef bundle_path = CFURLCopyPath(bundle_url); + CFStringGetCString(bundle_path, s, len, kCFStringEncodingUTF8); + CFRelease(bundle_path); + CFRelease(bundle_url); + + retro_assert(strlcat(s, "nobin", len) < len); + return; + } +#elif defined(__HAIKU__) + while (get_next_image_info(0, &cookie, &info) == B_OK) + { + if (info.type == B_APP_IMAGE) + { + strlcpy(s, info.name, len); + return; + } + } +#elif defined(__QNX__) + char *buff = malloc(len); + + if(_cmdname(buff)) + strlcpy(s, buff, len); + + free(buff); +#else + { + pid_t pid; + static const char *exts[] = { "exe", "file", "path/a.out" }; + char link_path[255]; + + link_path[0] = *s = '\0'; + pid = getpid(); + + /* Linux, BSD and Solaris paths. Not standardized. */ + for (i = 0; i < ARRAY_SIZE(exts); i++) + { + ssize_t ret; + + snprintf(link_path, sizeof(link_path), "/proc/%u/%s", + (unsigned)pid, exts[i]); + ret = readlink(link_path, s, len - 1); + + if (ret >= 0) + { + s[ret] = '\0'; + return; + } + } + } +#endif +} +#endif diff --git a/src/platform/libretro/libretro-common/glsym/README.md b/src/platform/libretro/libretro-common/glsym/README.md new file mode 100644 index 00000000..9e4f0e84 --- /dev/null +++ b/src/platform/libretro/libretro-common/glsym/README.md @@ -0,0 +1,12 @@ +# Autogenerate GL extension loaders + +## OpenGL desktop + +Use Khronos' recent [header](www.opengl.org/registry/api/glext.h). + + ./glgen.py /usr/include/GL/glext.h glsym_gl.h glsym_gl.c + +## OpenGL ES + + ./glgen.py /usr/include/GLES2/gl2ext.h glsym_es2.h glsym_es2.c + diff --git a/src/platform/libretro/libretro-common/glsym/glgen.py b/src/platform/libretro/libretro-common/glsym/glgen.py new file mode 100644 index 00000000..a599e557 --- /dev/null +++ b/src/platform/libretro/libretro-common/glsym/glgen.py @@ -0,0 +1,158 @@ +#!/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 + +banned_ext = [ 'AMD', 'APPLE', 'NV', 'NVX', 'ATI', '3DLABS', 'SUN', 'SGI', 'SGIX', 'SGIS', 'INTEL', '3DFX', 'IBM', 'MESA', 'GREMEDY', 'OML', 'PGI', 'I3D', 'INGL', 'MTX', 'QCOM', 'IMG', 'ANGLE', 'SUNX', 'INGR' ] + +def noext(sym): + for ext in banned_ext: + if sym.endswith(ext): + return False + return True + +def fix_multiline_functions(lines): + fixed_lines = [] + temp_lines = [] + for line in lines: + if line.count('(') > line.count(')'): + temp_lines.append(line) + else: + if len(temp_lines) > 0: + if line.count(')') > line.count('('): + temp_lines.append(line) + fixed_line = re.sub(' +',' ', ''.join(temp_lines).replace('\n','').replace('\t','')) + fixed_lines.append(fixed_line) + temp_lines = [] + else: + temp_lines.append(line) + else: + fixed_lines.append(line) + return fixed_lines + +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__': + + if len(sys.argv) > 4: + for banned in sys.argv[4:]: + banned_ext.append(banned) + + with open(sys.argv[1], 'r') as f: + lines = fix_multiline_functions(f.readlines()) + typedefs, syms = find_gl_symbols(lines) + + overrides = generate_defines(syms) + declarations = generate_declarations(syms) + externs = ['extern ' + x for x in declarations] + + macros = generate_macros(syms) + + with open(sys.argv[2], 'w') as f: + f.write('#ifndef RGLGEN_DECL_H__\n') + f.write('#define RGLGEN_DECL_H__\n') + + f.write('#ifdef __cplusplus\n') + f.write('extern "C" {\n') + f.write('#endif\n') + + f.write('#ifdef GL_APIENTRY\n') + f.write('typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('typedef void (GL_APIENTRY *RGLGENGLDEBUGPROCKHR)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('#else\n') + f.write('#ifndef APIENTRY\n') + f.write('#define APIENTRY\n') + f.write('#endif\n') + f.write('#ifndef APIENTRYP\n') + f.write('#define APIENTRYP APIENTRY *\n') + f.write('#endif\n') + f.write('typedef void (APIENTRY *RGLGENGLDEBUGPROCARB)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('typedef void (APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('#endif\n') + + f.write('#ifndef GL_OES_EGL_image\n') + f.write('typedef void *GLeglImageOES;\n') + f.write('#endif\n') + + f.write('#if !defined(GL_OES_fixed_point) && !defined(HAVE_OPENGLES2)\n') + f.write('typedef GLint GLfixed;\n') + f.write('#endif\n') + + f.write('#if defined(OSX) && !defined(MAC_OS_X_VERSION_10_7)\n') + f.write('typedef long long int GLint64;\n') + f.write('typedef unsigned long long int GLuint64;\n') + f.write('typedef unsigned long long int GLuint64EXT;\n') + f.write('typedef struct __GLsync *GLsync;\n') + f.write('#endif\n') + + dump(f, typedefs) + dump(f, overrides) + dump(f, externs) + + f.write('struct rglgen_sym_map { const char *sym; void *ptr; };\n') + f.write('extern const struct rglgen_sym_map rglgen_symbol_map[];\n') + + f.write('#ifdef __cplusplus\n') + f.write('}\n') + f.write('#endif\n') + + f.write('#endif\n') + + with open(sys.argv[3], 'w') as f: + f.write('#include "glsym/glsym.h"\n') + f.write('#include \n') + f.write('#define SYM(x) { "gl" #x, &(gl##x) }\n') + f.write('const struct rglgen_sym_map rglgen_symbol_map[] = {\n') + dump(f, macros) + f.write(' { NULL, NULL },\n') + f.write('};\n') + dump(f, declarations) + diff --git a/src/platform/libretro/libretro-common/glsym/glsym_es2.c b/src/platform/libretro/libretro-common/glsym/glsym_es2.c new file mode 100644 index 00000000..85155499 --- /dev/null +++ b/src/platform/libretro/libretro-common/glsym/glsym_es2.c @@ -0,0 +1,410 @@ +#include "glsym/glsym.h" +#include +#define SYM(x) { "gl" #x, &(gl##x) } +const struct rglgen_sym_map rglgen_symbol_map[] = { + SYM(BlendBarrierKHR), + SYM(DebugMessageControlKHR), + SYM(DebugMessageInsertKHR), + SYM(DebugMessageCallbackKHR), + SYM(GetDebugMessageLogKHR), + SYM(PushDebugGroupKHR), + SYM(PopDebugGroupKHR), + SYM(ObjectLabelKHR), + SYM(GetObjectLabelKHR), + SYM(ObjectPtrLabelKHR), + SYM(GetObjectPtrLabelKHR), + SYM(GetPointervKHR), + SYM(GetGraphicsResetStatusKHR), + SYM(ReadnPixelsKHR), + SYM(GetnUniformfvKHR), + SYM(GetnUniformivKHR), + SYM(GetnUniformuivKHR), + SYM(EGLImageTargetTexture2DOES), + SYM(EGLImageTargetRenderbufferStorageOES), + SYM(CopyImageSubDataOES), + SYM(EnableiOES), + SYM(DisableiOES), + SYM(BlendEquationiOES), + SYM(BlendEquationSeparateiOES), + SYM(BlendFunciOES), + SYM(BlendFuncSeparateiOES), + SYM(ColorMaskiOES), + SYM(IsEnablediOES), + SYM(DrawElementsBaseVertexOES), + SYM(DrawRangeElementsBaseVertexOES), + SYM(DrawElementsInstancedBaseVertexOES), + SYM(MultiDrawElementsBaseVertexOES), + SYM(FramebufferTextureOES), + SYM(GetProgramBinaryOES), + SYM(ProgramBinaryOES), + SYM(MapBufferOES), + SYM(UnmapBufferOES), + SYM(GetBufferPointervOES), + SYM(PrimitiveBoundingBoxOES), + SYM(MinSampleShadingOES), + SYM(PatchParameteriOES), + SYM(TexImage3DOES), + SYM(TexSubImage3DOES), + SYM(CopyTexSubImage3DOES), + SYM(CompressedTexImage3DOES), + SYM(CompressedTexSubImage3DOES), + SYM(FramebufferTexture3DOES), + SYM(TexParameterIivOES), + SYM(TexParameterIuivOES), + SYM(GetTexParameterIivOES), + SYM(GetTexParameterIuivOES), + SYM(SamplerParameterIivOES), + SYM(SamplerParameterIuivOES), + SYM(GetSamplerParameterIivOES), + SYM(GetSamplerParameterIuivOES), + SYM(TexBufferOES), + SYM(TexBufferRangeOES), + SYM(TexStorage3DMultisampleOES), + SYM(TextureViewOES), + SYM(BindVertexArrayOES), + SYM(DeleteVertexArraysOES), + SYM(GenVertexArraysOES), + SYM(IsVertexArrayOES), + SYM(ViewportArrayvOES), + SYM(ViewportIndexedfOES), + SYM(ViewportIndexedfvOES), + SYM(ScissorArrayvOES), + SYM(ScissorIndexedOES), + SYM(ScissorIndexedvOES), + SYM(DepthRangeArrayfvOES), + SYM(DepthRangeIndexedfOES), + SYM(GetFloati_vOES), + SYM(DrawArraysInstancedBaseInstanceEXT), + SYM(DrawElementsInstancedBaseInstanceEXT), + SYM(DrawElementsInstancedBaseVertexBaseInstanceEXT), + SYM(BindFragDataLocationIndexedEXT), + SYM(BindFragDataLocationEXT), + SYM(GetProgramResourceLocationIndexEXT), + SYM(GetFragDataIndexEXT), + SYM(BufferStorageEXT), + SYM(ClearTexImageEXT), + SYM(ClearTexSubImageEXT), + SYM(CopyImageSubDataEXT), + SYM(LabelObjectEXT), + SYM(GetObjectLabelEXT), + SYM(InsertEventMarkerEXT), + SYM(PushGroupMarkerEXT), + SYM(PopGroupMarkerEXT), + SYM(DiscardFramebufferEXT), + SYM(GenQueriesEXT), + SYM(DeleteQueriesEXT), + SYM(IsQueryEXT), + SYM(BeginQueryEXT), + SYM(EndQueryEXT), + SYM(QueryCounterEXT), + SYM(GetQueryivEXT), + SYM(GetQueryObjectivEXT), + SYM(GetQueryObjectuivEXT), + SYM(DrawBuffersEXT), + SYM(EnableiEXT), + SYM(DisableiEXT), + SYM(BlendEquationiEXT), + SYM(BlendEquationSeparateiEXT), + SYM(BlendFunciEXT), + SYM(BlendFuncSeparateiEXT), + SYM(ColorMaskiEXT), + SYM(IsEnablediEXT), + SYM(DrawElementsBaseVertexEXT), + SYM(DrawRangeElementsBaseVertexEXT), + SYM(DrawElementsInstancedBaseVertexEXT), + SYM(MultiDrawElementsBaseVertexEXT), + SYM(DrawArraysInstancedEXT), + SYM(DrawElementsInstancedEXT), + SYM(FramebufferTextureEXT), + SYM(VertexAttribDivisorEXT), + SYM(MapBufferRangeEXT), + SYM(FlushMappedBufferRangeEXT), + SYM(MultiDrawArraysEXT), + SYM(MultiDrawElementsEXT), + SYM(MultiDrawArraysIndirectEXT), + SYM(MultiDrawElementsIndirectEXT), + SYM(RenderbufferStorageMultisampleEXT), + SYM(FramebufferTexture2DMultisampleEXT), + SYM(ReadBufferIndexedEXT), + SYM(DrawBuffersIndexedEXT), + SYM(GetIntegeri_vEXT), + SYM(PolygonOffsetClampEXT), + SYM(PrimitiveBoundingBoxEXT), + SYM(RasterSamplesEXT), + SYM(GetGraphicsResetStatusEXT), + SYM(ReadnPixelsEXT), + SYM(GetnUniformfvEXT), + SYM(GetnUniformivEXT), + SYM(ActiveShaderProgramEXT), + SYM(BindProgramPipelineEXT), + SYM(CreateShaderProgramvEXT), + SYM(DeleteProgramPipelinesEXT), + SYM(GenProgramPipelinesEXT), + SYM(GetProgramPipelineInfoLogEXT), + SYM(GetProgramPipelineivEXT), + SYM(IsProgramPipelineEXT), + SYM(ProgramParameteriEXT), + SYM(ProgramUniform1fEXT), + SYM(ProgramUniform1fvEXT), + SYM(ProgramUniform1iEXT), + SYM(ProgramUniform1ivEXT), + SYM(ProgramUniform2fEXT), + SYM(ProgramUniform2fvEXT), + SYM(ProgramUniform2iEXT), + SYM(ProgramUniform2ivEXT), + SYM(ProgramUniform3fEXT), + SYM(ProgramUniform3fvEXT), + SYM(ProgramUniform3iEXT), + SYM(ProgramUniform3ivEXT), + SYM(ProgramUniform4fEXT), + SYM(ProgramUniform4fvEXT), + SYM(ProgramUniform4iEXT), + SYM(ProgramUniform4ivEXT), + SYM(ProgramUniformMatrix2fvEXT), + SYM(ProgramUniformMatrix3fvEXT), + SYM(ProgramUniformMatrix4fvEXT), + SYM(UseProgramStagesEXT), + SYM(ValidateProgramPipelineEXT), + SYM(ProgramUniform1uiEXT), + SYM(ProgramUniform2uiEXT), + SYM(ProgramUniform3uiEXT), + SYM(ProgramUniform4uiEXT), + SYM(ProgramUniform1uivEXT), + SYM(ProgramUniform2uivEXT), + SYM(ProgramUniform3uivEXT), + SYM(ProgramUniform4uivEXT), + SYM(ProgramUniformMatrix2x3fvEXT), + SYM(ProgramUniformMatrix3x2fvEXT), + SYM(ProgramUniformMatrix2x4fvEXT), + SYM(ProgramUniformMatrix4x2fvEXT), + SYM(ProgramUniformMatrix3x4fvEXT), + SYM(ProgramUniformMatrix4x3fvEXT), + SYM(FramebufferPixelLocalStorageSizeEXT), + SYM(GetFramebufferPixelLocalStorageSizeEXT), + SYM(ClearPixelLocalStorageuiEXT), + SYM(TexPageCommitmentEXT), + SYM(PatchParameteriEXT), + SYM(TexParameterIivEXT), + SYM(TexParameterIuivEXT), + SYM(GetTexParameterIivEXT), + SYM(GetTexParameterIuivEXT), + SYM(SamplerParameterIivEXT), + SYM(SamplerParameterIuivEXT), + SYM(GetSamplerParameterIivEXT), + SYM(GetSamplerParameterIuivEXT), + SYM(TexBufferEXT), + SYM(TexBufferRangeEXT), + SYM(TexStorage1DEXT), + SYM(TexStorage2DEXT), + SYM(TexStorage3DEXT), + SYM(TextureStorage1DEXT), + SYM(TextureStorage2DEXT), + SYM(TextureStorage3DEXT), + SYM(TextureViewEXT), + SYM(FramebufferTextureMultiviewOVR), + SYM(FramebufferTextureMultisampleMultiviewOVR), + + { NULL, NULL }, +}; +RGLSYMGLBLENDBARRIERKHRPROC __rglgen_glBlendBarrierKHR; +RGLSYMGLDEBUGMESSAGECONTROLKHRPROC __rglgen_glDebugMessageControlKHR; +RGLSYMGLDEBUGMESSAGEINSERTKHRPROC __rglgen_glDebugMessageInsertKHR; +RGLSYMGLDEBUGMESSAGECALLBACKKHRPROC __rglgen_glDebugMessageCallbackKHR; +RGLSYMGLGETDEBUGMESSAGELOGKHRPROC __rglgen_glGetDebugMessageLogKHR; +RGLSYMGLPUSHDEBUGGROUPKHRPROC __rglgen_glPushDebugGroupKHR; +RGLSYMGLPOPDEBUGGROUPKHRPROC __rglgen_glPopDebugGroupKHR; +RGLSYMGLOBJECTLABELKHRPROC __rglgen_glObjectLabelKHR; +RGLSYMGLGETOBJECTLABELKHRPROC __rglgen_glGetObjectLabelKHR; +RGLSYMGLOBJECTPTRLABELKHRPROC __rglgen_glObjectPtrLabelKHR; +RGLSYMGLGETOBJECTPTRLABELKHRPROC __rglgen_glGetObjectPtrLabelKHR; +RGLSYMGLGETPOINTERVKHRPROC __rglgen_glGetPointervKHR; +RGLSYMGLGETGRAPHICSRESETSTATUSKHRPROC __rglgen_glGetGraphicsResetStatusKHR; +RGLSYMGLREADNPIXELSKHRPROC __rglgen_glReadnPixelsKHR; +RGLSYMGLGETNUNIFORMFVKHRPROC __rglgen_glGetnUniformfvKHR; +RGLSYMGLGETNUNIFORMIVKHRPROC __rglgen_glGetnUniformivKHR; +RGLSYMGLGETNUNIFORMUIVKHRPROC __rglgen_glGetnUniformuivKHR; +RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC __rglgen_glEGLImageTargetTexture2DOES; +RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __rglgen_glEGLImageTargetRenderbufferStorageOES; +RGLSYMGLCOPYIMAGESUBDATAOESPROC __rglgen_glCopyImageSubDataOES; +RGLSYMGLENABLEIOESPROC __rglgen_glEnableiOES; +RGLSYMGLDISABLEIOESPROC __rglgen_glDisableiOES; +RGLSYMGLBLENDEQUATIONIOESPROC __rglgen_glBlendEquationiOES; +RGLSYMGLBLENDEQUATIONSEPARATEIOESPROC __rglgen_glBlendEquationSeparateiOES; +RGLSYMGLBLENDFUNCIOESPROC __rglgen_glBlendFunciOES; +RGLSYMGLBLENDFUNCSEPARATEIOESPROC __rglgen_glBlendFuncSeparateiOES; +RGLSYMGLCOLORMASKIOESPROC __rglgen_glColorMaskiOES; +RGLSYMGLISENABLEDIOESPROC __rglgen_glIsEnablediOES; +RGLSYMGLDRAWELEMENTSBASEVERTEXOESPROC __rglgen_glDrawElementsBaseVertexOES; +RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXOESPROC __rglgen_glDrawRangeElementsBaseVertexOES; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC __rglgen_glDrawElementsInstancedBaseVertexOES; +RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXOESPROC __rglgen_glMultiDrawElementsBaseVertexOES; +RGLSYMGLFRAMEBUFFERTEXTUREOESPROC __rglgen_glFramebufferTextureOES; +RGLSYMGLGETPROGRAMBINARYOESPROC __rglgen_glGetProgramBinaryOES; +RGLSYMGLPROGRAMBINARYOESPROC __rglgen_glProgramBinaryOES; +RGLSYMGLMAPBUFFEROESPROC __rglgen_glMapBufferOES; +RGLSYMGLUNMAPBUFFEROESPROC __rglgen_glUnmapBufferOES; +RGLSYMGLGETBUFFERPOINTERVOESPROC __rglgen_glGetBufferPointervOES; +RGLSYMGLPRIMITIVEBOUNDINGBOXOESPROC __rglgen_glPrimitiveBoundingBoxOES; +RGLSYMGLMINSAMPLESHADINGOESPROC __rglgen_glMinSampleShadingOES; +RGLSYMGLPATCHPARAMETERIOESPROC __rglgen_glPatchParameteriOES; +RGLSYMGLTEXIMAGE3DOESPROC __rglgen_glTexImage3DOES; +RGLSYMGLTEXSUBIMAGE3DOESPROC __rglgen_glTexSubImage3DOES; +RGLSYMGLCOPYTEXSUBIMAGE3DOESPROC __rglgen_glCopyTexSubImage3DOES; +RGLSYMGLCOMPRESSEDTEXIMAGE3DOESPROC __rglgen_glCompressedTexImage3DOES; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DOESPROC __rglgen_glCompressedTexSubImage3DOES; +RGLSYMGLFRAMEBUFFERTEXTURE3DOESPROC __rglgen_glFramebufferTexture3DOES; +RGLSYMGLTEXPARAMETERIIVOESPROC __rglgen_glTexParameterIivOES; +RGLSYMGLTEXPARAMETERIUIVOESPROC __rglgen_glTexParameterIuivOES; +RGLSYMGLGETTEXPARAMETERIIVOESPROC __rglgen_glGetTexParameterIivOES; +RGLSYMGLGETTEXPARAMETERIUIVOESPROC __rglgen_glGetTexParameterIuivOES; +RGLSYMGLSAMPLERPARAMETERIIVOESPROC __rglgen_glSamplerParameterIivOES; +RGLSYMGLSAMPLERPARAMETERIUIVOESPROC __rglgen_glSamplerParameterIuivOES; +RGLSYMGLGETSAMPLERPARAMETERIIVOESPROC __rglgen_glGetSamplerParameterIivOES; +RGLSYMGLGETSAMPLERPARAMETERIUIVOESPROC __rglgen_glGetSamplerParameterIuivOES; +RGLSYMGLTEXBUFFEROESPROC __rglgen_glTexBufferOES; +RGLSYMGLTEXBUFFERRANGEOESPROC __rglgen_glTexBufferRangeOES; +RGLSYMGLTEXSTORAGE3DMULTISAMPLEOESPROC __rglgen_glTexStorage3DMultisampleOES; +RGLSYMGLTEXTUREVIEWOESPROC __rglgen_glTextureViewOES; +RGLSYMGLBINDVERTEXARRAYOESPROC __rglgen_glBindVertexArrayOES; +RGLSYMGLDELETEVERTEXARRAYSOESPROC __rglgen_glDeleteVertexArraysOES; +RGLSYMGLGENVERTEXARRAYSOESPROC __rglgen_glGenVertexArraysOES; +RGLSYMGLISVERTEXARRAYOESPROC __rglgen_glIsVertexArrayOES; +RGLSYMGLVIEWPORTARRAYVOESPROC __rglgen_glViewportArrayvOES; +RGLSYMGLVIEWPORTINDEXEDFOESPROC __rglgen_glViewportIndexedfOES; +RGLSYMGLVIEWPORTINDEXEDFVOESPROC __rglgen_glViewportIndexedfvOES; +RGLSYMGLSCISSORARRAYVOESPROC __rglgen_glScissorArrayvOES; +RGLSYMGLSCISSORINDEXEDOESPROC __rglgen_glScissorIndexedOES; +RGLSYMGLSCISSORINDEXEDVOESPROC __rglgen_glScissorIndexedvOES; +RGLSYMGLDEPTHRANGEARRAYFVOESPROC __rglgen_glDepthRangeArrayfvOES; +RGLSYMGLDEPTHRANGEINDEXEDFOESPROC __rglgen_glDepthRangeIndexedfOES; +RGLSYMGLGETFLOATI_VOESPROC __rglgen_glGetFloati_vOES; +RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC __rglgen_glDrawArraysInstancedBaseInstanceEXT; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC __rglgen_glDrawElementsInstancedBaseInstanceEXT; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC __rglgen_glDrawElementsInstancedBaseVertexBaseInstanceEXT; +RGLSYMGLBINDFRAGDATALOCATIONINDEXEDEXTPROC __rglgen_glBindFragDataLocationIndexedEXT; +RGLSYMGLBINDFRAGDATALOCATIONEXTPROC __rglgen_glBindFragDataLocationEXT; +RGLSYMGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC __rglgen_glGetProgramResourceLocationIndexEXT; +RGLSYMGLGETFRAGDATAINDEXEXTPROC __rglgen_glGetFragDataIndexEXT; +RGLSYMGLBUFFERSTORAGEEXTPROC __rglgen_glBufferStorageEXT; +RGLSYMGLCLEARTEXIMAGEEXTPROC __rglgen_glClearTexImageEXT; +RGLSYMGLCLEARTEXSUBIMAGEEXTPROC __rglgen_glClearTexSubImageEXT; +RGLSYMGLCOPYIMAGESUBDATAEXTPROC __rglgen_glCopyImageSubDataEXT; +RGLSYMGLLABELOBJECTEXTPROC __rglgen_glLabelObjectEXT; +RGLSYMGLGETOBJECTLABELEXTPROC __rglgen_glGetObjectLabelEXT; +RGLSYMGLINSERTEVENTMARKEREXTPROC __rglgen_glInsertEventMarkerEXT; +RGLSYMGLPUSHGROUPMARKEREXTPROC __rglgen_glPushGroupMarkerEXT; +RGLSYMGLPOPGROUPMARKEREXTPROC __rglgen_glPopGroupMarkerEXT; +RGLSYMGLDISCARDFRAMEBUFFEREXTPROC __rglgen_glDiscardFramebufferEXT; +RGLSYMGLGENQUERIESEXTPROC __rglgen_glGenQueriesEXT; +RGLSYMGLDELETEQUERIESEXTPROC __rglgen_glDeleteQueriesEXT; +RGLSYMGLISQUERYEXTPROC __rglgen_glIsQueryEXT; +RGLSYMGLBEGINQUERYEXTPROC __rglgen_glBeginQueryEXT; +RGLSYMGLENDQUERYEXTPROC __rglgen_glEndQueryEXT; +RGLSYMGLQUERYCOUNTEREXTPROC __rglgen_glQueryCounterEXT; +RGLSYMGLGETQUERYIVEXTPROC __rglgen_glGetQueryivEXT; +RGLSYMGLGETQUERYOBJECTIVEXTPROC __rglgen_glGetQueryObjectivEXT; +RGLSYMGLGETQUERYOBJECTUIVEXTPROC __rglgen_glGetQueryObjectuivEXT; +RGLSYMGLDRAWBUFFERSEXTPROC __rglgen_glDrawBuffersEXT; +RGLSYMGLENABLEIEXTPROC __rglgen_glEnableiEXT; +RGLSYMGLDISABLEIEXTPROC __rglgen_glDisableiEXT; +RGLSYMGLBLENDEQUATIONIEXTPROC __rglgen_glBlendEquationiEXT; +RGLSYMGLBLENDEQUATIONSEPARATEIEXTPROC __rglgen_glBlendEquationSeparateiEXT; +RGLSYMGLBLENDFUNCIEXTPROC __rglgen_glBlendFunciEXT; +RGLSYMGLBLENDFUNCSEPARATEIEXTPROC __rglgen_glBlendFuncSeparateiEXT; +RGLSYMGLCOLORMASKIEXTPROC __rglgen_glColorMaskiEXT; +RGLSYMGLISENABLEDIEXTPROC __rglgen_glIsEnablediEXT; +RGLSYMGLDRAWELEMENTSBASEVERTEXEXTPROC __rglgen_glDrawElementsBaseVertexEXT; +RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC __rglgen_glDrawRangeElementsBaseVertexEXT; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC __rglgen_glDrawElementsInstancedBaseVertexEXT; +RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC __rglgen_glMultiDrawElementsBaseVertexEXT; +RGLSYMGLDRAWARRAYSINSTANCEDEXTPROC __rglgen_glDrawArraysInstancedEXT; +RGLSYMGLDRAWELEMENTSINSTANCEDEXTPROC __rglgen_glDrawElementsInstancedEXT; +RGLSYMGLFRAMEBUFFERTEXTUREEXTPROC __rglgen_glFramebufferTextureEXT; +RGLSYMGLVERTEXATTRIBDIVISOREXTPROC __rglgen_glVertexAttribDivisorEXT; +RGLSYMGLMAPBUFFERRANGEEXTPROC __rglgen_glMapBufferRangeEXT; +RGLSYMGLFLUSHMAPPEDBUFFERRANGEEXTPROC __rglgen_glFlushMappedBufferRangeEXT; +RGLSYMGLMULTIDRAWARRAYSEXTPROC __rglgen_glMultiDrawArraysEXT; +RGLSYMGLMULTIDRAWELEMENTSEXTPROC __rglgen_glMultiDrawElementsEXT; +RGLSYMGLMULTIDRAWARRAYSINDIRECTEXTPROC __rglgen_glMultiDrawArraysIndirectEXT; +RGLSYMGLMULTIDRAWELEMENTSINDIRECTEXTPROC __rglgen_glMultiDrawElementsIndirectEXT; +RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __rglgen_glRenderbufferStorageMultisampleEXT; +RGLSYMGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC __rglgen_glFramebufferTexture2DMultisampleEXT; +RGLSYMGLREADBUFFERINDEXEDEXTPROC __rglgen_glReadBufferIndexedEXT; +RGLSYMGLDRAWBUFFERSINDEXEDEXTPROC __rglgen_glDrawBuffersIndexedEXT; +RGLSYMGLGETINTEGERI_VEXTPROC __rglgen_glGetIntegeri_vEXT; +RGLSYMGLPOLYGONOFFSETCLAMPEXTPROC __rglgen_glPolygonOffsetClampEXT; +RGLSYMGLPRIMITIVEBOUNDINGBOXEXTPROC __rglgen_glPrimitiveBoundingBoxEXT; +RGLSYMGLRASTERSAMPLESEXTPROC __rglgen_glRasterSamplesEXT; +RGLSYMGLGETGRAPHICSRESETSTATUSEXTPROC __rglgen_glGetGraphicsResetStatusEXT; +RGLSYMGLREADNPIXELSEXTPROC __rglgen_glReadnPixelsEXT; +RGLSYMGLGETNUNIFORMFVEXTPROC __rglgen_glGetnUniformfvEXT; +RGLSYMGLGETNUNIFORMIVEXTPROC __rglgen_glGetnUniformivEXT; +RGLSYMGLACTIVESHADERPROGRAMEXTPROC __rglgen_glActiveShaderProgramEXT; +RGLSYMGLBINDPROGRAMPIPELINEEXTPROC __rglgen_glBindProgramPipelineEXT; +RGLSYMGLCREATESHADERPROGRAMVEXTPROC __rglgen_glCreateShaderProgramvEXT; +RGLSYMGLDELETEPROGRAMPIPELINESEXTPROC __rglgen_glDeleteProgramPipelinesEXT; +RGLSYMGLGENPROGRAMPIPELINESEXTPROC __rglgen_glGenProgramPipelinesEXT; +RGLSYMGLGETPROGRAMPIPELINEINFOLOGEXTPROC __rglgen_glGetProgramPipelineInfoLogEXT; +RGLSYMGLGETPROGRAMPIPELINEIVEXTPROC __rglgen_glGetProgramPipelineivEXT; +RGLSYMGLISPROGRAMPIPELINEEXTPROC __rglgen_glIsProgramPipelineEXT; +RGLSYMGLPROGRAMPARAMETERIEXTPROC __rglgen_glProgramParameteriEXT; +RGLSYMGLPROGRAMUNIFORM1FEXTPROC __rglgen_glProgramUniform1fEXT; +RGLSYMGLPROGRAMUNIFORM1FVEXTPROC __rglgen_glProgramUniform1fvEXT; +RGLSYMGLPROGRAMUNIFORM1IEXTPROC __rglgen_glProgramUniform1iEXT; +RGLSYMGLPROGRAMUNIFORM1IVEXTPROC __rglgen_glProgramUniform1ivEXT; +RGLSYMGLPROGRAMUNIFORM2FEXTPROC __rglgen_glProgramUniform2fEXT; +RGLSYMGLPROGRAMUNIFORM2FVEXTPROC __rglgen_glProgramUniform2fvEXT; +RGLSYMGLPROGRAMUNIFORM2IEXTPROC __rglgen_glProgramUniform2iEXT; +RGLSYMGLPROGRAMUNIFORM2IVEXTPROC __rglgen_glProgramUniform2ivEXT; +RGLSYMGLPROGRAMUNIFORM3FEXTPROC __rglgen_glProgramUniform3fEXT; +RGLSYMGLPROGRAMUNIFORM3FVEXTPROC __rglgen_glProgramUniform3fvEXT; +RGLSYMGLPROGRAMUNIFORM3IEXTPROC __rglgen_glProgramUniform3iEXT; +RGLSYMGLPROGRAMUNIFORM3IVEXTPROC __rglgen_glProgramUniform3ivEXT; +RGLSYMGLPROGRAMUNIFORM4FEXTPROC __rglgen_glProgramUniform4fEXT; +RGLSYMGLPROGRAMUNIFORM4FVEXTPROC __rglgen_glProgramUniform4fvEXT; +RGLSYMGLPROGRAMUNIFORM4IEXTPROC __rglgen_glProgramUniform4iEXT; +RGLSYMGLPROGRAMUNIFORM4IVEXTPROC __rglgen_glProgramUniform4ivEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX2FVEXTPROC __rglgen_glProgramUniformMatrix2fvEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX3FVEXTPROC __rglgen_glProgramUniformMatrix3fvEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX4FVEXTPROC __rglgen_glProgramUniformMatrix4fvEXT; +RGLSYMGLUSEPROGRAMSTAGESEXTPROC __rglgen_glUseProgramStagesEXT; +RGLSYMGLVALIDATEPROGRAMPIPELINEEXTPROC __rglgen_glValidateProgramPipelineEXT; +RGLSYMGLPROGRAMUNIFORM1UIEXTPROC __rglgen_glProgramUniform1uiEXT; +RGLSYMGLPROGRAMUNIFORM2UIEXTPROC __rglgen_glProgramUniform2uiEXT; +RGLSYMGLPROGRAMUNIFORM3UIEXTPROC __rglgen_glProgramUniform3uiEXT; +RGLSYMGLPROGRAMUNIFORM4UIEXTPROC __rglgen_glProgramUniform4uiEXT; +RGLSYMGLPROGRAMUNIFORM1UIVEXTPROC __rglgen_glProgramUniform1uivEXT; +RGLSYMGLPROGRAMUNIFORM2UIVEXTPROC __rglgen_glProgramUniform2uivEXT; +RGLSYMGLPROGRAMUNIFORM3UIVEXTPROC __rglgen_glProgramUniform3uivEXT; +RGLSYMGLPROGRAMUNIFORM4UIVEXTPROC __rglgen_glProgramUniform4uivEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __rglgen_glProgramUniformMatrix2x3fvEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __rglgen_glProgramUniformMatrix3x2fvEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __rglgen_glProgramUniformMatrix2x4fvEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __rglgen_glProgramUniformMatrix4x2fvEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __rglgen_glProgramUniformMatrix3x4fvEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __rglgen_glProgramUniformMatrix4x3fvEXT; +RGLSYMGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __rglgen_glFramebufferPixelLocalStorageSizeEXT; +RGLSYMGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __rglgen_glGetFramebufferPixelLocalStorageSizeEXT; +RGLSYMGLCLEARPIXELLOCALSTORAGEUIEXTPROC __rglgen_glClearPixelLocalStorageuiEXT; +RGLSYMGLTEXPAGECOMMITMENTEXTPROC __rglgen_glTexPageCommitmentEXT; +RGLSYMGLPATCHPARAMETERIEXTPROC __rglgen_glPatchParameteriEXT; +RGLSYMGLTEXPARAMETERIIVEXTPROC __rglgen_glTexParameterIivEXT; +RGLSYMGLTEXPARAMETERIUIVEXTPROC __rglgen_glTexParameterIuivEXT; +RGLSYMGLGETTEXPARAMETERIIVEXTPROC __rglgen_glGetTexParameterIivEXT; +RGLSYMGLGETTEXPARAMETERIUIVEXTPROC __rglgen_glGetTexParameterIuivEXT; +RGLSYMGLSAMPLERPARAMETERIIVEXTPROC __rglgen_glSamplerParameterIivEXT; +RGLSYMGLSAMPLERPARAMETERIUIVEXTPROC __rglgen_glSamplerParameterIuivEXT; +RGLSYMGLGETSAMPLERPARAMETERIIVEXTPROC __rglgen_glGetSamplerParameterIivEXT; +RGLSYMGLGETSAMPLERPARAMETERIUIVEXTPROC __rglgen_glGetSamplerParameterIuivEXT; +RGLSYMGLTEXBUFFEREXTPROC __rglgen_glTexBufferEXT; +RGLSYMGLTEXBUFFERRANGEEXTPROC __rglgen_glTexBufferRangeEXT; +RGLSYMGLTEXSTORAGE1DEXTPROC __rglgen_glTexStorage1DEXT; +RGLSYMGLTEXSTORAGE2DEXTPROC __rglgen_glTexStorage2DEXT; +RGLSYMGLTEXSTORAGE3DEXTPROC __rglgen_glTexStorage3DEXT; +RGLSYMGLTEXTURESTORAGE1DEXTPROC __rglgen_glTextureStorage1DEXT; +RGLSYMGLTEXTURESTORAGE2DEXTPROC __rglgen_glTextureStorage2DEXT; +RGLSYMGLTEXTURESTORAGE3DEXTPROC __rglgen_glTextureStorage3DEXT; +RGLSYMGLTEXTUREVIEWEXTPROC __rglgen_glTextureViewEXT; +RGLSYMGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC __rglgen_glFramebufferTextureMultiviewOVR; +RGLSYMGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC __rglgen_glFramebufferTextureMultisampleMultiviewOVR; + diff --git a/src/platform/libretro/libretro-common/glsym/glsym_es3.c b/src/platform/libretro/libretro-common/glsym/glsym_es3.c new file mode 100644 index 00000000..b247b8f3 --- /dev/null +++ b/src/platform/libretro/libretro-common/glsym/glsym_es3.c @@ -0,0 +1,414 @@ +#include "glsym/glsym.h" +#include +#define SYM(x) { "gl" #x, &(gl##x) } +const struct rglgen_sym_map rglgen_symbol_map[] = { + SYM(BlendBarrierKHR), + SYM(DebugMessageControlKHR), + SYM(DebugMessageInsertKHR), + SYM(DebugMessageCallbackKHR), + SYM(GetDebugMessageLogKHR), + SYM(PushDebugGroupKHR), + SYM(PopDebugGroupKHR), + SYM(ObjectLabelKHR), + SYM(GetObjectLabelKHR), + SYM(ObjectPtrLabelKHR), + SYM(GetObjectPtrLabelKHR), + SYM(GetPointervKHR), + SYM(GetGraphicsResetStatusKHR), + SYM(ReadnPixelsKHR), + SYM(GetnUniformfvKHR), + SYM(GetnUniformivKHR), + SYM(GetnUniformuivKHR), + SYM(EGLImageTargetTexture2DOES), + SYM(EGLImageTargetRenderbufferStorageOES), + SYM(CopyImageSubDataOES), + SYM(EnableiOES), + SYM(DisableiOES), + SYM(BlendEquationiOES), + SYM(BlendEquationSeparateiOES), + SYM(BlendFunciOES), + SYM(BlendFuncSeparateiOES), + SYM(ColorMaskiOES), + SYM(IsEnablediOES), + SYM(DrawElementsBaseVertexOES), + SYM(DrawRangeElementsBaseVertexOES), + SYM(DrawElementsInstancedBaseVertexOES), + SYM(MultiDrawElementsBaseVertexOES), + SYM(FramebufferTextureOES), + SYM(GetProgramBinaryOES), + SYM(ProgramBinaryOES), + SYM(MapBufferOES), + SYM(UnmapBufferOES), + SYM(GetBufferPointervOES), + SYM(PrimitiveBoundingBoxOES), + SYM(MinSampleShadingOES), + SYM(PatchParameteriOES), + SYM(TexImage3DOES), + SYM(TexSubImage3DOES), + SYM(CopyTexSubImage3DOES), + SYM(CompressedTexImage3DOES), + SYM(CompressedTexSubImage3DOES), + SYM(FramebufferTexture3DOES), + SYM(TexParameterIivOES), + SYM(TexParameterIuivOES), + SYM(GetTexParameterIivOES), + SYM(GetTexParameterIuivOES), + SYM(SamplerParameterIivOES), + SYM(SamplerParameterIuivOES), + SYM(GetSamplerParameterIivOES), + SYM(GetSamplerParameterIuivOES), + SYM(TexBufferOES), + SYM(TexBufferRangeOES), + SYM(TexStorage3DMultisampleOES), + SYM(TextureViewOES), + SYM(BindVertexArrayOES), + SYM(DeleteVertexArraysOES), + SYM(GenVertexArraysOES), + SYM(IsVertexArrayOES), + SYM(ViewportArrayvOES), + SYM(ViewportIndexedfOES), + SYM(ViewportIndexedfvOES), + SYM(ScissorArrayvOES), + SYM(ScissorIndexedOES), + SYM(ScissorIndexedvOES), + SYM(DepthRangeArrayfvOES), + SYM(DepthRangeIndexedfOES), + SYM(GetFloati_vOES), + SYM(DrawArraysInstancedBaseInstanceEXT), + SYM(DrawElementsInstancedBaseInstanceEXT), + SYM(DrawElementsInstancedBaseVertexBaseInstanceEXT), + SYM(BindFragDataLocationIndexedEXT), + SYM(BindFragDataLocationEXT), + SYM(GetProgramResourceLocationIndexEXT), + SYM(GetFragDataIndexEXT), + SYM(BufferStorageEXT), + SYM(ClearTexImageEXT), + SYM(ClearTexSubImageEXT), + SYM(CopyImageSubDataEXT), + SYM(LabelObjectEXT), + SYM(GetObjectLabelEXT), + SYM(InsertEventMarkerEXT), + SYM(PushGroupMarkerEXT), + SYM(PopGroupMarkerEXT), + SYM(DiscardFramebufferEXT), + SYM(GenQueriesEXT), + SYM(DeleteQueriesEXT), + SYM(IsQueryEXT), + SYM(BeginQueryEXT), + SYM(EndQueryEXT), + SYM(QueryCounterEXT), + SYM(GetQueryivEXT), + SYM(GetQueryObjectivEXT), + SYM(GetQueryObjectuivEXT), + SYM(GetQueryObjecti64vEXT), + SYM(GetQueryObjectui64vEXT), + SYM(DrawBuffersEXT), + SYM(EnableiEXT), + SYM(DisableiEXT), + SYM(BlendEquationiEXT), + SYM(BlendEquationSeparateiEXT), + SYM(BlendFunciEXT), + SYM(BlendFuncSeparateiEXT), + SYM(ColorMaskiEXT), + SYM(IsEnablediEXT), + SYM(DrawElementsBaseVertexEXT), + SYM(DrawRangeElementsBaseVertexEXT), + SYM(DrawElementsInstancedBaseVertexEXT), + SYM(MultiDrawElementsBaseVertexEXT), + SYM(DrawArraysInstancedEXT), + SYM(DrawElementsInstancedEXT), + SYM(FramebufferTextureEXT), + SYM(VertexAttribDivisorEXT), + SYM(MapBufferRangeEXT), + SYM(FlushMappedBufferRangeEXT), + SYM(MultiDrawArraysEXT), + SYM(MultiDrawElementsEXT), + SYM(MultiDrawArraysIndirectEXT), + SYM(MultiDrawElementsIndirectEXT), + SYM(RenderbufferStorageMultisampleEXT), + SYM(FramebufferTexture2DMultisampleEXT), + SYM(ReadBufferIndexedEXT), + SYM(DrawBuffersIndexedEXT), + SYM(GetIntegeri_vEXT), + SYM(PolygonOffsetClampEXT), + SYM(PrimitiveBoundingBoxEXT), + SYM(RasterSamplesEXT), + SYM(GetGraphicsResetStatusEXT), + SYM(ReadnPixelsEXT), + SYM(GetnUniformfvEXT), + SYM(GetnUniformivEXT), + SYM(ActiveShaderProgramEXT), + SYM(BindProgramPipelineEXT), + SYM(CreateShaderProgramvEXT), + SYM(DeleteProgramPipelinesEXT), + SYM(GenProgramPipelinesEXT), + SYM(GetProgramPipelineInfoLogEXT), + SYM(GetProgramPipelineivEXT), + SYM(IsProgramPipelineEXT), + SYM(ProgramParameteriEXT), + SYM(ProgramUniform1fEXT), + SYM(ProgramUniform1fvEXT), + SYM(ProgramUniform1iEXT), + SYM(ProgramUniform1ivEXT), + SYM(ProgramUniform2fEXT), + SYM(ProgramUniform2fvEXT), + SYM(ProgramUniform2iEXT), + SYM(ProgramUniform2ivEXT), + SYM(ProgramUniform3fEXT), + SYM(ProgramUniform3fvEXT), + SYM(ProgramUniform3iEXT), + SYM(ProgramUniform3ivEXT), + SYM(ProgramUniform4fEXT), + SYM(ProgramUniform4fvEXT), + SYM(ProgramUniform4iEXT), + SYM(ProgramUniform4ivEXT), + SYM(ProgramUniformMatrix2fvEXT), + SYM(ProgramUniformMatrix3fvEXT), + SYM(ProgramUniformMatrix4fvEXT), + SYM(UseProgramStagesEXT), + SYM(ValidateProgramPipelineEXT), + SYM(ProgramUniform1uiEXT), + SYM(ProgramUniform2uiEXT), + SYM(ProgramUniform3uiEXT), + SYM(ProgramUniform4uiEXT), + SYM(ProgramUniform1uivEXT), + SYM(ProgramUniform2uivEXT), + SYM(ProgramUniform3uivEXT), + SYM(ProgramUniform4uivEXT), + SYM(ProgramUniformMatrix2x3fvEXT), + SYM(ProgramUniformMatrix3x2fvEXT), + SYM(ProgramUniformMatrix2x4fvEXT), + SYM(ProgramUniformMatrix4x2fvEXT), + SYM(ProgramUniformMatrix3x4fvEXT), + SYM(ProgramUniformMatrix4x3fvEXT), + SYM(FramebufferPixelLocalStorageSizeEXT), + SYM(GetFramebufferPixelLocalStorageSizeEXT), + SYM(ClearPixelLocalStorageuiEXT), + SYM(TexPageCommitmentEXT), + SYM(PatchParameteriEXT), + SYM(TexParameterIivEXT), + SYM(TexParameterIuivEXT), + SYM(GetTexParameterIivEXT), + SYM(GetTexParameterIuivEXT), + SYM(SamplerParameterIivEXT), + SYM(SamplerParameterIuivEXT), + SYM(GetSamplerParameterIivEXT), + SYM(GetSamplerParameterIuivEXT), + SYM(TexBufferEXT), + SYM(TexBufferRangeEXT), + SYM(TexStorage1DEXT), + SYM(TexStorage2DEXT), + SYM(TexStorage3DEXT), + SYM(TextureStorage1DEXT), + SYM(TextureStorage2DEXT), + SYM(TextureStorage3DEXT), + SYM(TextureViewEXT), + SYM(FramebufferTextureMultiviewOVR), + SYM(FramebufferTextureMultisampleMultiviewOVR), + + { NULL, NULL }, +}; +RGLSYMGLBLENDBARRIERKHRPROC __rglgen_glBlendBarrierKHR; +RGLSYMGLDEBUGMESSAGECONTROLKHRPROC __rglgen_glDebugMessageControlKHR; +RGLSYMGLDEBUGMESSAGEINSERTKHRPROC __rglgen_glDebugMessageInsertKHR; +RGLSYMGLDEBUGMESSAGECALLBACKKHRPROC __rglgen_glDebugMessageCallbackKHR; +RGLSYMGLGETDEBUGMESSAGELOGKHRPROC __rglgen_glGetDebugMessageLogKHR; +RGLSYMGLPUSHDEBUGGROUPKHRPROC __rglgen_glPushDebugGroupKHR; +RGLSYMGLPOPDEBUGGROUPKHRPROC __rglgen_glPopDebugGroupKHR; +RGLSYMGLOBJECTLABELKHRPROC __rglgen_glObjectLabelKHR; +RGLSYMGLGETOBJECTLABELKHRPROC __rglgen_glGetObjectLabelKHR; +RGLSYMGLOBJECTPTRLABELKHRPROC __rglgen_glObjectPtrLabelKHR; +RGLSYMGLGETOBJECTPTRLABELKHRPROC __rglgen_glGetObjectPtrLabelKHR; +RGLSYMGLGETPOINTERVKHRPROC __rglgen_glGetPointervKHR; +RGLSYMGLGETGRAPHICSRESETSTATUSKHRPROC __rglgen_glGetGraphicsResetStatusKHR; +RGLSYMGLREADNPIXELSKHRPROC __rglgen_glReadnPixelsKHR; +RGLSYMGLGETNUNIFORMFVKHRPROC __rglgen_glGetnUniformfvKHR; +RGLSYMGLGETNUNIFORMIVKHRPROC __rglgen_glGetnUniformivKHR; +RGLSYMGLGETNUNIFORMUIVKHRPROC __rglgen_glGetnUniformuivKHR; +RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC __rglgen_glEGLImageTargetTexture2DOES; +RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __rglgen_glEGLImageTargetRenderbufferStorageOES; +RGLSYMGLCOPYIMAGESUBDATAOESPROC __rglgen_glCopyImageSubDataOES; +RGLSYMGLENABLEIOESPROC __rglgen_glEnableiOES; +RGLSYMGLDISABLEIOESPROC __rglgen_glDisableiOES; +RGLSYMGLBLENDEQUATIONIOESPROC __rglgen_glBlendEquationiOES; +RGLSYMGLBLENDEQUATIONSEPARATEIOESPROC __rglgen_glBlendEquationSeparateiOES; +RGLSYMGLBLENDFUNCIOESPROC __rglgen_glBlendFunciOES; +RGLSYMGLBLENDFUNCSEPARATEIOESPROC __rglgen_glBlendFuncSeparateiOES; +RGLSYMGLCOLORMASKIOESPROC __rglgen_glColorMaskiOES; +RGLSYMGLISENABLEDIOESPROC __rglgen_glIsEnablediOES; +RGLSYMGLDRAWELEMENTSBASEVERTEXOESPROC __rglgen_glDrawElementsBaseVertexOES; +RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXOESPROC __rglgen_glDrawRangeElementsBaseVertexOES; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC __rglgen_glDrawElementsInstancedBaseVertexOES; +RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXOESPROC __rglgen_glMultiDrawElementsBaseVertexOES; +RGLSYMGLFRAMEBUFFERTEXTUREOESPROC __rglgen_glFramebufferTextureOES; +RGLSYMGLGETPROGRAMBINARYOESPROC __rglgen_glGetProgramBinaryOES; +RGLSYMGLPROGRAMBINARYOESPROC __rglgen_glProgramBinaryOES; +RGLSYMGLMAPBUFFEROESPROC __rglgen_glMapBufferOES; +RGLSYMGLUNMAPBUFFEROESPROC __rglgen_glUnmapBufferOES; +RGLSYMGLGETBUFFERPOINTERVOESPROC __rglgen_glGetBufferPointervOES; +RGLSYMGLPRIMITIVEBOUNDINGBOXOESPROC __rglgen_glPrimitiveBoundingBoxOES; +RGLSYMGLMINSAMPLESHADINGOESPROC __rglgen_glMinSampleShadingOES; +RGLSYMGLPATCHPARAMETERIOESPROC __rglgen_glPatchParameteriOES; +RGLSYMGLTEXIMAGE3DOESPROC __rglgen_glTexImage3DOES; +RGLSYMGLTEXSUBIMAGE3DOESPROC __rglgen_glTexSubImage3DOES; +RGLSYMGLCOPYTEXSUBIMAGE3DOESPROC __rglgen_glCopyTexSubImage3DOES; +RGLSYMGLCOMPRESSEDTEXIMAGE3DOESPROC __rglgen_glCompressedTexImage3DOES; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DOESPROC __rglgen_glCompressedTexSubImage3DOES; +RGLSYMGLFRAMEBUFFERTEXTURE3DOESPROC __rglgen_glFramebufferTexture3DOES; +RGLSYMGLTEXPARAMETERIIVOESPROC __rglgen_glTexParameterIivOES; +RGLSYMGLTEXPARAMETERIUIVOESPROC __rglgen_glTexParameterIuivOES; +RGLSYMGLGETTEXPARAMETERIIVOESPROC __rglgen_glGetTexParameterIivOES; +RGLSYMGLGETTEXPARAMETERIUIVOESPROC __rglgen_glGetTexParameterIuivOES; +RGLSYMGLSAMPLERPARAMETERIIVOESPROC __rglgen_glSamplerParameterIivOES; +RGLSYMGLSAMPLERPARAMETERIUIVOESPROC __rglgen_glSamplerParameterIuivOES; +RGLSYMGLGETSAMPLERPARAMETERIIVOESPROC __rglgen_glGetSamplerParameterIivOES; +RGLSYMGLGETSAMPLERPARAMETERIUIVOESPROC __rglgen_glGetSamplerParameterIuivOES; +RGLSYMGLTEXBUFFEROESPROC __rglgen_glTexBufferOES; +RGLSYMGLTEXBUFFERRANGEOESPROC __rglgen_glTexBufferRangeOES; +RGLSYMGLTEXSTORAGE3DMULTISAMPLEOESPROC __rglgen_glTexStorage3DMultisampleOES; +RGLSYMGLTEXTUREVIEWOESPROC __rglgen_glTextureViewOES; +RGLSYMGLBINDVERTEXARRAYOESPROC __rglgen_glBindVertexArrayOES; +RGLSYMGLDELETEVERTEXARRAYSOESPROC __rglgen_glDeleteVertexArraysOES; +RGLSYMGLGENVERTEXARRAYSOESPROC __rglgen_glGenVertexArraysOES; +RGLSYMGLISVERTEXARRAYOESPROC __rglgen_glIsVertexArrayOES; +RGLSYMGLVIEWPORTARRAYVOESPROC __rglgen_glViewportArrayvOES; +RGLSYMGLVIEWPORTINDEXEDFOESPROC __rglgen_glViewportIndexedfOES; +RGLSYMGLVIEWPORTINDEXEDFVOESPROC __rglgen_glViewportIndexedfvOES; +RGLSYMGLSCISSORARRAYVOESPROC __rglgen_glScissorArrayvOES; +RGLSYMGLSCISSORINDEXEDOESPROC __rglgen_glScissorIndexedOES; +RGLSYMGLSCISSORINDEXEDVOESPROC __rglgen_glScissorIndexedvOES; +RGLSYMGLDEPTHRANGEARRAYFVOESPROC __rglgen_glDepthRangeArrayfvOES; +RGLSYMGLDEPTHRANGEINDEXEDFOESPROC __rglgen_glDepthRangeIndexedfOES; +RGLSYMGLGETFLOATI_VOESPROC __rglgen_glGetFloati_vOES; +RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC __rglgen_glDrawArraysInstancedBaseInstanceEXT; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC __rglgen_glDrawElementsInstancedBaseInstanceEXT; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC __rglgen_glDrawElementsInstancedBaseVertexBaseInstanceEXT; +RGLSYMGLBINDFRAGDATALOCATIONINDEXEDEXTPROC __rglgen_glBindFragDataLocationIndexedEXT; +RGLSYMGLBINDFRAGDATALOCATIONEXTPROC __rglgen_glBindFragDataLocationEXT; +RGLSYMGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC __rglgen_glGetProgramResourceLocationIndexEXT; +RGLSYMGLGETFRAGDATAINDEXEXTPROC __rglgen_glGetFragDataIndexEXT; +RGLSYMGLBUFFERSTORAGEEXTPROC __rglgen_glBufferStorageEXT; +RGLSYMGLCLEARTEXIMAGEEXTPROC __rglgen_glClearTexImageEXT; +RGLSYMGLCLEARTEXSUBIMAGEEXTPROC __rglgen_glClearTexSubImageEXT; +RGLSYMGLCOPYIMAGESUBDATAEXTPROC __rglgen_glCopyImageSubDataEXT; +RGLSYMGLLABELOBJECTEXTPROC __rglgen_glLabelObjectEXT; +RGLSYMGLGETOBJECTLABELEXTPROC __rglgen_glGetObjectLabelEXT; +RGLSYMGLINSERTEVENTMARKEREXTPROC __rglgen_glInsertEventMarkerEXT; +RGLSYMGLPUSHGROUPMARKEREXTPROC __rglgen_glPushGroupMarkerEXT; +RGLSYMGLPOPGROUPMARKEREXTPROC __rglgen_glPopGroupMarkerEXT; +RGLSYMGLDISCARDFRAMEBUFFEREXTPROC __rglgen_glDiscardFramebufferEXT; +RGLSYMGLGENQUERIESEXTPROC __rglgen_glGenQueriesEXT; +RGLSYMGLDELETEQUERIESEXTPROC __rglgen_glDeleteQueriesEXT; +RGLSYMGLISQUERYEXTPROC __rglgen_glIsQueryEXT; +RGLSYMGLBEGINQUERYEXTPROC __rglgen_glBeginQueryEXT; +RGLSYMGLENDQUERYEXTPROC __rglgen_glEndQueryEXT; +RGLSYMGLQUERYCOUNTEREXTPROC __rglgen_glQueryCounterEXT; +RGLSYMGLGETQUERYIVEXTPROC __rglgen_glGetQueryivEXT; +RGLSYMGLGETQUERYOBJECTIVEXTPROC __rglgen_glGetQueryObjectivEXT; +RGLSYMGLGETQUERYOBJECTUIVEXTPROC __rglgen_glGetQueryObjectuivEXT; +RGLSYMGLGETQUERYOBJECTI64VEXTPROC __rglgen_glGetQueryObjecti64vEXT; +RGLSYMGLGETQUERYOBJECTUI64VEXTPROC __rglgen_glGetQueryObjectui64vEXT; +RGLSYMGLDRAWBUFFERSEXTPROC __rglgen_glDrawBuffersEXT; +RGLSYMGLENABLEIEXTPROC __rglgen_glEnableiEXT; +RGLSYMGLDISABLEIEXTPROC __rglgen_glDisableiEXT; +RGLSYMGLBLENDEQUATIONIEXTPROC __rglgen_glBlendEquationiEXT; +RGLSYMGLBLENDEQUATIONSEPARATEIEXTPROC __rglgen_glBlendEquationSeparateiEXT; +RGLSYMGLBLENDFUNCIEXTPROC __rglgen_glBlendFunciEXT; +RGLSYMGLBLENDFUNCSEPARATEIEXTPROC __rglgen_glBlendFuncSeparateiEXT; +RGLSYMGLCOLORMASKIEXTPROC __rglgen_glColorMaskiEXT; +RGLSYMGLISENABLEDIEXTPROC __rglgen_glIsEnablediEXT; +RGLSYMGLDRAWELEMENTSBASEVERTEXEXTPROC __rglgen_glDrawElementsBaseVertexEXT; +RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC __rglgen_glDrawRangeElementsBaseVertexEXT; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC __rglgen_glDrawElementsInstancedBaseVertexEXT; +RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC __rglgen_glMultiDrawElementsBaseVertexEXT; +RGLSYMGLDRAWARRAYSINSTANCEDEXTPROC __rglgen_glDrawArraysInstancedEXT; +RGLSYMGLDRAWELEMENTSINSTANCEDEXTPROC __rglgen_glDrawElementsInstancedEXT; +RGLSYMGLFRAMEBUFFERTEXTUREEXTPROC __rglgen_glFramebufferTextureEXT; +RGLSYMGLVERTEXATTRIBDIVISOREXTPROC __rglgen_glVertexAttribDivisorEXT; +RGLSYMGLMAPBUFFERRANGEEXTPROC __rglgen_glMapBufferRangeEXT; +RGLSYMGLFLUSHMAPPEDBUFFERRANGEEXTPROC __rglgen_glFlushMappedBufferRangeEXT; +RGLSYMGLMULTIDRAWARRAYSEXTPROC __rglgen_glMultiDrawArraysEXT; +RGLSYMGLMULTIDRAWELEMENTSEXTPROC __rglgen_glMultiDrawElementsEXT; +RGLSYMGLMULTIDRAWARRAYSINDIRECTEXTPROC __rglgen_glMultiDrawArraysIndirectEXT; +RGLSYMGLMULTIDRAWELEMENTSINDIRECTEXTPROC __rglgen_glMultiDrawElementsIndirectEXT; +RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __rglgen_glRenderbufferStorageMultisampleEXT; +RGLSYMGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC __rglgen_glFramebufferTexture2DMultisampleEXT; +RGLSYMGLREADBUFFERINDEXEDEXTPROC __rglgen_glReadBufferIndexedEXT; +RGLSYMGLDRAWBUFFERSINDEXEDEXTPROC __rglgen_glDrawBuffersIndexedEXT; +RGLSYMGLGETINTEGERI_VEXTPROC __rglgen_glGetIntegeri_vEXT; +RGLSYMGLPOLYGONOFFSETCLAMPEXTPROC __rglgen_glPolygonOffsetClampEXT; +RGLSYMGLPRIMITIVEBOUNDINGBOXEXTPROC __rglgen_glPrimitiveBoundingBoxEXT; +RGLSYMGLRASTERSAMPLESEXTPROC __rglgen_glRasterSamplesEXT; +RGLSYMGLGETGRAPHICSRESETSTATUSEXTPROC __rglgen_glGetGraphicsResetStatusEXT; +RGLSYMGLREADNPIXELSEXTPROC __rglgen_glReadnPixelsEXT; +RGLSYMGLGETNUNIFORMFVEXTPROC __rglgen_glGetnUniformfvEXT; +RGLSYMGLGETNUNIFORMIVEXTPROC __rglgen_glGetnUniformivEXT; +RGLSYMGLACTIVESHADERPROGRAMEXTPROC __rglgen_glActiveShaderProgramEXT; +RGLSYMGLBINDPROGRAMPIPELINEEXTPROC __rglgen_glBindProgramPipelineEXT; +RGLSYMGLCREATESHADERPROGRAMVEXTPROC __rglgen_glCreateShaderProgramvEXT; +RGLSYMGLDELETEPROGRAMPIPELINESEXTPROC __rglgen_glDeleteProgramPipelinesEXT; +RGLSYMGLGENPROGRAMPIPELINESEXTPROC __rglgen_glGenProgramPipelinesEXT; +RGLSYMGLGETPROGRAMPIPELINEINFOLOGEXTPROC __rglgen_glGetProgramPipelineInfoLogEXT; +RGLSYMGLGETPROGRAMPIPELINEIVEXTPROC __rglgen_glGetProgramPipelineivEXT; +RGLSYMGLISPROGRAMPIPELINEEXTPROC __rglgen_glIsProgramPipelineEXT; +RGLSYMGLPROGRAMPARAMETERIEXTPROC __rglgen_glProgramParameteriEXT; +RGLSYMGLPROGRAMUNIFORM1FEXTPROC __rglgen_glProgramUniform1fEXT; +RGLSYMGLPROGRAMUNIFORM1FVEXTPROC __rglgen_glProgramUniform1fvEXT; +RGLSYMGLPROGRAMUNIFORM1IEXTPROC __rglgen_glProgramUniform1iEXT; +RGLSYMGLPROGRAMUNIFORM1IVEXTPROC __rglgen_glProgramUniform1ivEXT; +RGLSYMGLPROGRAMUNIFORM2FEXTPROC __rglgen_glProgramUniform2fEXT; +RGLSYMGLPROGRAMUNIFORM2FVEXTPROC __rglgen_glProgramUniform2fvEXT; +RGLSYMGLPROGRAMUNIFORM2IEXTPROC __rglgen_glProgramUniform2iEXT; +RGLSYMGLPROGRAMUNIFORM2IVEXTPROC __rglgen_glProgramUniform2ivEXT; +RGLSYMGLPROGRAMUNIFORM3FEXTPROC __rglgen_glProgramUniform3fEXT; +RGLSYMGLPROGRAMUNIFORM3FVEXTPROC __rglgen_glProgramUniform3fvEXT; +RGLSYMGLPROGRAMUNIFORM3IEXTPROC __rglgen_glProgramUniform3iEXT; +RGLSYMGLPROGRAMUNIFORM3IVEXTPROC __rglgen_glProgramUniform3ivEXT; +RGLSYMGLPROGRAMUNIFORM4FEXTPROC __rglgen_glProgramUniform4fEXT; +RGLSYMGLPROGRAMUNIFORM4FVEXTPROC __rglgen_glProgramUniform4fvEXT; +RGLSYMGLPROGRAMUNIFORM4IEXTPROC __rglgen_glProgramUniform4iEXT; +RGLSYMGLPROGRAMUNIFORM4IVEXTPROC __rglgen_glProgramUniform4ivEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX2FVEXTPROC __rglgen_glProgramUniformMatrix2fvEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX3FVEXTPROC __rglgen_glProgramUniformMatrix3fvEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX4FVEXTPROC __rglgen_glProgramUniformMatrix4fvEXT; +RGLSYMGLUSEPROGRAMSTAGESEXTPROC __rglgen_glUseProgramStagesEXT; +RGLSYMGLVALIDATEPROGRAMPIPELINEEXTPROC __rglgen_glValidateProgramPipelineEXT; +RGLSYMGLPROGRAMUNIFORM1UIEXTPROC __rglgen_glProgramUniform1uiEXT; +RGLSYMGLPROGRAMUNIFORM2UIEXTPROC __rglgen_glProgramUniform2uiEXT; +RGLSYMGLPROGRAMUNIFORM3UIEXTPROC __rglgen_glProgramUniform3uiEXT; +RGLSYMGLPROGRAMUNIFORM4UIEXTPROC __rglgen_glProgramUniform4uiEXT; +RGLSYMGLPROGRAMUNIFORM1UIVEXTPROC __rglgen_glProgramUniform1uivEXT; +RGLSYMGLPROGRAMUNIFORM2UIVEXTPROC __rglgen_glProgramUniform2uivEXT; +RGLSYMGLPROGRAMUNIFORM3UIVEXTPROC __rglgen_glProgramUniform3uivEXT; +RGLSYMGLPROGRAMUNIFORM4UIVEXTPROC __rglgen_glProgramUniform4uivEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __rglgen_glProgramUniformMatrix2x3fvEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __rglgen_glProgramUniformMatrix3x2fvEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __rglgen_glProgramUniformMatrix2x4fvEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __rglgen_glProgramUniformMatrix4x2fvEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __rglgen_glProgramUniformMatrix3x4fvEXT; +RGLSYMGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __rglgen_glProgramUniformMatrix4x3fvEXT; +RGLSYMGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __rglgen_glFramebufferPixelLocalStorageSizeEXT; +RGLSYMGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __rglgen_glGetFramebufferPixelLocalStorageSizeEXT; +RGLSYMGLCLEARPIXELLOCALSTORAGEUIEXTPROC __rglgen_glClearPixelLocalStorageuiEXT; +RGLSYMGLTEXPAGECOMMITMENTEXTPROC __rglgen_glTexPageCommitmentEXT; +RGLSYMGLPATCHPARAMETERIEXTPROC __rglgen_glPatchParameteriEXT; +RGLSYMGLTEXPARAMETERIIVEXTPROC __rglgen_glTexParameterIivEXT; +RGLSYMGLTEXPARAMETERIUIVEXTPROC __rglgen_glTexParameterIuivEXT; +RGLSYMGLGETTEXPARAMETERIIVEXTPROC __rglgen_glGetTexParameterIivEXT; +RGLSYMGLGETTEXPARAMETERIUIVEXTPROC __rglgen_glGetTexParameterIuivEXT; +RGLSYMGLSAMPLERPARAMETERIIVEXTPROC __rglgen_glSamplerParameterIivEXT; +RGLSYMGLSAMPLERPARAMETERIUIVEXTPROC __rglgen_glSamplerParameterIuivEXT; +RGLSYMGLGETSAMPLERPARAMETERIIVEXTPROC __rglgen_glGetSamplerParameterIivEXT; +RGLSYMGLGETSAMPLERPARAMETERIUIVEXTPROC __rglgen_glGetSamplerParameterIuivEXT; +RGLSYMGLTEXBUFFEREXTPROC __rglgen_glTexBufferEXT; +RGLSYMGLTEXBUFFERRANGEEXTPROC __rglgen_glTexBufferRangeEXT; +RGLSYMGLTEXSTORAGE1DEXTPROC __rglgen_glTexStorage1DEXT; +RGLSYMGLTEXSTORAGE2DEXTPROC __rglgen_glTexStorage2DEXT; +RGLSYMGLTEXSTORAGE3DEXTPROC __rglgen_glTexStorage3DEXT; +RGLSYMGLTEXTURESTORAGE1DEXTPROC __rglgen_glTextureStorage1DEXT; +RGLSYMGLTEXTURESTORAGE2DEXTPROC __rglgen_glTextureStorage2DEXT; +RGLSYMGLTEXTURESTORAGE3DEXTPROC __rglgen_glTextureStorage3DEXT; +RGLSYMGLTEXTUREVIEWEXTPROC __rglgen_glTextureViewEXT; +RGLSYMGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC __rglgen_glFramebufferTextureMultiviewOVR; +RGLSYMGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC __rglgen_glFramebufferTextureMultisampleMultiviewOVR; + diff --git a/src/platform/libretro/libretro-common/glsym/glsym_gl.c b/src/platform/libretro/libretro-common/glsym/glsym_gl.c new file mode 100644 index 00000000..33a03e0d --- /dev/null +++ b/src/platform/libretro/libretro-common/glsym/glsym_gl.c @@ -0,0 +1,2542 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this libretro SDK code part (glsym). + * --------------------------------------------------------------------------------------- + * + * 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. + */ + +#include + +#include + +#define SYM(x) { "gl" #x, &(gl##x) } + +const struct rglgen_sym_map rglgen_symbol_map[] = { +#ifdef HAVE_LIBNX + SYM(ClearIndex), + SYM(ClearColor), + SYM(Clear), + SYM(IndexMask), + SYM(ColorMask), + SYM(AlphaFunc), + SYM(BlendFunc), + SYM(LogicOp), + SYM(CullFace), + SYM(FrontFace), + SYM(PointSize), + SYM(LineWidth), + SYM(LineStipple), + SYM(PolygonMode), + SYM(PolygonOffset), + SYM(PolygonStipple), + SYM(GetPolygonStipple), + SYM(EdgeFlag), + SYM(EdgeFlagv), + SYM(Scissor), + SYM(ClipPlane), + SYM(GetClipPlane), + SYM(DrawBuffer), + SYM(ReadBuffer), + SYM(Enable), + SYM(Disable), + SYM(IsEnabled), + SYM(EnableClientState), + SYM(DisableClientState), + SYM(GetBooleanv), + SYM(GetDoublev), + SYM(GetFloatv), + SYM(GetIntegerv), + SYM(PushAttrib), + SYM(PopAttrib), + SYM(PushClientAttrib), + SYM(PopClientAttrib), + SYM(RenderMode), + SYM(GetError), + SYM(GetString), + SYM(Finish), + SYM(Flush), + SYM(Hint), + SYM(ClearDepth), + SYM(DepthFunc), + SYM(DepthMask), + SYM(DepthRange), + SYM(ClearAccum), + SYM(Accum), + SYM(MatrixMode), + SYM(Ortho), + SYM(Frustum), + SYM(Viewport), + SYM(PushMatrix), + SYM(PopMatrix), + SYM(LoadIdentity), + SYM(LoadMatrixd), + SYM(LoadMatrixf), + SYM(MultMatrixd), + SYM(MultMatrixf), + SYM(Rotated), + SYM(Rotatef), + SYM(Scaled), + SYM(Scalef), + SYM(Translated), + SYM(Translatef), + SYM(IsList), + SYM(DeleteLists), + SYM(GenLists), + SYM(NewList), + SYM(EndList), + SYM(CallList), + SYM(CallLists), + SYM(ListBase), + SYM(Begin), + SYM(End), + SYM(Vertex2d), + SYM(Vertex2f), + SYM(Vertex2i), + SYM(Vertex2s), + SYM(Vertex3d), + SYM(Vertex3f), + SYM(Vertex3i), + SYM(Vertex3s), + SYM(Vertex4d), + SYM(Vertex4f), + SYM(Vertex4i), + SYM(Vertex4s), + SYM(Vertex2dv), + SYM(Vertex2fv), + SYM(Vertex2iv), + SYM(Vertex2sv), + SYM(Vertex3dv), + SYM(Vertex3fv), + SYM(Vertex3iv), + SYM(Vertex3sv), + SYM(Vertex4dv), + SYM(Vertex4fv), + SYM(Vertex4iv), + SYM(Vertex4sv), + SYM(Normal3b), + SYM(Normal3d), + SYM(Normal3f), + SYM(Normal3i), + SYM(Normal3s), + SYM(Normal3bv), + SYM(Normal3dv), + SYM(Normal3fv), + SYM(Normal3iv), + SYM(Normal3sv), + SYM(Indexd), + SYM(Indexf), + SYM(Indexi), + SYM(Indexs), + SYM(Indexub), + SYM(Indexdv), + SYM(Indexfv), + SYM(Indexiv), + SYM(Indexsv), + SYM(Indexubv), + SYM(Color3b), + SYM(Color3d), + SYM(Color3f), + SYM(Color3i), + SYM(Color3s), + SYM(Color3ub), + SYM(Color3ui), + SYM(Color3us), + SYM(Color4b), + SYM(Color4d), + SYM(Color4f), + SYM(Color4i), + SYM(Color4s), + SYM(Color4ub), + SYM(Color4ui), + SYM(Color4us), + SYM(Color3bv), + SYM(Color3dv), + SYM(Color3fv), + SYM(Color3iv), + SYM(Color3sv), + SYM(Color3ubv), + SYM(Color3uiv), + SYM(Color3usv), + SYM(Color4bv), + SYM(Color4dv), + SYM(Color4fv), + SYM(Color4iv), + SYM(Color4sv), + SYM(Color4ubv), + SYM(Color4uiv), + SYM(Color4usv), + SYM(TexCoord1d), + SYM(TexCoord1f), + SYM(TexCoord1i), + SYM(TexCoord1s), + SYM(TexCoord2d), + SYM(TexCoord2f), + SYM(TexCoord2i), + SYM(TexCoord2s), + SYM(TexCoord3d), + SYM(TexCoord3f), + SYM(TexCoord3i), + SYM(TexCoord3s), + SYM(TexCoord4d), + SYM(TexCoord4f), + SYM(TexCoord4i), + SYM(TexCoord4s), + SYM(TexCoord1dv), + SYM(TexCoord1fv), + SYM(TexCoord1iv), + SYM(TexCoord1sv), + SYM(TexCoord2dv), + SYM(TexCoord2fv), + SYM(TexCoord2iv), + SYM(TexCoord2sv), + SYM(TexCoord3dv), + SYM(TexCoord3fv), + SYM(TexCoord3iv), + SYM(TexCoord3sv), + SYM(TexCoord4dv), + SYM(TexCoord4fv), + SYM(TexCoord4iv), + SYM(TexCoord4sv), + SYM(RasterPos2d), + SYM(RasterPos2f), + SYM(RasterPos2i), + SYM(RasterPos2s), + SYM(RasterPos3d), + SYM(RasterPos3f), + SYM(RasterPos3i), + SYM(RasterPos3s), + SYM(RasterPos4d), + SYM(RasterPos4f), + SYM(RasterPos4i), + SYM(RasterPos4s), + SYM(RasterPos2dv), + SYM(RasterPos2fv), + SYM(RasterPos2iv), + SYM(RasterPos2sv), + SYM(RasterPos3dv), + SYM(RasterPos3fv), + SYM(RasterPos3iv), + SYM(RasterPos3sv), + SYM(RasterPos4dv), + SYM(RasterPos4fv), + SYM(RasterPos4iv), + SYM(RasterPos4sv), + SYM(Rectd), + SYM(Rectf), + SYM(Recti), + SYM(Rects), + SYM(Rectdv), + SYM(Rectfv), + SYM(Rectiv), + SYM(Rectsv), + SYM(VertexPointer), + SYM(NormalPointer), + SYM(ColorPointer), + SYM(IndexPointer), + SYM(TexCoordPointer), + SYM(EdgeFlagPointer), + SYM(GetPointerv), + SYM(ArrayElement), + SYM(DrawArrays), + SYM(DrawElements), + SYM(InterleavedArrays), + SYM(ShadeModel), + SYM(Lightf), + SYM(Lighti), + SYM(Lightfv), + SYM(Lightiv), + SYM(GetLightfv), + SYM(GetLightiv), + SYM(LightModelf), + SYM(LightModeli), + SYM(LightModelfv), + SYM(LightModeliv), + SYM(Materialf), + SYM(Materiali), + SYM(Materialfv), + SYM(Materialiv), + SYM(GetMaterialfv), + SYM(GetMaterialiv), + SYM(ColorMaterial), + SYM(PixelZoom), + SYM(PixelStoref), + SYM(PixelStorei), + SYM(PixelTransferf), + SYM(PixelTransferi), + SYM(PixelMapfv), + SYM(PixelMapuiv), + SYM(PixelMapusv), + SYM(GetPixelMapfv), + SYM(GetPixelMapuiv), + SYM(GetPixelMapusv), + SYM(Bitmap), + SYM(ReadPixels), + SYM(DrawPixels), + SYM(CopyPixels), + SYM(StencilFunc), + SYM(StencilMask), + SYM(StencilOp), + SYM(ClearStencil), + SYM(TexGend), + SYM(TexGenf), + SYM(TexGeni), + SYM(TexGendv), + SYM(TexGenfv), + SYM(TexGeniv), + SYM(GetTexGendv), + SYM(GetTexGenfv), + SYM(GetTexGeniv), + SYM(TexEnvf), + SYM(TexEnvi), + SYM(TexEnvfv), + SYM(TexEnviv), + SYM(GetTexEnvfv), + SYM(GetTexEnviv), + SYM(TexParameterf), + SYM(TexParameteri), + SYM(TexParameterfv), + SYM(TexParameteriv), + SYM(GetTexParameterfv), + SYM(GetTexParameteriv), + SYM(GetTexLevelParameterfv), + SYM(GetTexLevelParameteriv), + SYM(TexImage1D), + SYM(TexImage2D), + SYM(GetTexImage), + SYM(GenTextures), + SYM(DeleteTextures), + SYM(BindTexture), + SYM(PrioritizeTextures), + SYM(AreTexturesResident), + SYM(IsTexture), + SYM(TexSubImage1D), + SYM(TexSubImage2D), + SYM(CopyTexImage1D), + SYM(CopyTexImage2D), + SYM(CopyTexSubImage1D), + SYM(CopyTexSubImage2D), + SYM(Map1d), + SYM(Map1f), + SYM(Map2d), + SYM(Map2f), + SYM(GetMapdv), + SYM(GetMapfv), + SYM(GetMapiv), + SYM(EvalCoord1d), + SYM(EvalCoord1f), + SYM(EvalCoord1dv), + SYM(EvalCoord1fv), + SYM(EvalCoord2d), + SYM(EvalCoord2f), + SYM(EvalCoord2dv), + SYM(EvalCoord2fv), + SYM(MapGrid1d), + SYM(MapGrid1f), + SYM(MapGrid2d), + SYM(MapGrid2f), + SYM(EvalPoint1), + SYM(EvalPoint2), + SYM(EvalMesh1), + SYM(EvalMesh2), + SYM(Fogf), + SYM(Fogi), + SYM(Fogfv), + SYM(Fogiv), + SYM(FeedbackBuffer), + SYM(PassThrough), + SYM(SelectBuffer), + SYM(InitNames), + SYM(LoadName), + SYM(PushName), + SYM(PopName), + SYM(DrawRangeElements), + SYM(TexImage3D), + SYM(TexSubImage3D), + SYM(CopyTexSubImage3D), + SYM(ColorTable), + SYM(ColorSubTable), + SYM(ColorTableParameteriv), + SYM(ColorTableParameterfv), + SYM(CopyColorSubTable), + SYM(CopyColorTable), + SYM(GetColorTable), + SYM(GetColorTableParameterfv), + SYM(GetColorTableParameteriv), + SYM(BlendEquation), + SYM(BlendColor), + SYM(Histogram), + SYM(ResetHistogram), + SYM(GetHistogram), + SYM(GetHistogramParameterfv), + SYM(GetHistogramParameteriv), + SYM(Minmax), + SYM(ResetMinmax), + SYM(GetMinmax), + SYM(GetMinmaxParameterfv), + SYM(GetMinmaxParameteriv), + SYM(ConvolutionFilter1D), + SYM(ConvolutionFilter2D), + SYM(ConvolutionParameterf), + SYM(ConvolutionParameterfv), + SYM(ConvolutionParameteri), + SYM(ConvolutionParameteriv), + SYM(CopyConvolutionFilter1D), + SYM(CopyConvolutionFilter2D), + SYM(GetConvolutionFilter), + SYM(GetConvolutionParameterfv), + SYM(GetConvolutionParameteriv), + SYM(SeparableFilter2D), + SYM(GetSeparableFilter), + SYM(ActiveTexture), + SYM(ClientActiveTexture), + SYM(CompressedTexImage1D), + SYM(CompressedTexImage2D), + SYM(CompressedTexImage3D), + SYM(CompressedTexSubImage1D), + SYM(CompressedTexSubImage2D), + SYM(CompressedTexSubImage3D), + SYM(GetCompressedTexImage), + SYM(MultiTexCoord1d), + SYM(MultiTexCoord1dv), + SYM(MultiTexCoord1f), + SYM(MultiTexCoord1fv), + SYM(MultiTexCoord1i), + SYM(MultiTexCoord1iv), + SYM(MultiTexCoord1s), + SYM(MultiTexCoord1sv), + SYM(MultiTexCoord2d), + SYM(MultiTexCoord2dv), + SYM(MultiTexCoord2f), + SYM(MultiTexCoord2fv), + SYM(MultiTexCoord2i), + SYM(MultiTexCoord2iv), + SYM(MultiTexCoord2s), + SYM(MultiTexCoord2sv), + SYM(MultiTexCoord3d), + SYM(MultiTexCoord3dv), + SYM(MultiTexCoord3f), + SYM(MultiTexCoord3fv), + SYM(MultiTexCoord3i), + SYM(MultiTexCoord3iv), + SYM(MultiTexCoord3s), + SYM(MultiTexCoord3sv), + SYM(MultiTexCoord4d), + SYM(MultiTexCoord4dv), + SYM(MultiTexCoord4f), + SYM(MultiTexCoord4fv), + SYM(MultiTexCoord4i), + SYM(MultiTexCoord4iv), + SYM(MultiTexCoord4s), + SYM(MultiTexCoord4sv), + SYM(LoadTransposeMatrixd), + SYM(LoadTransposeMatrixf), + SYM(MultTransposeMatrixd), + SYM(MultTransposeMatrixf), + SYM(SampleCoverage), + SYM(ActiveTextureARB), + SYM(ClientActiveTextureARB), + SYM(MultiTexCoord1dARB), + SYM(MultiTexCoord1dvARB), + SYM(MultiTexCoord1fARB), + SYM(MultiTexCoord1fvARB), + SYM(MultiTexCoord1iARB), + SYM(MultiTexCoord1ivARB), + SYM(MultiTexCoord1sARB), + SYM(MultiTexCoord1svARB), + SYM(MultiTexCoord2dARB), + SYM(MultiTexCoord2dvARB), + SYM(MultiTexCoord2fARB), + SYM(MultiTexCoord2fvARB), + SYM(MultiTexCoord2iARB), + SYM(MultiTexCoord2ivARB), + SYM(MultiTexCoord2sARB), + SYM(MultiTexCoord2svARB), + SYM(MultiTexCoord3dARB), + SYM(MultiTexCoord3dvARB), + SYM(MultiTexCoord3fARB), + SYM(MultiTexCoord3fvARB), + SYM(MultiTexCoord3iARB), + SYM(MultiTexCoord3ivARB), + SYM(MultiTexCoord3sARB), + SYM(MultiTexCoord3svARB), + SYM(MultiTexCoord4dARB), + SYM(MultiTexCoord4dvARB), + SYM(MultiTexCoord4fARB), + SYM(MultiTexCoord4fvARB), + SYM(MultiTexCoord4iARB), + SYM(MultiTexCoord4ivARB), + SYM(MultiTexCoord4sARB), + SYM(MultiTexCoord4svARB), + SYM(EGLImageTargetTexture2DOES), + SYM(EGLImageTargetRenderbufferStorageOES), +#endif + + SYM(DrawRangeElements), + SYM(TexImage3D), + SYM(TexSubImage3D), + SYM(CopyTexSubImage3D), + 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(BlendColor), + SYM(BlendEquation), + 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(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(MapBufferRange), + SYM(FlushMappedBufferRange), + SYM(BindVertexArray), + SYM(DeleteVertexArrays), + SYM(GenVertexArrays), + SYM(IsVertexArray), + SYM(DrawArraysInstanced), + SYM(DrawElementsInstanced), + SYM(TexBuffer), + SYM(PrimitiveRestartIndex), + SYM(CopyBufferSubData), + SYM(GetUniformIndices), + SYM(GetActiveUniformsiv), + SYM(GetActiveUniformName), + SYM(GetUniformBlockIndex), + SYM(GetActiveUniformBlockiv), + SYM(GetActiveUniformBlockName), + SYM(UniformBlockBinding), + 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(GetInteger64i_v), + SYM(GetBufferParameteri64v), + SYM(FramebufferTexture), + SYM(TexImage2DMultisample), + SYM(TexImage3DMultisample), + SYM(GetMultisamplefv), + SYM(SampleMaski), + 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(VertexAttribDivisor), + SYM(VertexAttribP1ui), + SYM(VertexAttribP1uiv), + SYM(VertexAttribP2ui), + SYM(VertexAttribP2uiv), + SYM(VertexAttribP3ui), + SYM(VertexAttribP3uiv), + SYM(VertexAttribP4ui), + SYM(VertexAttribP4uiv), + 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(MinSampleShading), + SYM(BlendEquationi), + SYM(BlendEquationSeparatei), + SYM(BlendFunci), + SYM(BlendFuncSeparatei), + 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(DrawArraysInstancedBaseInstance), + SYM(DrawElementsInstancedBaseInstance), + SYM(DrawElementsInstancedBaseVertexBaseInstance), + SYM(GetInternalformativ), + SYM(GetActiveAtomicCounterBufferiv), + SYM(BindImageTexture), + SYM(MemoryBarrier), + SYM(TexStorage1D), + SYM(TexStorage2D), + SYM(TexStorage3D), + SYM(DrawTransformFeedbackInstanced), + SYM(DrawTransformFeedbackStreamInstanced), + SYM(ClearBufferData), + SYM(ClearBufferSubData), + SYM(DispatchCompute), + SYM(DispatchComputeIndirect), + SYM(CopyImageSubData), + 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(TextureView), + SYM(BindVertexBuffer), + SYM(VertexAttribFormat), + SYM(VertexAttribIFormat), + SYM(VertexAttribLFormat), + SYM(VertexAttribBinding), + SYM(VertexBindingDivisor), + SYM(DebugMessageControl), + SYM(DebugMessageInsert), + SYM(DebugMessageCallback), + SYM(GetDebugMessageLog), + SYM(PushDebugGroup), + SYM(PopDebugGroup), + SYM(ObjectLabel), + SYM(GetObjectLabel), + SYM(ObjectPtrLabel), + SYM(GetObjectPtrLabel), + SYM(BufferStorage), + SYM(ClearTexImage), + SYM(ClearTexSubImage), + SYM(BindBuffersBase), + SYM(BindBuffersRange), + SYM(BindTextures), + SYM(BindSamplers), + SYM(BindImageTextures), + SYM(BindVertexBuffers), + SYM(GetTextureHandleARB), + SYM(GetTextureSamplerHandleARB), + SYM(MakeTextureHandleResidentARB), + SYM(MakeTextureHandleNonResidentARB), + SYM(GetImageHandleARB), + SYM(MakeImageHandleResidentARB), + SYM(MakeImageHandleNonResidentARB), + SYM(UniformHandleui64ARB), + SYM(UniformHandleui64vARB), + SYM(ProgramUniformHandleui64ARB), + SYM(ProgramUniformHandleui64vARB), + SYM(IsTextureHandleResidentARB), + SYM(IsImageHandleResidentARB), + SYM(VertexAttribL1ui64ARB), + SYM(VertexAttribL1ui64vARB), + SYM(GetVertexAttribLui64vARB), + SYM(CreateSyncFromCLeventARB), + SYM(ClampColorARB), + SYM(DispatchComputeGroupSizeARB), + SYM(DebugMessageControlARB), + SYM(DebugMessageInsertARB), + SYM(DebugMessageCallbackARB), + SYM(GetDebugMessageLogARB), + SYM(DrawBuffersARB), + SYM(BlendEquationiARB), + SYM(BlendEquationSeparateiARB), + SYM(BlendFunciARB), + SYM(BlendFuncSeparateiARB), + SYM(DrawArraysInstancedARB), + SYM(DrawElementsInstancedARB), + 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(IsProgramARB), + SYM(ProgramParameteriARB), + SYM(FramebufferTextureARB), + SYM(FramebufferTextureLayerARB), + SYM(FramebufferTextureFaceARB), + 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(MultiDrawArraysIndirectCountARB), + SYM(MultiDrawElementsIndirectCountARB), + SYM(VertexAttribDivisorARB), + SYM(CurrentPaletteMatrixARB), + SYM(MatrixIndexubvARB), + SYM(MatrixIndexusvARB), + SYM(MatrixIndexuivARB), + SYM(MatrixIndexPointerARB), + SYM(SampleCoverageARB), + 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(GenQueriesARB), + SYM(DeleteQueriesARB), + SYM(IsQueryARB), + SYM(BeginQueryARB), + SYM(EndQueryARB), + SYM(GetQueryivARB), + SYM(GetQueryObjectivARB), + SYM(GetQueryObjectuivARB), + SYM(PointParameterfARB), + SYM(PointParameterfvARB), + SYM(GetGraphicsResetStatusARB), + SYM(GetnTexImageARB), + SYM(ReadnPixelsARB), + SYM(GetnCompressedTexImageARB), + SYM(GetnUniformfvARB), + SYM(GetnUniformivARB), + SYM(GetnUniformuivARB), + SYM(GetnUniformdvARB), + 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(MinSampleShadingARB), + 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(NamedStringARB), + SYM(DeleteNamedStringARB), + SYM(CompileShaderIncludeARB), + SYM(IsNamedStringARB), + SYM(GetNamedStringARB), + SYM(GetNamedStringivARB), + SYM(TexPageCommitmentARB), + SYM(TexBufferARB), + SYM(CompressedTexImage3DARB), + SYM(CompressedTexImage2DARB), + SYM(CompressedTexImage1DARB), + SYM(CompressedTexSubImage3DARB), + SYM(CompressedTexSubImage2DARB), + SYM(CompressedTexSubImage1DARB), + SYM(GetCompressedTexImageARB), + SYM(LoadTransposeMatrixfARB), + SYM(LoadTransposeMatrixdARB), + SYM(MultTransposeMatrixfARB), + SYM(MultTransposeMatrixdARB), + SYM(WeightbvARB), + SYM(WeightsvARB), + SYM(WeightivARB), + SYM(WeightfvARB), + SYM(WeightdvARB), + SYM(WeightubvARB), + SYM(WeightusvARB), + SYM(WeightuivARB), + SYM(WeightPointerARB), + SYM(VertexBlendARB), + SYM(BindBufferARB), + SYM(DeleteBuffersARB), + SYM(GenBuffersARB), + SYM(IsBufferARB), + SYM(BufferDataARB), + SYM(BufferSubDataARB), + SYM(GetBufferSubDataARB), + SYM(MapBufferARB), + SYM(UnmapBufferARB), + SYM(GetBufferParameterivARB), + SYM(GetBufferPointervARB), + 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(GetVertexAttribdvARB), + SYM(GetVertexAttribfvARB), + SYM(GetVertexAttribivARB), + SYM(GetVertexAttribPointervARB), + SYM(BindAttribLocationARB), + SYM(GetActiveAttribARB), + SYM(GetAttribLocationARB), + 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(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(AlphaFuncxOES), + SYM(ClearColorxOES), + SYM(ClearDepthxOES), + SYM(ClipPlanexOES), + SYM(Color4xOES), + SYM(DepthRangexOES), + SYM(FogxOES), + SYM(FogxvOES), + SYM(FrustumxOES), + SYM(GetClipPlanexOES), + SYM(GetFixedvOES), + SYM(GetTexEnvxvOES), + SYM(GetTexParameterxvOES), + SYM(LightModelxOES), + SYM(LightModelxvOES), + SYM(LightxOES), + SYM(LightxvOES), + SYM(LineWidthxOES), + SYM(LoadMatrixxOES), + SYM(MaterialxOES), + SYM(MaterialxvOES), + SYM(MultMatrixxOES), + SYM(MultiTexCoord4xOES), + SYM(Normal3xOES), + SYM(OrthoxOES), + SYM(PointParameterxvOES), + SYM(PointSizexOES), + SYM(PolygonOffsetxOES), + SYM(RotatexOES), + SYM(SampleCoverageOES), + SYM(ScalexOES), + SYM(TexEnvxOES), + SYM(TexEnvxvOES), + SYM(TexParameterxOES), + SYM(TexParameterxvOES), + SYM(TranslatexOES), + SYM(AccumxOES), + SYM(BitmapxOES), + SYM(BlendColorxOES), + SYM(ClearAccumxOES), + SYM(Color3xOES), + SYM(Color3xvOES), + SYM(Color4xvOES), + SYM(ConvolutionParameterxOES), + SYM(ConvolutionParameterxvOES), + SYM(EvalCoord1xOES), + SYM(EvalCoord1xvOES), + SYM(EvalCoord2xOES), + SYM(EvalCoord2xvOES), + SYM(FeedbackBufferxOES), + SYM(GetConvolutionParameterxvOES), + SYM(GetHistogramParameterxvOES), + SYM(GetLightxOES), + SYM(GetMapxvOES), + SYM(GetMaterialxOES), + SYM(GetPixelMapxv), + SYM(GetTexGenxvOES), + SYM(GetTexLevelParameterxvOES), + SYM(IndexxOES), + SYM(IndexxvOES), + SYM(LoadTransposeMatrixxOES), + SYM(Map1xOES), + SYM(Map2xOES), + SYM(MapGrid1xOES), + SYM(MapGrid2xOES), + SYM(MultTransposeMatrixxOES), + SYM(MultiTexCoord1xOES), + SYM(MultiTexCoord1xvOES), + SYM(MultiTexCoord2xOES), + SYM(MultiTexCoord2xvOES), + SYM(MultiTexCoord3xOES), + SYM(MultiTexCoord3xvOES), + SYM(MultiTexCoord4xvOES), + SYM(Normal3xvOES), + SYM(PassThroughxOES), + SYM(PixelMapx), + SYM(PixelStorex), + SYM(PixelTransferxOES), + SYM(PixelZoomxOES), + SYM(PrioritizeTexturesxOES), + SYM(RasterPos2xOES), + SYM(RasterPos2xvOES), + SYM(RasterPos3xOES), + SYM(RasterPos3xvOES), + SYM(RasterPos4xOES), + SYM(RasterPos4xvOES), + SYM(RectxOES), + SYM(RectxvOES), + SYM(TexCoord1xOES), + SYM(TexCoord1xvOES), + SYM(TexCoord2xOES), + SYM(TexCoord2xvOES), + SYM(TexCoord3xOES), + SYM(TexCoord3xvOES), + SYM(TexCoord4xOES), + SYM(TexCoord4xvOES), + SYM(TexGenxOES), + SYM(TexGenxvOES), + SYM(Vertex2xOES), + SYM(Vertex2xvOES), + SYM(Vertex3xOES), + SYM(Vertex3xvOES), + SYM(Vertex4xOES), + SYM(Vertex4xvOES), + SYM(QueryMatrixxOES), + SYM(ClearDepthfOES), + SYM(ClipPlanefOES), + SYM(DepthRangefOES), + SYM(FrustumfOES), + SYM(GetClipPlanefOES), + SYM(OrthofOES), + SYM(ImageTransformParameteriHP), + SYM(ImageTransformParameterfHP), + SYM(ImageTransformParameterivHP), + SYM(ImageTransformParameterfvHP), + SYM(GetImageTransformParameterivHP), + SYM(GetImageTransformParameterfvHP), + + { NULL, NULL }, +}; +RGLSYMGLDRAWRANGEELEMENTSPROC __rglgen_glDrawRangeElements; +RGLSYMGLTEXIMAGE3DPROC __rglgen_glTexImage3D; +RGLSYMGLTEXSUBIMAGE3DPROC __rglgen_glTexSubImage3D; +RGLSYMGLCOPYTEXSUBIMAGE3DPROC __rglgen_glCopyTexSubImage3D; +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; +RGLSYMGLBLENDCOLORPROC __rglgen_glBlendColor; +RGLSYMGLBLENDEQUATIONPROC __rglgen_glBlendEquation; +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; +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; +RGLSYMGLMAPBUFFERRANGEPROC __rglgen_glMapBufferRange; +RGLSYMGLFLUSHMAPPEDBUFFERRANGEPROC __rglgen_glFlushMappedBufferRange; +RGLSYMGLBINDVERTEXARRAYPROC __rglgen_glBindVertexArray; +RGLSYMGLDELETEVERTEXARRAYSPROC __rglgen_glDeleteVertexArrays; +RGLSYMGLGENVERTEXARRAYSPROC __rglgen_glGenVertexArrays; +RGLSYMGLISVERTEXARRAYPROC __rglgen_glIsVertexArray; +RGLSYMGLDRAWARRAYSINSTANCEDPROC __rglgen_glDrawArraysInstanced; +RGLSYMGLDRAWELEMENTSINSTANCEDPROC __rglgen_glDrawElementsInstanced; +RGLSYMGLTEXBUFFERPROC __rglgen_glTexBuffer; +RGLSYMGLPRIMITIVERESTARTINDEXPROC __rglgen_glPrimitiveRestartIndex; +RGLSYMGLCOPYBUFFERSUBDATAPROC __rglgen_glCopyBufferSubData; +RGLSYMGLGETUNIFORMINDICESPROC __rglgen_glGetUniformIndices; +RGLSYMGLGETACTIVEUNIFORMSIVPROC __rglgen_glGetActiveUniformsiv; +RGLSYMGLGETACTIVEUNIFORMNAMEPROC __rglgen_glGetActiveUniformName; +RGLSYMGLGETUNIFORMBLOCKINDEXPROC __rglgen_glGetUniformBlockIndex; +RGLSYMGLGETACTIVEUNIFORMBLOCKIVPROC __rglgen_glGetActiveUniformBlockiv; +RGLSYMGLGETACTIVEUNIFORMBLOCKNAMEPROC __rglgen_glGetActiveUniformBlockName; +RGLSYMGLUNIFORMBLOCKBINDINGPROC __rglgen_glUniformBlockBinding; +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; +RGLSYMGLGETINTEGER64I_VPROC __rglgen_glGetInteger64i_v; +RGLSYMGLGETBUFFERPARAMETERI64VPROC __rglgen_glGetBufferParameteri64v; +RGLSYMGLFRAMEBUFFERTEXTUREPROC __rglgen_glFramebufferTexture; +RGLSYMGLTEXIMAGE2DMULTISAMPLEPROC __rglgen_glTexImage2DMultisample; +RGLSYMGLTEXIMAGE3DMULTISAMPLEPROC __rglgen_glTexImage3DMultisample; +RGLSYMGLGETMULTISAMPLEFVPROC __rglgen_glGetMultisamplefv; +RGLSYMGLSAMPLEMASKIPROC __rglgen_glSampleMaski; +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; +RGLSYMGLVERTEXATTRIBDIVISORPROC __rglgen_glVertexAttribDivisor; +RGLSYMGLVERTEXATTRIBP1UIPROC __rglgen_glVertexAttribP1ui; +RGLSYMGLVERTEXATTRIBP1UIVPROC __rglgen_glVertexAttribP1uiv; +RGLSYMGLVERTEXATTRIBP2UIPROC __rglgen_glVertexAttribP2ui; +RGLSYMGLVERTEXATTRIBP2UIVPROC __rglgen_glVertexAttribP2uiv; +RGLSYMGLVERTEXATTRIBP3UIPROC __rglgen_glVertexAttribP3ui; +RGLSYMGLVERTEXATTRIBP3UIVPROC __rglgen_glVertexAttribP3uiv; +RGLSYMGLVERTEXATTRIBP4UIPROC __rglgen_glVertexAttribP4ui; +RGLSYMGLVERTEXATTRIBP4UIVPROC __rglgen_glVertexAttribP4uiv; +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; +RGLSYMGLMINSAMPLESHADINGPROC __rglgen_glMinSampleShading; +RGLSYMGLBLENDEQUATIONIPROC __rglgen_glBlendEquationi; +RGLSYMGLBLENDEQUATIONSEPARATEIPROC __rglgen_glBlendEquationSeparatei; +RGLSYMGLBLENDFUNCIPROC __rglgen_glBlendFunci; +RGLSYMGLBLENDFUNCSEPARATEIPROC __rglgen_glBlendFuncSeparatei; +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; +RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawArraysInstancedBaseInstance; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseInstance; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseVertexBaseInstance; +RGLSYMGLGETINTERNALFORMATIVPROC __rglgen_glGetInternalformativ; +RGLSYMGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __rglgen_glGetActiveAtomicCounterBufferiv; +RGLSYMGLBINDIMAGETEXTUREPROC __rglgen_glBindImageTexture; +RGLSYMGLMEMORYBARRIERPROC __rglgen_glMemoryBarrier; +RGLSYMGLTEXSTORAGE1DPROC __rglgen_glTexStorage1D; +RGLSYMGLTEXSTORAGE2DPROC __rglgen_glTexStorage2D; +RGLSYMGLTEXSTORAGE3DPROC __rglgen_glTexStorage3D; +RGLSYMGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __rglgen_glDrawTransformFeedbackInstanced; +RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __rglgen_glDrawTransformFeedbackStreamInstanced; +RGLSYMGLCLEARBUFFERDATAPROC __rglgen_glClearBufferData; +RGLSYMGLCLEARBUFFERSUBDATAPROC __rglgen_glClearBufferSubData; +RGLSYMGLDISPATCHCOMPUTEPROC __rglgen_glDispatchCompute; +RGLSYMGLDISPATCHCOMPUTEINDIRECTPROC __rglgen_glDispatchComputeIndirect; +RGLSYMGLCOPYIMAGESUBDATAPROC __rglgen_glCopyImageSubData; +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; +RGLSYMGLTEXTUREVIEWPROC __rglgen_glTextureView; +RGLSYMGLBINDVERTEXBUFFERPROC __rglgen_glBindVertexBuffer; +RGLSYMGLVERTEXATTRIBFORMATPROC __rglgen_glVertexAttribFormat; +RGLSYMGLVERTEXATTRIBIFORMATPROC __rglgen_glVertexAttribIFormat; +RGLSYMGLVERTEXATTRIBLFORMATPROC __rglgen_glVertexAttribLFormat; +RGLSYMGLVERTEXATTRIBBINDINGPROC __rglgen_glVertexAttribBinding; +RGLSYMGLVERTEXBINDINGDIVISORPROC __rglgen_glVertexBindingDivisor; +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; +RGLSYMGLBUFFERSTORAGEPROC __rglgen_glBufferStorage; +RGLSYMGLCLEARTEXIMAGEPROC __rglgen_glClearTexImage; +RGLSYMGLCLEARTEXSUBIMAGEPROC __rglgen_glClearTexSubImage; +RGLSYMGLBINDBUFFERSBASEPROC __rglgen_glBindBuffersBase; +RGLSYMGLBINDBUFFERSRANGEPROC __rglgen_glBindBuffersRange; +RGLSYMGLBINDTEXTURESPROC __rglgen_glBindTextures; +RGLSYMGLBINDSAMPLERSPROC __rglgen_glBindSamplers; +RGLSYMGLBINDIMAGETEXTURESPROC __rglgen_glBindImageTextures; +RGLSYMGLBINDVERTEXBUFFERSPROC __rglgen_glBindVertexBuffers; +RGLSYMGLGETTEXTUREHANDLEARBPROC __rglgen_glGetTextureHandleARB; +RGLSYMGLGETTEXTURESAMPLERHANDLEARBPROC __rglgen_glGetTextureSamplerHandleARB; +RGLSYMGLMAKETEXTUREHANDLERESIDENTARBPROC __rglgen_glMakeTextureHandleResidentARB; +RGLSYMGLMAKETEXTUREHANDLENONRESIDENTARBPROC __rglgen_glMakeTextureHandleNonResidentARB; +RGLSYMGLGETIMAGEHANDLEARBPROC __rglgen_glGetImageHandleARB; +RGLSYMGLMAKEIMAGEHANDLERESIDENTARBPROC __rglgen_glMakeImageHandleResidentARB; +RGLSYMGLMAKEIMAGEHANDLENONRESIDENTARBPROC __rglgen_glMakeImageHandleNonResidentARB; +RGLSYMGLUNIFORMHANDLEUI64ARBPROC __rglgen_glUniformHandleui64ARB; +RGLSYMGLUNIFORMHANDLEUI64VARBPROC __rglgen_glUniformHandleui64vARB; +RGLSYMGLPROGRAMUNIFORMHANDLEUI64ARBPROC __rglgen_glProgramUniformHandleui64ARB; +RGLSYMGLPROGRAMUNIFORMHANDLEUI64VARBPROC __rglgen_glProgramUniformHandleui64vARB; +RGLSYMGLISTEXTUREHANDLERESIDENTARBPROC __rglgen_glIsTextureHandleResidentARB; +RGLSYMGLISIMAGEHANDLERESIDENTARBPROC __rglgen_glIsImageHandleResidentARB; +RGLSYMGLVERTEXATTRIBL1UI64ARBPROC __rglgen_glVertexAttribL1ui64ARB; +RGLSYMGLVERTEXATTRIBL1UI64VARBPROC __rglgen_glVertexAttribL1ui64vARB; +RGLSYMGLGETVERTEXATTRIBLUI64VARBPROC __rglgen_glGetVertexAttribLui64vARB; +RGLSYMGLCREATESYNCFROMCLEVENTARBPROC __rglgen_glCreateSyncFromCLeventARB; +RGLSYMGLCLAMPCOLORARBPROC __rglgen_glClampColorARB; +RGLSYMGLDISPATCHCOMPUTEGROUPSIZEARBPROC __rglgen_glDispatchComputeGroupSizeARB; +RGLSYMGLDEBUGMESSAGECONTROLARBPROC __rglgen_glDebugMessageControlARB; +RGLSYMGLDEBUGMESSAGEINSERTARBPROC __rglgen_glDebugMessageInsertARB; +RGLSYMGLDEBUGMESSAGECALLBACKARBPROC __rglgen_glDebugMessageCallbackARB; +RGLSYMGLGETDEBUGMESSAGELOGARBPROC __rglgen_glGetDebugMessageLogARB; +RGLSYMGLDRAWBUFFERSARBPROC __rglgen_glDrawBuffersARB; +RGLSYMGLBLENDEQUATIONIARBPROC __rglgen_glBlendEquationiARB; +RGLSYMGLBLENDEQUATIONSEPARATEIARBPROC __rglgen_glBlendEquationSeparateiARB; +RGLSYMGLBLENDFUNCIARBPROC __rglgen_glBlendFunciARB; +RGLSYMGLBLENDFUNCSEPARATEIARBPROC __rglgen_glBlendFuncSeparateiARB; +RGLSYMGLDRAWARRAYSINSTANCEDARBPROC __rglgen_glDrawArraysInstancedARB; +RGLSYMGLDRAWELEMENTSINSTANCEDARBPROC __rglgen_glDrawElementsInstancedARB; +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; +RGLSYMGLISPROGRAMARBPROC __rglgen_glIsProgramARB; +RGLSYMGLPROGRAMPARAMETERIARBPROC __rglgen_glProgramParameteriARB; +RGLSYMGLFRAMEBUFFERTEXTUREARBPROC __rglgen_glFramebufferTextureARB; +RGLSYMGLFRAMEBUFFERTEXTURELAYERARBPROC __rglgen_glFramebufferTextureLayerARB; +RGLSYMGLFRAMEBUFFERTEXTUREFACEARBPROC __rglgen_glFramebufferTextureFaceARB; +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; +RGLSYMGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC __rglgen_glMultiDrawArraysIndirectCountARB; +RGLSYMGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC __rglgen_glMultiDrawElementsIndirectCountARB; +RGLSYMGLVERTEXATTRIBDIVISORARBPROC __rglgen_glVertexAttribDivisorARB; +RGLSYMGLCURRENTPALETTEMATRIXARBPROC __rglgen_glCurrentPaletteMatrixARB; +RGLSYMGLMATRIXINDEXUBVARBPROC __rglgen_glMatrixIndexubvARB; +RGLSYMGLMATRIXINDEXUSVARBPROC __rglgen_glMatrixIndexusvARB; +RGLSYMGLMATRIXINDEXUIVARBPROC __rglgen_glMatrixIndexuivARB; +RGLSYMGLMATRIXINDEXPOINTERARBPROC __rglgen_glMatrixIndexPointerARB; +RGLSYMGLSAMPLECOVERAGEARBPROC __rglgen_glSampleCoverageARB; +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; +RGLSYMGLGENQUERIESARBPROC __rglgen_glGenQueriesARB; +RGLSYMGLDELETEQUERIESARBPROC __rglgen_glDeleteQueriesARB; +RGLSYMGLISQUERYARBPROC __rglgen_glIsQueryARB; +RGLSYMGLBEGINQUERYARBPROC __rglgen_glBeginQueryARB; +RGLSYMGLENDQUERYARBPROC __rglgen_glEndQueryARB; +RGLSYMGLGETQUERYIVARBPROC __rglgen_glGetQueryivARB; +RGLSYMGLGETQUERYOBJECTIVARBPROC __rglgen_glGetQueryObjectivARB; +RGLSYMGLGETQUERYOBJECTUIVARBPROC __rglgen_glGetQueryObjectuivARB; +RGLSYMGLPOINTPARAMETERFARBPROC __rglgen_glPointParameterfARB; +RGLSYMGLPOINTPARAMETERFVARBPROC __rglgen_glPointParameterfvARB; +RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC __rglgen_glGetGraphicsResetStatusARB; +RGLSYMGLGETNTEXIMAGEARBPROC __rglgen_glGetnTexImageARB; +RGLSYMGLREADNPIXELSARBPROC __rglgen_glReadnPixelsARB; +RGLSYMGLGETNCOMPRESSEDTEXIMAGEARBPROC __rglgen_glGetnCompressedTexImageARB; +RGLSYMGLGETNUNIFORMFVARBPROC __rglgen_glGetnUniformfvARB; +RGLSYMGLGETNUNIFORMIVARBPROC __rglgen_glGetnUniformivARB; +RGLSYMGLGETNUNIFORMUIVARBPROC __rglgen_glGetnUniformuivARB; +RGLSYMGLGETNUNIFORMDVARBPROC __rglgen_glGetnUniformdvARB; +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; +RGLSYMGLMINSAMPLESHADINGARBPROC __rglgen_glMinSampleShadingARB; +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; +RGLSYMGLNAMEDSTRINGARBPROC __rglgen_glNamedStringARB; +RGLSYMGLDELETENAMEDSTRINGARBPROC __rglgen_glDeleteNamedStringARB; +RGLSYMGLCOMPILESHADERINCLUDEARBPROC __rglgen_glCompileShaderIncludeARB; +RGLSYMGLISNAMEDSTRINGARBPROC __rglgen_glIsNamedStringARB; +RGLSYMGLGETNAMEDSTRINGARBPROC __rglgen_glGetNamedStringARB; +RGLSYMGLGETNAMEDSTRINGIVARBPROC __rglgen_glGetNamedStringivARB; +RGLSYMGLTEXPAGECOMMITMENTARBPROC __rglgen_glTexPageCommitmentARB; +RGLSYMGLTEXBUFFERARBPROC __rglgen_glTexBufferARB; +RGLSYMGLCOMPRESSEDTEXIMAGE3DARBPROC __rglgen_glCompressedTexImage3DARB; +RGLSYMGLCOMPRESSEDTEXIMAGE2DARBPROC __rglgen_glCompressedTexImage2DARB; +RGLSYMGLCOMPRESSEDTEXIMAGE1DARBPROC __rglgen_glCompressedTexImage1DARB; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __rglgen_glCompressedTexSubImage3DARB; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __rglgen_glCompressedTexSubImage2DARB; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __rglgen_glCompressedTexSubImage1DARB; +RGLSYMGLGETCOMPRESSEDTEXIMAGEARBPROC __rglgen_glGetCompressedTexImageARB; +RGLSYMGLLOADTRANSPOSEMATRIXFARBPROC __rglgen_glLoadTransposeMatrixfARB; +RGLSYMGLLOADTRANSPOSEMATRIXDARBPROC __rglgen_glLoadTransposeMatrixdARB; +RGLSYMGLMULTTRANSPOSEMATRIXFARBPROC __rglgen_glMultTransposeMatrixfARB; +RGLSYMGLMULTTRANSPOSEMATRIXDARBPROC __rglgen_glMultTransposeMatrixdARB; +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; +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; +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; +RGLSYMGLGETVERTEXATTRIBDVARBPROC __rglgen_glGetVertexAttribdvARB; +RGLSYMGLGETVERTEXATTRIBFVARBPROC __rglgen_glGetVertexAttribfvARB; +RGLSYMGLGETVERTEXATTRIBIVARBPROC __rglgen_glGetVertexAttribivARB; +RGLSYMGLGETVERTEXATTRIBPOINTERVARBPROC __rglgen_glGetVertexAttribPointervARB; +RGLSYMGLBINDATTRIBLOCATIONARBPROC __rglgen_glBindAttribLocationARB; +RGLSYMGLGETACTIVEATTRIBARBPROC __rglgen_glGetActiveAttribARB; +RGLSYMGLGETATTRIBLOCATIONARBPROC __rglgen_glGetAttribLocationARB; +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; +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; +RGLSYMGLALPHAFUNCXOESPROC __rglgen_glAlphaFuncxOES; +RGLSYMGLCLEARCOLORXOESPROC __rglgen_glClearColorxOES; +RGLSYMGLCLEARDEPTHXOESPROC __rglgen_glClearDepthxOES; +RGLSYMGLCLIPPLANEXOESPROC __rglgen_glClipPlanexOES; +RGLSYMGLCOLOR4XOESPROC __rglgen_glColor4xOES; +RGLSYMGLDEPTHRANGEXOESPROC __rglgen_glDepthRangexOES; +RGLSYMGLFOGXOESPROC __rglgen_glFogxOES; +RGLSYMGLFOGXVOESPROC __rglgen_glFogxvOES; +RGLSYMGLFRUSTUMXOESPROC __rglgen_glFrustumxOES; +RGLSYMGLGETCLIPPLANEXOESPROC __rglgen_glGetClipPlanexOES; +RGLSYMGLGETFIXEDVOESPROC __rglgen_glGetFixedvOES; +RGLSYMGLGETTEXENVXVOESPROC __rglgen_glGetTexEnvxvOES; +RGLSYMGLGETTEXPARAMETERXVOESPROC __rglgen_glGetTexParameterxvOES; +RGLSYMGLLIGHTMODELXOESPROC __rglgen_glLightModelxOES; +RGLSYMGLLIGHTMODELXVOESPROC __rglgen_glLightModelxvOES; +RGLSYMGLLIGHTXOESPROC __rglgen_glLightxOES; +RGLSYMGLLIGHTXVOESPROC __rglgen_glLightxvOES; +RGLSYMGLLINEWIDTHXOESPROC __rglgen_glLineWidthxOES; +RGLSYMGLLOADMATRIXXOESPROC __rglgen_glLoadMatrixxOES; +RGLSYMGLMATERIALXOESPROC __rglgen_glMaterialxOES; +RGLSYMGLMATERIALXVOESPROC __rglgen_glMaterialxvOES; +RGLSYMGLMULTMATRIXXOESPROC __rglgen_glMultMatrixxOES; +RGLSYMGLMULTITEXCOORD4XOESPROC __rglgen_glMultiTexCoord4xOES; +RGLSYMGLNORMAL3XOESPROC __rglgen_glNormal3xOES; +RGLSYMGLORTHOXOESPROC __rglgen_glOrthoxOES; +RGLSYMGLPOINTPARAMETERXVOESPROC __rglgen_glPointParameterxvOES; +RGLSYMGLPOINTSIZEXOESPROC __rglgen_glPointSizexOES; +RGLSYMGLPOLYGONOFFSETXOESPROC __rglgen_glPolygonOffsetxOES; +RGLSYMGLROTATEXOESPROC __rglgen_glRotatexOES; +RGLSYMGLSAMPLECOVERAGEOESPROC __rglgen_glSampleCoverageOES; +RGLSYMGLSCALEXOESPROC __rglgen_glScalexOES; +RGLSYMGLTEXENVXOESPROC __rglgen_glTexEnvxOES; +RGLSYMGLTEXENVXVOESPROC __rglgen_glTexEnvxvOES; +RGLSYMGLTEXPARAMETERXOESPROC __rglgen_glTexParameterxOES; +RGLSYMGLTEXPARAMETERXVOESPROC __rglgen_glTexParameterxvOES; +RGLSYMGLTRANSLATEXOESPROC __rglgen_glTranslatexOES; +RGLSYMGLACCUMXOESPROC __rglgen_glAccumxOES; +RGLSYMGLBITMAPXOESPROC __rglgen_glBitmapxOES; +RGLSYMGLBLENDCOLORXOESPROC __rglgen_glBlendColorxOES; +RGLSYMGLCLEARACCUMXOESPROC __rglgen_glClearAccumxOES; +RGLSYMGLCOLOR3XOESPROC __rglgen_glColor3xOES; +RGLSYMGLCOLOR3XVOESPROC __rglgen_glColor3xvOES; +RGLSYMGLCOLOR4XVOESPROC __rglgen_glColor4xvOES; +RGLSYMGLCONVOLUTIONPARAMETERXOESPROC __rglgen_glConvolutionParameterxOES; +RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC __rglgen_glConvolutionParameterxvOES; +RGLSYMGLEVALCOORD1XOESPROC __rglgen_glEvalCoord1xOES; +RGLSYMGLEVALCOORD1XVOESPROC __rglgen_glEvalCoord1xvOES; +RGLSYMGLEVALCOORD2XOESPROC __rglgen_glEvalCoord2xOES; +RGLSYMGLEVALCOORD2XVOESPROC __rglgen_glEvalCoord2xvOES; +RGLSYMGLFEEDBACKBUFFERXOESPROC __rglgen_glFeedbackBufferxOES; +RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC __rglgen_glGetConvolutionParameterxvOES; +RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC __rglgen_glGetHistogramParameterxvOES; +RGLSYMGLGETLIGHTXOESPROC __rglgen_glGetLightxOES; +RGLSYMGLGETMAPXVOESPROC __rglgen_glGetMapxvOES; +RGLSYMGLGETMATERIALXOESPROC __rglgen_glGetMaterialxOES; +RGLSYMGLGETPIXELMAPXVPROC __rglgen_glGetPixelMapxv; +RGLSYMGLGETTEXGENXVOESPROC __rglgen_glGetTexGenxvOES; +RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC __rglgen_glGetTexLevelParameterxvOES; +RGLSYMGLINDEXXOESPROC __rglgen_glIndexxOES; +RGLSYMGLINDEXXVOESPROC __rglgen_glIndexxvOES; +RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC __rglgen_glLoadTransposeMatrixxOES; +RGLSYMGLMAP1XOESPROC __rglgen_glMap1xOES; +RGLSYMGLMAP2XOESPROC __rglgen_glMap2xOES; +RGLSYMGLMAPGRID1XOESPROC __rglgen_glMapGrid1xOES; +RGLSYMGLMAPGRID2XOESPROC __rglgen_glMapGrid2xOES; +RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC __rglgen_glMultTransposeMatrixxOES; +RGLSYMGLMULTITEXCOORD1XOESPROC __rglgen_glMultiTexCoord1xOES; +RGLSYMGLMULTITEXCOORD1XVOESPROC __rglgen_glMultiTexCoord1xvOES; +RGLSYMGLMULTITEXCOORD2XOESPROC __rglgen_glMultiTexCoord2xOES; +RGLSYMGLMULTITEXCOORD2XVOESPROC __rglgen_glMultiTexCoord2xvOES; +RGLSYMGLMULTITEXCOORD3XOESPROC __rglgen_glMultiTexCoord3xOES; +RGLSYMGLMULTITEXCOORD3XVOESPROC __rglgen_glMultiTexCoord3xvOES; +RGLSYMGLMULTITEXCOORD4XVOESPROC __rglgen_glMultiTexCoord4xvOES; +RGLSYMGLNORMAL3XVOESPROC __rglgen_glNormal3xvOES; +RGLSYMGLPASSTHROUGHXOESPROC __rglgen_glPassThroughxOES; +RGLSYMGLPIXELMAPXPROC __rglgen_glPixelMapx; +RGLSYMGLPIXELSTOREXPROC __rglgen_glPixelStorex; +RGLSYMGLPIXELTRANSFERXOESPROC __rglgen_glPixelTransferxOES; +RGLSYMGLPIXELZOOMXOESPROC __rglgen_glPixelZoomxOES; +RGLSYMGLPRIORITIZETEXTURESXOESPROC __rglgen_glPrioritizeTexturesxOES; +RGLSYMGLRASTERPOS2XOESPROC __rglgen_glRasterPos2xOES; +RGLSYMGLRASTERPOS2XVOESPROC __rglgen_glRasterPos2xvOES; +RGLSYMGLRASTERPOS3XOESPROC __rglgen_glRasterPos3xOES; +RGLSYMGLRASTERPOS3XVOESPROC __rglgen_glRasterPos3xvOES; +RGLSYMGLRASTERPOS4XOESPROC __rglgen_glRasterPos4xOES; +RGLSYMGLRASTERPOS4XVOESPROC __rglgen_glRasterPos4xvOES; +RGLSYMGLRECTXOESPROC __rglgen_glRectxOES; +RGLSYMGLRECTXVOESPROC __rglgen_glRectxvOES; +RGLSYMGLTEXCOORD1XOESPROC __rglgen_glTexCoord1xOES; +RGLSYMGLTEXCOORD1XVOESPROC __rglgen_glTexCoord1xvOES; +RGLSYMGLTEXCOORD2XOESPROC __rglgen_glTexCoord2xOES; +RGLSYMGLTEXCOORD2XVOESPROC __rglgen_glTexCoord2xvOES; +RGLSYMGLTEXCOORD3XOESPROC __rglgen_glTexCoord3xOES; +RGLSYMGLTEXCOORD3XVOESPROC __rglgen_glTexCoord3xvOES; +RGLSYMGLTEXCOORD4XOESPROC __rglgen_glTexCoord4xOES; +RGLSYMGLTEXCOORD4XVOESPROC __rglgen_glTexCoord4xvOES; +RGLSYMGLTEXGENXOESPROC __rglgen_glTexGenxOES; +RGLSYMGLTEXGENXVOESPROC __rglgen_glTexGenxvOES; +RGLSYMGLVERTEX2XOESPROC __rglgen_glVertex2xOES; +RGLSYMGLVERTEX2XVOESPROC __rglgen_glVertex2xvOES; +RGLSYMGLVERTEX3XOESPROC __rglgen_glVertex3xOES; +RGLSYMGLVERTEX3XVOESPROC __rglgen_glVertex3xvOES; +RGLSYMGLVERTEX4XOESPROC __rglgen_glVertex4xOES; +RGLSYMGLVERTEX4XVOESPROC __rglgen_glVertex4xvOES; +RGLSYMGLQUERYMATRIXXOESPROC __rglgen_glQueryMatrixxOES; +RGLSYMGLCLEARDEPTHFOESPROC __rglgen_glClearDepthfOES; +RGLSYMGLCLIPPLANEFOESPROC __rglgen_glClipPlanefOES; +RGLSYMGLDEPTHRANGEFOESPROC __rglgen_glDepthRangefOES; +RGLSYMGLFRUSTUMFOESPROC __rglgen_glFrustumfOES; +RGLSYMGLGETCLIPPLANEFOESPROC __rglgen_glGetClipPlanefOES; +RGLSYMGLORTHOFOESPROC __rglgen_glOrthofOES; +RGLSYMGLIMAGETRANSFORMPARAMETERIHPPROC __rglgen_glImageTransformParameteriHP; +RGLSYMGLIMAGETRANSFORMPARAMETERFHPPROC __rglgen_glImageTransformParameterfHP; +RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParameterivHP; +RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; +RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; +RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; + diff --git a/src/platform/libretro/libretro-common/glsym/rglgen.c b/src/platform/libretro/libretro-common/glsym/rglgen.c new file mode 100644 index 00000000..6306eaef --- /dev/null +++ b/src/platform/libretro/libretro-common/glsym/rglgen.c @@ -0,0 +1,43 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this libretro SDK code part (glsym). + * --------------------------------------------------------------------------------------- + * + * 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. + */ + +#include +#include + +#include +#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/src/platform/libretro/libretro-common/glsym/rglgen.py b/src/platform/libretro/libretro-common/glsym/rglgen.py new file mode 100644 index 00000000..8d35e0bd --- /dev/null +++ b/src/platform/libretro/libretro-common/glsym/rglgen.py @@ -0,0 +1,151 @@ +#!/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 + +banned_ext = [ 'AMD', 'APPLE', 'NV', 'NVX', 'ATI', '3DLABS', 'SUN', 'SGI', 'SGIX', 'SGIS', 'INTEL', '3DFX', 'IBM', 'MESA', 'GREMEDY', 'OML', 'PGI', 'I3D', 'INGL', 'MTX', 'QCOM', 'IMG', 'ANGLE', 'SUNX', 'INGR' ] + +def noext(sym): + for ext in banned_ext: + if sym.endswith(ext): + return False + return True + +def fix_multiline_functions(lines): + fixed_lines = [] + temp_lines = [] + for line in lines: + if line.count('(') > line.count(')'): + temp_lines.append(line) + else: + if len(temp_lines) > 0: + if line.count(')') > line.count('('): + temp_lines.append(line) + fixed_line = re.sub(' +',' ', ''.join(temp_lines).replace('\n','').replace('\t','')) + fixed_lines.append(fixed_line) + temp_lines = [] + else: + temp_lines.append(line) + else: + fixed_lines.append(line) + return fixed_lines + +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__': + + if len(sys.argv) > 4: + for banned in sys.argv[4:]: + banned_ext.append(banned) + + with open(sys.argv[1], 'r') as f: + lines = fix_multiline_functions(f.readlines()) + typedefs, syms = find_gl_symbols(lines) + + overrides = generate_defines(syms) + declarations = generate_declarations(syms) + externs = ['extern ' + x for x in declarations] + + macros = generate_macros(syms) + + with open(sys.argv[2], 'w') as f: + f.write('#ifndef RGLGEN_DECL_H__\n') + f.write('#define RGLGEN_DECL_H__\n') + + f.write('#ifdef __cplusplus\n') + f.write('extern "C" {\n') + f.write('#endif\n') + + f.write('#ifdef GL_APIENTRY\n') + f.write('typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('#else\n') + f.write('#ifndef APIENTRY\n') + f.write('#define APIENTRY\n') + f.write('#endif\n') + f.write('#ifndef APIENTRYP\n') + f.write('#define APIENTRYP APIENTRY *\n') + f.write('#endif\n') + f.write('typedef void (APIENTRY *RGLGENGLDEBUGPROCARB)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('typedef void (APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('#endif\n') + + f.write('#ifndef GL_OES_EGL_image\n') + f.write('typedef void *GLeglImageOES;\n') + f.write('#endif\n') + + f.write('#if !defined(GL_OES_fixed_point) && !defined(HAVE_OPENGLES2)\n') + f.write('typedef GLint GLfixed;\n') + f.write('#endif\n') + + dump(f, typedefs) + dump(f, overrides) + dump(f, externs) + + f.write('struct rglgen_sym_map { const char *sym; void *ptr; };\n') + f.write('extern const struct rglgen_sym_map rglgen_symbol_map[];\n') + + f.write('#ifdef __cplusplus\n') + f.write('}\n') + f.write('#endif\n') + + f.write('#endif\n') + + with open(sys.argv[3], 'w') as f: + f.write('#include "glsym/glsym.h"\n') + f.write('#include \n') + f.write('#define SYM(x) { "gl" #x, &(gl##x) }\n') + f.write('const struct rglgen_sym_map rglgen_symbol_map[] = {\n') + dump(f, macros) + f.write(' { NULL, NULL },\n') + f.write('};\n') + dump(f, declarations) + + diff --git a/src/platform/libretro/libretro-common/glsym/xglgen.py b/src/platform/libretro/libretro-common/glsym/xglgen.py new file mode 100644 index 00000000..6539b4f6 --- /dev/null +++ b/src/platform/libretro/libretro-common/glsym/xglgen.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python3 + +""" + License statement applies to this file (xglgen.py) only. +""" + +""" + Permission is hereby granted, free of charge, + to any person obtaining a copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +""" + +import sys +import os +import re + +banned_ext = [ 'AMD', 'APPLE', 'NV', 'NVX', 'ATI', '3DLABS', 'SUN', 'SGI', 'SGIX', 'SGIS', 'INTEL', '3DFX', 'IBM', 'MESA', 'GREMEDY', 'OML', 'PGI', 'I3D', 'INGL', 'MTX', 'QCOM', 'IMG', 'ANGLE', 'SUNX', 'INGR' ] + +def noext(sym): + for ext in banned_ext: + if sym.endswith(ext): + return False + return True + +def fix_multiline_functions(lines): + fixed_lines = [] + temp_lines = [] + for line in lines: + if line.count('(') > line.count(')'): + temp_lines.append(line) + else: + if len(temp_lines) > 0: + if line.count(')') > line.count('('): + temp_lines.append(line) + fixed_line = re.sub(' +',' ', ''.join(temp_lines).replace('\n','').replace('\t','')) + fixed_lines.append(fixed_line) + temp_lines = [] + else: + temp_lines.append(line) + else: + fixed_lines.append(line) + return fixed_lines + +def find_gl_symbols(lines): + typedefs = [] + syms = [] + for line in lines: + # Note this doesn't work automated; this script is designed as a helper + m = re.search(r'^typedef.+PFN(\S+)PROC.+$', line) + g = re.search(r'^GLAPI\s(.+)\s(.+)\s(gl\S+)\W*\((.+)\).*', line) + if g and noext(g.group(3)): + typedefs.append('typedef ' + g.group(1) + ' (APIENTRYP RGLSYM' + g.group(3).upper() + 'PROC) (' + g.group(4) + ');') + syms.append(g.group(3)) + + return (typedefs, syms) + +def generate_defines(gl_syms): + res = [] + for line in gl_syms: + res.append('#define {} __rglgen_{}'.format(line, line)) + return res + +def generate_declarations(gl_syms): + return ['RGLSYM' + x.upper() + 'PROC ' + x + ';' for x in gl_syms] + +def generate_macros(gl_syms): + return [' SYM(' + x.replace('gl', '') + '),' for x in gl_syms] + +def dump(f, lines): + f.write('\n'.join(lines)) + f.write('\n\n') + +if __name__ == '__main__': + + if len(sys.argv) > 4: + for banned in sys.argv[4:]: + banned_ext.append(banned) + + with open(sys.argv[1], 'r') as f: + lines = fix_multiline_functions(f.readlines()) + typedefs, syms = find_gl_symbols(lines) + + overrides = generate_defines(syms) + declarations = generate_declarations(syms) + externs = ['extern ' + x for x in declarations] + + macros = generate_macros(syms) + + with open(sys.argv[2], 'w') as f: + f.write('#ifndef RGLGEN_DECL_H__\n') + f.write('#define RGLGEN_DECL_H__\n') + + f.write('#ifdef __cplusplus\n') + f.write('extern "C" {\n') + f.write('#endif\n') + + f.write('#ifdef GL_APIENTRY\n') + f.write('typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('typedef void (GL_APIENTRY *RGLGENGLDEBUGPROCKHR)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('#else\n') + f.write('#ifndef APIENTRY\n') + f.write('#define APIENTRY\n') + f.write('#endif\n') + f.write('#ifndef APIENTRYP\n') + f.write('#define APIENTRYP APIENTRY *\n') + f.write('#endif\n') + f.write('typedef void (APIENTRY *RGLGENGLDEBUGPROCARB)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('typedef void (APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('#endif\n') + + f.write('#ifndef GL_OES_EGL_image\n') + f.write('typedef void *GLeglImageOES;\n') + f.write('#endif\n') + + f.write('#if !defined(GL_OES_fixed_point) && !defined(HAVE_OPENGLES2)\n') + f.write('typedef GLint GLfixed;\n') + f.write('#endif\n') + + f.write('#if defined(OSX) && !defined(MAC_OS_X_VERSION_10_7)\n') + f.write('typedef long long int GLint64;\n') + f.write('typedef unsigned long long int GLuint64;\n') + f.write('typedef unsigned long long int GLuint64EXT;\n') + f.write('typedef struct __GLsync *GLsync;\n') + f.write('#endif\n') + + dump(f, typedefs) + dump(f, overrides) + dump(f, externs) + + f.write('struct rglgen_sym_map { const char *sym; void *ptr; };\n') + f.write('extern const struct rglgen_sym_map rglgen_symbol_map[];\n') + + f.write('#ifdef __cplusplus\n') + f.write('}\n') + f.write('#endif\n') + + f.write('#endif\n') + + with open(sys.argv[3], 'w') as f: + f.write('#include "glsym/glsym.h"\n') + f.write('#include \n') + f.write('#define SYM(x) { "gl" #x, &(gl##x) }\n') + f.write('const struct rglgen_sym_map rglgen_symbol_map[] = {\n') + dump(f, macros) + f.write(' { NULL, NULL },\n') + f.write('};\n') + dump(f, declarations) + diff --git a/src/platform/libretro/libretro-common/include/boolean.h b/src/platform/libretro/libretro-common/include/boolean.h new file mode 100644 index 00000000..f06ac5a7 --- /dev/null +++ b/src/platform/libretro/libretro-common/include/boolean.h @@ -0,0 +1,39 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (boolean.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __LIBRETRO_SDK_BOOLEAN_H +#define __LIBRETRO_SDK_BOOLEAN_H + +#ifndef __cplusplus + +#if defined(_MSC_VER) && _MSC_VER < 1800 && !defined(SN_TARGET_PS3) +/* Hack applied for MSVC when compiling in C89 mode as it isn't C99 compliant. */ +#define bool unsigned char +#define true 1 +#define false 0 +#else +#include +#endif + +#endif + +#endif diff --git a/src/platform/libretro/libretro-common/include/compat/posix_string.h b/src/platform/libretro/libretro-common/include/compat/posix_string.h new file mode 100644 index 00000000..9f56322a --- /dev/null +++ b/src/platform/libretro/libretro-common/include/compat/posix_string.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (posix_string.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __LIBRETRO_SDK_COMPAT_POSIX_STRING_H +#define __LIBRETRO_SDK_COMPAT_POSIX_STRING_H + +#include + +#ifdef _MSC_VER +#include +#endif + +RETRO_BEGIN_DECLS + +#ifdef _WIN32 +#undef strtok_r +#define strtok_r(str, delim, saveptr) retro_strtok_r__(str, delim, saveptr) + +char *strtok_r(char *str, const char *delim, char **saveptr); +#endif + +#ifdef _MSC_VER +#undef strcasecmp +#undef strdup +#define strcasecmp(a, b) retro_strcasecmp__(a, b) +#define strdup(orig) retro_strdup__(orig) +int strcasecmp(const char *a, const char *b); +char *strdup(const char *orig); + +/* isblank is available since MSVC 2013 */ +#if _MSC_VER < 1800 +#undef isblank +#define isblank(c) retro_isblank__(c) +int isblank(int c); +#endif + +#endif + + +RETRO_END_DECLS + +#endif diff --git a/src/platform/libretro/libretro-common/include/compat/strcasestr.h b/src/platform/libretro/libretro-common/include/compat/strcasestr.h new file mode 100644 index 00000000..f849593b --- /dev/null +++ b/src/platform/libretro/libretro-common/include/compat/strcasestr.h @@ -0,0 +1,49 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (strcasestr.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __LIBRETRO_SDK_COMPAT_STRCASESTR_H +#define __LIBRETRO_SDK_COMPAT_STRCASESTR_H + +#include + +#if defined(RARCH_INTERNAL) && defined(HAVE_CONFIG_H) +#include "../../../config.h" +#endif + +#ifndef HAVE_STRCASESTR + +#include + +RETRO_BEGIN_DECLS + +/* Avoid possible naming collisions during link + * since we prefer to use the actual name. */ +#define strcasestr(haystack, needle) strcasestr_retro__(haystack, needle) + +char *strcasestr(const char *haystack, const char *needle); + +RETRO_END_DECLS + +#endif + +#endif + diff --git a/src/platform/libretro/libretro-common/include/compat/strl.h b/src/platform/libretro/libretro-common/include/compat/strl.h new file mode 100644 index 00000000..290498d9 --- /dev/null +++ b/src/platform/libretro/libretro-common/include/compat/strl.h @@ -0,0 +1,60 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (strl.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __LIBRETRO_SDK_COMPAT_STRL_H +#define __LIBRETRO_SDK_COMPAT_STRL_H + +#include +#include + +#if defined(RARCH_INTERNAL) && defined(HAVE_CONFIG_H) +#include "../../../config.h" +#endif + +#include + +RETRO_BEGIN_DECLS + +#ifdef __MACH__ +#ifndef HAVE_STRL +#define HAVE_STRL +#endif +#endif + +#ifndef HAVE_STRL +/* Avoid possible naming collisions during link since + * we prefer to use the actual name. */ +#define strlcpy(dst, src, size) strlcpy_retro__(dst, src, size) + +#define strlcat(dst, src, size) strlcat_retro__(dst, src, size) + +size_t strlcpy(char *dest, const char *source, size_t size); +size_t strlcat(char *dest, const char *source, size_t size); + +#endif + +char *strldup(const char *s, size_t n); + +RETRO_END_DECLS + +#endif + diff --git a/src/platform/libretro/libretro-common/include/encodings/utf.h b/src/platform/libretro/libretro-common/include/encodings/utf.h new file mode 100644 index 00000000..b513f28a --- /dev/null +++ b/src/platform/libretro/libretro-common/include/encodings/utf.h @@ -0,0 +1,67 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (utf.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef _LIBRETRO_ENCODINGS_UTF_H +#define _LIBRETRO_ENCODINGS_UTF_H + +#include +#include + +#include + +#include + +RETRO_BEGIN_DECLS + +enum CodePage +{ + CODEPAGE_LOCAL = 0, /* CP_ACP */ + CODEPAGE_UTF8 = 65001 /* CP_UTF8 */ +}; + +size_t utf8_conv_utf32(uint32_t *out, size_t out_chars, + const char *in, size_t in_size); + +bool utf16_conv_utf8(uint8_t *out, size_t *out_chars, + const uint16_t *in, size_t in_size); + +size_t utf8len(const char *string); + +size_t utf8cpy(char *d, size_t d_len, const char *s, size_t chars); + +const char *utf8skip(const char *str, size_t chars); + +uint32_t utf8_walk(const char **string); + +bool utf16_to_char_string(const uint16_t *in, char *s, size_t len); + +char* utf8_to_local_string_alloc(const char *str); + +char* local_to_utf8_string_alloc(const char *str); + +wchar_t* utf8_to_utf16_string_alloc(const char *str); + +char* utf16_to_utf8_string_alloc(const wchar_t *str); + +RETRO_END_DECLS + +#endif diff --git a/src/platform/libretro/libretro-common/include/file/file_path.h b/src/platform/libretro/libretro-common/include/file/file_path.h new file mode 100644 index 00000000..aabeafaa --- /dev/null +++ b/src/platform/libretro/libretro-common/include/file/file_path.h @@ -0,0 +1,495 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (file_path.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __LIBRETRO_SDK_FILE_PATH_H +#define __LIBRETRO_SDK_FILE_PATH_H + +#include +#include +#include +#include + +#include + +#include + +RETRO_BEGIN_DECLS + +/* Order in this enum is equivalent to negative sort order in filelist + * (i.e. DIRECTORY is on top of PLAIN_FILE) */ +enum +{ + RARCH_FILETYPE_UNSET, + RARCH_PLAIN_FILE, + RARCH_COMPRESSED_FILE_IN_ARCHIVE, + RARCH_COMPRESSED_ARCHIVE, + RARCH_DIRECTORY, + RARCH_FILE_UNSUPPORTED +}; + + +/** + * path_is_compressed_file: + * @path : path + * + * Checks if path is a compressed file. + * + * Returns: true (1) if path is a compressed file, otherwise false (0). + **/ +bool path_is_compressed_file(const char *path); + +/** + * path_contains_compressed_file: + * @path : path + * + * Checks if path contains a compressed file. + * + * Currently we only check for hash symbol (#) inside the pathname. + * If path is ever expanded to a general URI, we should check for that here. + * + * Example: Somewhere in the path there might be a compressed file + * E.g.: /path/to/file.7z#mygame.img + * + * Returns: true (1) if path contains compressed file, otherwise false (0). + **/ +#define path_contains_compressed_file(path) (path_get_archive_delim((path)) != NULL) + +/** + * path_get_archive_delim: + * @path : path + * + * Gets delimiter of an archive file. Only the first '#' + * after a compression extension is considered. + * + * Returns: pointer to the delimiter in the path if it contains + * a compressed file, otherwise NULL. + */ +const char *path_get_archive_delim(const char *path); + +/** + * path_get_extension: + * @path : path + * + * Gets extension of file. Only '.'s + * after the last slash are considered. + * + * Returns: extension part from the path. + */ +const char *path_get_extension(const char *path); + +/** + * path_remove_extension: + * @path : path + * + * Mutates path by removing its extension. Removes all + * text after and including the last '.'. + * Only '.'s after the last slash are considered. + * + * Returns: + * 1) If path has an extension, returns path with the + * extension removed. + * 2) If there is no extension, returns NULL. + * 3) If path is empty or NULL, returns NULL + */ +char *path_remove_extension(char *path); + +/** + * path_basename: + * @path : path + * + * Get basename from @path. + * + * Returns: basename from path. + **/ +const char *path_basename(const char *path); + +/** + * path_basedir: + * @path : path + * + * Extracts base directory by mutating path. + * Keeps trailing '/'. + **/ +void path_basedir(char *path); + +/** + * path_parent_dir: + * @path : path + * + * Extracts parent directory by mutating path. + * Assumes that path is a directory. Keeps trailing '/'. + **/ +void path_parent_dir(char *path); + +/** + * path_resolve_realpath: + * @buf : buffer for path + * @size : size of buffer + * + * Turns relative paths into absolute path. + * If relative, rebases on current working dir. + **/ +void path_resolve_realpath(char *buf, size_t size); + +/** + * path_is_absolute: + * @path : path + * + * Checks if @path is an absolute path or a relative path. + * + * Returns: true if path is absolute, false if path is relative. + **/ +bool path_is_absolute(const char *path); + +/** + * fill_pathname: + * @out_path : output path + * @in_path : input path + * @replace : what to replace + * @size : buffer size of output path + * + * FIXME: Verify + * + * Replaces filename extension with 'replace' and outputs result to out_path. + * The extension here is considered to be the string from the last '.' + * to the end. + * + * Only '.'s after the last slash are considered as extensions. + * If no '.' is present, in_path and replace will simply be concatenated. + * 'size' is buffer size of 'out_path'. + * E.g.: in_path = "/foo/bar/baz/boo.c", replace = ".asm" => + * out_path = "/foo/bar/baz/boo.asm" + * E.g.: in_path = "/foo/bar/baz/boo.c", replace = "" => + * out_path = "/foo/bar/baz/boo" + */ +void fill_pathname(char *out_path, const char *in_path, + const char *replace, size_t size); + +/** + * fill_dated_filename: + * @out_filename : output filename + * @ext : extension of output filename + * @size : buffer size of output filename + * + * Creates a 'dated' filename prefixed by 'RetroArch', and + * concatenates extension (@ext) to it. + * + * E.g.: + * out_filename = "RetroArch-{month}{day}-{Hours}{Minutes}.{@ext}" + **/ +void fill_dated_filename(char *out_filename, + const char *ext, size_t size); + +/** + * fill_str_dated_filename: + * @out_filename : output filename + * @in_str : input string + * @ext : extension of output filename + * @size : buffer size of output filename + * + * Creates a 'dated' filename prefixed by the string @in_str, and + * concatenates extension (@ext) to it. + * + * E.g.: + * out_filename = "RetroArch-{year}{month}{day}-{Hour}{Minute}{Second}.{@ext}" + **/ +void fill_str_dated_filename(char *out_filename, + const char *in_str, const char *ext, size_t size); + +/** + * fill_pathname_noext: + * @out_path : output path + * @in_path : input path + * @replace : what to replace + * @size : buffer size of output path + * + * Appends a filename extension 'replace' to 'in_path', and outputs + * result in 'out_path'. + * + * Assumes in_path has no extension. If an extension is still + * present in 'in_path', it will be ignored. + * + */ +void fill_pathname_noext(char *out_path, const char *in_path, + const char *replace, size_t size); + +/** + * find_last_slash: + * @str : input path + * + * Gets a pointer to the last slash in the input path. + * + * Returns: a pointer to the last slash in the input path. + **/ +char *find_last_slash(const char *str); + +/** + * fill_pathname_dir: + * @in_dir : input directory path + * @in_basename : input basename to be appended to @in_dir + * @replace : replacement to be appended to @in_basename + * @size : size of buffer + * + * Appends basename of 'in_basename', to 'in_dir', along with 'replace'. + * Basename of in_basename is the string after the last '/' or '\\', + * i.e the filename without directories. + * + * If in_basename has no '/' or '\\', the whole 'in_basename' will be used. + * 'size' is buffer size of 'in_dir'. + * + * E.g..: in_dir = "/tmp/some_dir", in_basename = "/some_content/foo.c", + * replace = ".asm" => in_dir = "/tmp/some_dir/foo.c.asm" + **/ +void fill_pathname_dir(char *in_dir, const char *in_basename, + const char *replace, size_t size); + +/** + * fill_pathname_base: + * @out : output path + * @in_path : input path + * @size : size of output path + * + * Copies basename of @in_path into @out_path. + **/ +void fill_pathname_base(char *out_path, const char *in_path, size_t size); + +void fill_pathname_base_noext(char *out_dir, + const char *in_path, size_t size); + +void fill_pathname_base_ext(char *out, + const char *in_path, const char *ext, + size_t size); + +/** + * fill_pathname_basedir: + * @out_dir : output directory + * @in_path : input path + * @size : size of output directory + * + * Copies base directory of @in_path into @out_path. + * If in_path is a path without any slashes (relative current directory), + * @out_path will get path "./". + **/ +void fill_pathname_basedir(char *out_path, const char *in_path, size_t size); + +void fill_pathname_basedir_noext(char *out_dir, + const char *in_path, size_t size); + +/** + * fill_pathname_parent_dir_name: + * @out_dir : output directory + * @in_dir : input directory + * @size : size of output directory + * + * Copies only the parent directory name of @in_dir into @out_dir. + * The two buffers must not overlap. Removes trailing '/'. + * Returns true on success, false if a slash was not found in the path. + **/ +bool fill_pathname_parent_dir_name(char *out_dir, + const char *in_dir, size_t size); + +/** + * fill_pathname_parent_dir: + * @out_dir : output directory + * @in_dir : input directory + * @size : size of output directory + * + * Copies parent directory of @in_dir into @out_dir. + * Assumes @in_dir is a directory. Keeps trailing '/'. + **/ +void fill_pathname_parent_dir(char *out_dir, + const char *in_dir, size_t size); + +/** + * fill_pathname_resolve_relative: + * @out_path : output path + * @in_refpath : input reference path + * @in_path : input path + * @size : size of @out_path + * + * Joins basedir of @in_refpath together with @in_path. + * If @in_path is an absolute path, out_path = in_path. + * E.g.: in_refpath = "/foo/bar/baz.a", in_path = "foobar.cg", + * out_path = "/foo/bar/foobar.cg". + **/ +void fill_pathname_resolve_relative(char *out_path, const char *in_refpath, + const char *in_path, size_t size); + +/** + * fill_pathname_join: + * @out_path : output path + * @dir : directory + * @path : path + * @size : size of output path + * + * Joins a directory (@dir) and path (@path) together. + * Makes sure not to get two consecutive slashes + * between directory and path. + **/ +void fill_pathname_join(char *out_path, const char *dir, + const char *path, size_t size); + +void fill_pathname_join_special_ext(char *out_path, + const char *dir, const char *path, + const char *last, const char *ext, + size_t size); + +void fill_pathname_join_concat_noext( + char *out_path, + const char *dir, const char *path, + const char *concat, + size_t size); + +void fill_pathname_join_concat(char *out_path, + const char *dir, const char *path, + const char *concat, + size_t size); + +void fill_pathname_join_noext(char *out_path, + const char *dir, const char *path, size_t size); + +/** + * fill_pathname_join_delim: + * @out_path : output path + * @dir : directory + * @path : path + * @delim : delimiter + * @size : size of output path + * + * Joins a directory (@dir) and path (@path) together + * using the given delimiter (@delim). + **/ +void fill_pathname_join_delim(char *out_path, const char *dir, + const char *path, const char delim, size_t size); + +void fill_pathname_join_delim_concat(char *out_path, const char *dir, + const char *path, const char delim, const char *concat, + size_t size); + +/** + * fill_short_pathname_representation: + * @out_rep : output representation + * @in_path : input path + * @size : size of output representation + * + * Generates a short representation of path. It should only + * be used for displaying the result; the output representation is not + * binding in any meaningful way (for a normal path, this is the same as basename) + * In case of more complex URLs, this should cut everything except for + * the main image file. + * + * E.g.: "/path/to/game.img" -> game.img + * "/path/to/myarchive.7z#folder/to/game.img" -> game.img + */ +void fill_short_pathname_representation(char* out_rep, + const char *in_path, size_t size); + +void fill_short_pathname_representation_noext(char* out_rep, + const char *in_path, size_t size); + +void fill_pathname_expand_special(char *out_path, + const char *in_path, size_t size); + +void fill_pathname_abbreviate_special(char *out_path, + const char *in_path, size_t size); + +/** + * path_basedir: + * @path : path + * + * Extracts base directory by mutating path. + * Keeps trailing '/'. + **/ +void path_basedir_wrapper(char *path); + +/** + * path_char_is_slash: + * @c : character + * + * Checks if character (@c) is a slash. + * + * Returns: true (1) if character is a slash, otherwise false (0). + */ +#ifdef _WIN32 +#define path_char_is_slash(c) (((c) == '/') || ((c) == '\\')) +#else +#define path_char_is_slash(c) ((c) == '/') +#endif + +/** + * path_default_slash and path_default_slash_c: + * + * Gets the default slash separator. + * + * Returns: default slash separator. + */ +#if defined(_WIN32) || defined(_XBOX) +#define path_default_slash() "\\" +#define path_default_slash_c() '\\' +#else +#define path_default_slash() "/" +#define path_default_slash_c() '/' +#endif + +/** + * fill_pathname_slash: + * @path : path + * @size : size of path + * + * Assumes path is a directory. Appends a slash + * if not already there. + **/ +void fill_pathname_slash(char *path, size_t size); + +#if !defined(RARCH_CONSOLE) && defined(RARCH_INTERNAL) +void fill_pathname_application_path(char *buf, size_t size); +#endif + +/** + * path_mkdir: + * @dir : directory + * + * Create directory on filesystem. + * + * Returns: true (1) if directory could be created, otherwise false (0). + **/ +bool path_mkdir(const char *dir); + +/** + * path_is_directory: + * @path : path + * + * Checks if path is a directory. + * + * Returns: true (1) if path is a directory, otherwise false (0). + */ +bool path_is_directory(const char *path); + +bool path_is_character_special(const char *path); + +bool path_is_valid(const char *path); + +int32_t path_get_size(const char *path); + +RETRO_END_DECLS + +#endif diff --git a/src/platform/libretro/libretro-common/include/glsym/glsym.h b/src/platform/libretro/libretro-common/include/glsym/glsym.h new file mode 100644 index 00000000..36c9b49f --- /dev/null +++ b/src/platform/libretro/libretro-common/include/glsym/glsym.h @@ -0,0 +1,42 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this libretro SDK code part (glsym). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __LIBRETRO_SDK_GLSYM_H__ +#define __LIBRETRO_SDK_GLSYM_H__ + +#include "rglgen.h" + +#ifndef HAVE_PSGL +#if defined(HAVE_OPENGLES2) +#include "glsym_es2.h" +#elif defined(HAVE_OPENGLES3) +#include "glsym_es3.h" +#else +#ifdef HAVE_LIBNX +#include "switch/nx_glsym.h" +#endif +#include "glsym_gl.h" +#endif +#endif + +#endif + diff --git a/src/platform/libretro/libretro-common/include/glsym/glsym_es2.h b/src/platform/libretro/libretro-common/include/glsym/glsym_es2.h new file mode 100644 index 00000000..666d84dd --- /dev/null +++ b/src/platform/libretro/libretro-common/include/glsym/glsym_es2.h @@ -0,0 +1,639 @@ +#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*); +typedef void (GL_APIENTRY *RGLGENGLDEBUGPROCKHR)(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 RGLSYMGLBLENDBARRIERKHRPROC) (void); +typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKKHRPROC) (RGLGENGLDEBUGPROCKHR callback, const void *userParam); +typedef GLuint (GL_APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (GL_APIENTRYP RGLSYMGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (GL_APIENTRYP RGLSYMGLPOPDEBUGGROUPKHRPROC) (void); +typedef void (GL_APIENTRYP RGLSYMGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLGETPOINTERVKHRPROC) (GLenum pname, void **params); +typedef GLenum (GL_APIENTRYP RGLSYMGLGETGRAPHICSRESETSTATUSKHRPROC) (void); +typedef void (GL_APIENTRYP RGLSYMGLREADNPIXELSKHRPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP RGLSYMGLGETNUNIFORMFVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP RGLSYMGLGETNUNIFORMIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETNUNIFORMUIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP RGLSYMGLCOPYIMAGESUBDATAOESPROC) (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 (GL_APIENTRYP RGLSYMGLENABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP RGLSYMGLDISABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP RGLSYMGLBLENDEQUATIONIOESPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP RGLSYMGLBLENDEQUATIONSEPARATEIOESPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP RGLSYMGLBLENDFUNCIOESPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP RGLSYMGLBLENDFUNCSEPARATEIOESPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP RGLSYMGLCOLORMASKIOESPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP RGLSYMGLISENABLEDIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP RGLSYMGLDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (GL_APIENTRYP RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); +typedef void (GL_APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREOESPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (GL_APIENTRYP RGLSYMGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *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, void **params); +typedef void (GL_APIENTRYP RGLSYMGLPRIMITIVEBOUNDINGBOXOESPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +typedef void (GL_APIENTRYP RGLSYMGLMINSAMPLESHADINGOESPROC) (GLfloat value); +typedef void (GL_APIENTRYP RGLSYMGLPATCHPARAMETERIOESPROC) (GLenum pname, GLint value); +typedef void (GL_APIENTRYP RGLSYMGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *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 void *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 void *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 void *data); +typedef void (GL_APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (GL_APIENTRYP RGLSYMGLTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP RGLSYMGLSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLTEXBUFFEROESPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP RGLSYMGLTEXBUFFERRANGEOESPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GL_APIENTRYP RGLSYMGLTEXSTORAGE3DMULTISAMPLEOESPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (GL_APIENTRYP RGLSYMGLTEXTUREVIEWOESPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +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 RGLSYMGLVIEWPORTARRAYVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP RGLSYMGLVIEWPORTINDEXEDFOESPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP RGLSYMGLVIEWPORTINDEXEDFVOESPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP RGLSYMGLSCISSORARRAYVOESPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP RGLSYMGLSCISSORINDEXEDOESPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP RGLSYMGLSCISSORINDEXEDVOESPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP RGLSYMGLDEPTHRANGEARRAYFVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP RGLSYMGLDEPTHRANGEINDEXEDFOESPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP RGLSYMGLGETFLOATI_VOESPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (GL_APIENTRYP RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +typedef void (GL_APIENTRYP RGLSYMGLBINDFRAGDATALOCATIONINDEXEDEXTPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP RGLSYMGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (GL_APIENTRYP RGLSYMGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef GLint (GL_APIENTRYP RGLSYMGLGETFRAGDATAINDEXEXTPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP RGLSYMGLBUFFERSTORAGEEXTPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (GL_APIENTRYP RGLSYMGLCLEARTEXIMAGEEXTPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (GL_APIENTRYP RGLSYMGLCLEARTEXSUBIMAGEEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +typedef void (GL_APIENTRYP RGLSYMGLCOPYIMAGESUBDATAEXTPROC) (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 (GL_APIENTRYP RGLSYMGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP RGLSYMGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP RGLSYMGLPOPGROUPMARKEREXTPROC) (void); +typedef void (GL_APIENTRYP RGLSYMGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +typedef void (GL_APIENTRYP RGLSYMGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); +typedef void (GL_APIENTRYP RGLSYMGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (GL_APIENTRYP RGLSYMGLISQUERYEXTPROC) (GLuint id); +typedef void (GL_APIENTRYP RGLSYMGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); +typedef void (GL_APIENTRYP RGLSYMGLENDQUERYEXTPROC) (GLenum target); +typedef void (GL_APIENTRYP RGLSYMGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target); +typedef void (GL_APIENTRYP RGLSYMGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs); +typedef void (GL_APIENTRYP RGLSYMGLENABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP RGLSYMGLDISABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP RGLSYMGLBLENDEQUATIONIEXTPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP RGLSYMGLBLENDEQUATIONSEPARATEIEXTPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP RGLSYMGLBLENDFUNCIEXTPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP RGLSYMGLBLENDFUNCSEPARATEIEXTPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP RGLSYMGLCOLORMASKIEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP RGLSYMGLISENABLEDIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP RGLSYMGLDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (GL_APIENTRYP RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); +typedef void (GL_APIENTRYP RGLSYMGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +typedef void (GL_APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (GL_APIENTRYP RGLSYMGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor); +typedef void *(GL_APIENTRYP RGLSYMGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GL_APIENTRYP RGLSYMGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +typedef void (GL_APIENTRYP RGLSYMGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP RGLSYMGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +typedef void (GL_APIENTRYP RGLSYMGLMULTIDRAWARRAYSINDIRECTEXTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP RGLSYMGLMULTIDRAWELEMENTSINDIRECTEXTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +typedef void (GL_APIENTRYP RGLSYMGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index); +typedef void (GL_APIENTRYP RGLSYMGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices); +typedef void (GL_APIENTRYP RGLSYMGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data); +typedef void (GL_APIENTRYP RGLSYMGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp); +typedef void (GL_APIENTRYP RGLSYMGLPRIMITIVEBOUNDINGBOXEXTPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +typedef void (GL_APIENTRYP RGLSYMGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations); +typedef GLenum (GL_APIENTRYP RGLSYMGLGETGRAPHICSRESETSTATUSEXTPROC) (void); +typedef void (GL_APIENTRYP RGLSYMGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP RGLSYMGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP RGLSYMGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); +typedef void (GL_APIENTRYP RGLSYMGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef GLuint (GL_APIENTRYP RGLSYMGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); +typedef void (GL_APIENTRYP RGLSYMGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); +typedef void (GL_APIENTRYP RGLSYMGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); +typedef void (GL_APIENTRYP RGLSYMGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP RGLSYMGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef GLboolean (GL_APIENTRYP RGLSYMGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GL_APIENTRYP RGLSYMGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target, GLsizei size); +typedef GLsizei (GL_APIENTRYP RGLSYMGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target); +typedef void (GL_APIENTRYP RGLSYMGLCLEARPIXELLOCALSTORAGEUIEXTPROC) (GLsizei offset, GLsizei n, const GLuint *values); +typedef void (GL_APIENTRYP RGLSYMGLTEXPAGECOMMITMENTEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +typedef void (GL_APIENTRYP RGLSYMGLPATCHPARAMETERIEXTPROC) (GLenum pname, GLint value); +typedef void (GL_APIENTRYP RGLSYMGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP RGLSYMGLSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP RGLSYMGLTEXBUFFERRANGEEXTPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GL_APIENTRYP RGLSYMGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP RGLSYMGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP RGLSYMGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP RGLSYMGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP RGLSYMGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP RGLSYMGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP RGLSYMGLTEXTUREVIEWEXTPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +typedef void (GL_APIENTRYP RGLSYMGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box); +typedef void (GL_APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +typedef void (GL_APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); + +#define glBlendBarrierKHR __rglgen_glBlendBarrierKHR +#define glDebugMessageControlKHR __rglgen_glDebugMessageControlKHR +#define glDebugMessageInsertKHR __rglgen_glDebugMessageInsertKHR +#define glDebugMessageCallbackKHR __rglgen_glDebugMessageCallbackKHR +#define glGetDebugMessageLogKHR __rglgen_glGetDebugMessageLogKHR +#define glPushDebugGroupKHR __rglgen_glPushDebugGroupKHR +#define glPopDebugGroupKHR __rglgen_glPopDebugGroupKHR +#define glObjectLabelKHR __rglgen_glObjectLabelKHR +#define glGetObjectLabelKHR __rglgen_glGetObjectLabelKHR +#define glObjectPtrLabelKHR __rglgen_glObjectPtrLabelKHR +#define glGetObjectPtrLabelKHR __rglgen_glGetObjectPtrLabelKHR +#define glGetPointervKHR __rglgen_glGetPointervKHR +#define glGetGraphicsResetStatusKHR __rglgen_glGetGraphicsResetStatusKHR +#define glReadnPixelsKHR __rglgen_glReadnPixelsKHR +#define glGetnUniformfvKHR __rglgen_glGetnUniformfvKHR +#define glGetnUniformivKHR __rglgen_glGetnUniformivKHR +#define glGetnUniformuivKHR __rglgen_glGetnUniformuivKHR +#define glEGLImageTargetTexture2DOES __rglgen_glEGLImageTargetTexture2DOES +#define glEGLImageTargetRenderbufferStorageOES __rglgen_glEGLImageTargetRenderbufferStorageOES +#define glCopyImageSubDataOES __rglgen_glCopyImageSubDataOES +#define glEnableiOES __rglgen_glEnableiOES +#define glDisableiOES __rglgen_glDisableiOES +#define glBlendEquationiOES __rglgen_glBlendEquationiOES +#define glBlendEquationSeparateiOES __rglgen_glBlendEquationSeparateiOES +#define glBlendFunciOES __rglgen_glBlendFunciOES +#define glBlendFuncSeparateiOES __rglgen_glBlendFuncSeparateiOES +#define glColorMaskiOES __rglgen_glColorMaskiOES +#define glIsEnablediOES __rglgen_glIsEnablediOES +#define glDrawElementsBaseVertexOES __rglgen_glDrawElementsBaseVertexOES +#define glDrawRangeElementsBaseVertexOES __rglgen_glDrawRangeElementsBaseVertexOES +#define glDrawElementsInstancedBaseVertexOES __rglgen_glDrawElementsInstancedBaseVertexOES +#define glMultiDrawElementsBaseVertexOES __rglgen_glMultiDrawElementsBaseVertexOES +#define glFramebufferTextureOES __rglgen_glFramebufferTextureOES +#define glGetProgramBinaryOES __rglgen_glGetProgramBinaryOES +#define glProgramBinaryOES __rglgen_glProgramBinaryOES +#define glMapBufferOES __rglgen_glMapBufferOES +#define glUnmapBufferOES __rglgen_glUnmapBufferOES +#define glGetBufferPointervOES __rglgen_glGetBufferPointervOES +#define glPrimitiveBoundingBoxOES __rglgen_glPrimitiveBoundingBoxOES +#define glMinSampleShadingOES __rglgen_glMinSampleShadingOES +#define glPatchParameteriOES __rglgen_glPatchParameteriOES +#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 glTexParameterIivOES __rglgen_glTexParameterIivOES +#define glTexParameterIuivOES __rglgen_glTexParameterIuivOES +#define glGetTexParameterIivOES __rglgen_glGetTexParameterIivOES +#define glGetTexParameterIuivOES __rglgen_glGetTexParameterIuivOES +#define glSamplerParameterIivOES __rglgen_glSamplerParameterIivOES +#define glSamplerParameterIuivOES __rglgen_glSamplerParameterIuivOES +#define glGetSamplerParameterIivOES __rglgen_glGetSamplerParameterIivOES +#define glGetSamplerParameterIuivOES __rglgen_glGetSamplerParameterIuivOES +#define glTexBufferOES __rglgen_glTexBufferOES +#define glTexBufferRangeOES __rglgen_glTexBufferRangeOES +#define glTexStorage3DMultisampleOES __rglgen_glTexStorage3DMultisampleOES +#define glTextureViewOES __rglgen_glTextureViewOES +#define glBindVertexArrayOES __rglgen_glBindVertexArrayOES +#define glDeleteVertexArraysOES __rglgen_glDeleteVertexArraysOES +#define glGenVertexArraysOES __rglgen_glGenVertexArraysOES +#define glIsVertexArrayOES __rglgen_glIsVertexArrayOES +#define glViewportArrayvOES __rglgen_glViewportArrayvOES +#define glViewportIndexedfOES __rglgen_glViewportIndexedfOES +#define glViewportIndexedfvOES __rglgen_glViewportIndexedfvOES +#define glScissorArrayvOES __rglgen_glScissorArrayvOES +#define glScissorIndexedOES __rglgen_glScissorIndexedOES +#define glScissorIndexedvOES __rglgen_glScissorIndexedvOES +#define glDepthRangeArrayfvOES __rglgen_glDepthRangeArrayfvOES +#define glDepthRangeIndexedfOES __rglgen_glDepthRangeIndexedfOES +#define glGetFloati_vOES __rglgen_glGetFloati_vOES +#define glDrawArraysInstancedBaseInstanceEXT __rglgen_glDrawArraysInstancedBaseInstanceEXT +#define glDrawElementsInstancedBaseInstanceEXT __rglgen_glDrawElementsInstancedBaseInstanceEXT +#define glDrawElementsInstancedBaseVertexBaseInstanceEXT __rglgen_glDrawElementsInstancedBaseVertexBaseInstanceEXT +#define glBindFragDataLocationIndexedEXT __rglgen_glBindFragDataLocationIndexedEXT +#define glBindFragDataLocationEXT __rglgen_glBindFragDataLocationEXT +#define glGetProgramResourceLocationIndexEXT __rglgen_glGetProgramResourceLocationIndexEXT +#define glGetFragDataIndexEXT __rglgen_glGetFragDataIndexEXT +#define glBufferStorageEXT __rglgen_glBufferStorageEXT +#define glClearTexImageEXT __rglgen_glClearTexImageEXT +#define glClearTexSubImageEXT __rglgen_glClearTexSubImageEXT +#define glCopyImageSubDataEXT __rglgen_glCopyImageSubDataEXT +#define glLabelObjectEXT __rglgen_glLabelObjectEXT +#define glGetObjectLabelEXT __rglgen_glGetObjectLabelEXT +#define glInsertEventMarkerEXT __rglgen_glInsertEventMarkerEXT +#define glPushGroupMarkerEXT __rglgen_glPushGroupMarkerEXT +#define glPopGroupMarkerEXT __rglgen_glPopGroupMarkerEXT +#define glDiscardFramebufferEXT __rglgen_glDiscardFramebufferEXT +#define glGenQueriesEXT __rglgen_glGenQueriesEXT +#define glDeleteQueriesEXT __rglgen_glDeleteQueriesEXT +#define glIsQueryEXT __rglgen_glIsQueryEXT +#define glBeginQueryEXT __rglgen_glBeginQueryEXT +#define glEndQueryEXT __rglgen_glEndQueryEXT +#define glQueryCounterEXT __rglgen_glQueryCounterEXT +#define glGetQueryivEXT __rglgen_glGetQueryivEXT +#define glGetQueryObjectivEXT __rglgen_glGetQueryObjectivEXT +#define glGetQueryObjectuivEXT __rglgen_glGetQueryObjectuivEXT +#define glDrawBuffersEXT __rglgen_glDrawBuffersEXT +#define glEnableiEXT __rglgen_glEnableiEXT +#define glDisableiEXT __rglgen_glDisableiEXT +#define glBlendEquationiEXT __rglgen_glBlendEquationiEXT +#define glBlendEquationSeparateiEXT __rglgen_glBlendEquationSeparateiEXT +#define glBlendFunciEXT __rglgen_glBlendFunciEXT +#define glBlendFuncSeparateiEXT __rglgen_glBlendFuncSeparateiEXT +#define glColorMaskiEXT __rglgen_glColorMaskiEXT +#define glIsEnablediEXT __rglgen_glIsEnablediEXT +#define glDrawElementsBaseVertexEXT __rglgen_glDrawElementsBaseVertexEXT +#define glDrawRangeElementsBaseVertexEXT __rglgen_glDrawRangeElementsBaseVertexEXT +#define glDrawElementsInstancedBaseVertexEXT __rglgen_glDrawElementsInstancedBaseVertexEXT +#define glMultiDrawElementsBaseVertexEXT __rglgen_glMultiDrawElementsBaseVertexEXT +#define glDrawArraysInstancedEXT __rglgen_glDrawArraysInstancedEXT +#define glDrawElementsInstancedEXT __rglgen_glDrawElementsInstancedEXT +#define glFramebufferTextureEXT __rglgen_glFramebufferTextureEXT +#define glVertexAttribDivisorEXT __rglgen_glVertexAttribDivisorEXT +#define glMapBufferRangeEXT __rglgen_glMapBufferRangeEXT +#define glFlushMappedBufferRangeEXT __rglgen_glFlushMappedBufferRangeEXT +#define glMultiDrawArraysEXT __rglgen_glMultiDrawArraysEXT +#define glMultiDrawElementsEXT __rglgen_glMultiDrawElementsEXT +#define glMultiDrawArraysIndirectEXT __rglgen_glMultiDrawArraysIndirectEXT +#define glMultiDrawElementsIndirectEXT __rglgen_glMultiDrawElementsIndirectEXT +#define glRenderbufferStorageMultisampleEXT __rglgen_glRenderbufferStorageMultisampleEXT +#define glFramebufferTexture2DMultisampleEXT __rglgen_glFramebufferTexture2DMultisampleEXT +#define glReadBufferIndexedEXT __rglgen_glReadBufferIndexedEXT +#define glDrawBuffersIndexedEXT __rglgen_glDrawBuffersIndexedEXT +#define glGetIntegeri_vEXT __rglgen_glGetIntegeri_vEXT +#define glPolygonOffsetClampEXT __rglgen_glPolygonOffsetClampEXT +#define glPrimitiveBoundingBoxEXT __rglgen_glPrimitiveBoundingBoxEXT +#define glRasterSamplesEXT __rglgen_glRasterSamplesEXT +#define glGetGraphicsResetStatusEXT __rglgen_glGetGraphicsResetStatusEXT +#define glReadnPixelsEXT __rglgen_glReadnPixelsEXT +#define glGetnUniformfvEXT __rglgen_glGetnUniformfvEXT +#define glGetnUniformivEXT __rglgen_glGetnUniformivEXT +#define glActiveShaderProgramEXT __rglgen_glActiveShaderProgramEXT +#define glBindProgramPipelineEXT __rglgen_glBindProgramPipelineEXT +#define glCreateShaderProgramvEXT __rglgen_glCreateShaderProgramvEXT +#define glDeleteProgramPipelinesEXT __rglgen_glDeleteProgramPipelinesEXT +#define glGenProgramPipelinesEXT __rglgen_glGenProgramPipelinesEXT +#define glGetProgramPipelineInfoLogEXT __rglgen_glGetProgramPipelineInfoLogEXT +#define glGetProgramPipelineivEXT __rglgen_glGetProgramPipelineivEXT +#define glIsProgramPipelineEXT __rglgen_glIsProgramPipelineEXT +#define glProgramParameteriEXT __rglgen_glProgramParameteriEXT +#define glProgramUniform1fEXT __rglgen_glProgramUniform1fEXT +#define glProgramUniform1fvEXT __rglgen_glProgramUniform1fvEXT +#define glProgramUniform1iEXT __rglgen_glProgramUniform1iEXT +#define glProgramUniform1ivEXT __rglgen_glProgramUniform1ivEXT +#define glProgramUniform2fEXT __rglgen_glProgramUniform2fEXT +#define glProgramUniform2fvEXT __rglgen_glProgramUniform2fvEXT +#define glProgramUniform2iEXT __rglgen_glProgramUniform2iEXT +#define glProgramUniform2ivEXT __rglgen_glProgramUniform2ivEXT +#define glProgramUniform3fEXT __rglgen_glProgramUniform3fEXT +#define glProgramUniform3fvEXT __rglgen_glProgramUniform3fvEXT +#define glProgramUniform3iEXT __rglgen_glProgramUniform3iEXT +#define glProgramUniform3ivEXT __rglgen_glProgramUniform3ivEXT +#define glProgramUniform4fEXT __rglgen_glProgramUniform4fEXT +#define glProgramUniform4fvEXT __rglgen_glProgramUniform4fvEXT +#define glProgramUniform4iEXT __rglgen_glProgramUniform4iEXT +#define glProgramUniform4ivEXT __rglgen_glProgramUniform4ivEXT +#define glProgramUniformMatrix2fvEXT __rglgen_glProgramUniformMatrix2fvEXT +#define glProgramUniformMatrix3fvEXT __rglgen_glProgramUniformMatrix3fvEXT +#define glProgramUniformMatrix4fvEXT __rglgen_glProgramUniformMatrix4fvEXT +#define glUseProgramStagesEXT __rglgen_glUseProgramStagesEXT +#define glValidateProgramPipelineEXT __rglgen_glValidateProgramPipelineEXT +#define glProgramUniform1uiEXT __rglgen_glProgramUniform1uiEXT +#define glProgramUniform2uiEXT __rglgen_glProgramUniform2uiEXT +#define glProgramUniform3uiEXT __rglgen_glProgramUniform3uiEXT +#define glProgramUniform4uiEXT __rglgen_glProgramUniform4uiEXT +#define glProgramUniform1uivEXT __rglgen_glProgramUniform1uivEXT +#define glProgramUniform2uivEXT __rglgen_glProgramUniform2uivEXT +#define glProgramUniform3uivEXT __rglgen_glProgramUniform3uivEXT +#define glProgramUniform4uivEXT __rglgen_glProgramUniform4uivEXT +#define glProgramUniformMatrix2x3fvEXT __rglgen_glProgramUniformMatrix2x3fvEXT +#define glProgramUniformMatrix3x2fvEXT __rglgen_glProgramUniformMatrix3x2fvEXT +#define glProgramUniformMatrix2x4fvEXT __rglgen_glProgramUniformMatrix2x4fvEXT +#define glProgramUniformMatrix4x2fvEXT __rglgen_glProgramUniformMatrix4x2fvEXT +#define glProgramUniformMatrix3x4fvEXT __rglgen_glProgramUniformMatrix3x4fvEXT +#define glProgramUniformMatrix4x3fvEXT __rglgen_glProgramUniformMatrix4x3fvEXT +#define glFramebufferPixelLocalStorageSizeEXT __rglgen_glFramebufferPixelLocalStorageSizeEXT +#define glGetFramebufferPixelLocalStorageSizeEXT __rglgen_glGetFramebufferPixelLocalStorageSizeEXT +#define glClearPixelLocalStorageuiEXT __rglgen_glClearPixelLocalStorageuiEXT +#define glTexPageCommitmentEXT __rglgen_glTexPageCommitmentEXT +#define glPatchParameteriEXT __rglgen_glPatchParameteriEXT +#define glTexParameterIivEXT __rglgen_glTexParameterIivEXT +#define glTexParameterIuivEXT __rglgen_glTexParameterIuivEXT +#define glGetTexParameterIivEXT __rglgen_glGetTexParameterIivEXT +#define glGetTexParameterIuivEXT __rglgen_glGetTexParameterIuivEXT +#define glSamplerParameterIivEXT __rglgen_glSamplerParameterIivEXT +#define glSamplerParameterIuivEXT __rglgen_glSamplerParameterIuivEXT +#define glGetSamplerParameterIivEXT __rglgen_glGetSamplerParameterIivEXT +#define glGetSamplerParameterIuivEXT __rglgen_glGetSamplerParameterIuivEXT +#define glTexBufferEXT __rglgen_glTexBufferEXT +#define glTexBufferRangeEXT __rglgen_glTexBufferRangeEXT +#define glTexStorage1DEXT __rglgen_glTexStorage1DEXT +#define glTexStorage2DEXT __rglgen_glTexStorage2DEXT +#define glTexStorage3DEXT __rglgen_glTexStorage3DEXT +#define glTextureStorage1DEXT __rglgen_glTextureStorage1DEXT +#define glTextureStorage2DEXT __rglgen_glTextureStorage2DEXT +#define glTextureStorage3DEXT __rglgen_glTextureStorage3DEXT +#define glTextureViewEXT __rglgen_glTextureViewEXT +#define glesEXT __rglgen_glesEXT +#define glFramebufferTextureMultiviewOVR __rglgen_glFramebufferTextureMultiviewOVR +#define glFramebufferTextureMultisampleMultiviewOVR __rglgen_glFramebufferTextureMultisampleMultiviewOVR + +extern RGLSYMGLBLENDBARRIERKHRPROC __rglgen_glBlendBarrierKHR; +extern RGLSYMGLDEBUGMESSAGECONTROLKHRPROC __rglgen_glDebugMessageControlKHR; +extern RGLSYMGLDEBUGMESSAGEINSERTKHRPROC __rglgen_glDebugMessageInsertKHR; +extern RGLSYMGLDEBUGMESSAGECALLBACKKHRPROC __rglgen_glDebugMessageCallbackKHR; +extern RGLSYMGLGETDEBUGMESSAGELOGKHRPROC __rglgen_glGetDebugMessageLogKHR; +extern RGLSYMGLPUSHDEBUGGROUPKHRPROC __rglgen_glPushDebugGroupKHR; +extern RGLSYMGLPOPDEBUGGROUPKHRPROC __rglgen_glPopDebugGroupKHR; +extern RGLSYMGLOBJECTLABELKHRPROC __rglgen_glObjectLabelKHR; +extern RGLSYMGLGETOBJECTLABELKHRPROC __rglgen_glGetObjectLabelKHR; +extern RGLSYMGLOBJECTPTRLABELKHRPROC __rglgen_glObjectPtrLabelKHR; +extern RGLSYMGLGETOBJECTPTRLABELKHRPROC __rglgen_glGetObjectPtrLabelKHR; +extern RGLSYMGLGETPOINTERVKHRPROC __rglgen_glGetPointervKHR; +extern RGLSYMGLGETGRAPHICSRESETSTATUSKHRPROC __rglgen_glGetGraphicsResetStatusKHR; +extern RGLSYMGLREADNPIXELSKHRPROC __rglgen_glReadnPixelsKHR; +extern RGLSYMGLGETNUNIFORMFVKHRPROC __rglgen_glGetnUniformfvKHR; +extern RGLSYMGLGETNUNIFORMIVKHRPROC __rglgen_glGetnUniformivKHR; +extern RGLSYMGLGETNUNIFORMUIVKHRPROC __rglgen_glGetnUniformuivKHR; +extern RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC __rglgen_glEGLImageTargetTexture2DOES; +extern RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __rglgen_glEGLImageTargetRenderbufferStorageOES; +extern RGLSYMGLCOPYIMAGESUBDATAOESPROC __rglgen_glCopyImageSubDataOES; +extern RGLSYMGLENABLEIOESPROC __rglgen_glEnableiOES; +extern RGLSYMGLDISABLEIOESPROC __rglgen_glDisableiOES; +extern RGLSYMGLBLENDEQUATIONIOESPROC __rglgen_glBlendEquationiOES; +extern RGLSYMGLBLENDEQUATIONSEPARATEIOESPROC __rglgen_glBlendEquationSeparateiOES; +extern RGLSYMGLBLENDFUNCIOESPROC __rglgen_glBlendFunciOES; +extern RGLSYMGLBLENDFUNCSEPARATEIOESPROC __rglgen_glBlendFuncSeparateiOES; +extern RGLSYMGLCOLORMASKIOESPROC __rglgen_glColorMaskiOES; +extern RGLSYMGLISENABLEDIOESPROC __rglgen_glIsEnablediOES; +extern RGLSYMGLDRAWELEMENTSBASEVERTEXOESPROC __rglgen_glDrawElementsBaseVertexOES; +extern RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXOESPROC __rglgen_glDrawRangeElementsBaseVertexOES; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC __rglgen_glDrawElementsInstancedBaseVertexOES; +extern RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXOESPROC __rglgen_glMultiDrawElementsBaseVertexOES; +extern RGLSYMGLFRAMEBUFFERTEXTUREOESPROC __rglgen_glFramebufferTextureOES; +extern RGLSYMGLGETPROGRAMBINARYOESPROC __rglgen_glGetProgramBinaryOES; +extern RGLSYMGLPROGRAMBINARYOESPROC __rglgen_glProgramBinaryOES; +extern RGLSYMGLMAPBUFFEROESPROC __rglgen_glMapBufferOES; +extern RGLSYMGLUNMAPBUFFEROESPROC __rglgen_glUnmapBufferOES; +extern RGLSYMGLGETBUFFERPOINTERVOESPROC __rglgen_glGetBufferPointervOES; +extern RGLSYMGLPRIMITIVEBOUNDINGBOXOESPROC __rglgen_glPrimitiveBoundingBoxOES; +extern RGLSYMGLMINSAMPLESHADINGOESPROC __rglgen_glMinSampleShadingOES; +extern RGLSYMGLPATCHPARAMETERIOESPROC __rglgen_glPatchParameteriOES; +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 RGLSYMGLTEXPARAMETERIIVOESPROC __rglgen_glTexParameterIivOES; +extern RGLSYMGLTEXPARAMETERIUIVOESPROC __rglgen_glTexParameterIuivOES; +extern RGLSYMGLGETTEXPARAMETERIIVOESPROC __rglgen_glGetTexParameterIivOES; +extern RGLSYMGLGETTEXPARAMETERIUIVOESPROC __rglgen_glGetTexParameterIuivOES; +extern RGLSYMGLSAMPLERPARAMETERIIVOESPROC __rglgen_glSamplerParameterIivOES; +extern RGLSYMGLSAMPLERPARAMETERIUIVOESPROC __rglgen_glSamplerParameterIuivOES; +extern RGLSYMGLGETSAMPLERPARAMETERIIVOESPROC __rglgen_glGetSamplerParameterIivOES; +extern RGLSYMGLGETSAMPLERPARAMETERIUIVOESPROC __rglgen_glGetSamplerParameterIuivOES; +extern RGLSYMGLTEXBUFFEROESPROC __rglgen_glTexBufferOES; +extern RGLSYMGLTEXBUFFERRANGEOESPROC __rglgen_glTexBufferRangeOES; +extern RGLSYMGLTEXSTORAGE3DMULTISAMPLEOESPROC __rglgen_glTexStorage3DMultisampleOES; +extern RGLSYMGLTEXTUREVIEWOESPROC __rglgen_glTextureViewOES; +extern RGLSYMGLBINDVERTEXARRAYOESPROC __rglgen_glBindVertexArrayOES; +extern RGLSYMGLDELETEVERTEXARRAYSOESPROC __rglgen_glDeleteVertexArraysOES; +extern RGLSYMGLGENVERTEXARRAYSOESPROC __rglgen_glGenVertexArraysOES; +extern RGLSYMGLISVERTEXARRAYOESPROC __rglgen_glIsVertexArrayOES; +extern RGLSYMGLVIEWPORTARRAYVOESPROC __rglgen_glViewportArrayvOES; +extern RGLSYMGLVIEWPORTINDEXEDFOESPROC __rglgen_glViewportIndexedfOES; +extern RGLSYMGLVIEWPORTINDEXEDFVOESPROC __rglgen_glViewportIndexedfvOES; +extern RGLSYMGLSCISSORARRAYVOESPROC __rglgen_glScissorArrayvOES; +extern RGLSYMGLSCISSORINDEXEDOESPROC __rglgen_glScissorIndexedOES; +extern RGLSYMGLSCISSORINDEXEDVOESPROC __rglgen_glScissorIndexedvOES; +extern RGLSYMGLDEPTHRANGEARRAYFVOESPROC __rglgen_glDepthRangeArrayfvOES; +extern RGLSYMGLDEPTHRANGEINDEXEDFOESPROC __rglgen_glDepthRangeIndexedfOES; +extern RGLSYMGLGETFLOATI_VOESPROC __rglgen_glGetFloati_vOES; +extern RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC __rglgen_glDrawArraysInstancedBaseInstanceEXT; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC __rglgen_glDrawElementsInstancedBaseInstanceEXT; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC __rglgen_glDrawElementsInstancedBaseVertexBaseInstanceEXT; +extern RGLSYMGLBINDFRAGDATALOCATIONINDEXEDEXTPROC __rglgen_glBindFragDataLocationIndexedEXT; +extern RGLSYMGLBINDFRAGDATALOCATIONEXTPROC __rglgen_glBindFragDataLocationEXT; +extern RGLSYMGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC __rglgen_glGetProgramResourceLocationIndexEXT; +extern RGLSYMGLGETFRAGDATAINDEXEXTPROC __rglgen_glGetFragDataIndexEXT; +extern RGLSYMGLBUFFERSTORAGEEXTPROC __rglgen_glBufferStorageEXT; +extern RGLSYMGLCLEARTEXIMAGEEXTPROC __rglgen_glClearTexImageEXT; +extern RGLSYMGLCLEARTEXSUBIMAGEEXTPROC __rglgen_glClearTexSubImageEXT; +extern RGLSYMGLCOPYIMAGESUBDATAEXTPROC __rglgen_glCopyImageSubDataEXT; +extern RGLSYMGLLABELOBJECTEXTPROC __rglgen_glLabelObjectEXT; +extern RGLSYMGLGETOBJECTLABELEXTPROC __rglgen_glGetObjectLabelEXT; +extern RGLSYMGLINSERTEVENTMARKEREXTPROC __rglgen_glInsertEventMarkerEXT; +extern RGLSYMGLPUSHGROUPMARKEREXTPROC __rglgen_glPushGroupMarkerEXT; +extern RGLSYMGLPOPGROUPMARKEREXTPROC __rglgen_glPopGroupMarkerEXT; +extern RGLSYMGLDISCARDFRAMEBUFFEREXTPROC __rglgen_glDiscardFramebufferEXT; +extern RGLSYMGLGENQUERIESEXTPROC __rglgen_glGenQueriesEXT; +extern RGLSYMGLDELETEQUERIESEXTPROC __rglgen_glDeleteQueriesEXT; +extern RGLSYMGLISQUERYEXTPROC __rglgen_glIsQueryEXT; +extern RGLSYMGLBEGINQUERYEXTPROC __rglgen_glBeginQueryEXT; +extern RGLSYMGLENDQUERYEXTPROC __rglgen_glEndQueryEXT; +extern RGLSYMGLQUERYCOUNTEREXTPROC __rglgen_glQueryCounterEXT; +extern RGLSYMGLGETQUERYIVEXTPROC __rglgen_glGetQueryivEXT; +extern RGLSYMGLGETQUERYOBJECTIVEXTPROC __rglgen_glGetQueryObjectivEXT; +extern RGLSYMGLGETQUERYOBJECTUIVEXTPROC __rglgen_glGetQueryObjectuivEXT; +extern RGLSYMGLDRAWBUFFERSEXTPROC __rglgen_glDrawBuffersEXT; +extern RGLSYMGLENABLEIEXTPROC __rglgen_glEnableiEXT; +extern RGLSYMGLDISABLEIEXTPROC __rglgen_glDisableiEXT; +extern RGLSYMGLBLENDEQUATIONIEXTPROC __rglgen_glBlendEquationiEXT; +extern RGLSYMGLBLENDEQUATIONSEPARATEIEXTPROC __rglgen_glBlendEquationSeparateiEXT; +extern RGLSYMGLBLENDFUNCIEXTPROC __rglgen_glBlendFunciEXT; +extern RGLSYMGLBLENDFUNCSEPARATEIEXTPROC __rglgen_glBlendFuncSeparateiEXT; +extern RGLSYMGLCOLORMASKIEXTPROC __rglgen_glColorMaskiEXT; +extern RGLSYMGLISENABLEDIEXTPROC __rglgen_glIsEnablediEXT; +extern RGLSYMGLDRAWELEMENTSBASEVERTEXEXTPROC __rglgen_glDrawElementsBaseVertexEXT; +extern RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC __rglgen_glDrawRangeElementsBaseVertexEXT; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC __rglgen_glDrawElementsInstancedBaseVertexEXT; +extern RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC __rglgen_glMultiDrawElementsBaseVertexEXT; +extern RGLSYMGLDRAWARRAYSINSTANCEDEXTPROC __rglgen_glDrawArraysInstancedEXT; +extern RGLSYMGLDRAWELEMENTSINSTANCEDEXTPROC __rglgen_glDrawElementsInstancedEXT; +extern RGLSYMGLFRAMEBUFFERTEXTUREEXTPROC __rglgen_glFramebufferTextureEXT; +extern RGLSYMGLVERTEXATTRIBDIVISOREXTPROC __rglgen_glVertexAttribDivisorEXT; +extern RGLSYMGLMAPBUFFERRANGEEXTPROC __rglgen_glMapBufferRangeEXT; +extern RGLSYMGLFLUSHMAPPEDBUFFERRANGEEXTPROC __rglgen_glFlushMappedBufferRangeEXT; +extern RGLSYMGLMULTIDRAWARRAYSEXTPROC __rglgen_glMultiDrawArraysEXT; +extern RGLSYMGLMULTIDRAWELEMENTSEXTPROC __rglgen_glMultiDrawElementsEXT; +extern RGLSYMGLMULTIDRAWARRAYSINDIRECTEXTPROC __rglgen_glMultiDrawArraysIndirectEXT; +extern RGLSYMGLMULTIDRAWELEMENTSINDIRECTEXTPROC __rglgen_glMultiDrawElementsIndirectEXT; +extern RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __rglgen_glRenderbufferStorageMultisampleEXT; +extern RGLSYMGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC __rglgen_glFramebufferTexture2DMultisampleEXT; +extern RGLSYMGLREADBUFFERINDEXEDEXTPROC __rglgen_glReadBufferIndexedEXT; +extern RGLSYMGLDRAWBUFFERSINDEXEDEXTPROC __rglgen_glDrawBuffersIndexedEXT; +extern RGLSYMGLGETINTEGERI_VEXTPROC __rglgen_glGetIntegeri_vEXT; +extern RGLSYMGLPOLYGONOFFSETCLAMPEXTPROC __rglgen_glPolygonOffsetClampEXT; +extern RGLSYMGLPRIMITIVEBOUNDINGBOXEXTPROC __rglgen_glPrimitiveBoundingBoxEXT; +extern RGLSYMGLRASTERSAMPLESEXTPROC __rglgen_glRasterSamplesEXT; +extern RGLSYMGLGETGRAPHICSRESETSTATUSEXTPROC __rglgen_glGetGraphicsResetStatusEXT; +extern RGLSYMGLREADNPIXELSEXTPROC __rglgen_glReadnPixelsEXT; +extern RGLSYMGLGETNUNIFORMFVEXTPROC __rglgen_glGetnUniformfvEXT; +extern RGLSYMGLGETNUNIFORMIVEXTPROC __rglgen_glGetnUniformivEXT; +extern RGLSYMGLACTIVESHADERPROGRAMEXTPROC __rglgen_glActiveShaderProgramEXT; +extern RGLSYMGLBINDPROGRAMPIPELINEEXTPROC __rglgen_glBindProgramPipelineEXT; +extern RGLSYMGLCREATESHADERPROGRAMVEXTPROC __rglgen_glCreateShaderProgramvEXT; +extern RGLSYMGLDELETEPROGRAMPIPELINESEXTPROC __rglgen_glDeleteProgramPipelinesEXT; +extern RGLSYMGLGENPROGRAMPIPELINESEXTPROC __rglgen_glGenProgramPipelinesEXT; +extern RGLSYMGLGETPROGRAMPIPELINEINFOLOGEXTPROC __rglgen_glGetProgramPipelineInfoLogEXT; +extern RGLSYMGLGETPROGRAMPIPELINEIVEXTPROC __rglgen_glGetProgramPipelineivEXT; +extern RGLSYMGLISPROGRAMPIPELINEEXTPROC __rglgen_glIsProgramPipelineEXT; +extern RGLSYMGLPROGRAMPARAMETERIEXTPROC __rglgen_glProgramParameteriEXT; +extern RGLSYMGLPROGRAMUNIFORM1FEXTPROC __rglgen_glProgramUniform1fEXT; +extern RGLSYMGLPROGRAMUNIFORM1FVEXTPROC __rglgen_glProgramUniform1fvEXT; +extern RGLSYMGLPROGRAMUNIFORM1IEXTPROC __rglgen_glProgramUniform1iEXT; +extern RGLSYMGLPROGRAMUNIFORM1IVEXTPROC __rglgen_glProgramUniform1ivEXT; +extern RGLSYMGLPROGRAMUNIFORM2FEXTPROC __rglgen_glProgramUniform2fEXT; +extern RGLSYMGLPROGRAMUNIFORM2FVEXTPROC __rglgen_glProgramUniform2fvEXT; +extern RGLSYMGLPROGRAMUNIFORM2IEXTPROC __rglgen_glProgramUniform2iEXT; +extern RGLSYMGLPROGRAMUNIFORM2IVEXTPROC __rglgen_glProgramUniform2ivEXT; +extern RGLSYMGLPROGRAMUNIFORM3FEXTPROC __rglgen_glProgramUniform3fEXT; +extern RGLSYMGLPROGRAMUNIFORM3FVEXTPROC __rglgen_glProgramUniform3fvEXT; +extern RGLSYMGLPROGRAMUNIFORM3IEXTPROC __rglgen_glProgramUniform3iEXT; +extern RGLSYMGLPROGRAMUNIFORM3IVEXTPROC __rglgen_glProgramUniform3ivEXT; +extern RGLSYMGLPROGRAMUNIFORM4FEXTPROC __rglgen_glProgramUniform4fEXT; +extern RGLSYMGLPROGRAMUNIFORM4FVEXTPROC __rglgen_glProgramUniform4fvEXT; +extern RGLSYMGLPROGRAMUNIFORM4IEXTPROC __rglgen_glProgramUniform4iEXT; +extern RGLSYMGLPROGRAMUNIFORM4IVEXTPROC __rglgen_glProgramUniform4ivEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2FVEXTPROC __rglgen_glProgramUniformMatrix2fvEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3FVEXTPROC __rglgen_glProgramUniformMatrix3fvEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4FVEXTPROC __rglgen_glProgramUniformMatrix4fvEXT; +extern RGLSYMGLUSEPROGRAMSTAGESEXTPROC __rglgen_glUseProgramStagesEXT; +extern RGLSYMGLVALIDATEPROGRAMPIPELINEEXTPROC __rglgen_glValidateProgramPipelineEXT; +extern RGLSYMGLPROGRAMUNIFORM1UIEXTPROC __rglgen_glProgramUniform1uiEXT; +extern RGLSYMGLPROGRAMUNIFORM2UIEXTPROC __rglgen_glProgramUniform2uiEXT; +extern RGLSYMGLPROGRAMUNIFORM3UIEXTPROC __rglgen_glProgramUniform3uiEXT; +extern RGLSYMGLPROGRAMUNIFORM4UIEXTPROC __rglgen_glProgramUniform4uiEXT; +extern RGLSYMGLPROGRAMUNIFORM1UIVEXTPROC __rglgen_glProgramUniform1uivEXT; +extern RGLSYMGLPROGRAMUNIFORM2UIVEXTPROC __rglgen_glProgramUniform2uivEXT; +extern RGLSYMGLPROGRAMUNIFORM3UIVEXTPROC __rglgen_glProgramUniform3uivEXT; +extern RGLSYMGLPROGRAMUNIFORM4UIVEXTPROC __rglgen_glProgramUniform4uivEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __rglgen_glProgramUniformMatrix2x3fvEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __rglgen_glProgramUniformMatrix3x2fvEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __rglgen_glProgramUniformMatrix2x4fvEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __rglgen_glProgramUniformMatrix4x2fvEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __rglgen_glProgramUniformMatrix3x4fvEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __rglgen_glProgramUniformMatrix4x3fvEXT; +extern RGLSYMGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __rglgen_glFramebufferPixelLocalStorageSizeEXT; +extern RGLSYMGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __rglgen_glGetFramebufferPixelLocalStorageSizeEXT; +extern RGLSYMGLCLEARPIXELLOCALSTORAGEUIEXTPROC __rglgen_glClearPixelLocalStorageuiEXT; +extern RGLSYMGLTEXPAGECOMMITMENTEXTPROC __rglgen_glTexPageCommitmentEXT; +extern RGLSYMGLPATCHPARAMETERIEXTPROC __rglgen_glPatchParameteriEXT; +extern RGLSYMGLTEXPARAMETERIIVEXTPROC __rglgen_glTexParameterIivEXT; +extern RGLSYMGLTEXPARAMETERIUIVEXTPROC __rglgen_glTexParameterIuivEXT; +extern RGLSYMGLGETTEXPARAMETERIIVEXTPROC __rglgen_glGetTexParameterIivEXT; +extern RGLSYMGLGETTEXPARAMETERIUIVEXTPROC __rglgen_glGetTexParameterIuivEXT; +extern RGLSYMGLSAMPLERPARAMETERIIVEXTPROC __rglgen_glSamplerParameterIivEXT; +extern RGLSYMGLSAMPLERPARAMETERIUIVEXTPROC __rglgen_glSamplerParameterIuivEXT; +extern RGLSYMGLGETSAMPLERPARAMETERIIVEXTPROC __rglgen_glGetSamplerParameterIivEXT; +extern RGLSYMGLGETSAMPLERPARAMETERIUIVEXTPROC __rglgen_glGetSamplerParameterIuivEXT; +extern RGLSYMGLTEXBUFFEREXTPROC __rglgen_glTexBufferEXT; +extern RGLSYMGLTEXBUFFERRANGEEXTPROC __rglgen_glTexBufferRangeEXT; +extern RGLSYMGLTEXSTORAGE1DEXTPROC __rglgen_glTexStorage1DEXT; +extern RGLSYMGLTEXSTORAGE2DEXTPROC __rglgen_glTexStorage2DEXT; +extern RGLSYMGLTEXSTORAGE3DEXTPROC __rglgen_glTexStorage3DEXT; +extern RGLSYMGLTEXTURESTORAGE1DEXTPROC __rglgen_glTextureStorage1DEXT; +extern RGLSYMGLTEXTURESTORAGE2DEXTPROC __rglgen_glTextureStorage2DEXT; +extern RGLSYMGLTEXTURESTORAGE3DEXTPROC __rglgen_glTextureStorage3DEXT; +extern RGLSYMGLTEXTUREVIEWEXTPROC __rglgen_glTextureViewEXT; +extern RGLSYMGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC __rglgen_glFramebufferTextureMultiviewOVR; +extern RGLSYMGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC __rglgen_glFramebufferTextureMultisampleMultiviewOVR; + +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/src/platform/libretro/libretro-common/include/glsym/glsym_es3.h b/src/platform/libretro/libretro-common/include/glsym/glsym_es3.h new file mode 100644 index 00000000..9ffd1506 --- /dev/null +++ b/src/platform/libretro/libretro-common/include/glsym/glsym_es3.h @@ -0,0 +1,650 @@ +#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*); +typedef void (GL_APIENTRY *RGLGENGLDEBUGPROCKHR)(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 +#if defined(OSX) && !defined(MAC_OS_X_VERSION_10_7) +typedef long long int GLint64; +typedef unsigned long long int GLuint64; +typedef unsigned long long int GLuint64EXT; +typedef struct __GLsync *GLsync; +#endif +typedef void (GL_APIENTRYP RGLSYMGLBLENDBARRIERKHRPROC) (void); +typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKKHRPROC) (RGLGENGLDEBUGPROCKHR callback, const void *userParam); +typedef GLuint (GL_APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (GL_APIENTRYP RGLSYMGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (GL_APIENTRYP RGLSYMGLPOPDEBUGGROUPKHRPROC) (void); +typedef void (GL_APIENTRYP RGLSYMGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLGETPOINTERVKHRPROC) (GLenum pname, void **params); +typedef GLenum (GL_APIENTRYP RGLSYMGLGETGRAPHICSRESETSTATUSKHRPROC) (void); +typedef void (GL_APIENTRYP RGLSYMGLREADNPIXELSKHRPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP RGLSYMGLGETNUNIFORMFVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP RGLSYMGLGETNUNIFORMIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETNUNIFORMUIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP RGLSYMGLCOPYIMAGESUBDATAOESPROC) (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 (GL_APIENTRYP RGLSYMGLENABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP RGLSYMGLDISABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP RGLSYMGLBLENDEQUATIONIOESPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP RGLSYMGLBLENDEQUATIONSEPARATEIOESPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP RGLSYMGLBLENDFUNCIOESPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP RGLSYMGLBLENDFUNCSEPARATEIOESPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP RGLSYMGLCOLORMASKIOESPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP RGLSYMGLISENABLEDIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP RGLSYMGLDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (GL_APIENTRYP RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); +typedef void (GL_APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREOESPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (GL_APIENTRYP RGLSYMGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *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, void **params); +typedef void (GL_APIENTRYP RGLSYMGLPRIMITIVEBOUNDINGBOXOESPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +typedef void (GL_APIENTRYP RGLSYMGLMINSAMPLESHADINGOESPROC) (GLfloat value); +typedef void (GL_APIENTRYP RGLSYMGLPATCHPARAMETERIOESPROC) (GLenum pname, GLint value); +typedef void (GL_APIENTRYP RGLSYMGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *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 void *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 void *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 void *data); +typedef void (GL_APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (GL_APIENTRYP RGLSYMGLTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP RGLSYMGLSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLTEXBUFFEROESPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP RGLSYMGLTEXBUFFERRANGEOESPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GL_APIENTRYP RGLSYMGLTEXSTORAGE3DMULTISAMPLEOESPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (GL_APIENTRYP RGLSYMGLTEXTUREVIEWOESPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +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 RGLSYMGLVIEWPORTARRAYVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP RGLSYMGLVIEWPORTINDEXEDFOESPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP RGLSYMGLVIEWPORTINDEXEDFVOESPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP RGLSYMGLSCISSORARRAYVOESPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP RGLSYMGLSCISSORINDEXEDOESPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP RGLSYMGLSCISSORINDEXEDVOESPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP RGLSYMGLDEPTHRANGEARRAYFVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP RGLSYMGLDEPTHRANGEINDEXEDFOESPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP RGLSYMGLGETFLOATI_VOESPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (GL_APIENTRYP RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +typedef void (GL_APIENTRYP RGLSYMGLBINDFRAGDATALOCATIONINDEXEDEXTPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP RGLSYMGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (GL_APIENTRYP RGLSYMGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef GLint (GL_APIENTRYP RGLSYMGLGETFRAGDATAINDEXEXTPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP RGLSYMGLBUFFERSTORAGEEXTPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (GL_APIENTRYP RGLSYMGLCLEARTEXIMAGEEXTPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (GL_APIENTRYP RGLSYMGLCLEARTEXSUBIMAGEEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +typedef void (GL_APIENTRYP RGLSYMGLCOPYIMAGESUBDATAEXTPROC) (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 (GL_APIENTRYP RGLSYMGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP RGLSYMGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP RGLSYMGLPOPGROUPMARKEREXTPROC) (void); +typedef void (GL_APIENTRYP RGLSYMGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +typedef void (GL_APIENTRYP RGLSYMGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); +typedef void (GL_APIENTRYP RGLSYMGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (GL_APIENTRYP RGLSYMGLISQUERYEXTPROC) (GLuint id); +typedef void (GL_APIENTRYP RGLSYMGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); +typedef void (GL_APIENTRYP RGLSYMGLENDQUERYEXTPROC) (GLenum target); +typedef void (GL_APIENTRYP RGLSYMGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target); +typedef void (GL_APIENTRYP RGLSYMGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP RGLSYMGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); +typedef void (GL_APIENTRYP RGLSYMGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs); +typedef void (GL_APIENTRYP RGLSYMGLENABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP RGLSYMGLDISABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP RGLSYMGLBLENDEQUATIONIEXTPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP RGLSYMGLBLENDEQUATIONSEPARATEIEXTPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP RGLSYMGLBLENDFUNCIEXTPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP RGLSYMGLBLENDFUNCSEPARATEIEXTPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP RGLSYMGLCOLORMASKIEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP RGLSYMGLISENABLEDIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP RGLSYMGLDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (GL_APIENTRYP RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); +typedef void (GL_APIENTRYP RGLSYMGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +typedef void (GL_APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (GL_APIENTRYP RGLSYMGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor); +typedef void *(GL_APIENTRYP RGLSYMGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GL_APIENTRYP RGLSYMGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +typedef void (GL_APIENTRYP RGLSYMGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP RGLSYMGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +typedef void (GL_APIENTRYP RGLSYMGLMULTIDRAWARRAYSINDIRECTEXTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP RGLSYMGLMULTIDRAWELEMENTSINDIRECTEXTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +typedef void (GL_APIENTRYP RGLSYMGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index); +typedef void (GL_APIENTRYP RGLSYMGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices); +typedef void (GL_APIENTRYP RGLSYMGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data); +typedef void (GL_APIENTRYP RGLSYMGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp); +typedef void (GL_APIENTRYP RGLSYMGLPRIMITIVEBOUNDINGBOXEXTPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +typedef void (GL_APIENTRYP RGLSYMGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations); +typedef GLenum (GL_APIENTRYP RGLSYMGLGETGRAPHICSRESETSTATUSEXTPROC) (void); +typedef void (GL_APIENTRYP RGLSYMGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP RGLSYMGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP RGLSYMGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); +typedef void (GL_APIENTRYP RGLSYMGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef GLuint (GL_APIENTRYP RGLSYMGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); +typedef void (GL_APIENTRYP RGLSYMGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); +typedef void (GL_APIENTRYP RGLSYMGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); +typedef void (GL_APIENTRYP RGLSYMGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP RGLSYMGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef GLboolean (GL_APIENTRYP RGLSYMGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GL_APIENTRYP RGLSYMGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP RGLSYMGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target, GLsizei size); +typedef GLsizei (GL_APIENTRYP RGLSYMGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target); +typedef void (GL_APIENTRYP RGLSYMGLCLEARPIXELLOCALSTORAGEUIEXTPROC) (GLsizei offset, GLsizei n, const GLuint *values); +typedef void (GL_APIENTRYP RGLSYMGLTEXPAGECOMMITMENTEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +typedef void (GL_APIENTRYP RGLSYMGLPATCHPARAMETERIEXTPROC) (GLenum pname, GLint value); +typedef void (GL_APIENTRYP RGLSYMGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP RGLSYMGLSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP RGLSYMGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP RGLSYMGLTEXBUFFERRANGEEXTPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GL_APIENTRYP RGLSYMGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP RGLSYMGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP RGLSYMGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP RGLSYMGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP RGLSYMGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP RGLSYMGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP RGLSYMGLTEXTUREVIEWEXTPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +typedef void (GL_APIENTRYP RGLSYMGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box); +typedef void (GL_APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +typedef void (GL_APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); + +#define glBlendBarrierKHR __rglgen_glBlendBarrierKHR +#define glDebugMessageControlKHR __rglgen_glDebugMessageControlKHR +#define glDebugMessageInsertKHR __rglgen_glDebugMessageInsertKHR +#define glDebugMessageCallbackKHR __rglgen_glDebugMessageCallbackKHR +#define glGetDebugMessageLogKHR __rglgen_glGetDebugMessageLogKHR +#define glPushDebugGroupKHR __rglgen_glPushDebugGroupKHR +#define glPopDebugGroupKHR __rglgen_glPopDebugGroupKHR +#define glObjectLabelKHR __rglgen_glObjectLabelKHR +#define glGetObjectLabelKHR __rglgen_glGetObjectLabelKHR +#define glObjectPtrLabelKHR __rglgen_glObjectPtrLabelKHR +#define glGetObjectPtrLabelKHR __rglgen_glGetObjectPtrLabelKHR +#define glGetPointervKHR __rglgen_glGetPointervKHR +#define glGetGraphicsResetStatusKHR __rglgen_glGetGraphicsResetStatusKHR +#define glReadnPixelsKHR __rglgen_glReadnPixelsKHR +#define glGetnUniformfvKHR __rglgen_glGetnUniformfvKHR +#define glGetnUniformivKHR __rglgen_glGetnUniformivKHR +#define glGetnUniformuivKHR __rglgen_glGetnUniformuivKHR +#define glEGLImageTargetTexture2DOES __rglgen_glEGLImageTargetTexture2DOES +#define glEGLImageTargetRenderbufferStorageOES __rglgen_glEGLImageTargetRenderbufferStorageOES +#define glCopyImageSubDataOES __rglgen_glCopyImageSubDataOES +#define glEnableiOES __rglgen_glEnableiOES +#define glDisableiOES __rglgen_glDisableiOES +#define glBlendEquationiOES __rglgen_glBlendEquationiOES +#define glBlendEquationSeparateiOES __rglgen_glBlendEquationSeparateiOES +#define glBlendFunciOES __rglgen_glBlendFunciOES +#define glBlendFuncSeparateiOES __rglgen_glBlendFuncSeparateiOES +#define glColorMaskiOES __rglgen_glColorMaskiOES +#define glIsEnablediOES __rglgen_glIsEnablediOES +#define glDrawElementsBaseVertexOES __rglgen_glDrawElementsBaseVertexOES +#define glDrawRangeElementsBaseVertexOES __rglgen_glDrawRangeElementsBaseVertexOES +#define glDrawElementsInstancedBaseVertexOES __rglgen_glDrawElementsInstancedBaseVertexOES +#define glMultiDrawElementsBaseVertexOES __rglgen_glMultiDrawElementsBaseVertexOES +#define glFramebufferTextureOES __rglgen_glFramebufferTextureOES +#define glGetProgramBinaryOES __rglgen_glGetProgramBinaryOES +#define glProgramBinaryOES __rglgen_glProgramBinaryOES +#define glMapBufferOES __rglgen_glMapBufferOES +#define glUnmapBufferOES __rglgen_glUnmapBufferOES +#define glGetBufferPointervOES __rglgen_glGetBufferPointervOES +#define glPrimitiveBoundingBoxOES __rglgen_glPrimitiveBoundingBoxOES +#define glMinSampleShadingOES __rglgen_glMinSampleShadingOES +#define glPatchParameteriOES __rglgen_glPatchParameteriOES +#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 glTexParameterIivOES __rglgen_glTexParameterIivOES +#define glTexParameterIuivOES __rglgen_glTexParameterIuivOES +#define glGetTexParameterIivOES __rglgen_glGetTexParameterIivOES +#define glGetTexParameterIuivOES __rglgen_glGetTexParameterIuivOES +#define glSamplerParameterIivOES __rglgen_glSamplerParameterIivOES +#define glSamplerParameterIuivOES __rglgen_glSamplerParameterIuivOES +#define glGetSamplerParameterIivOES __rglgen_glGetSamplerParameterIivOES +#define glGetSamplerParameterIuivOES __rglgen_glGetSamplerParameterIuivOES +#define glTexBufferOES __rglgen_glTexBufferOES +#define glTexBufferRangeOES __rglgen_glTexBufferRangeOES +#define glTexStorage3DMultisampleOES __rglgen_glTexStorage3DMultisampleOES +#define glTextureViewOES __rglgen_glTextureViewOES +#define glBindVertexArrayOES __rglgen_glBindVertexArrayOES +#define glDeleteVertexArraysOES __rglgen_glDeleteVertexArraysOES +#define glGenVertexArraysOES __rglgen_glGenVertexArraysOES +#define glIsVertexArrayOES __rglgen_glIsVertexArrayOES +#define glViewportArrayvOES __rglgen_glViewportArrayvOES +#define glViewportIndexedfOES __rglgen_glViewportIndexedfOES +#define glViewportIndexedfvOES __rglgen_glViewportIndexedfvOES +#define glScissorArrayvOES __rglgen_glScissorArrayvOES +#define glScissorIndexedOES __rglgen_glScissorIndexedOES +#define glScissorIndexedvOES __rglgen_glScissorIndexedvOES +#define glDepthRangeArrayfvOES __rglgen_glDepthRangeArrayfvOES +#define glDepthRangeIndexedfOES __rglgen_glDepthRangeIndexedfOES +#define glGetFloati_vOES __rglgen_glGetFloati_vOES +#define glDrawArraysInstancedBaseInstanceEXT __rglgen_glDrawArraysInstancedBaseInstanceEXT +#define glDrawElementsInstancedBaseInstanceEXT __rglgen_glDrawElementsInstancedBaseInstanceEXT +#define glDrawElementsInstancedBaseVertexBaseInstanceEXT __rglgen_glDrawElementsInstancedBaseVertexBaseInstanceEXT +#define glBindFragDataLocationIndexedEXT __rglgen_glBindFragDataLocationIndexedEXT +#define glBindFragDataLocationEXT __rglgen_glBindFragDataLocationEXT +#define glGetProgramResourceLocationIndexEXT __rglgen_glGetProgramResourceLocationIndexEXT +#define glGetFragDataIndexEXT __rglgen_glGetFragDataIndexEXT +#define glBufferStorageEXT __rglgen_glBufferStorageEXT +#define glClearTexImageEXT __rglgen_glClearTexImageEXT +#define glClearTexSubImageEXT __rglgen_glClearTexSubImageEXT +#define glCopyImageSubDataEXT __rglgen_glCopyImageSubDataEXT +#define glLabelObjectEXT __rglgen_glLabelObjectEXT +#define glGetObjectLabelEXT __rglgen_glGetObjectLabelEXT +#define glInsertEventMarkerEXT __rglgen_glInsertEventMarkerEXT +#define glPushGroupMarkerEXT __rglgen_glPushGroupMarkerEXT +#define glPopGroupMarkerEXT __rglgen_glPopGroupMarkerEXT +#define glDiscardFramebufferEXT __rglgen_glDiscardFramebufferEXT +#define glGenQueriesEXT __rglgen_glGenQueriesEXT +#define glDeleteQueriesEXT __rglgen_glDeleteQueriesEXT +#define glIsQueryEXT __rglgen_glIsQueryEXT +#define glBeginQueryEXT __rglgen_glBeginQueryEXT +#define glEndQueryEXT __rglgen_glEndQueryEXT +#define glQueryCounterEXT __rglgen_glQueryCounterEXT +#define glGetQueryivEXT __rglgen_glGetQueryivEXT +#define glGetQueryObjectivEXT __rglgen_glGetQueryObjectivEXT +#define glGetQueryObjectuivEXT __rglgen_glGetQueryObjectuivEXT +#define glGetQueryObjecti64vEXT __rglgen_glGetQueryObjecti64vEXT +#define glGetQueryObjectui64vEXT __rglgen_glGetQueryObjectui64vEXT +#define glDrawBuffersEXT __rglgen_glDrawBuffersEXT +#define glEnableiEXT __rglgen_glEnableiEXT +#define glDisableiEXT __rglgen_glDisableiEXT +#define glBlendEquationiEXT __rglgen_glBlendEquationiEXT +#define glBlendEquationSeparateiEXT __rglgen_glBlendEquationSeparateiEXT +#define glBlendFunciEXT __rglgen_glBlendFunciEXT +#define glBlendFuncSeparateiEXT __rglgen_glBlendFuncSeparateiEXT +#define glColorMaskiEXT __rglgen_glColorMaskiEXT +#define glIsEnablediEXT __rglgen_glIsEnablediEXT +#define glDrawElementsBaseVertexEXT __rglgen_glDrawElementsBaseVertexEXT +#define glDrawRangeElementsBaseVertexEXT __rglgen_glDrawRangeElementsBaseVertexEXT +#define glDrawElementsInstancedBaseVertexEXT __rglgen_glDrawElementsInstancedBaseVertexEXT +#define glMultiDrawElementsBaseVertexEXT __rglgen_glMultiDrawElementsBaseVertexEXT +#define glDrawArraysInstancedEXT __rglgen_glDrawArraysInstancedEXT +#define glDrawElementsInstancedEXT __rglgen_glDrawElementsInstancedEXT +#define glFramebufferTextureEXT __rglgen_glFramebufferTextureEXT +#define glVertexAttribDivisorEXT __rglgen_glVertexAttribDivisorEXT +#define glMapBufferRangeEXT __rglgen_glMapBufferRangeEXT +#define glFlushMappedBufferRangeEXT __rglgen_glFlushMappedBufferRangeEXT +#define glMultiDrawArraysEXT __rglgen_glMultiDrawArraysEXT +#define glMultiDrawElementsEXT __rglgen_glMultiDrawElementsEXT +#define glMultiDrawArraysIndirectEXT __rglgen_glMultiDrawArraysIndirectEXT +#define glMultiDrawElementsIndirectEXT __rglgen_glMultiDrawElementsIndirectEXT +#define glRenderbufferStorageMultisampleEXT __rglgen_glRenderbufferStorageMultisampleEXT +#define glFramebufferTexture2DMultisampleEXT __rglgen_glFramebufferTexture2DMultisampleEXT +#define glReadBufferIndexedEXT __rglgen_glReadBufferIndexedEXT +#define glDrawBuffersIndexedEXT __rglgen_glDrawBuffersIndexedEXT +#define glGetIntegeri_vEXT __rglgen_glGetIntegeri_vEXT +#define glPolygonOffsetClampEXT __rglgen_glPolygonOffsetClampEXT +#define glPrimitiveBoundingBoxEXT __rglgen_glPrimitiveBoundingBoxEXT +#define glRasterSamplesEXT __rglgen_glRasterSamplesEXT +#define glGetGraphicsResetStatusEXT __rglgen_glGetGraphicsResetStatusEXT +#define glReadnPixelsEXT __rglgen_glReadnPixelsEXT +#define glGetnUniformfvEXT __rglgen_glGetnUniformfvEXT +#define glGetnUniformivEXT __rglgen_glGetnUniformivEXT +#define glActiveShaderProgramEXT __rglgen_glActiveShaderProgramEXT +#define glBindProgramPipelineEXT __rglgen_glBindProgramPipelineEXT +#define glCreateShaderProgramvEXT __rglgen_glCreateShaderProgramvEXT +#define glDeleteProgramPipelinesEXT __rglgen_glDeleteProgramPipelinesEXT +#define glGenProgramPipelinesEXT __rglgen_glGenProgramPipelinesEXT +#define glGetProgramPipelineInfoLogEXT __rglgen_glGetProgramPipelineInfoLogEXT +#define glGetProgramPipelineivEXT __rglgen_glGetProgramPipelineivEXT +#define glIsProgramPipelineEXT __rglgen_glIsProgramPipelineEXT +#define glProgramParameteriEXT __rglgen_glProgramParameteriEXT +#define glProgramUniform1fEXT __rglgen_glProgramUniform1fEXT +#define glProgramUniform1fvEXT __rglgen_glProgramUniform1fvEXT +#define glProgramUniform1iEXT __rglgen_glProgramUniform1iEXT +#define glProgramUniform1ivEXT __rglgen_glProgramUniform1ivEXT +#define glProgramUniform2fEXT __rglgen_glProgramUniform2fEXT +#define glProgramUniform2fvEXT __rglgen_glProgramUniform2fvEXT +#define glProgramUniform2iEXT __rglgen_glProgramUniform2iEXT +#define glProgramUniform2ivEXT __rglgen_glProgramUniform2ivEXT +#define glProgramUniform3fEXT __rglgen_glProgramUniform3fEXT +#define glProgramUniform3fvEXT __rglgen_glProgramUniform3fvEXT +#define glProgramUniform3iEXT __rglgen_glProgramUniform3iEXT +#define glProgramUniform3ivEXT __rglgen_glProgramUniform3ivEXT +#define glProgramUniform4fEXT __rglgen_glProgramUniform4fEXT +#define glProgramUniform4fvEXT __rglgen_glProgramUniform4fvEXT +#define glProgramUniform4iEXT __rglgen_glProgramUniform4iEXT +#define glProgramUniform4ivEXT __rglgen_glProgramUniform4ivEXT +#define glProgramUniformMatrix2fvEXT __rglgen_glProgramUniformMatrix2fvEXT +#define glProgramUniformMatrix3fvEXT __rglgen_glProgramUniformMatrix3fvEXT +#define glProgramUniformMatrix4fvEXT __rglgen_glProgramUniformMatrix4fvEXT +#define glUseProgramStagesEXT __rglgen_glUseProgramStagesEXT +#define glValidateProgramPipelineEXT __rglgen_glValidateProgramPipelineEXT +#define glProgramUniform1uiEXT __rglgen_glProgramUniform1uiEXT +#define glProgramUniform2uiEXT __rglgen_glProgramUniform2uiEXT +#define glProgramUniform3uiEXT __rglgen_glProgramUniform3uiEXT +#define glProgramUniform4uiEXT __rglgen_glProgramUniform4uiEXT +#define glProgramUniform1uivEXT __rglgen_glProgramUniform1uivEXT +#define glProgramUniform2uivEXT __rglgen_glProgramUniform2uivEXT +#define glProgramUniform3uivEXT __rglgen_glProgramUniform3uivEXT +#define glProgramUniform4uivEXT __rglgen_glProgramUniform4uivEXT +#define glProgramUniformMatrix2x3fvEXT __rglgen_glProgramUniformMatrix2x3fvEXT +#define glProgramUniformMatrix3x2fvEXT __rglgen_glProgramUniformMatrix3x2fvEXT +#define glProgramUniformMatrix2x4fvEXT __rglgen_glProgramUniformMatrix2x4fvEXT +#define glProgramUniformMatrix4x2fvEXT __rglgen_glProgramUniformMatrix4x2fvEXT +#define glProgramUniformMatrix3x4fvEXT __rglgen_glProgramUniformMatrix3x4fvEXT +#define glProgramUniformMatrix4x3fvEXT __rglgen_glProgramUniformMatrix4x3fvEXT +#define glFramebufferPixelLocalStorageSizeEXT __rglgen_glFramebufferPixelLocalStorageSizeEXT +#define glGetFramebufferPixelLocalStorageSizeEXT __rglgen_glGetFramebufferPixelLocalStorageSizeEXT +#define glClearPixelLocalStorageuiEXT __rglgen_glClearPixelLocalStorageuiEXT +#define glTexPageCommitmentEXT __rglgen_glTexPageCommitmentEXT +#define glPatchParameteriEXT __rglgen_glPatchParameteriEXT +#define glTexParameterIivEXT __rglgen_glTexParameterIivEXT +#define glTexParameterIuivEXT __rglgen_glTexParameterIuivEXT +#define glGetTexParameterIivEXT __rglgen_glGetTexParameterIivEXT +#define glGetTexParameterIuivEXT __rglgen_glGetTexParameterIuivEXT +#define glSamplerParameterIivEXT __rglgen_glSamplerParameterIivEXT +#define glSamplerParameterIuivEXT __rglgen_glSamplerParameterIuivEXT +#define glGetSamplerParameterIivEXT __rglgen_glGetSamplerParameterIivEXT +#define glGetSamplerParameterIuivEXT __rglgen_glGetSamplerParameterIuivEXT +#define glTexBufferEXT __rglgen_glTexBufferEXT +#define glTexBufferRangeEXT __rglgen_glTexBufferRangeEXT +#define glTexStorage1DEXT __rglgen_glTexStorage1DEXT +#define glTexStorage2DEXT __rglgen_glTexStorage2DEXT +#define glTexStorage3DEXT __rglgen_glTexStorage3DEXT +#define glTextureStorage1DEXT __rglgen_glTextureStorage1DEXT +#define glTextureStorage2DEXT __rglgen_glTextureStorage2DEXT +#define glTextureStorage3DEXT __rglgen_glTextureStorage3DEXT +#define glTextureViewEXT __rglgen_glTextureViewEXT +#define glesEXT __rglgen_glesEXT +#define glFramebufferTextureMultiviewOVR __rglgen_glFramebufferTextureMultiviewOVR +#define glFramebufferTextureMultisampleMultiviewOVR __rglgen_glFramebufferTextureMultisampleMultiviewOVR + +extern RGLSYMGLBLENDBARRIERKHRPROC __rglgen_glBlendBarrierKHR; +extern RGLSYMGLDEBUGMESSAGECONTROLKHRPROC __rglgen_glDebugMessageControlKHR; +extern RGLSYMGLDEBUGMESSAGEINSERTKHRPROC __rglgen_glDebugMessageInsertKHR; +extern RGLSYMGLDEBUGMESSAGECALLBACKKHRPROC __rglgen_glDebugMessageCallbackKHR; +extern RGLSYMGLGETDEBUGMESSAGELOGKHRPROC __rglgen_glGetDebugMessageLogKHR; +extern RGLSYMGLPUSHDEBUGGROUPKHRPROC __rglgen_glPushDebugGroupKHR; +extern RGLSYMGLPOPDEBUGGROUPKHRPROC __rglgen_glPopDebugGroupKHR; +extern RGLSYMGLOBJECTLABELKHRPROC __rglgen_glObjectLabelKHR; +extern RGLSYMGLGETOBJECTLABELKHRPROC __rglgen_glGetObjectLabelKHR; +extern RGLSYMGLOBJECTPTRLABELKHRPROC __rglgen_glObjectPtrLabelKHR; +extern RGLSYMGLGETOBJECTPTRLABELKHRPROC __rglgen_glGetObjectPtrLabelKHR; +extern RGLSYMGLGETPOINTERVKHRPROC __rglgen_glGetPointervKHR; +extern RGLSYMGLGETGRAPHICSRESETSTATUSKHRPROC __rglgen_glGetGraphicsResetStatusKHR; +extern RGLSYMGLREADNPIXELSKHRPROC __rglgen_glReadnPixelsKHR; +extern RGLSYMGLGETNUNIFORMFVKHRPROC __rglgen_glGetnUniformfvKHR; +extern RGLSYMGLGETNUNIFORMIVKHRPROC __rglgen_glGetnUniformivKHR; +extern RGLSYMGLGETNUNIFORMUIVKHRPROC __rglgen_glGetnUniformuivKHR; +extern RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC __rglgen_glEGLImageTargetTexture2DOES; +extern RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __rglgen_glEGLImageTargetRenderbufferStorageOES; +extern RGLSYMGLCOPYIMAGESUBDATAOESPROC __rglgen_glCopyImageSubDataOES; +extern RGLSYMGLENABLEIOESPROC __rglgen_glEnableiOES; +extern RGLSYMGLDISABLEIOESPROC __rglgen_glDisableiOES; +extern RGLSYMGLBLENDEQUATIONIOESPROC __rglgen_glBlendEquationiOES; +extern RGLSYMGLBLENDEQUATIONSEPARATEIOESPROC __rglgen_glBlendEquationSeparateiOES; +extern RGLSYMGLBLENDFUNCIOESPROC __rglgen_glBlendFunciOES; +extern RGLSYMGLBLENDFUNCSEPARATEIOESPROC __rglgen_glBlendFuncSeparateiOES; +extern RGLSYMGLCOLORMASKIOESPROC __rglgen_glColorMaskiOES; +extern RGLSYMGLISENABLEDIOESPROC __rglgen_glIsEnablediOES; +extern RGLSYMGLDRAWELEMENTSBASEVERTEXOESPROC __rglgen_glDrawElementsBaseVertexOES; +extern RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXOESPROC __rglgen_glDrawRangeElementsBaseVertexOES; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC __rglgen_glDrawElementsInstancedBaseVertexOES; +extern RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXOESPROC __rglgen_glMultiDrawElementsBaseVertexOES; +extern RGLSYMGLFRAMEBUFFERTEXTUREOESPROC __rglgen_glFramebufferTextureOES; +extern RGLSYMGLGETPROGRAMBINARYOESPROC __rglgen_glGetProgramBinaryOES; +extern RGLSYMGLPROGRAMBINARYOESPROC __rglgen_glProgramBinaryOES; +extern RGLSYMGLMAPBUFFEROESPROC __rglgen_glMapBufferOES; +extern RGLSYMGLUNMAPBUFFEROESPROC __rglgen_glUnmapBufferOES; +extern RGLSYMGLGETBUFFERPOINTERVOESPROC __rglgen_glGetBufferPointervOES; +extern RGLSYMGLPRIMITIVEBOUNDINGBOXOESPROC __rglgen_glPrimitiveBoundingBoxOES; +extern RGLSYMGLMINSAMPLESHADINGOESPROC __rglgen_glMinSampleShadingOES; +extern RGLSYMGLPATCHPARAMETERIOESPROC __rglgen_glPatchParameteriOES; +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 RGLSYMGLTEXPARAMETERIIVOESPROC __rglgen_glTexParameterIivOES; +extern RGLSYMGLTEXPARAMETERIUIVOESPROC __rglgen_glTexParameterIuivOES; +extern RGLSYMGLGETTEXPARAMETERIIVOESPROC __rglgen_glGetTexParameterIivOES; +extern RGLSYMGLGETTEXPARAMETERIUIVOESPROC __rglgen_glGetTexParameterIuivOES; +extern RGLSYMGLSAMPLERPARAMETERIIVOESPROC __rglgen_glSamplerParameterIivOES; +extern RGLSYMGLSAMPLERPARAMETERIUIVOESPROC __rglgen_glSamplerParameterIuivOES; +extern RGLSYMGLGETSAMPLERPARAMETERIIVOESPROC __rglgen_glGetSamplerParameterIivOES; +extern RGLSYMGLGETSAMPLERPARAMETERIUIVOESPROC __rglgen_glGetSamplerParameterIuivOES; +extern RGLSYMGLTEXBUFFEROESPROC __rglgen_glTexBufferOES; +extern RGLSYMGLTEXBUFFERRANGEOESPROC __rglgen_glTexBufferRangeOES; +extern RGLSYMGLTEXSTORAGE3DMULTISAMPLEOESPROC __rglgen_glTexStorage3DMultisampleOES; +extern RGLSYMGLTEXTUREVIEWOESPROC __rglgen_glTextureViewOES; +extern RGLSYMGLBINDVERTEXARRAYOESPROC __rglgen_glBindVertexArrayOES; +extern RGLSYMGLDELETEVERTEXARRAYSOESPROC __rglgen_glDeleteVertexArraysOES; +extern RGLSYMGLGENVERTEXARRAYSOESPROC __rglgen_glGenVertexArraysOES; +extern RGLSYMGLISVERTEXARRAYOESPROC __rglgen_glIsVertexArrayOES; +extern RGLSYMGLVIEWPORTARRAYVOESPROC __rglgen_glViewportArrayvOES; +extern RGLSYMGLVIEWPORTINDEXEDFOESPROC __rglgen_glViewportIndexedfOES; +extern RGLSYMGLVIEWPORTINDEXEDFVOESPROC __rglgen_glViewportIndexedfvOES; +extern RGLSYMGLSCISSORARRAYVOESPROC __rglgen_glScissorArrayvOES; +extern RGLSYMGLSCISSORINDEXEDOESPROC __rglgen_glScissorIndexedOES; +extern RGLSYMGLSCISSORINDEXEDVOESPROC __rglgen_glScissorIndexedvOES; +extern RGLSYMGLDEPTHRANGEARRAYFVOESPROC __rglgen_glDepthRangeArrayfvOES; +extern RGLSYMGLDEPTHRANGEINDEXEDFOESPROC __rglgen_glDepthRangeIndexedfOES; +extern RGLSYMGLGETFLOATI_VOESPROC __rglgen_glGetFloati_vOES; +extern RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC __rglgen_glDrawArraysInstancedBaseInstanceEXT; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC __rglgen_glDrawElementsInstancedBaseInstanceEXT; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC __rglgen_glDrawElementsInstancedBaseVertexBaseInstanceEXT; +extern RGLSYMGLBINDFRAGDATALOCATIONINDEXEDEXTPROC __rglgen_glBindFragDataLocationIndexedEXT; +extern RGLSYMGLBINDFRAGDATALOCATIONEXTPROC __rglgen_glBindFragDataLocationEXT; +extern RGLSYMGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC __rglgen_glGetProgramResourceLocationIndexEXT; +extern RGLSYMGLGETFRAGDATAINDEXEXTPROC __rglgen_glGetFragDataIndexEXT; +extern RGLSYMGLBUFFERSTORAGEEXTPROC __rglgen_glBufferStorageEXT; +extern RGLSYMGLCLEARTEXIMAGEEXTPROC __rglgen_glClearTexImageEXT; +extern RGLSYMGLCLEARTEXSUBIMAGEEXTPROC __rglgen_glClearTexSubImageEXT; +extern RGLSYMGLCOPYIMAGESUBDATAEXTPROC __rglgen_glCopyImageSubDataEXT; +extern RGLSYMGLLABELOBJECTEXTPROC __rglgen_glLabelObjectEXT; +extern RGLSYMGLGETOBJECTLABELEXTPROC __rglgen_glGetObjectLabelEXT; +extern RGLSYMGLINSERTEVENTMARKEREXTPROC __rglgen_glInsertEventMarkerEXT; +extern RGLSYMGLPUSHGROUPMARKEREXTPROC __rglgen_glPushGroupMarkerEXT; +extern RGLSYMGLPOPGROUPMARKEREXTPROC __rglgen_glPopGroupMarkerEXT; +extern RGLSYMGLDISCARDFRAMEBUFFEREXTPROC __rglgen_glDiscardFramebufferEXT; +extern RGLSYMGLGENQUERIESEXTPROC __rglgen_glGenQueriesEXT; +extern RGLSYMGLDELETEQUERIESEXTPROC __rglgen_glDeleteQueriesEXT; +extern RGLSYMGLISQUERYEXTPROC __rglgen_glIsQueryEXT; +extern RGLSYMGLBEGINQUERYEXTPROC __rglgen_glBeginQueryEXT; +extern RGLSYMGLENDQUERYEXTPROC __rglgen_glEndQueryEXT; +extern RGLSYMGLQUERYCOUNTEREXTPROC __rglgen_glQueryCounterEXT; +extern RGLSYMGLGETQUERYIVEXTPROC __rglgen_glGetQueryivEXT; +extern RGLSYMGLGETQUERYOBJECTIVEXTPROC __rglgen_glGetQueryObjectivEXT; +extern RGLSYMGLGETQUERYOBJECTUIVEXTPROC __rglgen_glGetQueryObjectuivEXT; +extern RGLSYMGLGETQUERYOBJECTI64VEXTPROC __rglgen_glGetQueryObjecti64vEXT; +extern RGLSYMGLGETQUERYOBJECTUI64VEXTPROC __rglgen_glGetQueryObjectui64vEXT; +extern RGLSYMGLDRAWBUFFERSEXTPROC __rglgen_glDrawBuffersEXT; +extern RGLSYMGLENABLEIEXTPROC __rglgen_glEnableiEXT; +extern RGLSYMGLDISABLEIEXTPROC __rglgen_glDisableiEXT; +extern RGLSYMGLBLENDEQUATIONIEXTPROC __rglgen_glBlendEquationiEXT; +extern RGLSYMGLBLENDEQUATIONSEPARATEIEXTPROC __rglgen_glBlendEquationSeparateiEXT; +extern RGLSYMGLBLENDFUNCIEXTPROC __rglgen_glBlendFunciEXT; +extern RGLSYMGLBLENDFUNCSEPARATEIEXTPROC __rglgen_glBlendFuncSeparateiEXT; +extern RGLSYMGLCOLORMASKIEXTPROC __rglgen_glColorMaskiEXT; +extern RGLSYMGLISENABLEDIEXTPROC __rglgen_glIsEnablediEXT; +extern RGLSYMGLDRAWELEMENTSBASEVERTEXEXTPROC __rglgen_glDrawElementsBaseVertexEXT; +extern RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC __rglgen_glDrawRangeElementsBaseVertexEXT; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC __rglgen_glDrawElementsInstancedBaseVertexEXT; +extern RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC __rglgen_glMultiDrawElementsBaseVertexEXT; +extern RGLSYMGLDRAWARRAYSINSTANCEDEXTPROC __rglgen_glDrawArraysInstancedEXT; +extern RGLSYMGLDRAWELEMENTSINSTANCEDEXTPROC __rglgen_glDrawElementsInstancedEXT; +extern RGLSYMGLFRAMEBUFFERTEXTUREEXTPROC __rglgen_glFramebufferTextureEXT; +extern RGLSYMGLVERTEXATTRIBDIVISOREXTPROC __rglgen_glVertexAttribDivisorEXT; +extern RGLSYMGLMAPBUFFERRANGEEXTPROC __rglgen_glMapBufferRangeEXT; +extern RGLSYMGLFLUSHMAPPEDBUFFERRANGEEXTPROC __rglgen_glFlushMappedBufferRangeEXT; +extern RGLSYMGLMULTIDRAWARRAYSEXTPROC __rglgen_glMultiDrawArraysEXT; +extern RGLSYMGLMULTIDRAWELEMENTSEXTPROC __rglgen_glMultiDrawElementsEXT; +extern RGLSYMGLMULTIDRAWARRAYSINDIRECTEXTPROC __rglgen_glMultiDrawArraysIndirectEXT; +extern RGLSYMGLMULTIDRAWELEMENTSINDIRECTEXTPROC __rglgen_glMultiDrawElementsIndirectEXT; +extern RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __rglgen_glRenderbufferStorageMultisampleEXT; +extern RGLSYMGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC __rglgen_glFramebufferTexture2DMultisampleEXT; +extern RGLSYMGLREADBUFFERINDEXEDEXTPROC __rglgen_glReadBufferIndexedEXT; +extern RGLSYMGLDRAWBUFFERSINDEXEDEXTPROC __rglgen_glDrawBuffersIndexedEXT; +extern RGLSYMGLGETINTEGERI_VEXTPROC __rglgen_glGetIntegeri_vEXT; +extern RGLSYMGLPOLYGONOFFSETCLAMPEXTPROC __rglgen_glPolygonOffsetClampEXT; +extern RGLSYMGLPRIMITIVEBOUNDINGBOXEXTPROC __rglgen_glPrimitiveBoundingBoxEXT; +extern RGLSYMGLRASTERSAMPLESEXTPROC __rglgen_glRasterSamplesEXT; +extern RGLSYMGLGETGRAPHICSRESETSTATUSEXTPROC __rglgen_glGetGraphicsResetStatusEXT; +extern RGLSYMGLREADNPIXELSEXTPROC __rglgen_glReadnPixelsEXT; +extern RGLSYMGLGETNUNIFORMFVEXTPROC __rglgen_glGetnUniformfvEXT; +extern RGLSYMGLGETNUNIFORMIVEXTPROC __rglgen_glGetnUniformivEXT; +extern RGLSYMGLACTIVESHADERPROGRAMEXTPROC __rglgen_glActiveShaderProgramEXT; +extern RGLSYMGLBINDPROGRAMPIPELINEEXTPROC __rglgen_glBindProgramPipelineEXT; +extern RGLSYMGLCREATESHADERPROGRAMVEXTPROC __rglgen_glCreateShaderProgramvEXT; +extern RGLSYMGLDELETEPROGRAMPIPELINESEXTPROC __rglgen_glDeleteProgramPipelinesEXT; +extern RGLSYMGLGENPROGRAMPIPELINESEXTPROC __rglgen_glGenProgramPipelinesEXT; +extern RGLSYMGLGETPROGRAMPIPELINEINFOLOGEXTPROC __rglgen_glGetProgramPipelineInfoLogEXT; +extern RGLSYMGLGETPROGRAMPIPELINEIVEXTPROC __rglgen_glGetProgramPipelineivEXT; +extern RGLSYMGLISPROGRAMPIPELINEEXTPROC __rglgen_glIsProgramPipelineEXT; +extern RGLSYMGLPROGRAMPARAMETERIEXTPROC __rglgen_glProgramParameteriEXT; +extern RGLSYMGLPROGRAMUNIFORM1FEXTPROC __rglgen_glProgramUniform1fEXT; +extern RGLSYMGLPROGRAMUNIFORM1FVEXTPROC __rglgen_glProgramUniform1fvEXT; +extern RGLSYMGLPROGRAMUNIFORM1IEXTPROC __rglgen_glProgramUniform1iEXT; +extern RGLSYMGLPROGRAMUNIFORM1IVEXTPROC __rglgen_glProgramUniform1ivEXT; +extern RGLSYMGLPROGRAMUNIFORM2FEXTPROC __rglgen_glProgramUniform2fEXT; +extern RGLSYMGLPROGRAMUNIFORM2FVEXTPROC __rglgen_glProgramUniform2fvEXT; +extern RGLSYMGLPROGRAMUNIFORM2IEXTPROC __rglgen_glProgramUniform2iEXT; +extern RGLSYMGLPROGRAMUNIFORM2IVEXTPROC __rglgen_glProgramUniform2ivEXT; +extern RGLSYMGLPROGRAMUNIFORM3FEXTPROC __rglgen_glProgramUniform3fEXT; +extern RGLSYMGLPROGRAMUNIFORM3FVEXTPROC __rglgen_glProgramUniform3fvEXT; +extern RGLSYMGLPROGRAMUNIFORM3IEXTPROC __rglgen_glProgramUniform3iEXT; +extern RGLSYMGLPROGRAMUNIFORM3IVEXTPROC __rglgen_glProgramUniform3ivEXT; +extern RGLSYMGLPROGRAMUNIFORM4FEXTPROC __rglgen_glProgramUniform4fEXT; +extern RGLSYMGLPROGRAMUNIFORM4FVEXTPROC __rglgen_glProgramUniform4fvEXT; +extern RGLSYMGLPROGRAMUNIFORM4IEXTPROC __rglgen_glProgramUniform4iEXT; +extern RGLSYMGLPROGRAMUNIFORM4IVEXTPROC __rglgen_glProgramUniform4ivEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2FVEXTPROC __rglgen_glProgramUniformMatrix2fvEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3FVEXTPROC __rglgen_glProgramUniformMatrix3fvEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4FVEXTPROC __rglgen_glProgramUniformMatrix4fvEXT; +extern RGLSYMGLUSEPROGRAMSTAGESEXTPROC __rglgen_glUseProgramStagesEXT; +extern RGLSYMGLVALIDATEPROGRAMPIPELINEEXTPROC __rglgen_glValidateProgramPipelineEXT; +extern RGLSYMGLPROGRAMUNIFORM1UIEXTPROC __rglgen_glProgramUniform1uiEXT; +extern RGLSYMGLPROGRAMUNIFORM2UIEXTPROC __rglgen_glProgramUniform2uiEXT; +extern RGLSYMGLPROGRAMUNIFORM3UIEXTPROC __rglgen_glProgramUniform3uiEXT; +extern RGLSYMGLPROGRAMUNIFORM4UIEXTPROC __rglgen_glProgramUniform4uiEXT; +extern RGLSYMGLPROGRAMUNIFORM1UIVEXTPROC __rglgen_glProgramUniform1uivEXT; +extern RGLSYMGLPROGRAMUNIFORM2UIVEXTPROC __rglgen_glProgramUniform2uivEXT; +extern RGLSYMGLPROGRAMUNIFORM3UIVEXTPROC __rglgen_glProgramUniform3uivEXT; +extern RGLSYMGLPROGRAMUNIFORM4UIVEXTPROC __rglgen_glProgramUniform4uivEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __rglgen_glProgramUniformMatrix2x3fvEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __rglgen_glProgramUniformMatrix3x2fvEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __rglgen_glProgramUniformMatrix2x4fvEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __rglgen_glProgramUniformMatrix4x2fvEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __rglgen_glProgramUniformMatrix3x4fvEXT; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __rglgen_glProgramUniformMatrix4x3fvEXT; +extern RGLSYMGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __rglgen_glFramebufferPixelLocalStorageSizeEXT; +extern RGLSYMGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __rglgen_glGetFramebufferPixelLocalStorageSizeEXT; +extern RGLSYMGLCLEARPIXELLOCALSTORAGEUIEXTPROC __rglgen_glClearPixelLocalStorageuiEXT; +extern RGLSYMGLTEXPAGECOMMITMENTEXTPROC __rglgen_glTexPageCommitmentEXT; +extern RGLSYMGLPATCHPARAMETERIEXTPROC __rglgen_glPatchParameteriEXT; +extern RGLSYMGLTEXPARAMETERIIVEXTPROC __rglgen_glTexParameterIivEXT; +extern RGLSYMGLTEXPARAMETERIUIVEXTPROC __rglgen_glTexParameterIuivEXT; +extern RGLSYMGLGETTEXPARAMETERIIVEXTPROC __rglgen_glGetTexParameterIivEXT; +extern RGLSYMGLGETTEXPARAMETERIUIVEXTPROC __rglgen_glGetTexParameterIuivEXT; +extern RGLSYMGLSAMPLERPARAMETERIIVEXTPROC __rglgen_glSamplerParameterIivEXT; +extern RGLSYMGLSAMPLERPARAMETERIUIVEXTPROC __rglgen_glSamplerParameterIuivEXT; +extern RGLSYMGLGETSAMPLERPARAMETERIIVEXTPROC __rglgen_glGetSamplerParameterIivEXT; +extern RGLSYMGLGETSAMPLERPARAMETERIUIVEXTPROC __rglgen_glGetSamplerParameterIuivEXT; +extern RGLSYMGLTEXBUFFEREXTPROC __rglgen_glTexBufferEXT; +extern RGLSYMGLTEXBUFFERRANGEEXTPROC __rglgen_glTexBufferRangeEXT; +extern RGLSYMGLTEXSTORAGE1DEXTPROC __rglgen_glTexStorage1DEXT; +extern RGLSYMGLTEXSTORAGE2DEXTPROC __rglgen_glTexStorage2DEXT; +extern RGLSYMGLTEXSTORAGE3DEXTPROC __rglgen_glTexStorage3DEXT; +extern RGLSYMGLTEXTURESTORAGE1DEXTPROC __rglgen_glTextureStorage1DEXT; +extern RGLSYMGLTEXTURESTORAGE2DEXTPROC __rglgen_glTextureStorage2DEXT; +extern RGLSYMGLTEXTURESTORAGE3DEXTPROC __rglgen_glTextureStorage3DEXT; +extern RGLSYMGLTEXTUREVIEWEXTPROC __rglgen_glTextureViewEXT; +extern RGLSYMGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC __rglgen_glFramebufferTextureMultiviewOVR; +extern RGLSYMGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC __rglgen_glFramebufferTextureMultisampleMultiviewOVR; + +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/src/platform/libretro/libretro-common/include/glsym/glsym_gl.h b/src/platform/libretro/libretro-common/include/glsym/glsym_gl.h new file mode 100644 index 00000000..1934287f --- /dev/null +++ b/src/platform/libretro/libretro-common/include/glsym/glsym_gl.h @@ -0,0 +1,3140 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this libretro SDK code part (glsym). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef 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*); +typedef void (GL_APIENTRY *RGLGENGLDEBUGPROCKHR)(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 +#if defined(__MACH__) && !defined(OS_TARGET_IPHONE) && !defined(MAC_OS_X_VERSION_10_7) +typedef long long int GLint64; +typedef unsigned long long int GLuint64; +typedef unsigned long long int GLuint64EXT; +typedef struct __GLsync *GLsync; +#endif +typedef void (APIENTRYP RGLSYMGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +typedef void (APIENTRYP RGLSYMGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *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 void *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 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 void *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *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 void *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP RGLSYMGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *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 void *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 void *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 void *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 RGLSYMGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONPROC) (GLenum mode); +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 void *data, GLenum usage); +typedef void (APIENTRYP RGLSYMGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +typedef void (APIENTRYP RGLSYMGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void *data); +typedef void *(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, void **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 *shaders); +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, void **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 void *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 void *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 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 RGLSYMGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (APIENTRYP RGLSYMGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +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 RGLSYMGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); +typedef void (APIENTRYP RGLSYMGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP RGLSYMGLPRIMITIVERESTARTINDEXPROC) (GLuint index); +typedef void (APIENTRYP RGLSYMGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +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 RGLSYMGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (APIENTRYP RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (APIENTRYP RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *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 *data); +typedef void (APIENTRYP RGLSYMGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +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 RGLSYMGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP RGLSYMGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum 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 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 RGLSYMGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); +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 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 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 RGLSYMGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *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 void *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, void *binary); +typedef void (APIENTRYP RGLSYMGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *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 void *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 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 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 RGLSYMGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount); +typedef void (APIENTRYP RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); +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 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 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 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 RGLSYMGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (APIENTRYP RGLSYMGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP RGLSYMGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP RGLSYMGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers); +typedef void (APIENTRYP RGLSYMGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); +typedef void (APIENTRYP RGLSYMGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures); +typedef void (APIENTRYP RGLSYMGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers); +typedef void (APIENTRYP RGLSYMGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures); +typedef void (APIENTRYP RGLSYMGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); +typedef GLuint64 (APIENTRYP RGLSYMGLGETTEXTUREHANDLEARBPROC) (GLuint texture); +typedef GLuint64 (APIENTRYP RGLSYMGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler); +typedef void (APIENTRYP RGLSYMGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef void (APIENTRYP RGLSYMGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle); +typedef GLuint64 (APIENTRYP RGLSYMGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef void (APIENTRYP RGLSYMGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access); +typedef void (APIENTRYP RGLSYMGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle); +typedef void (APIENTRYP RGLSYMGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value); +typedef void (APIENTRYP RGLSYMGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +typedef GLboolean (APIENTRYP RGLSYMGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef GLboolean (APIENTRYP RGLSYMGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT *params); +#ifdef __APPLE__ + struct _cl_context; + struct _cl_event; +#endif +typedef GLsync (APIENTRYP RGLSYMGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context *context, struct _cl_event *event, GLbitfield flags); +typedef void (APIENTRYP RGLSYMGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); +typedef void (APIENTRYP RGLSYMGLDISPATCHCOMPUTEGROUPSIZEARBPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z); +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 void *userParam); +typedef GLuint (APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (APIENTRYP RGLSYMGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs); +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 RGLSYMGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +typedef void (APIENTRYP RGLSYMGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void *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, void *string); +typedef GLboolean (APIENTRYP RGLSYMGLISPROGRAMARBPROC) (GLuint program); +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 RGLSYMGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *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, void *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 void *image); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *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, void *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, void *row, void *column, void *span); +typedef void (APIENTRYP RGLSYMGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +typedef void (APIENTRYP RGLSYMGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *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, void *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 RGLSYMGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP RGLSYMGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); +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 void *pointer); +typedef void (APIENTRYP RGLSYMGLSAMPLECOVERAGEARBPROC) (GLfloat value, GLboolean invert); +typedef void (APIENTRYP RGLSYMGLACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP RGLSYMGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP 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 RGLSYMGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); +typedef GLenum (APIENTRYP RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC) (void); +typedef void (APIENTRYP RGLSYMGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img); +typedef void (APIENTRYP RGLSYMGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (APIENTRYP RGLSYMGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void *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 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, void *table); +typedef void (APIENTRYP RGLSYMGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); +typedef void (APIENTRYP RGLSYMGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); +typedef void (APIENTRYP RGLSYMGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +typedef void (APIENTRYP RGLSYMGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +typedef void (APIENTRYP RGLSYMGLMINSAMPLESHADINGARBPROC) (GLfloat value); +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 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 *const*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 RGLSYMGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident); +typedef void (APIENTRYP RGLSYMGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *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 void *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP RGLSYMGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img); +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 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 void *pointer); +typedef void (APIENTRYP RGLSYMGLVERTEXBLENDARBPROC) (GLint count); +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 void *data, GLenum usage); +typedef void (APIENTRYP RGLSYMGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data); +typedef void (APIENTRYP RGLSYMGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data); +typedef void *(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, void **params); +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 void *pointer); +typedef void (APIENTRYP RGLSYMGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (APIENTRYP RGLSYMGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +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, void **pointer); +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 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 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 RGLSYMGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref); +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 RGLSYMGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP RGLSYMGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f); +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 RGLSYMGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +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 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 RGLSYMGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP RGLSYMGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz); +typedef void (APIENTRYP RGLSYMGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +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 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 RGLSYMGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLTEXENVXVOESPROC) (GLenum target, 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 RGLSYMGLACCUMXOESPROC) (GLenum op, GLfixed value); +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 RGLSYMGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue); +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 RGLSYMGLEVALCOORD1XOESPROC) (GLfixed u); +typedef void (APIENTRYP RGLSYMGLEVALCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v); +typedef void (APIENTRYP RGLSYMGLEVALCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer); +typedef void (APIENTRYP RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, 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 RGLSYMGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLINDEXXOESPROC) (GLfixed component); +typedef void (APIENTRYP RGLSYMGLINDEXXVOESPROC) (const GLfixed *component); +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 RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLNORMAL3XVOESPROC) (const GLfixed *coords); +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 RGLSYMGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w); +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 RGLSYMGLTEXCOORD1XOESPROC) (GLfixed s); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLVERTEX2XOESPROC) (GLfixed x); +typedef void (APIENTRYP RGLSYMGLVERTEX2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX3XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP RGLSYMGLVERTEX3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLVERTEX4XVOESPROC) (const GLfixed *coords); +typedef GLbitfield (APIENTRYP RGLSYMGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent); +typedef void (APIENTRYP RGLSYMGLCLEARDEPTHFOESPROC) (GLclampf depth); +typedef void (APIENTRYP RGLSYMGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation); +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 RGLSYMGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation); +typedef void (APIENTRYP RGLSYMGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +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 glDrawRangeElements __rglgen_glDrawRangeElements +#define glTexImage3D __rglgen_glTexImage3D +#define glTexSubImage3D __rglgen_glTexSubImage3D +#define glCopyTexSubImage3D __rglgen_glCopyTexSubImage3D +#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 glBlendColor __rglgen_glBlendColor +#define glBlendEquation __rglgen_glBlendEquation +#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 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 glMapBufferRange __rglgen_glMapBufferRange +#define glFlushMappedBufferRange __rglgen_glFlushMappedBufferRange +#define glBindVertexArray __rglgen_glBindVertexArray +#define glDeleteVertexArrays __rglgen_glDeleteVertexArrays +#define glGenVertexArrays __rglgen_glGenVertexArrays +#define glIsVertexArray __rglgen_glIsVertexArray +#define glDrawArraysInstanced __rglgen_glDrawArraysInstanced +#define glDrawElementsInstanced __rglgen_glDrawElementsInstanced +#define glTexBuffer __rglgen_glTexBuffer +#define glPrimitiveRestartIndex __rglgen_glPrimitiveRestartIndex +#define glCopyBufferSubData __rglgen_glCopyBufferSubData +#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 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 glGetInteger64i_v __rglgen_glGetInteger64i_v +#define glGetBufferParameteri64v __rglgen_glGetBufferParameteri64v +#define glFramebufferTexture __rglgen_glFramebufferTexture +#define glTexImage2DMultisample __rglgen_glTexImage2DMultisample +#define glTexImage3DMultisample __rglgen_glTexImage3DMultisample +#define glGetMultisamplefv __rglgen_glGetMultisamplefv +#define glSampleMaski __rglgen_glSampleMaski +#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 glVertexAttribDivisor __rglgen_glVertexAttribDivisor +#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 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 glMinSampleShading __rglgen_glMinSampleShading +#define glBlendEquationi __rglgen_glBlendEquationi +#define glBlendEquationSeparatei __rglgen_glBlendEquationSeparatei +#define glBlendFunci __rglgen_glBlendFunci +#define glBlendFuncSeparatei __rglgen_glBlendFuncSeparatei +#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 glDrawArraysInstancedBaseInstance __rglgen_glDrawArraysInstancedBaseInstance +#define glDrawElementsInstancedBaseInstance __rglgen_glDrawElementsInstancedBaseInstance +#define glDrawElementsInstancedBaseVertexBaseInstance __rglgen_glDrawElementsInstancedBaseVertexBaseInstance +#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 glDrawTransformFeedbackInstanced __rglgen_glDrawTransformFeedbackInstanced +#define glDrawTransformFeedbackStreamInstanced __rglgen_glDrawTransformFeedbackStreamInstanced +#define glClearBufferData __rglgen_glClearBufferData +#define glClearBufferSubData __rglgen_glClearBufferSubData +#define glDispatchCompute __rglgen_glDispatchCompute +#define glDispatchComputeIndirect __rglgen_glDispatchComputeIndirect +#define glCopyImageSubData __rglgen_glCopyImageSubData +#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 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 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 glBufferStorage __rglgen_glBufferStorage +#define glClearTexImage __rglgen_glClearTexImage +#define glClearTexSubImage __rglgen_glClearTexSubImage +#define glBindBuffersBase __rglgen_glBindBuffersBase +#define glBindBuffersRange __rglgen_glBindBuffersRange +#define glBindTextures __rglgen_glBindTextures +#define glBindSamplers __rglgen_glBindSamplers +#define glBindImageTextures __rglgen_glBindImageTextures +#define glBindVertexBuffers __rglgen_glBindVertexBuffers +#define glGetTextureHandleARB __rglgen_glGetTextureHandleARB +#define glGetTextureSamplerHandleARB __rglgen_glGetTextureSamplerHandleARB +#define glMakeTextureHandleResidentARB __rglgen_glMakeTextureHandleResidentARB +#define glMakeTextureHandleNonResidentARB __rglgen_glMakeTextureHandleNonResidentARB +#define glGetImageHandleARB __rglgen_glGetImageHandleARB +#define glMakeImageHandleResidentARB __rglgen_glMakeImageHandleResidentARB +#define glMakeImageHandleNonResidentARB __rglgen_glMakeImageHandleNonResidentARB +#define glUniformHandleui64ARB __rglgen_glUniformHandleui64ARB +#define glUniformHandleui64vARB __rglgen_glUniformHandleui64vARB +#define glProgramUniformHandleui64ARB __rglgen_glProgramUniformHandleui64ARB +#define glProgramUniformHandleui64vARB __rglgen_glProgramUniformHandleui64vARB +#define glIsTextureHandleResidentARB __rglgen_glIsTextureHandleResidentARB +#define glIsImageHandleResidentARB __rglgen_glIsImageHandleResidentARB +#define glVertexAttribL1ui64ARB __rglgen_glVertexAttribL1ui64ARB +#define glVertexAttribL1ui64vARB __rglgen_glVertexAttribL1ui64vARB +#define glGetVertexAttribLui64vARB __rglgen_glGetVertexAttribLui64vARB +#define glCreateSyncFromCLeventARB __rglgen_glCreateSyncFromCLeventARB +#define glClampColorARB __rglgen_glClampColorARB +#define glDispatchComputeGroupSizeARB __rglgen_glDispatchComputeGroupSizeARB +#define glDebugMessageControlARB __rglgen_glDebugMessageControlARB +#define glDebugMessageInsertARB __rglgen_glDebugMessageInsertARB +#define glDebugMessageCallbackARB __rglgen_glDebugMessageCallbackARB +#define glGetDebugMessageLogARB __rglgen_glGetDebugMessageLogARB +#define glDrawBuffersARB __rglgen_glDrawBuffersARB +#define glBlendEquationiARB __rglgen_glBlendEquationiARB +#define glBlendEquationSeparateiARB __rglgen_glBlendEquationSeparateiARB +#define glBlendFunciARB __rglgen_glBlendFunciARB +#define glBlendFuncSeparateiARB __rglgen_glBlendFuncSeparateiARB +#define glDrawArraysInstancedARB __rglgen_glDrawArraysInstancedARB +#define glDrawElementsInstancedARB __rglgen_glDrawElementsInstancedARB +#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 glIsProgramARB __rglgen_glIsProgramARB +#define glProgramParameteriARB __rglgen_glProgramParameteriARB +#define glFramebufferTextureARB __rglgen_glFramebufferTextureARB +#define glFramebufferTextureLayerARB __rglgen_glFramebufferTextureLayerARB +#define glFramebufferTextureFaceARB __rglgen_glFramebufferTextureFaceARB +#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 glMultiDrawArraysIndirectCountARB __rglgen_glMultiDrawArraysIndirectCountARB +#define glMultiDrawElementsIndirectCountARB __rglgen_glMultiDrawElementsIndirectCountARB +#define glVertexAttribDivisorARB __rglgen_glVertexAttribDivisorARB +#define glCurrentPaletteMatrixARB __rglgen_glCurrentPaletteMatrixARB +#define glMatrixIndexubvARB __rglgen_glMatrixIndexubvARB +#define glMatrixIndexusvARB __rglgen_glMatrixIndexusvARB +#define glMatrixIndexuivARB __rglgen_glMatrixIndexuivARB +#define glMatrixIndexPointerARB __rglgen_glMatrixIndexPointerARB +#define glSampleCoverageARB __rglgen_glSampleCoverageARB +#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 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 glPointParameterfARB __rglgen_glPointParameterfARB +#define glPointParameterfvARB __rglgen_glPointParameterfvARB +#define glGetGraphicsResetStatusARB __rglgen_glGetGraphicsResetStatusARB +#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 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 glMinSampleShadingARB __rglgen_glMinSampleShadingARB +#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 glNamedStringARB __rglgen_glNamedStringARB +#define glDeleteNamedStringARB __rglgen_glDeleteNamedStringARB +#define glCompileShaderIncludeARB __rglgen_glCompileShaderIncludeARB +#define glIsNamedStringARB __rglgen_glIsNamedStringARB +#define glGetNamedStringARB __rglgen_glGetNamedStringARB +#define glGetNamedStringivARB __rglgen_glGetNamedStringivARB +#define glTexPageCommitmentARB __rglgen_glTexPageCommitmentARB +#define glTexBufferARB __rglgen_glTexBufferARB +#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 glLoadTransposeMatrixfARB __rglgen_glLoadTransposeMatrixfARB +#define glLoadTransposeMatrixdARB __rglgen_glLoadTransposeMatrixdARB +#define glMultTransposeMatrixfARB __rglgen_glMultTransposeMatrixfARB +#define glMultTransposeMatrixdARB __rglgen_glMultTransposeMatrixdARB +#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 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 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 glGetVertexAttribdvARB __rglgen_glGetVertexAttribdvARB +#define glGetVertexAttribfvARB __rglgen_glGetVertexAttribfvARB +#define glGetVertexAttribivARB __rglgen_glGetVertexAttribivARB +#define glGetVertexAttribPointervARB __rglgen_glGetVertexAttribPointervARB +#define glBindAttribLocationARB __rglgen_glBindAttribLocationARB +#define glGetActiveAttribARB __rglgen_glGetActiveAttribARB +#define glGetAttribLocationARB __rglgen_glGetAttribLocationARB +#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 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 glAlphaFuncxOES __rglgen_glAlphaFuncxOES +#define glClearColorxOES __rglgen_glClearColorxOES +#define glClearDepthxOES __rglgen_glClearDepthxOES +#define glClipPlanexOES __rglgen_glClipPlanexOES +#define glColor4xOES __rglgen_glColor4xOES +#define glDepthRangexOES __rglgen_glDepthRangexOES +#define glFogxOES __rglgen_glFogxOES +#define glFogxvOES __rglgen_glFogxvOES +#define glFrustumxOES __rglgen_glFrustumxOES +#define glGetClipPlanexOES __rglgen_glGetClipPlanexOES +#define glGetFixedvOES __rglgen_glGetFixedvOES +#define glGetTexEnvxvOES __rglgen_glGetTexEnvxvOES +#define glGetTexParameterxvOES __rglgen_glGetTexParameterxvOES +#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 glMaterialxOES __rglgen_glMaterialxOES +#define glMaterialxvOES __rglgen_glMaterialxvOES +#define glMultMatrixxOES __rglgen_glMultMatrixxOES +#define glMultiTexCoord4xOES __rglgen_glMultiTexCoord4xOES +#define glNormal3xOES __rglgen_glNormal3xOES +#define glOrthoxOES __rglgen_glOrthoxOES +#define glPointParameterxvOES __rglgen_glPointParameterxvOES +#define glPointSizexOES __rglgen_glPointSizexOES +#define glPolygonOffsetxOES __rglgen_glPolygonOffsetxOES +#define glRotatexOES __rglgen_glRotatexOES +#define glSampleCoverageOES __rglgen_glSampleCoverageOES +#define glScalexOES __rglgen_glScalexOES +#define glTexEnvxOES __rglgen_glTexEnvxOES +#define glTexEnvxvOES __rglgen_glTexEnvxvOES +#define glTexParameterxOES __rglgen_glTexParameterxOES +#define glTexParameterxvOES __rglgen_glTexParameterxvOES +#define glTranslatexOES __rglgen_glTranslatexOES +#define glAccumxOES __rglgen_glAccumxOES +#define glBitmapxOES __rglgen_glBitmapxOES +#define glBlendColorxOES __rglgen_glBlendColorxOES +#define glClearAccumxOES __rglgen_glClearAccumxOES +#define glColor3xOES __rglgen_glColor3xOES +#define glColor3xvOES __rglgen_glColor3xvOES +#define glColor4xvOES __rglgen_glColor4xvOES +#define glConvolutionParameterxOES __rglgen_glConvolutionParameterxOES +#define glConvolutionParameterxvOES __rglgen_glConvolutionParameterxvOES +#define glEvalCoord1xOES __rglgen_glEvalCoord1xOES +#define glEvalCoord1xvOES __rglgen_glEvalCoord1xvOES +#define glEvalCoord2xOES __rglgen_glEvalCoord2xOES +#define glEvalCoord2xvOES __rglgen_glEvalCoord2xvOES +#define glFeedbackBufferxOES __rglgen_glFeedbackBufferxOES +#define glGetConvolutionParameterxvOES __rglgen_glGetConvolutionParameterxvOES +#define glGetHistogramParameterxvOES __rglgen_glGetHistogramParameterxvOES +#define glGetLightxOES __rglgen_glGetLightxOES +#define glGetMapxvOES __rglgen_glGetMapxvOES +#define glGetMaterialxOES __rglgen_glGetMaterialxOES +#define glGetPixelMapxv __rglgen_glGetPixelMapxv +#define glGetTexGenxvOES __rglgen_glGetTexGenxvOES +#define glGetTexLevelParameterxvOES __rglgen_glGetTexLevelParameterxvOES +#define glIndexxOES __rglgen_glIndexxOES +#define glIndexxvOES __rglgen_glIndexxvOES +#define glLoadTransposeMatrixxOES __rglgen_glLoadTransposeMatrixxOES +#define glMap1xOES __rglgen_glMap1xOES +#define glMap2xOES __rglgen_glMap2xOES +#define glMapGrid1xOES __rglgen_glMapGrid1xOES +#define glMapGrid2xOES __rglgen_glMapGrid2xOES +#define glMultTransposeMatrixxOES __rglgen_glMultTransposeMatrixxOES +#define glMultiTexCoord1xOES __rglgen_glMultiTexCoord1xOES +#define glMultiTexCoord1xvOES __rglgen_glMultiTexCoord1xvOES +#define glMultiTexCoord2xOES __rglgen_glMultiTexCoord2xOES +#define glMultiTexCoord2xvOES __rglgen_glMultiTexCoord2xvOES +#define glMultiTexCoord3xOES __rglgen_glMultiTexCoord3xOES +#define glMultiTexCoord3xvOES __rglgen_glMultiTexCoord3xvOES +#define glMultiTexCoord4xvOES __rglgen_glMultiTexCoord4xvOES +#define glNormal3xvOES __rglgen_glNormal3xvOES +#define glPassThroughxOES __rglgen_glPassThroughxOES +#define glPixelMapx __rglgen_glPixelMapx +#define glPixelStorex __rglgen_glPixelStorex +#define glPixelTransferxOES __rglgen_glPixelTransferxOES +#define glPixelZoomxOES __rglgen_glPixelZoomxOES +#define glPrioritizeTexturesxOES __rglgen_glPrioritizeTexturesxOES +#define glRasterPos2xOES __rglgen_glRasterPos2xOES +#define glRasterPos2xvOES __rglgen_glRasterPos2xvOES +#define glRasterPos3xOES __rglgen_glRasterPos3xOES +#define glRasterPos3xvOES __rglgen_glRasterPos3xvOES +#define glRasterPos4xOES __rglgen_glRasterPos4xOES +#define glRasterPos4xvOES __rglgen_glRasterPos4xvOES +#define glRectxOES __rglgen_glRectxOES +#define glRectxvOES __rglgen_glRectxvOES +#define glTexCoord1xOES __rglgen_glTexCoord1xOES +#define glTexCoord1xvOES __rglgen_glTexCoord1xvOES +#define glTexCoord2xOES __rglgen_glTexCoord2xOES +#define glTexCoord2xvOES __rglgen_glTexCoord2xvOES +#define glTexCoord3xOES __rglgen_glTexCoord3xOES +#define glTexCoord3xvOES __rglgen_glTexCoord3xvOES +#define glTexCoord4xOES __rglgen_glTexCoord4xOES +#define glTexCoord4xvOES __rglgen_glTexCoord4xvOES +#define glTexGenxOES __rglgen_glTexGenxOES +#define glTexGenxvOES __rglgen_glTexGenxvOES +#define glVertex2xOES __rglgen_glVertex2xOES +#define glVertex2xvOES __rglgen_glVertex2xvOES +#define glVertex3xOES __rglgen_glVertex3xOES +#define glVertex3xvOES __rglgen_glVertex3xvOES +#define glVertex4xOES __rglgen_glVertex4xOES +#define glVertex4xvOES __rglgen_glVertex4xvOES +#define glQueryMatrixxOES __rglgen_glQueryMatrixxOES +#define glClearDepthfOES __rglgen_glClearDepthfOES +#define glClipPlanefOES __rglgen_glClipPlanefOES +#define glDepthRangefOES __rglgen_glDepthRangefOES +#define glFrustumfOES __rglgen_glFrustumfOES +#define glGetClipPlanefOES __rglgen_glGetClipPlanefOES +#define glOrthofOES __rglgen_glOrthofOES +#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 RGLSYMGLDRAWRANGEELEMENTSPROC __rglgen_glDrawRangeElements; +extern RGLSYMGLTEXIMAGE3DPROC __rglgen_glTexImage3D; +extern RGLSYMGLTEXSUBIMAGE3DPROC __rglgen_glTexSubImage3D; +extern RGLSYMGLCOPYTEXSUBIMAGE3DPROC __rglgen_glCopyTexSubImage3D; +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 RGLSYMGLBLENDCOLORPROC __rglgen_glBlendColor; +extern RGLSYMGLBLENDEQUATIONPROC __rglgen_glBlendEquation; +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 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 RGLSYMGLMAPBUFFERRANGEPROC __rglgen_glMapBufferRange; +extern RGLSYMGLFLUSHMAPPEDBUFFERRANGEPROC __rglgen_glFlushMappedBufferRange; +extern RGLSYMGLBINDVERTEXARRAYPROC __rglgen_glBindVertexArray; +extern RGLSYMGLDELETEVERTEXARRAYSPROC __rglgen_glDeleteVertexArrays; +extern RGLSYMGLGENVERTEXARRAYSPROC __rglgen_glGenVertexArrays; +extern RGLSYMGLISVERTEXARRAYPROC __rglgen_glIsVertexArray; +extern RGLSYMGLDRAWARRAYSINSTANCEDPROC __rglgen_glDrawArraysInstanced; +extern RGLSYMGLDRAWELEMENTSINSTANCEDPROC __rglgen_glDrawElementsInstanced; +extern RGLSYMGLTEXBUFFERPROC __rglgen_glTexBuffer; +extern RGLSYMGLPRIMITIVERESTARTINDEXPROC __rglgen_glPrimitiveRestartIndex; +extern RGLSYMGLCOPYBUFFERSUBDATAPROC __rglgen_glCopyBufferSubData; +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 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 RGLSYMGLGETINTEGER64I_VPROC __rglgen_glGetInteger64i_v; +extern RGLSYMGLGETBUFFERPARAMETERI64VPROC __rglgen_glGetBufferParameteri64v; +extern RGLSYMGLFRAMEBUFFERTEXTUREPROC __rglgen_glFramebufferTexture; +extern RGLSYMGLTEXIMAGE2DMULTISAMPLEPROC __rglgen_glTexImage2DMultisample; +extern RGLSYMGLTEXIMAGE3DMULTISAMPLEPROC __rglgen_glTexImage3DMultisample; +extern RGLSYMGLGETMULTISAMPLEFVPROC __rglgen_glGetMultisamplefv; +extern RGLSYMGLSAMPLEMASKIPROC __rglgen_glSampleMaski; +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 RGLSYMGLVERTEXATTRIBDIVISORPROC __rglgen_glVertexAttribDivisor; +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 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 RGLSYMGLMINSAMPLESHADINGPROC __rglgen_glMinSampleShading; +extern RGLSYMGLBLENDEQUATIONIPROC __rglgen_glBlendEquationi; +extern RGLSYMGLBLENDEQUATIONSEPARATEIPROC __rglgen_glBlendEquationSeparatei; +extern RGLSYMGLBLENDFUNCIPROC __rglgen_glBlendFunci; +extern RGLSYMGLBLENDFUNCSEPARATEIPROC __rglgen_glBlendFuncSeparatei; +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 RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawArraysInstancedBaseInstance; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseInstance; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseVertexBaseInstance; +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 RGLSYMGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __rglgen_glDrawTransformFeedbackInstanced; +extern RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __rglgen_glDrawTransformFeedbackStreamInstanced; +extern RGLSYMGLCLEARBUFFERDATAPROC __rglgen_glClearBufferData; +extern RGLSYMGLCLEARBUFFERSUBDATAPROC __rglgen_glClearBufferSubData; +extern RGLSYMGLDISPATCHCOMPUTEPROC __rglgen_glDispatchCompute; +extern RGLSYMGLDISPATCHCOMPUTEINDIRECTPROC __rglgen_glDispatchComputeIndirect; +extern RGLSYMGLCOPYIMAGESUBDATAPROC __rglgen_glCopyImageSubData; +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 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 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 RGLSYMGLBUFFERSTORAGEPROC __rglgen_glBufferStorage; +extern RGLSYMGLCLEARTEXIMAGEPROC __rglgen_glClearTexImage; +extern RGLSYMGLCLEARTEXSUBIMAGEPROC __rglgen_glClearTexSubImage; +extern RGLSYMGLBINDBUFFERSBASEPROC __rglgen_glBindBuffersBase; +extern RGLSYMGLBINDBUFFERSRANGEPROC __rglgen_glBindBuffersRange; +extern RGLSYMGLBINDTEXTURESPROC __rglgen_glBindTextures; +extern RGLSYMGLBINDSAMPLERSPROC __rglgen_glBindSamplers; +extern RGLSYMGLBINDIMAGETEXTURESPROC __rglgen_glBindImageTextures; +extern RGLSYMGLBINDVERTEXBUFFERSPROC __rglgen_glBindVertexBuffers; +extern RGLSYMGLGETTEXTUREHANDLEARBPROC __rglgen_glGetTextureHandleARB; +extern RGLSYMGLGETTEXTURESAMPLERHANDLEARBPROC __rglgen_glGetTextureSamplerHandleARB; +extern RGLSYMGLMAKETEXTUREHANDLERESIDENTARBPROC __rglgen_glMakeTextureHandleResidentARB; +extern RGLSYMGLMAKETEXTUREHANDLENONRESIDENTARBPROC __rglgen_glMakeTextureHandleNonResidentARB; +extern RGLSYMGLGETIMAGEHANDLEARBPROC __rglgen_glGetImageHandleARB; +extern RGLSYMGLMAKEIMAGEHANDLERESIDENTARBPROC __rglgen_glMakeImageHandleResidentARB; +extern RGLSYMGLMAKEIMAGEHANDLENONRESIDENTARBPROC __rglgen_glMakeImageHandleNonResidentARB; +extern RGLSYMGLUNIFORMHANDLEUI64ARBPROC __rglgen_glUniformHandleui64ARB; +extern RGLSYMGLUNIFORMHANDLEUI64VARBPROC __rglgen_glUniformHandleui64vARB; +extern RGLSYMGLPROGRAMUNIFORMHANDLEUI64ARBPROC __rglgen_glProgramUniformHandleui64ARB; +extern RGLSYMGLPROGRAMUNIFORMHANDLEUI64VARBPROC __rglgen_glProgramUniformHandleui64vARB; +extern RGLSYMGLISTEXTUREHANDLERESIDENTARBPROC __rglgen_glIsTextureHandleResidentARB; +extern RGLSYMGLISIMAGEHANDLERESIDENTARBPROC __rglgen_glIsImageHandleResidentARB; +extern RGLSYMGLVERTEXATTRIBL1UI64ARBPROC __rglgen_glVertexAttribL1ui64ARB; +extern RGLSYMGLVERTEXATTRIBL1UI64VARBPROC __rglgen_glVertexAttribL1ui64vARB; +extern RGLSYMGLGETVERTEXATTRIBLUI64VARBPROC __rglgen_glGetVertexAttribLui64vARB; +extern RGLSYMGLCREATESYNCFROMCLEVENTARBPROC __rglgen_glCreateSyncFromCLeventARB; +extern RGLSYMGLCLAMPCOLORARBPROC __rglgen_glClampColorARB; +extern RGLSYMGLDISPATCHCOMPUTEGROUPSIZEARBPROC __rglgen_glDispatchComputeGroupSizeARB; +extern RGLSYMGLDEBUGMESSAGECONTROLARBPROC __rglgen_glDebugMessageControlARB; +extern RGLSYMGLDEBUGMESSAGEINSERTARBPROC __rglgen_glDebugMessageInsertARB; +extern RGLSYMGLDEBUGMESSAGECALLBACKARBPROC __rglgen_glDebugMessageCallbackARB; +extern RGLSYMGLGETDEBUGMESSAGELOGARBPROC __rglgen_glGetDebugMessageLogARB; +extern RGLSYMGLDRAWBUFFERSARBPROC __rglgen_glDrawBuffersARB; +extern RGLSYMGLBLENDEQUATIONIARBPROC __rglgen_glBlendEquationiARB; +extern RGLSYMGLBLENDEQUATIONSEPARATEIARBPROC __rglgen_glBlendEquationSeparateiARB; +extern RGLSYMGLBLENDFUNCIARBPROC __rglgen_glBlendFunciARB; +extern RGLSYMGLBLENDFUNCSEPARATEIARBPROC __rglgen_glBlendFuncSeparateiARB; +extern RGLSYMGLDRAWARRAYSINSTANCEDARBPROC __rglgen_glDrawArraysInstancedARB; +extern RGLSYMGLDRAWELEMENTSINSTANCEDARBPROC __rglgen_glDrawElementsInstancedARB; +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 RGLSYMGLISPROGRAMARBPROC __rglgen_glIsProgramARB; +extern RGLSYMGLPROGRAMPARAMETERIARBPROC __rglgen_glProgramParameteriARB; +extern RGLSYMGLFRAMEBUFFERTEXTUREARBPROC __rglgen_glFramebufferTextureARB; +extern RGLSYMGLFRAMEBUFFERTEXTURELAYERARBPROC __rglgen_glFramebufferTextureLayerARB; +extern RGLSYMGLFRAMEBUFFERTEXTUREFACEARBPROC __rglgen_glFramebufferTextureFaceARB; +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 RGLSYMGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC __rglgen_glMultiDrawArraysIndirectCountARB; +extern RGLSYMGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC __rglgen_glMultiDrawElementsIndirectCountARB; +extern RGLSYMGLVERTEXATTRIBDIVISORARBPROC __rglgen_glVertexAttribDivisorARB; +extern RGLSYMGLCURRENTPALETTEMATRIXARBPROC __rglgen_glCurrentPaletteMatrixARB; +extern RGLSYMGLMATRIXINDEXUBVARBPROC __rglgen_glMatrixIndexubvARB; +extern RGLSYMGLMATRIXINDEXUSVARBPROC __rglgen_glMatrixIndexusvARB; +extern RGLSYMGLMATRIXINDEXUIVARBPROC __rglgen_glMatrixIndexuivARB; +extern RGLSYMGLMATRIXINDEXPOINTERARBPROC __rglgen_glMatrixIndexPointerARB; +extern RGLSYMGLSAMPLECOVERAGEARBPROC __rglgen_glSampleCoverageARB; +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 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 RGLSYMGLPOINTPARAMETERFARBPROC __rglgen_glPointParameterfARB; +extern RGLSYMGLPOINTPARAMETERFVARBPROC __rglgen_glPointParameterfvARB; +extern RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC __rglgen_glGetGraphicsResetStatusARB; +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 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 RGLSYMGLMINSAMPLESHADINGARBPROC __rglgen_glMinSampleShadingARB; +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 RGLSYMGLNAMEDSTRINGARBPROC __rglgen_glNamedStringARB; +extern RGLSYMGLDELETENAMEDSTRINGARBPROC __rglgen_glDeleteNamedStringARB; +extern RGLSYMGLCOMPILESHADERINCLUDEARBPROC __rglgen_glCompileShaderIncludeARB; +extern RGLSYMGLISNAMEDSTRINGARBPROC __rglgen_glIsNamedStringARB; +extern RGLSYMGLGETNAMEDSTRINGARBPROC __rglgen_glGetNamedStringARB; +extern RGLSYMGLGETNAMEDSTRINGIVARBPROC __rglgen_glGetNamedStringivARB; +extern RGLSYMGLTEXPAGECOMMITMENTARBPROC __rglgen_glTexPageCommitmentARB; +extern RGLSYMGLTEXBUFFERARBPROC __rglgen_glTexBufferARB; +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 RGLSYMGLLOADTRANSPOSEMATRIXFARBPROC __rglgen_glLoadTransposeMatrixfARB; +extern RGLSYMGLLOADTRANSPOSEMATRIXDARBPROC __rglgen_glLoadTransposeMatrixdARB; +extern RGLSYMGLMULTTRANSPOSEMATRIXFARBPROC __rglgen_glMultTransposeMatrixfARB; +extern RGLSYMGLMULTTRANSPOSEMATRIXDARBPROC __rglgen_glMultTransposeMatrixdARB; +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 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 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 RGLSYMGLGETVERTEXATTRIBDVARBPROC __rglgen_glGetVertexAttribdvARB; +extern RGLSYMGLGETVERTEXATTRIBFVARBPROC __rglgen_glGetVertexAttribfvARB; +extern RGLSYMGLGETVERTEXATTRIBIVARBPROC __rglgen_glGetVertexAttribivARB; +extern RGLSYMGLGETVERTEXATTRIBPOINTERVARBPROC __rglgen_glGetVertexAttribPointervARB; +extern RGLSYMGLBINDATTRIBLOCATIONARBPROC __rglgen_glBindAttribLocationARB; +extern RGLSYMGLGETACTIVEATTRIBARBPROC __rglgen_glGetActiveAttribARB; +extern RGLSYMGLGETATTRIBLOCATIONARBPROC __rglgen_glGetAttribLocationARB; +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 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 RGLSYMGLALPHAFUNCXOESPROC __rglgen_glAlphaFuncxOES; +extern RGLSYMGLCLEARCOLORXOESPROC __rglgen_glClearColorxOES; +extern RGLSYMGLCLEARDEPTHXOESPROC __rglgen_glClearDepthxOES; +extern RGLSYMGLCLIPPLANEXOESPROC __rglgen_glClipPlanexOES; +extern RGLSYMGLCOLOR4XOESPROC __rglgen_glColor4xOES; +extern RGLSYMGLDEPTHRANGEXOESPROC __rglgen_glDepthRangexOES; +extern RGLSYMGLFOGXOESPROC __rglgen_glFogxOES; +extern RGLSYMGLFOGXVOESPROC __rglgen_glFogxvOES; +extern RGLSYMGLFRUSTUMXOESPROC __rglgen_glFrustumxOES; +extern RGLSYMGLGETCLIPPLANEXOESPROC __rglgen_glGetClipPlanexOES; +extern RGLSYMGLGETFIXEDVOESPROC __rglgen_glGetFixedvOES; +extern RGLSYMGLGETTEXENVXVOESPROC __rglgen_glGetTexEnvxvOES; +extern RGLSYMGLGETTEXPARAMETERXVOESPROC __rglgen_glGetTexParameterxvOES; +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 RGLSYMGLMATERIALXOESPROC __rglgen_glMaterialxOES; +extern RGLSYMGLMATERIALXVOESPROC __rglgen_glMaterialxvOES; +extern RGLSYMGLMULTMATRIXXOESPROC __rglgen_glMultMatrixxOES; +extern RGLSYMGLMULTITEXCOORD4XOESPROC __rglgen_glMultiTexCoord4xOES; +extern RGLSYMGLNORMAL3XOESPROC __rglgen_glNormal3xOES; +extern RGLSYMGLORTHOXOESPROC __rglgen_glOrthoxOES; +extern RGLSYMGLPOINTPARAMETERXVOESPROC __rglgen_glPointParameterxvOES; +extern RGLSYMGLPOINTSIZEXOESPROC __rglgen_glPointSizexOES; +extern RGLSYMGLPOLYGONOFFSETXOESPROC __rglgen_glPolygonOffsetxOES; +extern RGLSYMGLROTATEXOESPROC __rglgen_glRotatexOES; +extern RGLSYMGLSAMPLECOVERAGEOESPROC __rglgen_glSampleCoverageOES; +extern RGLSYMGLSCALEXOESPROC __rglgen_glScalexOES; +extern RGLSYMGLTEXENVXOESPROC __rglgen_glTexEnvxOES; +extern RGLSYMGLTEXENVXVOESPROC __rglgen_glTexEnvxvOES; +extern RGLSYMGLTEXPARAMETERXOESPROC __rglgen_glTexParameterxOES; +extern RGLSYMGLTEXPARAMETERXVOESPROC __rglgen_glTexParameterxvOES; +extern RGLSYMGLTRANSLATEXOESPROC __rglgen_glTranslatexOES; +extern RGLSYMGLACCUMXOESPROC __rglgen_glAccumxOES; +extern RGLSYMGLBITMAPXOESPROC __rglgen_glBitmapxOES; +extern RGLSYMGLBLENDCOLORXOESPROC __rglgen_glBlendColorxOES; +extern RGLSYMGLCLEARACCUMXOESPROC __rglgen_glClearAccumxOES; +extern RGLSYMGLCOLOR3XOESPROC __rglgen_glColor3xOES; +extern RGLSYMGLCOLOR3XVOESPROC __rglgen_glColor3xvOES; +extern RGLSYMGLCOLOR4XVOESPROC __rglgen_glColor4xvOES; +extern RGLSYMGLCONVOLUTIONPARAMETERXOESPROC __rglgen_glConvolutionParameterxOES; +extern RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC __rglgen_glConvolutionParameterxvOES; +extern RGLSYMGLEVALCOORD1XOESPROC __rglgen_glEvalCoord1xOES; +extern RGLSYMGLEVALCOORD1XVOESPROC __rglgen_glEvalCoord1xvOES; +extern RGLSYMGLEVALCOORD2XOESPROC __rglgen_glEvalCoord2xOES; +extern RGLSYMGLEVALCOORD2XVOESPROC __rglgen_glEvalCoord2xvOES; +extern RGLSYMGLFEEDBACKBUFFERXOESPROC __rglgen_glFeedbackBufferxOES; +extern RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC __rglgen_glGetConvolutionParameterxvOES; +extern RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC __rglgen_glGetHistogramParameterxvOES; +extern RGLSYMGLGETLIGHTXOESPROC __rglgen_glGetLightxOES; +extern RGLSYMGLGETMAPXVOESPROC __rglgen_glGetMapxvOES; +extern RGLSYMGLGETMATERIALXOESPROC __rglgen_glGetMaterialxOES; +extern RGLSYMGLGETPIXELMAPXVPROC __rglgen_glGetPixelMapxv; +extern RGLSYMGLGETTEXGENXVOESPROC __rglgen_glGetTexGenxvOES; +extern RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC __rglgen_glGetTexLevelParameterxvOES; +extern RGLSYMGLINDEXXOESPROC __rglgen_glIndexxOES; +extern RGLSYMGLINDEXXVOESPROC __rglgen_glIndexxvOES; +extern RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC __rglgen_glLoadTransposeMatrixxOES; +extern RGLSYMGLMAP1XOESPROC __rglgen_glMap1xOES; +extern RGLSYMGLMAP2XOESPROC __rglgen_glMap2xOES; +extern RGLSYMGLMAPGRID1XOESPROC __rglgen_glMapGrid1xOES; +extern RGLSYMGLMAPGRID2XOESPROC __rglgen_glMapGrid2xOES; +extern RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC __rglgen_glMultTransposeMatrixxOES; +extern RGLSYMGLMULTITEXCOORD1XOESPROC __rglgen_glMultiTexCoord1xOES; +extern RGLSYMGLMULTITEXCOORD1XVOESPROC __rglgen_glMultiTexCoord1xvOES; +extern RGLSYMGLMULTITEXCOORD2XOESPROC __rglgen_glMultiTexCoord2xOES; +extern RGLSYMGLMULTITEXCOORD2XVOESPROC __rglgen_glMultiTexCoord2xvOES; +extern RGLSYMGLMULTITEXCOORD3XOESPROC __rglgen_glMultiTexCoord3xOES; +extern RGLSYMGLMULTITEXCOORD3XVOESPROC __rglgen_glMultiTexCoord3xvOES; +extern RGLSYMGLMULTITEXCOORD4XVOESPROC __rglgen_glMultiTexCoord4xvOES; +extern RGLSYMGLNORMAL3XVOESPROC __rglgen_glNormal3xvOES; +extern RGLSYMGLPASSTHROUGHXOESPROC __rglgen_glPassThroughxOES; +extern RGLSYMGLPIXELMAPXPROC __rglgen_glPixelMapx; +extern RGLSYMGLPIXELSTOREXPROC __rglgen_glPixelStorex; +extern RGLSYMGLPIXELTRANSFERXOESPROC __rglgen_glPixelTransferxOES; +extern RGLSYMGLPIXELZOOMXOESPROC __rglgen_glPixelZoomxOES; +extern RGLSYMGLPRIORITIZETEXTURESXOESPROC __rglgen_glPrioritizeTexturesxOES; +extern RGLSYMGLRASTERPOS2XOESPROC __rglgen_glRasterPos2xOES; +extern RGLSYMGLRASTERPOS2XVOESPROC __rglgen_glRasterPos2xvOES; +extern RGLSYMGLRASTERPOS3XOESPROC __rglgen_glRasterPos3xOES; +extern RGLSYMGLRASTERPOS3XVOESPROC __rglgen_glRasterPos3xvOES; +extern RGLSYMGLRASTERPOS4XOESPROC __rglgen_glRasterPos4xOES; +extern RGLSYMGLRASTERPOS4XVOESPROC __rglgen_glRasterPos4xvOES; +extern RGLSYMGLRECTXOESPROC __rglgen_glRectxOES; +extern RGLSYMGLRECTXVOESPROC __rglgen_glRectxvOES; +extern RGLSYMGLTEXCOORD1XOESPROC __rglgen_glTexCoord1xOES; +extern RGLSYMGLTEXCOORD1XVOESPROC __rglgen_glTexCoord1xvOES; +extern RGLSYMGLTEXCOORD2XOESPROC __rglgen_glTexCoord2xOES; +extern RGLSYMGLTEXCOORD2XVOESPROC __rglgen_glTexCoord2xvOES; +extern RGLSYMGLTEXCOORD3XOESPROC __rglgen_glTexCoord3xOES; +extern RGLSYMGLTEXCOORD3XVOESPROC __rglgen_glTexCoord3xvOES; +extern RGLSYMGLTEXCOORD4XOESPROC __rglgen_glTexCoord4xOES; +extern RGLSYMGLTEXCOORD4XVOESPROC __rglgen_glTexCoord4xvOES; +extern RGLSYMGLTEXGENXOESPROC __rglgen_glTexGenxOES; +extern RGLSYMGLTEXGENXVOESPROC __rglgen_glTexGenxvOES; +extern RGLSYMGLVERTEX2XOESPROC __rglgen_glVertex2xOES; +extern RGLSYMGLVERTEX2XVOESPROC __rglgen_glVertex2xvOES; +extern RGLSYMGLVERTEX3XOESPROC __rglgen_glVertex3xOES; +extern RGLSYMGLVERTEX3XVOESPROC __rglgen_glVertex3xvOES; +extern RGLSYMGLVERTEX4XOESPROC __rglgen_glVertex4xOES; +extern RGLSYMGLVERTEX4XVOESPROC __rglgen_glVertex4xvOES; +extern RGLSYMGLQUERYMATRIXXOESPROC __rglgen_glQueryMatrixxOES; +extern RGLSYMGLCLEARDEPTHFOESPROC __rglgen_glClearDepthfOES; +extern RGLSYMGLCLIPPLANEFOESPROC __rglgen_glClipPlanefOES; +extern RGLSYMGLDEPTHRANGEFOESPROC __rglgen_glDepthRangefOES; +extern RGLSYMGLFRUSTUMFOESPROC __rglgen_glFrustumfOES; +extern RGLSYMGLGETCLIPPLANEFOESPROC __rglgen_glGetClipPlanefOES; +extern RGLSYMGLORTHOFOESPROC __rglgen_glOrthofOES; +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[]; +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/platform/libretro/libretro-common/include/glsym/rglgen.h b/src/platform/libretro/libretro-common/include/glsym/rglgen.h new file mode 100644 index 00000000..b8a1a0c8 --- /dev/null +++ b/src/platform/libretro/libretro-common/include/glsym/rglgen.h @@ -0,0 +1,47 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this libretro SDK code part (glsym). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef RGLGEN_H__ +#define RGLGEN_H__ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +#include "rglgen_headers.h" + +RETRO_BEGIN_DECLS + +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); + +RETRO_END_DECLS + +#endif + diff --git a/src/platform/libretro/libretro-common/include/glsym/rglgen_headers.h b/src/platform/libretro/libretro-common/include/glsym/rglgen_headers.h new file mode 100644 index 00000000..4ae33bc3 --- /dev/null +++ b/src/platform/libretro/libretro-common/include/glsym/rglgen_headers.h @@ -0,0 +1,87 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this libretro SDK code part (glsym). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef RGLGEN_HEADERS_H__ +#define RGLGEN_HEADERS_H__ + +#ifdef HAVE_EGL +#include +#include +#endif + +#if defined(IOS) + +#if defined(HAVE_OPENGLES3) +#include +#include +#else +#include +#include +#endif + +#elif defined(__APPLE__) +#include +#include +#elif defined(HAVE_PSGL) +#include +#include +#elif defined(HAVE_OPENGL_MODERN) +#include +#include +#elif defined(HAVE_OPENGLES3) +#include +#define __gl2_h_ +#include +#elif defined(HAVE_OPENGLES2) +#include +#include +#elif defined(HAVE_OPENGLES1) +#include +#include +#else +#if defined(_WIN32) && !defined(_XBOX) +#define WIN32_LEAN_AND_MEAN +#include +#endif +#ifndef HAVE_LIBNX +#include +#include +#else +/* We need to avoid including on this platform */ +#include "switch/nx_gl.h" +#include +#endif /* SWITCH */ +#endif + +#ifndef GL_MAP_WRITE_BIT +#define GL_MAP_WRITE_BIT 0x0002 +#endif + +#ifndef GL_MAP_INVALIDATE_BUFFER_BIT +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#endif + +#ifndef GL_RED_INTEGER +#define GL_RED_INTEGER 0x8D94 +#endif + +#endif diff --git a/src/platform/libretro/libretro-common/include/libretro.h b/src/platform/libretro/libretro-common/include/libretro.h new file mode 100644 index 00000000..1fd2f5b7 --- /dev/null +++ b/src/platform/libretro/libretro-common/include/libretro.h @@ -0,0 +1,2752 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this libretro API header (libretro.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBRETRO_H__ +#define LIBRETRO_H__ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef __cplusplus +#if defined(_MSC_VER) && _MSC_VER < 1800 && !defined(SN_TARGET_PS3) +/* Hack applied for MSVC when compiling in C89 mode + * as it isn't C99-compliant. */ +#define bool unsigned char +#define true 1 +#define false 0 +#else +#include +#endif +#endif + +#ifndef RETRO_CALLCONV +# if defined(__GNUC__) && defined(__i386__) && !defined(__x86_64__) +# define RETRO_CALLCONV __attribute__((cdecl)) +# elif defined(_MSC_VER) && defined(_M_X86) && !defined(_M_X64) +# define RETRO_CALLCONV __cdecl +# else +# define RETRO_CALLCONV /* all other platforms only have one calling convention each */ +# endif +#endif + +#ifndef RETRO_API +# if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) +# ifdef RETRO_IMPORT_SYMBOLS +# ifdef __GNUC__ +# define RETRO_API RETRO_CALLCONV __attribute__((__dllimport__)) +# else +# define RETRO_API RETRO_CALLCONV __declspec(dllimport) +# endif +# else +# ifdef __GNUC__ +# define RETRO_API RETRO_CALLCONV __attribute__((__dllexport__)) +# else +# define RETRO_API RETRO_CALLCONV __declspec(dllexport) +# endif +# endif +# else +# if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__CELLOS_LV2__) +# define RETRO_API RETRO_CALLCONV __attribute__((__visibility__("default"))) +# else +# define RETRO_API RETRO_CALLCONV +# endif +# endif +#endif + +/* Used for checking API/ABI mismatches that can break libretro + * implementations. + * It is not incremented for compatible changes to the API. + */ +#define RETRO_API_VERSION 1 + +/* + * Libretro's fundamental device abstractions. + * + * Libretro's input system consists of some standardized device types, + * such as a joypad (with/without analog), mouse, keyboard, lightgun + * and a pointer. + * + * The functionality of these devices are fixed, and individual cores + * map their own concept of a controller to libretro's abstractions. + * This makes it possible for frontends to map the abstract types to a + * real input device, and not having to worry about binding input + * correctly to arbitrary controller layouts. + */ + +#define RETRO_DEVICE_TYPE_SHIFT 8 +#define RETRO_DEVICE_MASK ((1 << RETRO_DEVICE_TYPE_SHIFT) - 1) +#define RETRO_DEVICE_SUBCLASS(base, id) (((id + 1) << RETRO_DEVICE_TYPE_SHIFT) | base) + +/* Input disabled. */ +#define RETRO_DEVICE_NONE 0 + +/* The JOYPAD is called RetroPad. It is essentially a Super Nintendo + * controller, but with additional L2/R2/L3/R3 buttons, similar to a + * PS1 DualShock. */ +#define RETRO_DEVICE_JOYPAD 1 + +/* The mouse is a simple mouse, similar to Super Nintendo's mouse. + * X and Y coordinates are reported relatively to last poll (poll callback). + * It is up to the libretro implementation to keep track of where the mouse + * pointer is supposed to be on the screen. + * The frontend must make sure not to interfere with its own hardware + * mouse pointer. + */ +#define RETRO_DEVICE_MOUSE 2 + +/* KEYBOARD device lets one poll for raw key pressed. + * It is poll based, so input callback will return with the current + * pressed state. + * For event/text based keyboard input, see + * RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK. + */ +#define RETRO_DEVICE_KEYBOARD 3 + +/* LIGHTGUN device is similar to Guncon-2 for PlayStation 2. + * It reports X/Y coordinates in screen space (similar to the pointer) + * in the range [-0x8000, 0x7fff] in both axes, with zero being center and + * -0x8000 being out of bounds. + * As well as reporting on/off screen state. It features a trigger, + * start/select buttons, auxiliary action buttons and a + * directional pad. A forced off-screen shot can be requested for + * auto-reloading function in some games. + */ +#define RETRO_DEVICE_LIGHTGUN 4 + +/* The ANALOG device is an extension to JOYPAD (RetroPad). + * Similar to DualShock2 it adds two analog sticks and all buttons can + * be analog. This is treated as a separate device type as it returns + * axis values in the full analog range of [-0x7fff, 0x7fff], + * although some devices may return -0x8000. + * Positive X axis is right. Positive Y axis is down. + * Buttons are returned in the range [0, 0x7fff]. + * Only use ANALOG type when polling for analog values. + */ +#define RETRO_DEVICE_ANALOG 5 + +/* Abstracts the concept of a pointing mechanism, e.g. touch. + * This allows libretro to query in absolute coordinates where on the + * screen a mouse (or something similar) is being placed. + * For a touch centric device, coordinates reported are the coordinates + * of the press. + * + * Coordinates in X and Y are reported as: + * [-0x7fff, 0x7fff]: -0x7fff corresponds to the far left/top of the screen, + * and 0x7fff corresponds to the far right/bottom of the screen. + * The "screen" is here defined as area that is passed to the frontend and + * later displayed on the monitor. + * + * The frontend is free to scale/resize this screen as it sees fit, however, + * (X, Y) = (-0x7fff, -0x7fff) will correspond to the top-left pixel of the + * game image, etc. + * + * To check if the pointer coordinates are valid (e.g. a touch display + * actually being touched), PRESSED returns 1 or 0. + * + * If using a mouse on a desktop, PRESSED will usually correspond to the + * left mouse button, but this is a frontend decision. + * PRESSED will only return 1 if the pointer is inside the game screen. + * + * For multi-touch, the index variable can be used to successively query + * more presses. + * If index = 0 returns true for _PRESSED, coordinates can be extracted + * with _X, _Y for index = 0. One can then query _PRESSED, _X, _Y with + * index = 1, and so on. + * Eventually _PRESSED will return false for an index. No further presses + * are registered at this point. */ +#define RETRO_DEVICE_POINTER 6 + +/* Buttons for the RetroPad (JOYPAD). + * The placement of these is equivalent to placements on the + * Super Nintendo controller. + * L2/R2/L3/R3 buttons correspond to the PS1 DualShock. + * Also used as id values for RETRO_DEVICE_INDEX_ANALOG_BUTTON */ +#define RETRO_DEVICE_ID_JOYPAD_B 0 +#define RETRO_DEVICE_ID_JOYPAD_Y 1 +#define RETRO_DEVICE_ID_JOYPAD_SELECT 2 +#define RETRO_DEVICE_ID_JOYPAD_START 3 +#define RETRO_DEVICE_ID_JOYPAD_UP 4 +#define RETRO_DEVICE_ID_JOYPAD_DOWN 5 +#define RETRO_DEVICE_ID_JOYPAD_LEFT 6 +#define RETRO_DEVICE_ID_JOYPAD_RIGHT 7 +#define RETRO_DEVICE_ID_JOYPAD_A 8 +#define RETRO_DEVICE_ID_JOYPAD_X 9 +#define RETRO_DEVICE_ID_JOYPAD_L 10 +#define RETRO_DEVICE_ID_JOYPAD_R 11 +#define RETRO_DEVICE_ID_JOYPAD_L2 12 +#define RETRO_DEVICE_ID_JOYPAD_R2 13 +#define RETRO_DEVICE_ID_JOYPAD_L3 14 +#define RETRO_DEVICE_ID_JOYPAD_R3 15 + +#define RETRO_DEVICE_ID_JOYPAD_MASK 256 + +/* Index / Id values for ANALOG device. */ +#define RETRO_DEVICE_INDEX_ANALOG_LEFT 0 +#define RETRO_DEVICE_INDEX_ANALOG_RIGHT 1 +#define RETRO_DEVICE_INDEX_ANALOG_BUTTON 2 +#define RETRO_DEVICE_ID_ANALOG_X 0 +#define RETRO_DEVICE_ID_ANALOG_Y 1 + +/* Id values for MOUSE. */ +#define RETRO_DEVICE_ID_MOUSE_X 0 +#define RETRO_DEVICE_ID_MOUSE_Y 1 +#define RETRO_DEVICE_ID_MOUSE_LEFT 2 +#define RETRO_DEVICE_ID_MOUSE_RIGHT 3 +#define RETRO_DEVICE_ID_MOUSE_WHEELUP 4 +#define RETRO_DEVICE_ID_MOUSE_WHEELDOWN 5 +#define RETRO_DEVICE_ID_MOUSE_MIDDLE 6 +#define RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP 7 +#define RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELDOWN 8 +#define RETRO_DEVICE_ID_MOUSE_BUTTON_4 9 +#define RETRO_DEVICE_ID_MOUSE_BUTTON_5 10 + +/* Id values for LIGHTGUN. */ +#define RETRO_DEVICE_ID_LIGHTGUN_SCREEN_X 13 /*Absolute Position*/ +#define RETRO_DEVICE_ID_LIGHTGUN_SCREEN_Y 14 /*Absolute*/ +#define RETRO_DEVICE_ID_LIGHTGUN_IS_OFFSCREEN 15 /*Status Check*/ +#define RETRO_DEVICE_ID_LIGHTGUN_TRIGGER 2 +#define RETRO_DEVICE_ID_LIGHTGUN_RELOAD 16 /*Forced off-screen shot*/ +#define RETRO_DEVICE_ID_LIGHTGUN_AUX_A 3 +#define RETRO_DEVICE_ID_LIGHTGUN_AUX_B 4 +#define RETRO_DEVICE_ID_LIGHTGUN_START 6 +#define RETRO_DEVICE_ID_LIGHTGUN_SELECT 7 +#define RETRO_DEVICE_ID_LIGHTGUN_AUX_C 8 +#define RETRO_DEVICE_ID_LIGHTGUN_DPAD_UP 9 +#define RETRO_DEVICE_ID_LIGHTGUN_DPAD_DOWN 10 +#define RETRO_DEVICE_ID_LIGHTGUN_DPAD_LEFT 11 +#define RETRO_DEVICE_ID_LIGHTGUN_DPAD_RIGHT 12 +/* deprecated */ +#define RETRO_DEVICE_ID_LIGHTGUN_X 0 /*Relative Position*/ +#define RETRO_DEVICE_ID_LIGHTGUN_Y 1 /*Relative*/ +#define RETRO_DEVICE_ID_LIGHTGUN_CURSOR 3 /*Use Aux:A*/ +#define RETRO_DEVICE_ID_LIGHTGUN_TURBO 4 /*Use Aux:B*/ +#define RETRO_DEVICE_ID_LIGHTGUN_PAUSE 5 /*Use Start*/ + +/* Id values for POINTER. */ +#define RETRO_DEVICE_ID_POINTER_X 0 +#define RETRO_DEVICE_ID_POINTER_Y 1 +#define RETRO_DEVICE_ID_POINTER_PRESSED 2 +#define RETRO_DEVICE_ID_POINTER_COUNT 3 + +/* Returned from retro_get_region(). */ +#define RETRO_REGION_NTSC 0 +#define RETRO_REGION_PAL 1 + +/* Id values for LANGUAGE */ +enum retro_language +{ + RETRO_LANGUAGE_ENGLISH = 0, + RETRO_LANGUAGE_JAPANESE = 1, + RETRO_LANGUAGE_FRENCH = 2, + RETRO_LANGUAGE_SPANISH = 3, + RETRO_LANGUAGE_GERMAN = 4, + RETRO_LANGUAGE_ITALIAN = 5, + RETRO_LANGUAGE_DUTCH = 6, + RETRO_LANGUAGE_PORTUGUESE_BRAZIL = 7, + RETRO_LANGUAGE_PORTUGUESE_PORTUGAL = 8, + RETRO_LANGUAGE_RUSSIAN = 9, + RETRO_LANGUAGE_KOREAN = 10, + RETRO_LANGUAGE_CHINESE_TRADITIONAL = 11, + RETRO_LANGUAGE_CHINESE_SIMPLIFIED = 12, + RETRO_LANGUAGE_ESPERANTO = 13, + RETRO_LANGUAGE_POLISH = 14, + RETRO_LANGUAGE_VIETNAMESE = 15, + RETRO_LANGUAGE_ARABIC = 16, + RETRO_LANGUAGE_GREEK = 17, + RETRO_LANGUAGE_TURKISH = 18, + RETRO_LANGUAGE_LAST, + + /* Ensure sizeof(enum) == sizeof(int) */ + RETRO_LANGUAGE_DUMMY = INT_MAX +}; + +/* Passed to retro_get_memory_data/size(). + * If the memory type doesn't apply to the + * implementation NULL/0 can be returned. + */ +#define RETRO_MEMORY_MASK 0xff + +/* Regular save RAM. This RAM is usually found on a game cartridge, + * backed up by a battery. + * If save game data is too complex for a single memory buffer, + * the SAVE_DIRECTORY (preferably) or SYSTEM_DIRECTORY environment + * callback can be used. */ +#define RETRO_MEMORY_SAVE_RAM 0 + +/* Some games have a built-in clock to keep track of time. + * This memory is usually just a couple of bytes to keep track of time. + */ +#define RETRO_MEMORY_RTC 1 + +/* System ram lets a frontend peek into a game systems main RAM. */ +#define RETRO_MEMORY_SYSTEM_RAM 2 + +/* Video ram lets a frontend peek into a game systems video RAM (VRAM). */ +#define RETRO_MEMORY_VIDEO_RAM 3 + +/* Keysyms used for ID in input state callback when polling RETRO_KEYBOARD. */ +enum retro_key +{ + RETROK_UNKNOWN = 0, + RETROK_FIRST = 0, + RETROK_BACKSPACE = 8, + RETROK_TAB = 9, + RETROK_CLEAR = 12, + RETROK_RETURN = 13, + RETROK_PAUSE = 19, + RETROK_ESCAPE = 27, + RETROK_SPACE = 32, + RETROK_EXCLAIM = 33, + RETROK_QUOTEDBL = 34, + RETROK_HASH = 35, + RETROK_DOLLAR = 36, + RETROK_AMPERSAND = 38, + RETROK_QUOTE = 39, + RETROK_LEFTPAREN = 40, + RETROK_RIGHTPAREN = 41, + RETROK_ASTERISK = 42, + RETROK_PLUS = 43, + RETROK_COMMA = 44, + RETROK_MINUS = 45, + RETROK_PERIOD = 46, + RETROK_SLASH = 47, + RETROK_0 = 48, + RETROK_1 = 49, + RETROK_2 = 50, + RETROK_3 = 51, + RETROK_4 = 52, + RETROK_5 = 53, + RETROK_6 = 54, + RETROK_7 = 55, + RETROK_8 = 56, + RETROK_9 = 57, + RETROK_COLON = 58, + RETROK_SEMICOLON = 59, + RETROK_LESS = 60, + RETROK_EQUALS = 61, + RETROK_GREATER = 62, + RETROK_QUESTION = 63, + RETROK_AT = 64, + RETROK_LEFTBRACKET = 91, + RETROK_BACKSLASH = 92, + RETROK_RIGHTBRACKET = 93, + RETROK_CARET = 94, + RETROK_UNDERSCORE = 95, + RETROK_BACKQUOTE = 96, + RETROK_a = 97, + RETROK_b = 98, + RETROK_c = 99, + RETROK_d = 100, + RETROK_e = 101, + RETROK_f = 102, + RETROK_g = 103, + RETROK_h = 104, + RETROK_i = 105, + RETROK_j = 106, + RETROK_k = 107, + RETROK_l = 108, + RETROK_m = 109, + RETROK_n = 110, + RETROK_o = 111, + RETROK_p = 112, + RETROK_q = 113, + RETROK_r = 114, + RETROK_s = 115, + RETROK_t = 116, + RETROK_u = 117, + RETROK_v = 118, + RETROK_w = 119, + RETROK_x = 120, + RETROK_y = 121, + RETROK_z = 122, + RETROK_LEFTBRACE = 123, + RETROK_BAR = 124, + RETROK_RIGHTBRACE = 125, + RETROK_TILDE = 126, + RETROK_DELETE = 127, + + RETROK_KP0 = 256, + RETROK_KP1 = 257, + RETROK_KP2 = 258, + RETROK_KP3 = 259, + RETROK_KP4 = 260, + RETROK_KP5 = 261, + RETROK_KP6 = 262, + RETROK_KP7 = 263, + RETROK_KP8 = 264, + RETROK_KP9 = 265, + RETROK_KP_PERIOD = 266, + RETROK_KP_DIVIDE = 267, + RETROK_KP_MULTIPLY = 268, + RETROK_KP_MINUS = 269, + RETROK_KP_PLUS = 270, + RETROK_KP_ENTER = 271, + RETROK_KP_EQUALS = 272, + + RETROK_UP = 273, + RETROK_DOWN = 274, + RETROK_RIGHT = 275, + RETROK_LEFT = 276, + RETROK_INSERT = 277, + RETROK_HOME = 278, + RETROK_END = 279, + RETROK_PAGEUP = 280, + RETROK_PAGEDOWN = 281, + + RETROK_F1 = 282, + RETROK_F2 = 283, + RETROK_F3 = 284, + RETROK_F4 = 285, + RETROK_F5 = 286, + RETROK_F6 = 287, + RETROK_F7 = 288, + RETROK_F8 = 289, + RETROK_F9 = 290, + RETROK_F10 = 291, + RETROK_F11 = 292, + RETROK_F12 = 293, + RETROK_F13 = 294, + RETROK_F14 = 295, + RETROK_F15 = 296, + + RETROK_NUMLOCK = 300, + RETROK_CAPSLOCK = 301, + RETROK_SCROLLOCK = 302, + RETROK_RSHIFT = 303, + RETROK_LSHIFT = 304, + RETROK_RCTRL = 305, + RETROK_LCTRL = 306, + RETROK_RALT = 307, + RETROK_LALT = 308, + RETROK_RMETA = 309, + RETROK_LMETA = 310, + RETROK_LSUPER = 311, + RETROK_RSUPER = 312, + RETROK_MODE = 313, + RETROK_COMPOSE = 314, + + RETROK_HELP = 315, + RETROK_PRINT = 316, + RETROK_SYSREQ = 317, + RETROK_BREAK = 318, + RETROK_MENU = 319, + RETROK_POWER = 320, + RETROK_EURO = 321, + RETROK_UNDO = 322, + RETROK_OEM_102 = 323, + + RETROK_LAST, + + RETROK_DUMMY = INT_MAX /* Ensure sizeof(enum) == sizeof(int) */ +}; + +enum retro_mod +{ + RETROKMOD_NONE = 0x0000, + + RETROKMOD_SHIFT = 0x01, + RETROKMOD_CTRL = 0x02, + RETROKMOD_ALT = 0x04, + RETROKMOD_META = 0x08, + + RETROKMOD_NUMLOCK = 0x10, + RETROKMOD_CAPSLOCK = 0x20, + RETROKMOD_SCROLLOCK = 0x40, + + RETROKMOD_DUMMY = INT_MAX /* Ensure sizeof(enum) == sizeof(int) */ +}; + +/* If set, this call is not part of the public libretro API yet. It can + * change or be removed at any time. */ +#define RETRO_ENVIRONMENT_EXPERIMENTAL 0x10000 +/* Environment callback to be used internally in frontend. */ +#define RETRO_ENVIRONMENT_PRIVATE 0x20000 + +/* Environment commands. */ +#define RETRO_ENVIRONMENT_SET_ROTATION 1 /* const unsigned * -- + * Sets screen rotation of graphics. + * Valid values are 0, 1, 2, 3, which rotates screen by 0, 90, 180, + * 270 degrees counter-clockwise respectively. + */ +#define RETRO_ENVIRONMENT_GET_OVERSCAN 2 /* bool * -- + * NOTE: As of 2019 this callback is considered deprecated in favor of + * using core options to manage overscan in a more nuanced, core-specific way. + * + * Boolean value whether or not the implementation should use overscan, + * or crop away overscan. + */ +#define RETRO_ENVIRONMENT_GET_CAN_DUPE 3 /* bool * -- + * Boolean value whether or not frontend supports frame duping, + * passing NULL to video frame callback. + */ + + /* Environ 4, 5 are no longer supported (GET_VARIABLE / SET_VARIABLES), + * and reserved to avoid possible ABI clash. + */ + +#define RETRO_ENVIRONMENT_SET_MESSAGE 6 /* const struct retro_message * -- + * Sets a message to be displayed in implementation-specific manner + * for a certain amount of 'frames'. + * Should not be used for trivial messages, which should simply be + * logged via RETRO_ENVIRONMENT_GET_LOG_INTERFACE (or as a + * fallback, stderr). + */ +#define RETRO_ENVIRONMENT_SHUTDOWN 7 /* N/A (NULL) -- + * Requests the frontend to shutdown. + * Should only be used if game has a specific + * way to shutdown the game from a menu item or similar. + */ +#define RETRO_ENVIRONMENT_SET_PERFORMANCE_LEVEL 8 + /* const unsigned * -- + * Gives a hint to the frontend how demanding this implementation + * is on a system. E.g. reporting a level of 2 means + * this implementation should run decently on all frontends + * of level 2 and up. + * + * It can be used by the frontend to potentially warn + * about too demanding implementations. + * + * The levels are "floating". + * + * This function can be called on a per-game basis, + * as certain games an implementation can play might be + * particularly demanding. + * If called, it should be called in retro_load_game(). + */ +#define RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY 9 + /* const char ** -- + * Returns the "system" directory of the frontend. + * This directory can be used to store system specific + * content such as BIOSes, configuration data, etc. + * The returned value can be NULL. + * If so, no such directory is defined, + * and it's up to the implementation to find a suitable directory. + * + * NOTE: Some cores used this folder also for "save" data such as + * memory cards, etc, for lack of a better place to put it. + * This is now discouraged, and if possible, cores should try to + * use the new GET_SAVE_DIRECTORY. + */ +#define RETRO_ENVIRONMENT_SET_PIXEL_FORMAT 10 + /* const enum retro_pixel_format * -- + * Sets the internal pixel format used by the implementation. + * The default pixel format is RETRO_PIXEL_FORMAT_0RGB1555. + * This pixel format however, is deprecated (see enum retro_pixel_format). + * If the call returns false, the frontend does not support this pixel + * format. + * + * This function should be called inside retro_load_game() or + * retro_get_system_av_info(). + */ +#define RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS 11 + /* const struct retro_input_descriptor * -- + * Sets an array of retro_input_descriptors. + * It is up to the frontend to present this in a usable way. + * The array is terminated by retro_input_descriptor::description + * being set to NULL. + * This function can be called at any time, but it is recommended + * to call it as early as possible. + */ +#define RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK 12 + /* const struct retro_keyboard_callback * -- + * Sets a callback function used to notify core about keyboard events. + */ +#define RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE 13 + /* const struct retro_disk_control_callback * -- + * 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 + /* struct retro_hw_render_callback * -- + * Sets an interface to let a libretro core render with + * hardware acceleration. + * Should be called in retro_load_game(). + * If successful, libretro cores will be able to render to a + * frontend-provided framebuffer. + * The size of this framebuffer will be at least as large as + * max_width/max_height provided in get_av_info(). + * If HW rendering is used, pass only RETRO_HW_FRAME_BUFFER_VALID or + * NULL to retro_video_refresh_t. + */ +#define RETRO_ENVIRONMENT_GET_VARIABLE 15 + /* struct retro_variable * -- + * Interface to acquire user-defined information from environment + * that cannot feasibly be supported in a multi-system way. + * 'key' should be set to a key which has already been set by + * SET_VARIABLES. + * 'data' will be set to a value or NULL. + */ +#define RETRO_ENVIRONMENT_SET_VARIABLES 16 + /* const struct retro_variable * -- + * Allows an implementation to signal the environment + * which variables it might want to check for later using + * GET_VARIABLE. + * This allows the frontend to present these variables to + * a user dynamically. + * This should be called the first time as early as + * possible (ideally in retro_set_environment). + * Afterward it may be called again for the core to communicate + * updated options to the frontend, but the number of core + * options must not change from the number in the initial call. + * + * 'data' points to an array of retro_variable structs + * terminated by a { NULL, NULL } element. + * retro_variable::key should be namespaced to not collide + * with other implementations' keys. E.g. A core called + * 'foo' should use keys named as 'foo_option'. + * retro_variable::value should contain a human readable + * description of the key as well as a '|' delimited list + * of expected values. + * + * The number of possible options should be very limited, + * i.e. it should be feasible to cycle through options + * without a keyboard. + * + * First entry should be treated as a default. + * + * Example entry: + * { "foo_option", "Speed hack coprocessor X; false|true" } + * + * Text before first ';' is description. This ';' must be + * followed by a space, and followed by a list of possible + * values split up with '|'. + * + * Only strings are operated on. The possible values will + * generally be displayed and stored as-is by the frontend. + */ +#define RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE 17 + /* bool * -- + * Result is set to true if some variables are updated by + * frontend since last call to RETRO_ENVIRONMENT_GET_VARIABLE. + * Variables should be queried with GET_VARIABLE. + */ +#define RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME 18 + /* const bool * -- + * If true, the libretro implementation supports calls to + * retro_load_game() with NULL as argument. + * Used by cores which can run without particular game data. + * This should be called within retro_set_environment() only. + */ +#define RETRO_ENVIRONMENT_GET_LIBRETRO_PATH 19 + /* const char ** -- + * 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. + */ + + /* Environment 20 was an obsolete version of SET_AUDIO_CALLBACK. + * It was not used by any known core at the time, + * and was removed from the API. */ +#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 reference value + * in frame_time_callback.. + */ +#define RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK 22 + /* 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_GET_RUMBLE_INTERFACE 23 + /* struct retro_rumble_interface * -- + * Gets an interface which is used by a libretro core to set + * state of rumble motors in controllers. + * A strong and weak motor is supported, and they can be + * controlled indepedently. + */ +#define RETRO_ENVIRONMENT_GET_INPUT_DEVICE_CAPABILITIES 24 + /* uint64_t * -- + * Gets a bitmask telling which device type are expected to be + * handled properly in a call to retro_input_state_t. + * Devices which are not handled or recognized always return + * 0 in retro_input_state_t. + * Example bitmask: caps = (1 << RETRO_DEVICE_JOYPAD) | (1 << RETRO_DEVICE_ANALOG). + * Should only be called in retro_run(). + */ +#define RETRO_ENVIRONMENT_GET_SENSOR_INTERFACE (25 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* struct retro_sensor_interface * -- + * Gets access to the sensor interface. + * The purpose of this interface is to allow + * setting state related to sensors such as polling rate, + * enabling/disable it entirely, etc. + * Reading sensor state is done via the normal + * input_state_callback API. + */ +#define RETRO_ENVIRONMENT_GET_CAMERA_INTERFACE (26 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* struct retro_camera_callback * -- + * Gets an interface to a video camera driver. + * A libretro core can use this interface to get access to a + * video camera. + * New video frames are delivered in a callback in same + * thread as retro_run(). + * + * GET_CAMERA_INTERFACE should be called in retro_load_game(). + * + * Depending on the camera implementation used, camera frames + * will be delivered as a raw framebuffer, + * or as an OpenGL texture directly. + * + * The core has to tell the frontend here which types of + * buffers can be handled properly. + * An OpenGL texture can only be handled when using a + * libretro GL core (SET_HW_RENDER). + * It is recommended to use a libretro GL core when + * using camera interface. + * + * The camera is not started automatically. The retrieved start/stop + * functions must be used to explicitly + * start and stop the camera driver. + */ +#define RETRO_ENVIRONMENT_GET_LOG_INTERFACE 27 + /* struct retro_log_callback * -- + * Gets an interface for logging. This is useful for + * logging in a cross-platform way + * as certain platforms cannot use stderr for logging. + * It also allows the frontend to + * show logging information in a more suitable way. + * If this interface is not used, libretro cores should + * log to stderr as desired. + */ +#define RETRO_ENVIRONMENT_GET_PERF_INTERFACE 28 + /* struct retro_perf_callback * -- + * Gets an interface for performance counters. This is useful + * for performance logging in a cross-platform way and for detecting + * architecture-specific features, such as SIMD support. + */ +#define RETRO_ENVIRONMENT_GET_LOCATION_INTERFACE 29 + /* struct retro_location_callback * -- + * Gets access to the location interface. + * The purpose of this interface is to be able to retrieve + * location-based information from the host device, + * such as current latitude / longitude. + */ +#define RETRO_ENVIRONMENT_GET_CONTENT_DIRECTORY 30 /* Old name, kept for compatibility. */ +#define RETRO_ENVIRONMENT_GET_CORE_ASSETS_DIRECTORY 30 + /* const char ** -- + * Returns the "core assets" directory of the frontend. + * This directory can be used to store specific assets that the + * core relies upon, such as art assets, + * input data, etc etc. + * The returned value can be NULL. + * If so, no such directory is defined, + * and it's up to the implementation to find a suitable directory. + */ +#define RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY 31 + /* const char ** -- + * Returns the "save" directory of the frontend, unless there is no + * save directory available. The save directory should be used to + * store SRAM, memory cards, high scores, etc, if the libretro core + * cannot use the regular memory interface (retro_get_memory_data()). + * + * If the frontend cannot designate a save directory, it will return + * NULL to indicate that the core should attempt to operate without a + * save directory set. + * + * NOTE: early libretro cores used the system directory for save + * files. Cores that need to be backwards-compatible can still check + * GET_SYSTEM_DIRECTORY. + */ +#define RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO 32 + /* const struct retro_system_av_info * -- + * Sets a new av_info structure. This can only be called from + * within retro_run(). + * This should *only* be used if the core is completely altering the + * internal resolutions, aspect ratios, timings, sampling rate, etc. + * Calling this can require a full reinitialization of video/audio + * drivers in the frontend, + * + * so it is important to call it very sparingly, and usually only with + * the users explicit consent. + * An eventual driver reinitialize will happen so that video and + * audio callbacks + * happening after this call within the same retro_run() call will + * target the newly initialized driver. + * + * This callback makes it possible to support configurable resolutions + * in games, which can be useful to + * avoid setting the "worst case" in max_width/max_height. + * + * ***HIGHLY RECOMMENDED*** Do not call this callback every time + * resolution changes in an emulator core if it's + * expected to be a temporary change, for the reasons of possible + * driver reinitialization. + * This call is not a free pass for not trying to provide + * correct values in retro_get_system_av_info(). If you need to change + * things like aspect ratio or nominal width/height, + * use RETRO_ENVIRONMENT_SET_GEOMETRY, which is a softer variant + * of SET_SYSTEM_AV_INFO. + * + * If this returns false, the frontend does not acknowledge a + * changed av_info struct. + */ +#define RETRO_ENVIRONMENT_SET_PROC_ADDRESS_CALLBACK 33 + /* const struct retro_get_proc_address_interface * -- + * Allows a libretro core to announce support for the + * get_proc_address() interface. + * This interface allows for a standard way to extend libretro where + * use of environment calls are too indirect, + * e.g. for cases where the frontend wants to call directly into the core. + * + * If a core wants to expose this interface, SET_PROC_ADDRESS_CALLBACK + * **MUST** be called from within retro_set_environment(). + */ +#define RETRO_ENVIRONMENT_SET_SUBSYSTEM_INFO 34 + /* const struct retro_subsystem_info * -- + * This environment call introduces the concept of libretro "subsystems". + * A subsystem is a variant of a libretro core which supports + * different kinds of games. + * The purpose of this is to support e.g. emulators which might + * have special needs, e.g. Super Nintendo's Super GameBoy, Sufami Turbo. + * It can also be used to pick among subsystems in an explicit way + * if the libretro implementation is a multi-system emulator itself. + * + * Loading a game via a subsystem is done with retro_load_game_special(), + * and this environment call allows a libretro core to expose which + * subsystems are supported for use with retro_load_game_special(). + * A core passes an array of retro_game_special_info which is terminated + * with a zeroed out retro_game_special_info struct. + * + * If a core wants to use this functionality, SET_SUBSYSTEM_INFO + * **MUST** be called from within retro_set_environment(). + */ +#define RETRO_ENVIRONMENT_SET_CONTROLLER_INFO 35 + /* const struct retro_controller_info * -- + * This environment call lets a libretro core tell the frontend + * which controller subclasses are recognized in calls to + * retro_set_controller_port_device(). + * + * Some emulators such as Super Nintendo support multiple lightgun + * types which must be specifically selected from. It is therefore + * sometimes necessary for a frontend to be able to tell the core + * about a special kind of input device which is not specifcally + * provided by the Libretro API. + * + * In order for a frontend to understand the workings of those devices, + * they must be defined as a specialized subclass of the generic device + * types already defined in the libretro API. + * + * The core must pass an array of const struct retro_controller_info which + * is terminated with a blanked out struct. Each element of the + * retro_controller_info struct corresponds to the ascending port index + * that is passed to retro_set_controller_port_device() when that function + * is called to indicate to the core that the frontend has changed the + * active device subclass. SEE ALSO: retro_set_controller_port_device() + * + * The ascending input port indexes provided by the core in the struct + * are generally presented by frontends as ascending User # or Player #, + * such as Player 1, Player 2, Player 3, etc. Which device subclasses are + * supported can vary per input port. + * + * The first inner element of each entry in the retro_controller_info array + * is a retro_controller_description struct that specifies the names and + * codes of all device subclasses that are available for the corresponding + * User or Player, beginning with the generic Libretro device that the + * subclasses are derived from. The second inner element of each entry is the + * total number of subclasses that are listed in the retro_controller_description. + * + * NOTE: Even if special device types are set in the libretro core, + * libretro should only poll input based on the base input device types. + */ +#define RETRO_ENVIRONMENT_SET_MEMORY_MAPS (36 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* const struct retro_memory_map * -- + * This environment call lets a libretro core tell the frontend + * about the memory maps this core emulates. + * This can be used to implement, for example, cheats in a core-agnostic way. + * + * Should only be used by emulators; it doesn't make much sense for + * anything else. + * It is recommended to expose all relevant pointers through + * retro_get_memory_* as well. + * + * Can be called from retro_init and retro_load_game. + */ +#define RETRO_ENVIRONMENT_SET_GEOMETRY 37 + /* const struct retro_game_geometry * -- + * This environment call is similar to SET_SYSTEM_AV_INFO for changing + * video parameters, but provides a guarantee that drivers will not be + * reinitialized. + * This can only be called from within retro_run(). + * + * The purpose of this call is to allow a core to alter nominal + * width/heights as well as aspect ratios on-the-fly, which can be + * useful for some emulators to change in run-time. + * + * max_width/max_height arguments are ignored and cannot be changed + * with this call as this could potentially require a reinitialization or a + * non-constant time operation. + * If max_width/max_height are to be changed, SET_SYSTEM_AV_INFO is required. + * + * A frontend must guarantee that this environment call completes in + * constant time. + */ +#define RETRO_ENVIRONMENT_GET_USERNAME 38 + /* const char ** + * Returns the specified username of the frontend, if specified by the user. + * This username can be used as a nickname for a core that has online facilities + * or any other mode where personalization of the user is desirable. + * The returned value can be NULL. + * If this environ callback is used by a core that requires a valid username, + * a default username should be specified by the core. + */ +#define RETRO_ENVIRONMENT_GET_LANGUAGE 39 + /* unsigned * -- + * Returns the specified language of the frontend, if specified by the user. + * It can be used by the core for localization purposes. + */ +#define RETRO_ENVIRONMENT_GET_CURRENT_SOFTWARE_FRAMEBUFFER (40 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* struct retro_framebuffer * -- + * Returns a preallocated framebuffer which the core can use for rendering + * the frame into when not using SET_HW_RENDER. + * The framebuffer returned from this call must not be used + * after the current call to retro_run() returns. + * + * The goal of this call is to allow zero-copy behavior where a core + * can render directly into video memory, avoiding extra bandwidth cost by copying + * memory from core to video memory. + * + * If this call succeeds and the core renders into it, + * the framebuffer pointer and pitch can be passed to retro_video_refresh_t. + * If the buffer from GET_CURRENT_SOFTWARE_FRAMEBUFFER is to be used, + * the core must pass the exact + * same pointer as returned by GET_CURRENT_SOFTWARE_FRAMEBUFFER; + * i.e. passing a pointer which is offset from the + * buffer is undefined. The width, height and pitch parameters + * must also match exactly to the values obtained from GET_CURRENT_SOFTWARE_FRAMEBUFFER. + * + * It is possible for a frontend to return a different pixel format + * than the one used in SET_PIXEL_FORMAT. This can happen if the frontend + * needs to perform conversion. + * + * It is still valid for a core to render to a different buffer + * even if GET_CURRENT_SOFTWARE_FRAMEBUFFER succeeds. + * + * A frontend must make sure that the pointer obtained from this function is + * writeable (and readable). + */ +#define RETRO_ENVIRONMENT_GET_HW_RENDER_INTERFACE (41 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* const struct retro_hw_render_interface ** -- + * Returns an API specific rendering interface for accessing API specific data. + * Not all HW rendering APIs support or need this. + * The contents of the returned pointer is specific to the rendering API + * being used. See the various headers like libretro_vulkan.h, etc. + * + * GET_HW_RENDER_INTERFACE cannot be called before context_reset has been called. + * Similarly, after context_destroyed callback returns, + * the contents of the HW_RENDER_INTERFACE are invalidated. + */ +#define RETRO_ENVIRONMENT_SET_SUPPORT_ACHIEVEMENTS (42 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* const bool * -- + * If true, the libretro implementation supports achievements + * either via memory descriptors set with RETRO_ENVIRONMENT_SET_MEMORY_MAPS + * or via retro_get_memory_data/retro_get_memory_size. + * + * This must be called before the first call to retro_run. + */ +#define RETRO_ENVIRONMENT_SET_HW_RENDER_CONTEXT_NEGOTIATION_INTERFACE (43 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* const struct retro_hw_render_context_negotiation_interface * -- + * Sets an interface which lets the libretro core negotiate with frontend how a context is created. + * The semantics of this interface depends on which API is used in SET_HW_RENDER earlier. + * This interface will be used when the frontend is trying to create a HW rendering context, + * so it will be used after SET_HW_RENDER, but before the context_reset callback. + */ +#define RETRO_ENVIRONMENT_SET_SERIALIZATION_QUIRKS 44 + /* uint64_t * -- + * Sets quirk flags associated with serialization. The frontend will zero any flags it doesn't + * recognize or support. Should be set in either retro_init or retro_load_game, but not both. + */ +#define RETRO_ENVIRONMENT_SET_HW_SHARED_CONTEXT (44 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* N/A (null) * -- + * The frontend will try to use a 'shared' hardware context (mostly applicable + * to OpenGL) when a hardware context is being set up. + * + * Returns true if the frontend supports shared hardware contexts and false + * if the frontend does not support shared hardware contexts. + * + * This will do nothing on its own until SET_HW_RENDER env callbacks are + * being used. + */ +#define RETRO_ENVIRONMENT_GET_VFS_INTERFACE (45 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* struct retro_vfs_interface_info * -- + * Gets access to the VFS interface. + * VFS presence needs to be queried prior to load_game or any + * get_system/save/other_directory being called to let front end know + * core supports VFS before it starts handing out paths. + * It is recomended to do so in retro_set_environment + */ +#define RETRO_ENVIRONMENT_GET_LED_INTERFACE (46 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* struct retro_led_interface * -- + * Gets an interface which is used by a libretro core to set + * state of LEDs. + */ +#define RETRO_ENVIRONMENT_GET_AUDIO_VIDEO_ENABLE (47 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* int * -- + * Tells the core if the frontend wants audio or video. + * If disabled, the frontend will discard the audio or video, + * so the core may decide to skip generating a frame or generating audio. + * This is mainly used for increasing performance. + * Bit 0 (value 1): Enable Video + * Bit 1 (value 2): Enable Audio + * Bit 2 (value 4): Use Fast Savestates. + * Bit 3 (value 8): Hard Disable Audio + * Other bits are reserved for future use and will default to zero. + * If video is disabled: + * * The frontend wants the core to not generate any video, + * including presenting frames via hardware acceleration. + * * The frontend's video frame callback will do nothing. + * * After running the frame, the video output of the next frame should be + * no different than if video was enabled, and saving and loading state + * should have no issues. + * If audio is disabled: + * * The frontend wants the core to not generate any audio. + * * The frontend's audio callbacks will do nothing. + * * After running the frame, the audio output of the next frame should be + * no different than if audio was enabled, and saving and loading state + * should have no issues. + * Fast Savestates: + * * Guaranteed to be created by the same binary that will load them. + * * Will not be written to or read from the disk. + * * Suggest that the core assumes loading state will succeed. + * * Suggest that the core updates its memory buffers in-place if possible. + * * Suggest that the core skips clearing memory. + * * Suggest that the core skips resetting the system. + * * Suggest that the core may skip validation steps. + * Hard Disable Audio: + * * Used for a secondary core when running ahead. + * * Indicates that the frontend will never need audio from the core. + * * Suggests that the core may stop synthesizing audio, but this should not + * compromise emulation accuracy. + * * Audio output for the next frame does not matter, and the frontend will + * never need an accurate audio state in the future. + * * State will never be saved when using Hard Disable Audio. + */ +#define RETRO_ENVIRONMENT_GET_MIDI_INTERFACE (48 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* struct retro_midi_interface ** -- + * Returns a MIDI interface that can be used for raw data I/O. + */ + +#define RETRO_ENVIRONMENT_GET_FASTFORWARDING (49 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* bool * -- + * Boolean value that indicates whether or not the frontend is in + * fastforwarding mode. + */ + +#define RETRO_ENVIRONMENT_GET_TARGET_REFRESH_RATE (50 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* float * -- + * Float value that lets us know what target refresh rate + * is curently in use by the frontend. + * + * The core can use the returned value to set an ideal + * refresh rate/framerate. + */ + +#define RETRO_ENVIRONMENT_GET_INPUT_BITMASKS (51 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* bool * -- + * Boolean value that indicates whether or not the frontend supports + * input bitmasks being returned by retro_input_state_t. The advantage + * of this is that retro_input_state_t has to be only called once to + * grab all button states instead of multiple times. + * + * If it returns true, you can pass RETRO_DEVICE_ID_JOYPAD_MASK as 'id' + * to retro_input_state_t (make sure 'device' is set to RETRO_DEVICE_JOYPAD). + * It will return a bitmask of all the digital buttons. + */ + +#define RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION 52 + /* unsigned * -- + * Unsigned value is the API version number of the core options + * interface supported by the frontend. If callback return false, + * API version is assumed to be 0. + * + * In legacy code, core options are set by passing an array of + * retro_variable structs to RETRO_ENVIRONMENT_SET_VARIABLES. + * This may be still be done regardless of the core options + * interface version. + * + * If version is 1 however, core options may instead be set by + * passing an array of retro_core_option_definition structs to + * RETRO_ENVIRONMENT_SET_CORE_OPTIONS, or a 2D array of + * retro_core_option_definition structs to RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL. + * This allows the core to additionally set option sublabel information + * and/or provide localisation support. + */ + +#define RETRO_ENVIRONMENT_SET_CORE_OPTIONS 53 + /* const struct retro_core_option_definition ** -- + * Allows an implementation to signal the environment + * which variables it might want to check for later using + * GET_VARIABLE. + * This allows the frontend to present these variables to + * a user dynamically. + * This should only be called if RETRO_ENVIRONMENT_GET_ENHANCED_CORE_OPTIONS + * returns an API version of 1. + * This should be called instead of RETRO_ENVIRONMENT_SET_VARIABLES. + * This should be called the first time as early as + * possible (ideally in retro_set_environment). + * Afterwards it may be called again for the core to communicate + * updated options to the frontend, but the number of core + * options must not change from the number in the initial call. + * + * 'data' points to an array of retro_core_option_definition structs + * terminated by a { NULL, NULL, NULL, {{0}}, NULL } element. + * retro_core_option_definition::key should be namespaced to not collide + * with other implementations' keys. e.g. A core called + * 'foo' should use keys named as 'foo_option'. + * retro_core_option_definition::desc should contain a human readable + * description of the key. + * retro_core_option_definition::info should contain any additional human + * readable information text that a typical user may need to + * understand the functionality of the option. + * retro_core_option_definition::values is an array of retro_core_option_value + * structs terminated by a { NULL, NULL } element. + * > retro_core_option_definition::values[index].value is an expected option + * value. + * > retro_core_option_definition::values[index].label is a human readable + * label used when displaying the value on screen. If NULL, + * the value itself is used. + * retro_core_option_definition::default_value is the default core option + * setting. It must match one of the expected option values in the + * retro_core_option_definition::values array. If it does not, or the + * default value is NULL, the first entry in the + * retro_core_option_definition::values array is treated as the default. + * + * The number of possible options should be very limited, + * and must be less than RETRO_NUM_CORE_OPTION_VALUES_MAX. + * i.e. it should be feasible to cycle through options + * without a keyboard. + * + * First entry should be treated as a default. + * + * Example entry: + * { + * "foo_option", + * "Speed hack coprocessor X", + * "Provides increased performance at the expense of reduced accuracy", + * { + * { "false", NULL }, + * { "true", NULL }, + * { "unstable", "Turbo (Unstable)" }, + * { NULL, NULL }, + * }, + * "false" + * } + * + * Only strings are operated on. The possible values will + * generally be displayed and stored as-is by the frontend. + */ + +#define RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL 54 + /* const struct retro_core_options_intl * -- + * Allows an implementation to signal the environment + * which variables it might want to check for later using + * GET_VARIABLE. + * This allows the frontend to present these variables to + * a user dynamically. + * This should only be called if RETRO_ENVIRONMENT_GET_ENHANCED_CORE_OPTIONS + * returns an API version of 1. + * This should be called instead of RETRO_ENVIRONMENT_SET_VARIABLES. + * This should be called the first time as early as + * possible (ideally in retro_set_environment). + * Afterwards it may be called again for the core to communicate + * updated options to the frontend, but the number of core + * options must not change from the number in the initial call. + * + * This is fundamentally the same as RETRO_ENVIRONMENT_SET_CORE_OPTIONS, + * with the addition of localisation support. The description of the + * RETRO_ENVIRONMENT_SET_CORE_OPTIONS callback should be consulted + * for further details. + * + * 'data' points to a retro_core_options_intl struct. + * + * retro_core_options_intl::us is a pointer to an array of + * retro_core_option_definition structs defining the US English + * core options implementation. It must point to a valid array. + * + * retro_core_options_intl::local is a pointer to an array of + * retro_core_option_definition structs defining core options for + * the current frontend language. It may be NULL (in which case + * retro_core_options_intl::us is used by the frontend). Any items + * missing from this array will be read from retro_core_options_intl::us + * instead. + * + * NOTE: Default core option values are always taken from the + * retro_core_options_intl::us array. Any default values in + * retro_core_options_intl::local array will be ignored. + */ + +#define RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY 55 + /* struct retro_core_option_display * -- + * + * Allows an implementation to signal the environment to show + * or hide a variable when displaying core options. This is + * considered a *suggestion*. The frontend is free to ignore + * this callback, and its implementation not considered mandatory. + * + * 'data' points to a retro_core_option_display struct + * + * retro_core_option_display::key is a variable identifier + * which has already been set by SET_VARIABLES/SET_CORE_OPTIONS. + * + * retro_core_option_display::visible is a boolean, specifying + * whether variable should be displayed + * + * Note that all core option variables will be set visible by + * default when calling SET_VARIABLES/SET_CORE_OPTIONS. + */ + +/* VFS functionality */ + +/* File paths: + * File paths passed as parameters when using this API shall be well formed UNIX-style, + * using "/" (unquoted forward slash) as directory separator regardless of the platform's native separator. + * Paths shall also include at least one forward slash ("game.bin" is an invalid path, use "./game.bin" instead). + * Other than the directory separator, cores shall not make assumptions about path format: + * "C:/path/game.bin", "http://example.com/game.bin", "#game/game.bin", "./game.bin" (without quotes) are all valid paths. + * Cores may replace the basename or remove path components from the end, and/or add new components; + * however, cores shall not append "./", "../" or multiple consecutive forward slashes ("//") to paths they request to front end. + * The frontend is encouraged to make such paths work as well as it can, but is allowed to give up if the core alters paths too much. + * Frontends are encouraged, but not required, to support native file system paths (modulo replacing the directory separator, if applicable). + * Cores are allowed to try using them, but must remain functional if the front rejects such requests. + * Cores are encouraged to use the libretro-common filestream functions for file I/O, + * as they seamlessly integrate with VFS, deal with directory separator replacement as appropriate + * and provide platform-specific fallbacks in cases where front ends do not support VFS. */ + +/* Opaque file handle + * Introduced in VFS API v1 */ +struct retro_vfs_file_handle; + +/* Opaque directory handle + * Introduced in VFS API v3 */ +struct retro_vfs_dir_handle; + +/* File open flags + * Introduced in VFS API v1 */ +#define RETRO_VFS_FILE_ACCESS_READ (1 << 0) /* Read only mode */ +#define RETRO_VFS_FILE_ACCESS_WRITE (1 << 1) /* Write only mode, discard contents and overwrites existing file unless RETRO_VFS_FILE_ACCESS_UPDATE is also specified */ +#define RETRO_VFS_FILE_ACCESS_READ_WRITE (RETRO_VFS_FILE_ACCESS_READ | RETRO_VFS_FILE_ACCESS_WRITE) /* Read-write mode, discard contents and overwrites existing file unless RETRO_VFS_FILE_ACCESS_UPDATE is also specified*/ +#define RETRO_VFS_FILE_ACCESS_UPDATE_EXISTING (1 << 2) /* Prevents discarding content of existing files opened for writing */ + +/* These are only hints. The frontend may choose to ignore them. Other than RAM/CPU/etc use, + and how they react to unlikely external interference (for example someone else writing to that file, + or the file's server going down), behavior will not change. */ +#define RETRO_VFS_FILE_ACCESS_HINT_NONE (0) +/* Indicate that the file will be accessed many times. The frontend should aggressively cache everything. */ +#define RETRO_VFS_FILE_ACCESS_HINT_FREQUENT_ACCESS (1 << 0) + +/* Seek positions */ +#define RETRO_VFS_SEEK_POSITION_START 0 +#define RETRO_VFS_SEEK_POSITION_CURRENT 1 +#define RETRO_VFS_SEEK_POSITION_END 2 + +/* stat() result flags + * Introduced in VFS API v3 */ +#define RETRO_VFS_STAT_IS_VALID (1 << 0) +#define RETRO_VFS_STAT_IS_DIRECTORY (1 << 1) +#define RETRO_VFS_STAT_IS_CHARACTER_SPECIAL (1 << 2) + +/* Get path from opaque handle. Returns the exact same path passed to file_open when getting the handle + * Introduced in VFS API v1 */ +typedef const char *(RETRO_CALLCONV *retro_vfs_get_path_t)(struct retro_vfs_file_handle *stream); + +/* Open a file for reading or writing. If path points to a directory, this will + * fail. Returns the opaque file handle, or NULL for error. + * Introduced in VFS API v1 */ +typedef struct retro_vfs_file_handle *(RETRO_CALLCONV *retro_vfs_open_t)(const char *path, unsigned mode, unsigned hints); + +/* Close the file and release its resources. Must be called if open_file returns non-NULL. Returns 0 on success, -1 on failure. + * Whether the call succeeds ot not, the handle passed as parameter becomes invalid and should no longer be used. + * Introduced in VFS API v1 */ +typedef int (RETRO_CALLCONV *retro_vfs_close_t)(struct retro_vfs_file_handle *stream); + +/* Return the size of the file in bytes, or -1 for error. + * Introduced in VFS API v1 */ +typedef int64_t (RETRO_CALLCONV *retro_vfs_size_t)(struct retro_vfs_file_handle *stream); + +/* Truncate file to specified size. Returns 0 on success or -1 on error + * Introduced in VFS API v2 */ +typedef int64_t (RETRO_CALLCONV *retro_vfs_truncate_t)(struct retro_vfs_file_handle *stream, int64_t length); + +/* Get the current read / write position for the file. Returns -1 for error. + * Introduced in VFS API v1 */ +typedef int64_t (RETRO_CALLCONV *retro_vfs_tell_t)(struct retro_vfs_file_handle *stream); + +/* Set the current read/write position for the file. Returns the new position, -1 for error. + * Introduced in VFS API v1 */ +typedef int64_t (RETRO_CALLCONV *retro_vfs_seek_t)(struct retro_vfs_file_handle *stream, int64_t offset, int seek_position); + +/* Read data from a file. Returns the number of bytes read, or -1 for error. + * Introduced in VFS API v1 */ +typedef int64_t (RETRO_CALLCONV *retro_vfs_read_t)(struct retro_vfs_file_handle *stream, void *s, uint64_t len); + +/* Write data to a file. Returns the number of bytes written, or -1 for error. + * Introduced in VFS API v1 */ +typedef int64_t (RETRO_CALLCONV *retro_vfs_write_t)(struct retro_vfs_file_handle *stream, const void *s, uint64_t len); + +/* Flush pending writes to file, if using buffered IO. Returns 0 on sucess, or -1 on failure. + * Introduced in VFS API v1 */ +typedef int (RETRO_CALLCONV *retro_vfs_flush_t)(struct retro_vfs_file_handle *stream); + +/* Delete the specified file. Returns 0 on success, -1 on failure + * Introduced in VFS API v1 */ +typedef int (RETRO_CALLCONV *retro_vfs_remove_t)(const char *path); + +/* Rename the specified file. Returns 0 on success, -1 on failure + * Introduced in VFS API v1 */ +typedef int (RETRO_CALLCONV *retro_vfs_rename_t)(const char *old_path, const char *new_path); + +/* Stat the specified file. Retruns a bitmask of RETRO_VFS_STAT_* flags, none are set if path was not valid. + * Additionally stores file size in given variable, unless NULL is given. + * Introduced in VFS API v3 */ +typedef int (RETRO_CALLCONV *retro_vfs_stat_t)(const char *path, int32_t *size); + +/* Create the specified directory. Returns 0 on success, -1 on unknown failure, -2 if already exists. + * Introduced in VFS API v3 */ +typedef int (RETRO_CALLCONV *retro_vfs_mkdir_t)(const char *dir); + +/* Open the specified directory for listing. Returns the opaque dir handle, or NULL for error. + * Support for the include_hidden argument may vary depending on the platform. + * Introduced in VFS API v3 */ +typedef struct retro_vfs_dir_handle *(RETRO_CALLCONV *retro_vfs_opendir_t)(const char *dir, bool include_hidden); + +/* Read the directory entry at the current position, and move the read pointer to the next position. + * Returns true on success, false if already on the last entry. + * Introduced in VFS API v3 */ +typedef bool (RETRO_CALLCONV *retro_vfs_readdir_t)(struct retro_vfs_dir_handle *dirstream); + +/* Get the name of the last entry read. Returns a string on success, or NULL for error. + * The returned string pointer is valid until the next call to readdir or closedir. + * Introduced in VFS API v3 */ +typedef const char *(RETRO_CALLCONV *retro_vfs_dirent_get_name_t)(struct retro_vfs_dir_handle *dirstream); + +/* Check if the last entry read was a directory. Returns true if it was, false otherwise (or on error). + * Introduced in VFS API v3 */ +typedef bool (RETRO_CALLCONV *retro_vfs_dirent_is_dir_t)(struct retro_vfs_dir_handle *dirstream); + +/* Close the directory and release its resources. Must be called if opendir returns non-NULL. Returns 0 on success, -1 on failure. + * Whether the call succeeds ot not, the handle passed as parameter becomes invalid and should no longer be used. + * Introduced in VFS API v3 */ +typedef int (RETRO_CALLCONV *retro_vfs_closedir_t)(struct retro_vfs_dir_handle *dirstream); + +struct retro_vfs_interface +{ + /* VFS API v1 */ + retro_vfs_get_path_t get_path; + retro_vfs_open_t open; + retro_vfs_close_t close; + retro_vfs_size_t size; + retro_vfs_tell_t tell; + retro_vfs_seek_t seek; + retro_vfs_read_t read; + retro_vfs_write_t write; + retro_vfs_flush_t flush; + retro_vfs_remove_t remove; + retro_vfs_rename_t rename; + /* VFS API v2 */ + retro_vfs_truncate_t truncate; + /* VFS API v3 */ + retro_vfs_stat_t stat; + retro_vfs_mkdir_t mkdir; + retro_vfs_opendir_t opendir; + retro_vfs_readdir_t readdir; + retro_vfs_dirent_get_name_t dirent_get_name; + retro_vfs_dirent_is_dir_t dirent_is_dir; + retro_vfs_closedir_t closedir; +}; + +struct retro_vfs_interface_info +{ + /* Set by core: should this be higher than the version the front end supports, + * front end will return false in the RETRO_ENVIRONMENT_GET_VFS_INTERFACE call + * Introduced in VFS API v1 */ + uint32_t required_interface_version; + + /* Frontend writes interface pointer here. The frontend also sets the actual + * version, must be at least required_interface_version. + * Introduced in VFS API v1 */ + struct retro_vfs_interface *iface; +}; + +enum retro_hw_render_interface_type +{ + RETRO_HW_RENDER_INTERFACE_VULKAN = 0, + RETRO_HW_RENDER_INTERFACE_D3D9 = 1, + RETRO_HW_RENDER_INTERFACE_D3D10 = 2, + RETRO_HW_RENDER_INTERFACE_D3D11 = 3, + RETRO_HW_RENDER_INTERFACE_D3D12 = 4, + RETRO_HW_RENDER_INTERFACE_GSKIT_PS2 = 5, + RETRO_HW_RENDER_INTERFACE_DUMMY = INT_MAX +}; + +/* Base struct. All retro_hw_render_interface_* types + * contain at least these fields. */ +struct retro_hw_render_interface +{ + enum retro_hw_render_interface_type interface_type; + unsigned interface_version; +}; + +typedef void (RETRO_CALLCONV *retro_set_led_state_t)(int led, int state); +struct retro_led_interface +{ + retro_set_led_state_t set_led_state; +}; + +/* Retrieves the current state of the MIDI input. + * Returns true if it's enabled, false otherwise. */ +typedef bool (RETRO_CALLCONV *retro_midi_input_enabled_t)(void); + +/* Retrieves the current state of the MIDI output. + * Returns true if it's enabled, false otherwise */ +typedef bool (RETRO_CALLCONV *retro_midi_output_enabled_t)(void); + +/* Reads next byte from the input stream. + * Returns true if byte is read, false otherwise. */ +typedef bool (RETRO_CALLCONV *retro_midi_read_t)(uint8_t *byte); + +/* Writes byte to the output stream. + * 'delta_time' is in microseconds and represent time elapsed since previous write. + * Returns true if byte is written, false otherwise. */ +typedef bool (RETRO_CALLCONV *retro_midi_write_t)(uint8_t byte, uint32_t delta_time); + +/* Flushes previously written data. + * Returns true if successful, false otherwise. */ +typedef bool (RETRO_CALLCONV *retro_midi_flush_t)(void); + +struct retro_midi_interface +{ + retro_midi_input_enabled_t input_enabled; + retro_midi_output_enabled_t output_enabled; + retro_midi_read_t read; + retro_midi_write_t write; + retro_midi_flush_t flush; +}; + +enum retro_hw_render_context_negotiation_interface_type +{ + RETRO_HW_RENDER_CONTEXT_NEGOTIATION_INTERFACE_VULKAN = 0, + RETRO_HW_RENDER_CONTEXT_NEGOTIATION_INTERFACE_DUMMY = INT_MAX +}; + +/* Base struct. All retro_hw_render_context_negotiation_interface_* types + * contain at least these fields. */ +struct retro_hw_render_context_negotiation_interface +{ + enum retro_hw_render_context_negotiation_interface_type interface_type; + unsigned interface_version; +}; + +/* Serialized state is incomplete in some way. Set if serialization is + * usable in typical end-user cases but should not be relied upon to + * implement frame-sensitive frontend features such as netplay or + * rerecording. */ +#define RETRO_SERIALIZATION_QUIRK_INCOMPLETE (1 << 0) +/* The core must spend some time initializing before serialization is + * supported. retro_serialize() will initially fail; retro_unserialize() + * and retro_serialize_size() may or may not work correctly either. */ +#define RETRO_SERIALIZATION_QUIRK_MUST_INITIALIZE (1 << 1) +/* Serialization size may change within a session. */ +#define RETRO_SERIALIZATION_QUIRK_CORE_VARIABLE_SIZE (1 << 2) +/* Set by the frontend to acknowledge that it supports variable-sized + * states. */ +#define RETRO_SERIALIZATION_QUIRK_FRONT_VARIABLE_SIZE (1 << 3) +/* Serialized state can only be loaded during the same session. */ +#define RETRO_SERIALIZATION_QUIRK_SINGLE_SESSION (1 << 4) +/* Serialized state cannot be loaded on an architecture with a different + * endianness from the one it was saved on. */ +#define RETRO_SERIALIZATION_QUIRK_ENDIAN_DEPENDENT (1 << 5) +/* Serialized state cannot be loaded on a different platform from the one it + * was saved on for reasons other than endianness, such as word size + * dependence */ +#define RETRO_SERIALIZATION_QUIRK_PLATFORM_DEPENDENT (1 << 6) + +#define RETRO_MEMDESC_CONST (1 << 0) /* The frontend will never change this memory area once retro_load_game has returned. */ +#define RETRO_MEMDESC_BIGENDIAN (1 << 1) /* The memory area contains big endian data. Default is little endian. */ +#define RETRO_MEMDESC_SYSTEM_RAM (1 << 2) /* The memory area is system RAM. This is main RAM of the gaming system. */ +#define RETRO_MEMDESC_SAVE_RAM (1 << 3) /* The memory area is save RAM. This RAM is usually found on a game cartridge, backed up by a battery. */ +#define RETRO_MEMDESC_VIDEO_RAM (1 << 4) /* The memory area is video RAM (VRAM) */ +#define RETRO_MEMDESC_ALIGN_2 (1 << 16) /* All memory access in this area is aligned to their own size, or 2, whichever is smaller. */ +#define RETRO_MEMDESC_ALIGN_4 (2 << 16) +#define RETRO_MEMDESC_ALIGN_8 (3 << 16) +#define RETRO_MEMDESC_MINSIZE_2 (1 << 24) /* All memory in this region is accessed at least 2 bytes at the time. */ +#define RETRO_MEMDESC_MINSIZE_4 (2 << 24) +#define RETRO_MEMDESC_MINSIZE_8 (3 << 24) +struct retro_memory_descriptor +{ + uint64_t flags; + + /* Pointer to the start of the relevant ROM or RAM chip. + * It's strongly recommended to use 'offset' if possible, rather than + * doing math on the pointer. + * + * If the same byte is mapped my multiple descriptors, their descriptors + * must have the same pointer. + * If 'start' does not point to the first byte in the pointer, put the + * difference in 'offset' instead. + * + * May be NULL if there's nothing usable here (e.g. hardware registers and + * open bus). No flags should be set if the pointer is NULL. + * It's recommended to minimize the number of descriptors if possible, + * but not mandatory. */ + void *ptr; + size_t offset; + + /* This is the location in the emulated address space + * where the mapping starts. */ + size_t start; + + /* Which bits must be same as in 'start' for this mapping to apply. + * The first memory descriptor to claim a certain byte is the one + * that applies. + * A bit which is set in 'start' must also be set in this. + * Can be zero, in which case each byte is assumed mapped exactly once. + * In this case, 'len' must be a power of two. */ + size_t select; + + /* If this is nonzero, the set bits are assumed not connected to the + * memory chip's address pins. */ + size_t disconnect; + + /* This one tells the size of the current memory area. + * If, after start+disconnect are applied, the address is higher than + * this, the highest bit of the address is cleared. + * + * If the address is still too high, the next highest bit is cleared. + * Can be zero, in which case it's assumed to be infinite (as limited + * by 'select' and 'disconnect'). */ + size_t len; + + /* To go from emulated address to physical address, the following + * order applies: + * Subtract 'start', pick off 'disconnect', apply 'len', add 'offset'. */ + + /* The address space name must consist of only a-zA-Z0-9_-, + * should be as short as feasible (maximum length is 8 plus the NUL), + * and may not be any other address space plus one or more 0-9A-F + * at the end. + * However, multiple memory descriptors for the same address space is + * allowed, and the address space name can be empty. NULL is treated + * as empty. + * + * Address space names are case sensitive, but avoid lowercase if possible. + * The same pointer may exist in multiple address spaces. + * + * Examples: + * blank+blank - valid (multiple things may be mapped in the same namespace) + * 'Sp'+'Sp' - valid (multiple things may be mapped in the same namespace) + * 'A'+'B' - valid (neither is a prefix of each other) + * 'S'+blank - valid ('S' is not in 0-9A-F) + * 'a'+blank - valid ('a' is not in 0-9A-F) + * 'a'+'A' - valid (neither is a prefix of each other) + * 'AR'+blank - valid ('R' is not in 0-9A-F) + * 'ARB'+blank - valid (the B can't be part of the address either, because + * there is no namespace 'AR') + * blank+'B' - not valid, because it's ambigous which address space B1234 + * would refer to. + * The length can't be used for that purpose; the frontend may want + * to append arbitrary data to an address, without a separator. */ + const char *addrspace; + + /* TODO: When finalizing this one, add a description field, which should be + * "WRAM" or something roughly equally long. */ + + /* TODO: When finalizing this one, replace 'select' with 'limit', which tells + * which bits can vary and still refer to the same address (limit = ~select). + * TODO: limit? range? vary? something else? */ + + /* TODO: When finalizing this one, if 'len' is above what 'select' (or + * 'limit') allows, it's bankswitched. Bankswitched data must have both 'len' + * and 'select' != 0, and the mappings don't tell how the system switches the + * banks. */ + + /* TODO: When finalizing this one, fix the 'len' bit removal order. + * For len=0x1800, pointer 0x1C00 should go to 0x1400, not 0x0C00. + * Algorithm: Take bits highest to lowest, but if it goes above len, clear + * the most recent addition and continue on the next bit. + * TODO: Can the above be optimized? Is "remove the lowest bit set in both + * pointer and 'len'" equivalent? */ + + /* TODO: Some emulators (MAME?) emulate big endian systems by only accessing + * the emulated memory in 32-bit chunks, native endian. But that's nothing + * compared to Darek Mihocka + * (section Emulation 103 - Nearly Free Byte Reversal) - he flips the ENTIRE + * RAM backwards! I'll want to represent both of those, via some flags. + * + * I suspect MAME either didn't think of that idea, or don't want the #ifdef. + * Not sure which, nor do I really care. */ + + /* TODO: Some of those flags are unused and/or don't really make sense. Clean + * them up. */ +}; + +/* The frontend may use the largest value of 'start'+'select' in a + * certain namespace to infer the size of the address space. + * + * If the address space is larger than that, a mapping with .ptr=NULL + * should be at the end of the array, with .select set to all ones for + * as long as the address space is big. + * + * Sample descriptors (minus .ptr, and RETRO_MEMFLAG_ on the flags): + * SNES WRAM: + * .start=0x7E0000, .len=0x20000 + * (Note that this must be mapped before the ROM in most cases; some of the + * ROM mappers + * try to claim $7E0000, or at least $7E8000.) + * SNES SPC700 RAM: + * .addrspace="S", .len=0x10000 + * SNES WRAM mirrors: + * .flags=MIRROR, .start=0x000000, .select=0xC0E000, .len=0x2000 + * .flags=MIRROR, .start=0x800000, .select=0xC0E000, .len=0x2000 + * SNES WRAM mirrors, alternate equivalent descriptor: + * .flags=MIRROR, .select=0x40E000, .disconnect=~0x1FFF + * (Various similar constructions can be created by combining parts of + * the above two.) + * SNES LoROM (512KB, mirrored a couple of times): + * .flags=CONST, .start=0x008000, .select=0x408000, .disconnect=0x8000, .len=512*1024 + * .flags=CONST, .start=0x400000, .select=0x400000, .disconnect=0x8000, .len=512*1024 + * SNES HiROM (4MB): + * .flags=CONST, .start=0x400000, .select=0x400000, .len=4*1024*1024 + * .flags=CONST, .offset=0x8000, .start=0x008000, .select=0x408000, .len=4*1024*1024 + * SNES ExHiROM (8MB): + * .flags=CONST, .offset=0, .start=0xC00000, .select=0xC00000, .len=4*1024*1024 + * .flags=CONST, .offset=4*1024*1024, .start=0x400000, .select=0xC00000, .len=4*1024*1024 + * .flags=CONST, .offset=0x8000, .start=0x808000, .select=0xC08000, .len=4*1024*1024 + * .flags=CONST, .offset=4*1024*1024+0x8000, .start=0x008000, .select=0xC08000, .len=4*1024*1024 + * Clarify the size of the address space: + * .ptr=NULL, .select=0xFFFFFF + * .len can be implied by .select in many of them, but was included for clarity. + */ + +struct retro_memory_map +{ + const struct retro_memory_descriptor *descriptors; + unsigned num_descriptors; +}; + +struct retro_controller_description +{ + /* Human-readable description of the controller. Even if using a generic + * input device type, this can be set to the particular device type the + * core uses. */ + const char *desc; + + /* Device type passed to retro_set_controller_port_device(). If the device + * type is a sub-class of a generic input device type, use the + * RETRO_DEVICE_SUBCLASS macro to create an ID. + * + * E.g. RETRO_DEVICE_SUBCLASS(RETRO_DEVICE_JOYPAD, 1). */ + unsigned id; +}; + +struct retro_controller_info +{ + const struct retro_controller_description *types; + unsigned num_types; +}; + +struct retro_subsystem_memory_info +{ + /* The extension associated with a memory type, e.g. "psram". */ + const char *extension; + + /* The memory type for retro_get_memory(). This should be at + * least 0x100 to avoid conflict with standardized + * libretro memory types. */ + unsigned type; +}; + +struct retro_subsystem_rom_info +{ + /* Describes what the content is (SGB BIOS, GB ROM, etc). */ + const char *desc; + + /* Same definition as retro_get_system_info(). */ + const char *valid_extensions; + + /* Same definition as retro_get_system_info(). */ + bool need_fullpath; + + /* Same definition as retro_get_system_info(). */ + bool block_extract; + + /* This is set if the content is required to load a game. + * If this is set to false, a zeroed-out retro_game_info can be passed. */ + bool required; + + /* Content can have multiple associated persistent + * memory types (retro_get_memory()). */ + const struct retro_subsystem_memory_info *memory; + unsigned num_memory; +}; + +struct retro_subsystem_info +{ + /* Human-readable string of the subsystem type, e.g. "Super GameBoy" */ + const char *desc; + + /* A computer friendly short string identifier for the subsystem type. + * This name must be [a-z]. + * E.g. if desc is "Super GameBoy", this can be "sgb". + * This identifier can be used for command-line interfaces, etc. + */ + const char *ident; + + /* Infos for each content file. The first entry is assumed to be the + * "most significant" content for frontend purposes. + * E.g. with Super GameBoy, the first content should be the GameBoy ROM, + * as it is the most "significant" content to a user. + * If a frontend creates new file paths based on the content used + * (e.g. savestates), it should use the path for the first ROM to do so. */ + const struct retro_subsystem_rom_info *roms; + + /* Number of content files associated with a subsystem. */ + unsigned num_roms; + + /* The type passed to retro_load_game_special(). */ + unsigned id; +}; + +typedef void (RETRO_CALLCONV *retro_proc_address_t)(void); + +/* libretro API extension functions: + * (None here so far). + * + * Get a symbol from a libretro core. + * Cores should only return symbols which are actual + * extensions to the libretro API. + * + * Frontends should not use this to obtain symbols to standard + * libretro entry points (static linking or dlsym). + * + * The symbol name must be equal to the function name, + * e.g. if void retro_foo(void); exists, the symbol must be called "retro_foo". + * The returned function pointer must be cast to the corresponding type. + */ +typedef retro_proc_address_t (RETRO_CALLCONV *retro_get_proc_address_t)(const char *sym); + +struct retro_get_proc_address_interface +{ + retro_get_proc_address_t get_proc_address; +}; + +enum retro_log_level +{ + RETRO_LOG_DEBUG = 0, + RETRO_LOG_INFO, + RETRO_LOG_WARN, + RETRO_LOG_ERROR, + + RETRO_LOG_DUMMY = INT_MAX +}; + +/* Logging function. Takes log level argument as well. */ +typedef void (RETRO_CALLCONV *retro_log_printf_t)(enum retro_log_level level, + const char *fmt, ...); + +struct retro_log_callback +{ + retro_log_printf_t log; +}; + +/* Performance related functions */ + +/* ID values for SIMD CPU features */ +#define RETRO_SIMD_SSE (1 << 0) +#define RETRO_SIMD_SSE2 (1 << 1) +#define RETRO_SIMD_VMX (1 << 2) +#define RETRO_SIMD_VMX128 (1 << 3) +#define RETRO_SIMD_AVX (1 << 4) +#define RETRO_SIMD_NEON (1 << 5) +#define RETRO_SIMD_SSE3 (1 << 6) +#define RETRO_SIMD_SSSE3 (1 << 7) +#define RETRO_SIMD_MMX (1 << 8) +#define RETRO_SIMD_MMXEXT (1 << 9) +#define RETRO_SIMD_SSE4 (1 << 10) +#define RETRO_SIMD_SSE42 (1 << 11) +#define RETRO_SIMD_AVX2 (1 << 12) +#define RETRO_SIMD_VFPU (1 << 13) +#define RETRO_SIMD_PS (1 << 14) +#define RETRO_SIMD_AES (1 << 15) +#define RETRO_SIMD_VFPV3 (1 << 16) +#define RETRO_SIMD_VFPV4 (1 << 17) +#define RETRO_SIMD_POPCNT (1 << 18) +#define RETRO_SIMD_MOVBE (1 << 19) +#define RETRO_SIMD_CMOV (1 << 20) +#define RETRO_SIMD_ASIMD (1 << 21) + +typedef uint64_t retro_perf_tick_t; +typedef int64_t retro_time_t; + +struct retro_perf_counter +{ + const char *ident; + retro_perf_tick_t start; + retro_perf_tick_t total; + retro_perf_tick_t call_cnt; + + bool registered; +}; + +/* Returns current time in microseconds. + * Tries to use the most accurate timer available. + */ +typedef retro_time_t (RETRO_CALLCONV *retro_perf_get_time_usec_t)(void); + +/* A simple counter. Usually nanoseconds, but can also be CPU cycles. + * Can be used directly if desired (when creating a more sophisticated + * performance counter system). + * */ +typedef retro_perf_tick_t (RETRO_CALLCONV *retro_perf_get_counter_t)(void); + +/* Returns a bit-mask of detected CPU features (RETRO_SIMD_*). */ +typedef uint64_t (RETRO_CALLCONV *retro_get_cpu_features_t)(void); + +/* Asks frontend to log and/or display the state of performance counters. + * Performance counters can always be poked into manually as well. + */ +typedef void (RETRO_CALLCONV *retro_perf_log_t)(void); + +/* Register a performance counter. + * ident field must be set with a discrete value and other values in + * retro_perf_counter must be 0. + * Registering can be called multiple times. To avoid calling to + * frontend redundantly, you can check registered field first. */ +typedef void (RETRO_CALLCONV *retro_perf_register_t)(struct retro_perf_counter *counter); + +/* Starts a registered counter. */ +typedef void (RETRO_CALLCONV *retro_perf_start_t)(struct retro_perf_counter *counter); + +/* Stops a registered counter. */ +typedef void (RETRO_CALLCONV *retro_perf_stop_t)(struct retro_perf_counter *counter); + +/* For convenience it can be useful to wrap register, start and stop in macros. + * E.g.: + * #ifdef LOG_PERFORMANCE + * #define RETRO_PERFORMANCE_INIT(perf_cb, name) static struct retro_perf_counter name = {#name}; if (!name.registered) perf_cb.perf_register(&(name)) + * #define RETRO_PERFORMANCE_START(perf_cb, name) perf_cb.perf_start(&(name)) + * #define RETRO_PERFORMANCE_STOP(perf_cb, name) perf_cb.perf_stop(&(name)) + * #else + * ... Blank macros ... + * #endif + * + * These can then be used mid-functions around code snippets. + * + * extern struct retro_perf_callback perf_cb; * Somewhere in the core. + * + * void do_some_heavy_work(void) + * { + * RETRO_PERFORMANCE_INIT(cb, work_1; + * RETRO_PERFORMANCE_START(cb, work_1); + * heavy_work_1(); + * RETRO_PERFORMANCE_STOP(cb, work_1); + * + * RETRO_PERFORMANCE_INIT(cb, work_2); + * RETRO_PERFORMANCE_START(cb, work_2); + * heavy_work_2(); + * RETRO_PERFORMANCE_STOP(cb, work_2); + * } + * + * void retro_deinit(void) + * { + * perf_cb.perf_log(); * Log all perf counters here for example. + * } + */ + +struct retro_perf_callback +{ + retro_perf_get_time_usec_t get_time_usec; + retro_get_cpu_features_t get_cpu_features; + + retro_perf_get_counter_t get_perf_counter; + retro_perf_register_t perf_register; + retro_perf_start_t perf_start; + retro_perf_stop_t perf_stop; + retro_perf_log_t perf_log; +}; + +/* FIXME: Document the sensor API and work out behavior. + * It will be marked as experimental until then. + */ +enum retro_sensor_action +{ + RETRO_SENSOR_ACCELEROMETER_ENABLE = 0, + RETRO_SENSOR_ACCELEROMETER_DISABLE, + + RETRO_SENSOR_DUMMY = INT_MAX +}; + +/* Id values for SENSOR types. */ +#define RETRO_SENSOR_ACCELEROMETER_X 0 +#define RETRO_SENSOR_ACCELEROMETER_Y 1 +#define RETRO_SENSOR_ACCELEROMETER_Z 2 + +typedef bool (RETRO_CALLCONV *retro_set_sensor_state_t)(unsigned port, + enum retro_sensor_action action, unsigned rate); + +typedef float (RETRO_CALLCONV *retro_sensor_get_input_t)(unsigned port, unsigned id); + +struct retro_sensor_interface +{ + retro_set_sensor_state_t set_sensor_state; + retro_sensor_get_input_t get_sensor_input; +}; + +enum retro_camera_buffer +{ + RETRO_CAMERA_BUFFER_OPENGL_TEXTURE = 0, + RETRO_CAMERA_BUFFER_RAW_FRAMEBUFFER, + + RETRO_CAMERA_BUFFER_DUMMY = INT_MAX +}; + +/* Starts the camera driver. Can only be called in retro_run(). */ +typedef bool (RETRO_CALLCONV *retro_camera_start_t)(void); + +/* Stops the camera driver. Can only be called in retro_run(). */ +typedef void (RETRO_CALLCONV *retro_camera_stop_t)(void); + +/* Callback which signals when the camera driver is initialized + * and/or deinitialized. + * retro_camera_start_t can be called in initialized callback. + */ +typedef void (RETRO_CALLCONV *retro_camera_lifetime_status_t)(void); + +/* A callback for raw framebuffer data. buffer points to an XRGB8888 buffer. + * Width, height and pitch are similar to retro_video_refresh_t. + * First pixel is top-left origin. + */ +typedef void (RETRO_CALLCONV *retro_camera_frame_raw_framebuffer_t)(const uint32_t *buffer, + unsigned width, unsigned height, size_t pitch); + +/* A callback for when OpenGL textures are used. + * + * texture_id is a texture owned by camera driver. + * Its state or content should be considered immutable, except for things like + * texture filtering and clamping. + * + * texture_target is the texture target for the GL texture. + * These can include e.g. GL_TEXTURE_2D, GL_TEXTURE_RECTANGLE, and possibly + * more depending on extensions. + * + * affine points to a packed 3x3 column-major matrix used to apply an affine + * transform to texture coordinates. (affine_matrix * vec3(coord_x, coord_y, 1.0)) + * After transform, normalized texture coord (0, 0) should be bottom-left + * and (1, 1) should be top-right (or (width, height) for RECTANGLE). + * + * GL-specific typedefs are avoided here to avoid relying on gl.h in + * the API definition. + */ +typedef void (RETRO_CALLCONV *retro_camera_frame_opengl_texture_t)(unsigned texture_id, + unsigned texture_target, const float *affine); + +struct retro_camera_callback +{ + /* Set by libretro core. + * Example bitmask: caps = (1 << RETRO_CAMERA_BUFFER_OPENGL_TEXTURE) | (1 << RETRO_CAMERA_BUFFER_RAW_FRAMEBUFFER). + */ + uint64_t caps; + + /* Desired resolution for camera. Is only used as a hint. */ + unsigned width; + unsigned height; + + /* Set by frontend. */ + retro_camera_start_t start; + retro_camera_stop_t stop; + + /* Set by libretro core if raw framebuffer callbacks will be used. */ + retro_camera_frame_raw_framebuffer_t frame_raw_framebuffer; + + /* Set by libretro core if OpenGL texture callbacks will be used. */ + retro_camera_frame_opengl_texture_t frame_opengl_texture; + + /* Set by libretro core. Called after camera driver is initialized and + * ready to be started. + * Can be NULL, in which this callback is not called. + */ + retro_camera_lifetime_status_t initialized; + + /* Set by libretro core. Called right before camera driver is + * deinitialized. + * Can be NULL, in which this callback is not called. + */ + retro_camera_lifetime_status_t deinitialized; +}; + +/* Sets the interval of time and/or distance at which to update/poll + * location-based data. + * + * To ensure compatibility with all location-based implementations, + * values for both interval_ms and interval_distance should be provided. + * + * interval_ms is the interval expressed in milliseconds. + * interval_distance is the distance interval expressed in meters. + */ +typedef void (RETRO_CALLCONV *retro_location_set_interval_t)(unsigned interval_ms, + unsigned interval_distance); + +/* Start location services. The device will start listening for changes to the + * current location at regular intervals (which are defined with + * retro_location_set_interval_t). */ +typedef bool (RETRO_CALLCONV *retro_location_start_t)(void); + +/* Stop location services. The device will stop listening for changes + * to the current location. */ +typedef void (RETRO_CALLCONV *retro_location_stop_t)(void); + +/* Get the position of the current location. Will set parameters to + * 0 if no new location update has happened since the last time. */ +typedef bool (RETRO_CALLCONV *retro_location_get_position_t)(double *lat, double *lon, + double *horiz_accuracy, double *vert_accuracy); + +/* Callback which signals when the location driver is initialized + * and/or deinitialized. + * retro_location_start_t can be called in initialized callback. + */ +typedef void (RETRO_CALLCONV *retro_location_lifetime_status_t)(void); + +struct retro_location_callback +{ + retro_location_start_t start; + retro_location_stop_t stop; + retro_location_get_position_t get_position; + retro_location_set_interval_t set_interval; + + retro_location_lifetime_status_t initialized; + retro_location_lifetime_status_t deinitialized; +}; + +enum retro_rumble_effect +{ + RETRO_RUMBLE_STRONG = 0, + RETRO_RUMBLE_WEAK = 1, + + RETRO_RUMBLE_DUMMY = INT_MAX +}; + +/* Sets rumble state for joypad plugged in port 'port'. + * Rumble effects are controlled independently, + * and setting e.g. strong rumble does not override weak rumble. + * Strength has a range of [0, 0xffff]. + * + * Returns true if rumble state request was honored. + * Calling this before first retro_run() is likely to return false. */ +typedef bool (RETRO_CALLCONV *retro_set_rumble_state_t)(unsigned port, + enum retro_rumble_effect effect, uint16_t strength); + +struct retro_rumble_interface +{ + retro_set_rumble_state_t set_rumble_state; +}; + +/* Notifies libretro that audio data should be written. */ +typedef void (RETRO_CALLCONV *retro_audio_callback_t)(void); + +/* True: Audio driver in frontend is active, and callback is + * expected to be called regularily. + * False: Audio driver in frontend is paused or inactive. + * Audio callback will not be called until set_state has been + * called with true. + * Initial state is false (inactive). + */ +typedef void (RETRO_CALLCONV *retro_audio_set_state_callback_t)(bool enabled); + +struct retro_audio_callback +{ + retro_audio_callback_t callback; + retro_audio_set_state_callback_t set_state; +}; + +/* 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 reference frame time value will be used. */ +typedef int64_t retro_usec_t; +typedef void (RETRO_CALLCONV *retro_frame_time_callback_t)(retro_usec_t usec); +struct retro_frame_time_callback +{ + retro_frame_time_callback_t callback; + /* 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. */ + retro_usec_t reference; +}; + +/* 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) + +/* 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 initialize resources. + */ +typedef void (RETRO_CALLCONV *retro_hw_context_reset_t)(void); + +/* Gets current framebuffer which is to be rendered to. + * Could change every frame potentially. + */ +typedef uintptr_t (RETRO_CALLCONV *retro_hw_get_current_framebuffer_t)(void); + +/* Get a symbol from HW context. */ +typedef retro_proc_address_t (RETRO_CALLCONV *retro_hw_get_proc_address_t)(const char *sym); + +enum retro_hw_context_type +{ + RETRO_HW_CONTEXT_NONE = 0, + /* OpenGL 2.x. Driver can choose to use latest compatibility context. */ + RETRO_HW_CONTEXT_OPENGL = 1, + /* OpenGL ES 2.0. */ + RETRO_HW_CONTEXT_OPENGLES2 = 2, + /* Modern desktop core GL context. Use version_major/ + * version_minor fields to set GL version. */ + RETRO_HW_CONTEXT_OPENGL_CORE = 3, + /* OpenGL ES 3.0 */ + RETRO_HW_CONTEXT_OPENGLES3 = 4, + /* OpenGL ES 3.1+. Set version_major/version_minor. For GLES2 and GLES3, + * use the corresponding enums directly. */ + RETRO_HW_CONTEXT_OPENGLES_VERSION = 5, + + /* Vulkan, see RETRO_ENVIRONMENT_GET_HW_RENDER_INTERFACE. */ + RETRO_HW_CONTEXT_VULKAN = 6, + + /* Direct3D, set version_major to select the type of interface + * returned by RETRO_ENVIRONMENT_GET_HW_RENDER_INTERFACE */ + RETRO_HW_CONTEXT_DIRECT3D = 7, + + RETRO_HW_CONTEXT_DUMMY = INT_MAX +}; + +struct retro_hw_render_callback +{ + /* Which API to use. Set by libretro core. */ + enum retro_hw_context_type context_type; + + /* Called when a context has been created or when it has been reset. + * An OpenGL context is only valid after context_reset() has been called. + * + * When context_reset is called, OpenGL resources in the libretro + * implementation are guaranteed to be invalid. + * + * It is possible that context_reset is called multiple times during an + * application lifecycle. + * If context_reset is called without any notification (context_destroy), + * the OpenGL context was lost and resources should just be recreated + * without any attempt to "free" old resources. + */ + retro_hw_context_reset_t context_reset; + + /* Set by frontend. + * TODO: This is rather obsolete. The frontend should not + * be providing preallocated framebuffers. */ + retro_hw_get_current_framebuffer_t get_current_framebuffer; + + /* Set by frontend. + * Can return all relevant functions, including glClear on Windows. */ + retro_hw_get_proc_address_t get_proc_address; + + /* Set if render buffers should have depth component attached. + * TODO: Obsolete. */ + bool depth; + + /* Set if stencil buffers should be attached. + * TODO: Obsolete. */ + bool stencil; + + /* If depth and stencil are true, a packed 24/8 buffer will be added. + * Only attaching stencil is invalid and will be ignored. */ + + /* Use conventional bottom-left origin convention. If false, + * standard libretro top-left origin semantics are used. + * TODO: Move to GL specific interface. */ + bool bottom_left_origin; + + /* Major version number for core GL context or GLES 3.1+. */ + unsigned version_major; + + /* Minor version number for core GL context or GLES 3.1+. */ + unsigned version_minor; + + /* If this is true, the frontend will go very far to avoid + * resetting context in scenarios like toggling fullscreen, etc. + * TODO: Obsolete? Maybe frontend should just always assume this ... + */ + bool cache_context; + + /* 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. + */ + + /* A callback to be called before the context is destroyed in a + * controlled way by the frontend. */ + retro_hw_context_reset_t context_destroy; + + /* OpenGL resources can be deinitialized cleanly at this step. + * context_destroy can be set to NULL, in which resources will + * just be destroyed without any notification. + * + * Even when context_destroy is non-NULL, it is possible that + * context_reset is called without any destroy notification. + * This happens if context is lost by external factors (such as + * notified by GL_ARB_robustness). + * + * In this case, the context is assumed to be already dead, + * and the libretro implementation must not try to free any OpenGL + * resources in the subsequent context_reset. + */ + + /* Creates a debug context. */ + bool debug_context; +}; + +/* Callback type passed in RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK. + * Called by the frontend in response to keyboard events. + * down is set if the key is being pressed, or false if it is being released. + * keycode is the RETROK value of the char. + * character is the text character of the pressed key. (UTF-32). + * key_modifiers is a set of RETROKMOD values or'ed together. + * + * The pressed/keycode state can be indepedent of the character. + * It is also possible that multiple characters are generated from a + * single keypress. + * Keycode events should be treated separately from character events. + * However, when possible, the frontend should try to synchronize these. + * If only a character is posted, keycode should be RETROK_UNKNOWN. + * + * Similarily if only a keycode event is generated with no corresponding + * character, character should be 0. + */ +typedef void (RETRO_CALLCONV *retro_keyboard_event_t)(bool down, unsigned keycode, + uint32_t character, uint16_t key_modifiers); + +struct retro_keyboard_callback +{ + retro_keyboard_event_t callback; +}; + +/* Callbacks for RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE. + * Should be set for implementations which can swap out multiple disk + * images in runtime. + * + * If the implementation can do this automatically, it should strive to do so. + * However, there are cases where the user must manually do so. + * + * Overview: To swap a disk image, eject the disk image with + * set_eject_state(true). + * Set the disk index with set_image_index(index). Insert the disk again + * with set_eject_state(false). + */ + +/* If ejected is true, "ejects" the virtual disk tray. + * When ejected, the disk image index can be set. + */ +typedef bool (RETRO_CALLCONV *retro_set_eject_state_t)(bool ejected); + +/* Gets current eject state. The initial state is 'not ejected'. */ +typedef bool (RETRO_CALLCONV *retro_get_eject_state_t)(void); + +/* Gets current disk index. First disk is index 0. + * If return value is >= get_num_images(), no disk is currently inserted. + */ +typedef unsigned (RETRO_CALLCONV *retro_get_image_index_t)(void); + +/* Sets image index. Can only be called when disk is ejected. + * The implementation supports setting "no disk" by using an + * index >= get_num_images(). + */ +typedef bool (RETRO_CALLCONV *retro_set_image_index_t)(unsigned index); + +/* Gets total number of images which are available to use. */ +typedef unsigned (RETRO_CALLCONV *retro_get_num_images_t)(void); + +struct retro_game_info; + +/* Replaces the disk image associated with index. + * Arguments to pass in info have same requirements as retro_load_game(). + * Virtual disk tray must be ejected when calling this. + * + * Replacing a disk image with info = NULL will remove the disk image + * from the internal list. + * As a result, calls to get_image_index() can change. + * + * E.g. replace_image_index(1, NULL), and previous get_image_index() + * returned 4 before. + * Index 1 will be removed, and the new index is 3. + */ +typedef bool (RETRO_CALLCONV *retro_replace_image_index_t)(unsigned index, + const struct retro_game_info *info); + +/* Adds a new valid index (get_num_images()) to the internal disk list. + * This will increment subsequent return values from get_num_images() by 1. + * This image index cannot be used until a disk image has been set + * with replace_image_index. */ +typedef bool (RETRO_CALLCONV *retro_add_image_index_t)(void); + +struct retro_disk_control_callback +{ + retro_set_eject_state_t set_eject_state; + retro_get_eject_state_t get_eject_state; + + retro_get_image_index_t get_image_index; + retro_set_image_index_t set_image_index; + retro_get_num_images_t get_num_images; + + retro_replace_image_index_t replace_image_index; + retro_add_image_index_t add_image_index; +}; + +enum retro_pixel_format +{ + /* 0RGB1555, native endian. + * 0 bit must be set to 0. + * This pixel format is default for compatibility concerns only. + * If a 15/16-bit pixel format is desired, consider using RGB565. */ + RETRO_PIXEL_FORMAT_0RGB1555 = 0, + + /* XRGB8888, native endian. + * X bits are ignored. */ + RETRO_PIXEL_FORMAT_XRGB8888 = 1, + + /* RGB565, native endian. + * This pixel format is the recommended format to use if a 15/16-bit + * format is desired as it is the pixel format that is typically + * available on a wide range of low-power devices. + * + * It is also natively supported in APIs like OpenGL ES. */ + RETRO_PIXEL_FORMAT_RGB565 = 2, + + /* Ensure sizeof() == sizeof(int). */ + RETRO_PIXEL_FORMAT_UNKNOWN = INT_MAX +}; + +struct retro_message +{ + const char *msg; /* Message to be displayed. */ + unsigned frames; /* Duration in frames of message. */ +}; + +/* Describes how the libretro implementation maps a libretro input bind + * to its internal input system through a human readable string. + * This string can be used to better let a user configure input. */ +struct retro_input_descriptor +{ + /* Associates given parameters with a description. */ + unsigned port; + unsigned device; + unsigned index; + unsigned id; + + /* Human readable description for parameters. + * The pointer must remain valid until + * retro_unload_game() is called. */ + const char *description; +}; + +struct retro_system_info +{ + /* All pointers are owned by libretro implementation, and pointers must + * remain valid until retro_deinit() is called. */ + + const char *library_name; /* Descriptive name of library. Should not + * contain any version numbers, etc. */ + const char *library_version; /* Descriptive version of core. */ + + const char *valid_extensions; /* A string listing probably content + * extensions the core will be able to + * load, separated with pipe. + * I.e. "bin|rom|iso". + * Typically used for a GUI to filter + * out extensions. */ + + /* Libretro cores that need to have direct access to their content + * files, including cores which use the path of the content files to + * determine the paths of other files, should set need_fullpath to true. + * + * Cores should strive for setting need_fullpath to false, + * as it allows the frontend to perform patching, etc. + * + * If need_fullpath is true and retro_load_game() is called: + * - retro_game_info::path is guaranteed to have a valid path + * - retro_game_info::data and retro_game_info::size are invalid + * + * If need_fullpath is false and retro_load_game() is called: + * - retro_game_info::path may be NULL + * - retro_game_info::data and retro_game_info::size are guaranteed + * to be valid + * + * See also: + * - RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY + * - RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY + */ + bool need_fullpath; + + /* If true, the frontend is not allowed to extract any archives before + * loading the real content. + * Necessary for certain libretro implementations that load games + * from zipped archives. */ + bool block_extract; +}; + +struct retro_game_geometry +{ + unsigned base_width; /* Nominal video width of game. */ + unsigned base_height; /* Nominal video height of game. */ + unsigned max_width; /* Maximum possible width of game. */ + unsigned max_height; /* Maximum possible height of game. */ + + float aspect_ratio; /* Nominal aspect ratio of game. If + * aspect_ratio is <= 0.0, an aspect ratio + * of base_width / base_height is assumed. + * A frontend could override this setting, + * if desired. */ +}; + +struct retro_system_timing +{ + double fps; /* FPS of video content. */ + double sample_rate; /* Sampling rate of audio. */ +}; + +struct retro_system_av_info +{ + struct retro_game_geometry geometry; + struct retro_system_timing timing; +}; + +struct retro_variable +{ + /* Variable to query in RETRO_ENVIRONMENT_GET_VARIABLE. + * If NULL, obtains the complete environment string if more + * complex parsing is necessary. + * The environment string is formatted as key-value pairs + * delimited by semicolons as so: + * "key1=value1;key2=value2;..." + */ + const char *key; + + /* Value to be obtained. If key does not exist, it is set to NULL. */ + const char *value; +}; + +struct retro_core_option_display +{ + /* Variable to configure in RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY */ + const char *key; + + /* Specifies whether variable should be displayed + * when presenting core options to the user */ + bool visible; +}; + +/* Maximum number of values permitted for a core option + * NOTE: This may be increased on a core-by-core basis + * if required (doing so has no effect on the frontend) */ +#define RETRO_NUM_CORE_OPTION_VALUES_MAX 128 + +struct retro_core_option_value +{ + /* Expected option value */ + const char *value; + + /* Human-readable value label. If NULL, value itself + * will be displayed by the frontend */ + const char *label; +}; + +struct retro_core_option_definition +{ + /* Variable to query in RETRO_ENVIRONMENT_GET_VARIABLE. */ + const char *key; + + /* Human-readable core option description (used as menu label) */ + const char *desc; + + /* Human-readable core option information (used as menu sublabel) */ + const char *info; + + /* Array of retro_core_option_value structs, terminated by NULL */ + struct retro_core_option_value values[RETRO_NUM_CORE_OPTION_VALUES_MAX]; + + /* Default core option value. Must match one of the values + * in the retro_core_option_value array, otherwise will be + * ignored */ + const char *default_value; +}; + +struct retro_core_options_intl +{ + /* Pointer to an array of retro_core_option_definition structs + * - US English implementation + * - Must point to a valid array */ + struct retro_core_option_definition *us; + + /* Pointer to an array of retro_core_option_definition structs + * - Implementation for current frontend language + * - May be NULL */ + struct retro_core_option_definition *local; +}; + +struct retro_game_info +{ + const char *path; /* Path to game, UTF-8 encoded. + * Sometimes used as a reference for building other paths. + * May be NULL if game was loaded from stdin or similar, + * but in this case some cores will be unable to load `data`. + * So, it is preferable to fabricate something here instead + * of passing NULL, which will help more cores to succeed. + * retro_system_info::need_fullpath requires + * that this path is valid. */ + const void *data; /* Memory buffer of loaded game. Will be NULL + * if need_fullpath was set. */ + size_t size; /* Size of memory buffer. */ + const char *meta; /* String of implementation specific meta-data. */ +}; + +#define RETRO_MEMORY_ACCESS_WRITE (1 << 0) + /* The core will write to the buffer provided by retro_framebuffer::data. */ +#define RETRO_MEMORY_ACCESS_READ (1 << 1) + /* The core will read from retro_framebuffer::data. */ +#define RETRO_MEMORY_TYPE_CACHED (1 << 0) + /* The memory in data is cached. + * If not cached, random writes and/or reading from the buffer is expected to be very slow. */ +struct retro_framebuffer +{ + void *data; /* The framebuffer which the core can render into. + Set by frontend in GET_CURRENT_SOFTWARE_FRAMEBUFFER. + The initial contents of data are unspecified. */ + unsigned width; /* The framebuffer width used by the core. Set by core. */ + unsigned height; /* The framebuffer height used by the core. Set by core. */ + size_t pitch; /* The number of bytes between the beginning of a scanline, + and beginning of the next scanline. + Set by frontend in GET_CURRENT_SOFTWARE_FRAMEBUFFER. */ + enum retro_pixel_format format; /* The pixel format the core must use to render into data. + This format could differ from the format used in + SET_PIXEL_FORMAT. + Set by frontend in GET_CURRENT_SOFTWARE_FRAMEBUFFER. */ + + unsigned access_flags; /* How the core will access the memory in the framebuffer. + RETRO_MEMORY_ACCESS_* flags. + Set by core. */ + unsigned memory_flags; /* Flags telling core how the memory has been mapped. + RETRO_MEMORY_TYPE_* flags. + Set by frontend in GET_CURRENT_SOFTWARE_FRAMEBUFFER. */ +}; + +/* Callbacks */ + +/* Environment callback. Gives implementations a way of performing + * uncommon tasks. Extensible. */ +typedef bool (RETRO_CALLCONV *retro_environment_t)(unsigned cmd, void *data); + +/* Render a frame. Pixel format is 15-bit 0RGB1555 native endian + * unless changed (see RETRO_ENVIRONMENT_SET_PIXEL_FORMAT). + * + * Width and height specify dimensions of buffer. + * Pitch specifices length in bytes between two lines in buffer. + * + * For performance reasons, it is highly recommended to have a frame + * that is packed in memory, i.e. pitch == width * byte_per_pixel. + * Certain graphic APIs, such as OpenGL ES, do not like textures + * that are not packed in memory. + */ +typedef void (RETRO_CALLCONV *retro_video_refresh_t)(const void *data, unsigned width, + unsigned height, size_t pitch); + +/* Renders a single audio frame. Should only be used if implementation + * generates a single sample at a time. + * Format is signed 16-bit native endian. + */ +typedef void (RETRO_CALLCONV *retro_audio_sample_t)(int16_t left, int16_t right); + +/* Renders multiple audio frames in one go. + * + * One frame is defined as a sample of left and right channels, interleaved. + * I.e. int16_t buf[4] = { l, r, l, r }; would be 2 frames. + * Only one of the audio callbacks must ever be used. + */ +typedef size_t (RETRO_CALLCONV *retro_audio_sample_batch_t)(const int16_t *data, + size_t frames); + +/* Polls input. */ +typedef void (RETRO_CALLCONV *retro_input_poll_t)(void); + +/* Queries for input for player 'port'. device will be masked with + * RETRO_DEVICE_MASK. + * + * Specialization of devices such as RETRO_DEVICE_JOYPAD_MULTITAP that + * have been set with retro_set_controller_port_device() + * will still use the higher level RETRO_DEVICE_JOYPAD to request input. + */ +typedef int16_t (RETRO_CALLCONV *retro_input_state_t)(unsigned port, unsigned device, + unsigned index, unsigned id); + +/* Sets callbacks. retro_set_environment() is guaranteed to be called + * before retro_init(). + * + * The rest of the set_* functions are guaranteed to have been called + * before the first call to retro_run() is made. */ +RETRO_API void retro_set_environment(retro_environment_t); +RETRO_API void retro_set_video_refresh(retro_video_refresh_t); +RETRO_API void retro_set_audio_sample(retro_audio_sample_t); +RETRO_API void retro_set_audio_sample_batch(retro_audio_sample_batch_t); +RETRO_API void retro_set_input_poll(retro_input_poll_t); +RETRO_API void retro_set_input_state(retro_input_state_t); + +/* Library global initialization/deinitialization. */ +RETRO_API void retro_init(void); +RETRO_API void retro_deinit(void); + +/* Must return RETRO_API_VERSION. Used to validate ABI compatibility + * when the API is revised. */ +RETRO_API unsigned retro_api_version(void); + +/* Gets statically known system info. Pointers provided in *info + * must be statically allocated. + * Can be called at any time, even before retro_init(). */ +RETRO_API void retro_get_system_info(struct retro_system_info *info); + +/* Gets information about system audio/video timings and geometry. + * Can be called only after retro_load_game() has successfully completed. + * NOTE: The implementation of this function might not initialize every + * variable if needed. + * E.g. geom.aspect_ratio might not be initialized if core doesn't + * desire a particular aspect ratio. */ +RETRO_API void retro_get_system_av_info(struct retro_system_av_info *info); + +/* Sets device to be used for player 'port'. + * By default, RETRO_DEVICE_JOYPAD is assumed to be plugged into all + * available ports. + * Setting a particular device type is not a guarantee that libretro cores + * will only poll input based on that particular device type. It is only a + * hint to the libretro core when a core cannot automatically detect the + * appropriate input device type on its own. It is also relevant when a + * core can change its behavior depending on device type. + * + * As part of the core's implementation of retro_set_controller_port_device, + * the core should call RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS to notify the + * frontend if the descriptions for any controls have changed as a + * result of changing the device type. + */ +RETRO_API void retro_set_controller_port_device(unsigned port, unsigned device); + +/* Resets the current game. */ +RETRO_API void retro_reset(void); + +/* Runs the game for one video frame. + * During retro_run(), input_poll callback must be called at least once. + * + * If a frame is not rendered for reasons where a game "dropped" a frame, + * this still counts as a frame, and retro_run() should explicitly dupe + * a frame if GET_CAN_DUPE returns true. + * In this case, the video callback can take a NULL argument for data. + */ +RETRO_API void retro_run(void); + +/* Returns the amount of data the implementation requires to serialize + * internal state (save states). + * Between calls to retro_load_game() and retro_unload_game(), the + * returned size is never allowed to be larger than a previous returned + * value, to ensure that the frontend can allocate a save state buffer once. + */ +RETRO_API size_t retro_serialize_size(void); + +/* Serializes internal state. If failed, or size is lower than + * retro_serialize_size(), it should return false, true otherwise. */ +RETRO_API bool retro_serialize(void *data, size_t size); +RETRO_API bool retro_unserialize(const void *data, size_t size); + +RETRO_API void retro_cheat_reset(void); +RETRO_API void retro_cheat_set(unsigned index, bool enabled, const char *code); + +/* Loads a game. + * Return true to indicate successful loading and false to indicate load failure. + */ +RETRO_API bool retro_load_game(const struct retro_game_info *game); + +/* Loads a "special" kind of game. Should not be used, + * except in extreme cases. */ +RETRO_API bool retro_load_game_special( + unsigned game_type, + const struct retro_game_info *info, size_t num_info +); + +/* Unloads the currently loaded game. Called before retro_deinit(void). */ +RETRO_API void retro_unload_game(void); + +/* Gets region of game. */ +RETRO_API unsigned retro_get_region(void); + +/* Gets region of memory. */ +RETRO_API void *retro_get_memory_data(unsigned id); +RETRO_API size_t retro_get_memory_size(unsigned id); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/platform/libretro/libretro-common/include/retro_assert.h b/src/platform/libretro/libretro-common/include/retro_assert.h new file mode 100644 index 00000000..9f3abdea --- /dev/null +++ b/src/platform/libretro/libretro-common/include/retro_assert.h @@ -0,0 +1,36 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (retro_assert.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __RETRO_ASSERT_H +#define __RETRO_ASSERT_H + +#include + +#ifdef RARCH_INTERNAL +#define retro_assert(cond) do { \ + if (!(cond)) { printf("Assertion failed at %s:%d.\n", __FILE__, __LINE__); abort(); } \ +} while(0) +#else +#define retro_assert(cond) assert(cond) +#endif + +#endif diff --git a/src/platform/libretro/libretro-common/include/retro_common_api.h b/src/platform/libretro/libretro-common/include/retro_common_api.h new file mode 100644 index 00000000..c3b3f492 --- /dev/null +++ b/src/platform/libretro/libretro-common/include/retro_common_api.h @@ -0,0 +1,118 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (retro_common_api.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef _LIBRETRO_COMMON_RETRO_COMMON_API_H +#define _LIBRETRO_COMMON_RETRO_COMMON_API_H + +/* +This file is designed to normalize the libretro-common compiling environment +for public API headers. This should be leaner than a normal compiling environment, +since it gets #included into other project's sources. +*/ + +/* ------------------------------------ */ + +/* +Ordinarily we want to put #ifdef __cplusplus extern "C" in C library +headers to enable them to get used by c++ sources. +However, we want to support building this library as C++ as well, so a +special technique is called for. +*/ + +#define RETRO_BEGIN_DECLS +#define RETRO_END_DECLS + +#ifdef __cplusplus + +#ifdef CXX_BUILD +/* build wants everything to be built as c++, so no extern "C" */ +#else +#undef RETRO_BEGIN_DECLS +#undef RETRO_END_DECLS +#define RETRO_BEGIN_DECLS extern "C" { +#define RETRO_END_DECLS } +#endif + +#else + +/* header is included by a C source file, so no extern "C" */ + +#endif + +/* +IMO, this non-standard ssize_t should not be used. +However, it's a good example of how to handle something like this. +*/ +#ifdef _MSC_VER +#ifndef HAVE_SSIZE_T +#define HAVE_SSIZE_T +#if defined(_WIN64) +typedef __int64 ssize_t; +#elif defined(_WIN32) +typedef int ssize_t; +#endif +#endif +#elif defined(__MACH__) +#include +#endif + +#ifdef _MSC_VER +#if _MSC_VER >= 1800 +#include +#else +#ifndef PRId64 +#define PRId64 "I64d" +#define PRIu64 "I64u" +#define PRIuPTR "Iu" +#endif +#endif +#else +/* C++11 says this one isn't needed, but apparently (some versions of) mingw require it anyways */ +/* https://stackoverflow.com/questions/8132399/how-to-printf-uint64-t-fails-with-spurious-trailing-in-format */ +/* https://github.com/libretro/RetroArch/issues/6009 */ +#define __STDC_FORMAT_MACROS +#include +#endif +#ifndef PRId64 +#error "inttypes.h is being screwy" +#endif +#define STRING_REP_INT64 "%" PRId64 +#define STRING_REP_UINT64 "%" PRIu64 +#define STRING_REP_USIZE "%" PRIuPTR + +/* +I would like to see retro_inline.h moved in here; possibly boolean too. + +rationale: these are used in public APIs, and it is easier to find problems +and write code that works the first time portably when theyre included uniformly +than to do the analysis from scratch each time you think you need it, for each feature. + +Moreover it helps force you to make hard decisions: if you EVER bring in boolean.h, +then you should pay the price everywhere, so you can see how much grief it will cause. + +Of course, another school of thought is that you should do as little damage as possible +in as few places as possible... +*/ + + +/* _LIBRETRO_COMMON_RETRO_COMMON_API_H */ +#endif diff --git a/src/platform/libretro/libretro-common/include/retro_inline.h b/src/platform/libretro/libretro-common/include/retro_inline.h new file mode 100644 index 00000000..e4a21f6c --- /dev/null +++ b/src/platform/libretro/libretro-common/include/retro_inline.h @@ -0,0 +1,39 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (retro_inline.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __LIBRETRO_SDK_INLINE_H +#define __LIBRETRO_SDK_INLINE_H + +#ifndef INLINE + +#if defined(_WIN32) || defined(__INTEL_COMPILER) +#define INLINE __inline +#elif defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L +#define INLINE inline +#elif defined(__GNUC__) +#define INLINE __inline__ +#else +#define INLINE +#endif + +#endif +#endif diff --git a/src/platform/libretro/libretro-common/include/retro_miscellaneous.h b/src/platform/libretro/libretro-common/include/retro_miscellaneous.h new file mode 100644 index 00000000..2fd97d54 --- /dev/null +++ b/src/platform/libretro/libretro-common/include/retro_miscellaneous.h @@ -0,0 +1,172 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (retro_miscellaneous.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __RARCH_MISCELLANEOUS_H +#define __RARCH_MISCELLANEOUS_H + +#define RARCH_MAX_SUBSYSTEMS 10 +#define RARCH_MAX_SUBSYSTEM_ROMS 10 + +#include +#include +#include + +#if defined(_WIN32) && !defined(_XBOX) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#elif defined(_WIN32) && defined(_XBOX) +#include +#endif + +#if defined(__CELLOS_LV2__) +#include +#endif + +#include + +#ifdef _MSC_VER +#include +#endif + +static INLINE void bits_or_bits(uint32_t *a, uint32_t *b, uint32_t count) +{ + uint32_t i; + for (i = 0; i < count;i++) + a[i] |= b[i]; +} + +static INLINE void bits_clear_bits(uint32_t *a, uint32_t *b, uint32_t count) +{ + uint32_t i; + for (i = 0; i < count;i++) + a[i] &= ~b[i]; +} + +static INLINE bool bits_any_set(uint32_t* ptr, uint32_t count) +{ + uint32_t i; + for (i = 0; i < count; i++) + { + if (ptr[i] != 0) + return true; + } + return false; +} + +#ifndef PATH_MAX_LENGTH +#if defined(__CELLOS_LV2__) +#define PATH_MAX_LENGTH CELL_FS_MAX_FS_PATH_LENGTH +#elif defined(_XBOX1) || defined(_3DS) || defined(PSP) || defined(GEKKO)|| defined(WIIU) +#define PATH_MAX_LENGTH 512 +#else +#define PATH_MAX_LENGTH 4096 +#endif +#endif + +#ifndef MAX +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#endif + +#ifndef MIN +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#endif + +#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) + +#define BITS_GET_ELEM(a, i) ((a).data[i]) +#define BITS_GET_ELEM_PTR(a, i) ((a)->data[i]) + +#define BIT_SET(a, bit) ((a)[(bit) >> 3] |= (1 << ((bit) & 7))) +#define BIT_CLEAR(a, bit) ((a)[(bit) >> 3] &= ~(1 << ((bit) & 7))) +#define BIT_GET(a, bit) (((a)[(bit) >> 3] >> ((bit) & 7)) & 1) + +#define BIT16_SET(a, bit) ((a) |= (1 << ((bit) & 15))) +#define BIT16_CLEAR(a, bit) ((a) &= ~(1 << ((bit) & 15))) +#define BIT16_GET(a, bit) (((a) >> ((bit) & 15)) & 1) +#define BIT16_CLEAR_ALL(a) ((a) = 0) + +#define BIT32_SET(a, bit) ((a) |= (1 << ((bit) & 31))) +#define BIT32_CLEAR(a, bit) ((a) &= ~(1 << ((bit) & 31))) +#define BIT32_GET(a, bit) (((a) >> ((bit) & 31)) & 1) +#define BIT32_CLEAR_ALL(a) ((a) = 0) + +#define BIT64_SET(a, bit) ((a) |= (UINT64_C(1) << ((bit) & 63))) +#define BIT64_CLEAR(a, bit) ((a) &= ~(UINT64_C(1) << ((bit) & 63))) +#define BIT64_GET(a, bit) (((a) >> ((bit) & 63)) & 1) +#define BIT64_CLEAR_ALL(a) ((a) = 0) + +#define BIT128_SET(a, bit) ((a).data[(bit) >> 5] |= (1 << ((bit) & 31))) +#define BIT128_CLEAR(a, bit) ((a).data[(bit) >> 5] &= ~(1 << ((bit) & 31))) +#define BIT128_GET(a, bit) (((a).data[(bit) >> 5] >> ((bit) & 31)) & 1) +#define BIT128_CLEAR_ALL(a) memset(&(a), 0, sizeof(a)) + +#define BIT128_SET_PTR(a, bit) BIT128_SET(*a, bit) +#define BIT128_CLEAR_PTR(a, bit) BIT128_CLEAR(*a, bit) +#define BIT128_GET_PTR(a, bit) BIT128_GET(*a, bit) +#define BIT128_CLEAR_ALL_PTR(a) BIT128_CLEAR_ALL(*a) + +#define BIT256_SET(a, bit) BIT128_SET(a, bit) +#define BIT256_CLEAR(a, bit) BIT128_CLEAR(a, bit) +#define BIT256_GET(a, bit) BIT128_GET(a, bit) +#define BIT256_CLEAR_ALL(a) BIT128_CLEAR_ALL(a) + +#define BIT256_SET_PTR(a, bit) BIT256_SET(*a, bit) +#define BIT256_CLEAR_PTR(a, bit) BIT256_CLEAR(*a, bit) +#define BIT256_GET_PTR(a, bit) BIT256_GET(*a, bit) +#define BIT256_CLEAR_ALL_PTR(a) BIT256_CLEAR_ALL(*a) + +#define BITS_COPY16_PTR(a,bits) \ +{ \ + BIT128_CLEAR_ALL_PTR(a); \ + BITS_GET_ELEM_PTR(a, 0) = (bits) & 0xffff; \ +} + +#define BITS_COPY32_PTR(a,bits) \ +{ \ + BIT128_CLEAR_ALL_PTR(a); \ + BITS_GET_ELEM_PTR(a, 0) = (bits); \ +} + +/* Helper macros and struct to keep track of many booleans. */ +/* This struct has 256 bits. */ +typedef struct +{ + uint32_t data[8]; +} retro_bits_t; + +#ifdef _WIN32 +# ifdef _WIN64 +# define PRI_SIZET PRIu64 +# else +#if _MSC_VER == 1800 +# define PRI_SIZET PRIu32 +#else +# define PRI_SIZET "u" +#endif +# endif +#else +# define PRI_SIZET "zu" +#endif + +#endif diff --git a/src/platform/libretro/libretro-common/include/string/stdstring.h b/src/platform/libretro/libretro-common/include/string/stdstring.h new file mode 100644 index 00000000..3d278d7c --- /dev/null +++ b/src/platform/libretro/libretro-common/include/string/stdstring.h @@ -0,0 +1,140 @@ +/* Copyright (C) 2010-2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (stdstring.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __LIBRETRO_SDK_STDSTRING_H +#define __LIBRETRO_SDK_STDSTRING_H + +#include +#include +#include +#include +#include + +#include +#include +#include + +RETRO_BEGIN_DECLS + +static INLINE bool string_is_empty(const char *data) +{ + return (data == NULL) || (*data == '\0'); +} + +static INLINE bool string_is_equal(const char *a, const char *b) +{ + if (!a || !b) + return false; + while(*a && (*a == *b)) + { + a++; + b++; + } + return (*(const unsigned char*)a - *(const unsigned char*)b) == 0; +} + +static INLINE bool string_is_not_equal(const char *a, const char *b) +{ + return !string_is_equal(a, b); +} + +#define string_add_pair_open(s, size) strlcat((s), " (", (size)) +#define string_add_pair_close(s, size) strlcat((s), ")", (size)) +#define string_add_bracket_open(s, size) strlcat((s), "{", (size)) +#define string_add_bracket_close(s, size) strlcat((s), "}", (size)) +#define string_add_single_quote(s, size) strlcat((s), "'", (size)) +#define string_add_quote(s, size) strlcat((s), "\"", (size)) +#define string_add_colon(s, size) strlcat((s), ":", (size)) +#define string_add_glob_open(s, size) strlcat((s), "glob('*", (size)) +#define string_add_glob_close(s, size) strlcat((s), "*')", (size)) + +static INLINE void string_add_between_pairs(char *s, const char *str, + size_t size) +{ + string_add_pair_open(s, size); + strlcat(s, str, size); + string_add_pair_close(s, size); +} + +#define string_is_not_equal_fast(a, b, size) (memcmp(a, b, size) != 0) +#define string_is_equal_fast(a, b, size) (memcmp(a, b, size) == 0) + +static INLINE bool string_is_equal_case_insensitive(const char *a, + const char *b) +{ + int result = 0; + const unsigned char *p1 = (const unsigned char*)a; + const unsigned char *p2 = (const unsigned char*)b; + + if (!a || !b) + return false; + if (p1 == p2) + return true; + + while ((result = tolower (*p1) - tolower (*p2++)) == 0) + if (*p1++ == '\0') + break; + + return (result == 0); +} + +static INLINE bool string_is_equal_noncase(const char *a, const char *b) +{ + int result = 0; + const unsigned char *p1 = (const unsigned char*)a; + const unsigned char *p2 = (const unsigned char*)b; + + if (!a || !b) + return false; + if (p1 == p2) + return false; + + while ((result = tolower (*p1) - tolower (*p2++)) == 0) + if (*p1++ == '\0') + break; + + return (result == 0); +} + +char *string_to_upper(char *s); + +char *string_to_lower(char *s); + +char *string_ucwords(char* s); + +char *string_replace_substring(const char *in, const char *pattern, + const char *by); + +/* Remove leading whitespaces */ +char *string_trim_whitespace_left(char *const s); + +/* Remove trailing whitespaces */ +char *string_trim_whitespace_right(char *const s); + +/* Remove leading and trailing whitespaces */ +char *string_trim_whitespace(char *const s); + +char *word_wrap(char* buffer, const char *string, int line_width, bool unicode); + +RETRO_END_DECLS + +#endif diff --git a/src/platform/libretro/libretro_core_options.h b/src/platform/libretro/libretro_core_options.h new file mode 100644 index 00000000..d838055b --- /dev/null +++ b/src/platform/libretro/libretro_core_options.h @@ -0,0 +1,308 @@ +#ifndef LIBRETRO_CORE_OPTIONS_H__ +#define LIBRETRO_CORE_OPTIONS_H__ + +#include +#include + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + ******************************** + * Core Option Definitions + ******************************** +*/ + +/* RETRO_LANGUAGE_ENGLISH */ + +/* Default language: + * - All other languages must include the same keys and values + * - Will be used as a fallback in the event that frontend language + * is not available + * - Will be used as a fallback for any missing entries in + * frontend language definition */ + +struct retro_core_option_definition option_defs_us[] = { + { + "openlara_resolution", + "Internal resolution (restart)", + "Configure the resolution. Requires a restart.", + { + { "320x240", NULL }, + { "360x480", NULL }, + { "480x272", NULL }, + { "512x384", NULL }, + { "512x512", NULL }, + { "640x224", NULL }, + { "640x448", NULL }, + { "640x480", NULL }, + { "720x576", NULL }, + { "800x600", NULL }, + { "960x720", NULL }, + { "1024x768", NULL }, + { "1280x720", NULL }, + { "1280x960", NULL }, + { "1600x1200", NULL }, + { "1920x1080", NULL }, + { "1920x1440", NULL }, + { "1920x1600", NULL }, + { "2048x2048", NULL }, + { "2560x1440", NULL }, + { "3840x2160", NULL }, + { "7680x4320", NULL }, + { "15360x8640", NULL }, + { "16000x9000", NULL }, + { NULL, NULL }, + }, + "320x240" + }, + { + "openlara_framerate", + "Framerate (restart)", + "Modify framerate. Requires a restart.", + { + { "30fps", NULL}, + { "60fps", NULL}, + { "70fps", NULL}, + { "72fps", NULL}, + { "75fps", NULL}, + { "90fps", NULL}, + { "100fps", NULL}, + { "119fps", NULL}, + { "120fps", NULL}, + { "144fps", NULL}, + { "240fps", NULL}, + { "244fps", NULL}, + { NULL, NULL }, + }, + "60fps" + }, + { NULL, NULL, NULL, {{0}}, NULL }, +}; + +/* RETRO_LANGUAGE_JAPANESE */ + +/* RETRO_LANGUAGE_FRENCH */ + +/* RETRO_LANGUAGE_SPANISH */ + +/* RETRO_LANGUAGE_GERMAN */ + +/* RETRO_LANGUAGE_ITALIAN */ + +/* RETRO_LANGUAGE_DUTCH */ + +/* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */ + +/* RETRO_LANGUAGE_PORTUGUESE_PORTUGAL */ + +/* RETRO_LANGUAGE_RUSSIAN */ + +/* RETRO_LANGUAGE_KOREAN */ + +/* RETRO_LANGUAGE_CHINESE_TRADITIONAL */ + +/* RETRO_LANGUAGE_CHINESE_SIMPLIFIED */ + +/* RETRO_LANGUAGE_ESPERANTO */ + +/* RETRO_LANGUAGE_POLISH */ + +/* RETRO_LANGUAGE_VIETNAMESE */ + +/* RETRO_LANGUAGE_ARABIC */ + +/* RETRO_LANGUAGE_GREEK */ + +/* RETRO_LANGUAGE_TURKISH */ + +/* + ******************************** + * Language Mapping + ******************************** +*/ + +struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = { + option_defs_us, /* RETRO_LANGUAGE_ENGLISH */ + NULL, /* RETRO_LANGUAGE_JAPANESE */ + NULL, /* RETRO_LANGUAGE_FRENCH */ + NULL, /* RETRO_LANGUAGE_SPANISH */ + NULL, /* RETRO_LANGUAGE_GERMAN */ + NULL, /* RETRO_LANGUAGE_ITALIAN */ + NULL, /* RETRO_LANGUAGE_DUTCH */ + NULL, /* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */ + NULL, /* RETRO_LANGUAGE_PORTUGUESE_PORTUGAL */ + NULL, /* RETRO_LANGUAGE_RUSSIAN */ + NULL, /* RETRO_LANGUAGE_KOREAN */ + NULL, /* RETRO_LANGUAGE_CHINESE_TRADITIONAL */ + NULL, /* RETRO_LANGUAGE_CHINESE_SIMPLIFIED */ + NULL, /* RETRO_LANGUAGE_ESPERANTO */ + NULL, /* RETRO_LANGUAGE_POLISH */ + NULL, /* RETRO_LANGUAGE_VIETNAMESE */ + NULL, /* RETRO_LANGUAGE_ARABIC */ + NULL, /* RETRO_LANGUAGE_GREEK */ + NULL, /* RETRO_LANGUAGE_TURKISH */ +}; + +/* + ******************************** + * Functions + ******************************** +*/ + +/* Handles configuration/setting of core options. + * Should only be called inside retro_set_environment(). + * > We place the function body in the header to avoid the + * necessity of adding more .c files (i.e. want this to + * be as painless as possible for core devs) + */ + +static INLINE void libretro_set_core_options(retro_environment_t environ_cb) +{ + unsigned version = 0; + + if (!environ_cb) + return; + + if (environ_cb(RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION, &version) && (version == 1)) + { + struct retro_core_options_intl core_options_intl; + unsigned language = 0; + + core_options_intl.us = option_defs_us; + core_options_intl.local = NULL; + + if (environ_cb(RETRO_ENVIRONMENT_GET_LANGUAGE, &language) && + (language < RETRO_LANGUAGE_LAST) && (language != RETRO_LANGUAGE_ENGLISH)) + core_options_intl.local = option_defs_intl[language]; + + environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL, &core_options_intl); + } + else + { + size_t i; + size_t num_options = 0; + struct retro_variable *variables = NULL; + char **values_buf = NULL; + + /* Determine number of options */ + while (true) + { + if (option_defs_us[num_options].key) + num_options++; + else + break; + } + + /* Allocate arrays */ + variables = (struct retro_variable *)calloc(num_options + 1, sizeof(struct retro_variable)); + values_buf = (char **)calloc(num_options, sizeof(char *)); + + if (!variables || !values_buf) + goto error; + + /* Copy parameters from option_defs_us array */ + for (i = 0; i < num_options; i++) + { + const char *key = option_defs_us[i].key; + const char *desc = option_defs_us[i].desc; + const char *default_value = option_defs_us[i].default_value; + struct retro_core_option_value *values = option_defs_us[i].values; + size_t buf_len = 3; + size_t default_index = 0; + + values_buf[i] = NULL; + + if (desc) + { + size_t num_values = 0; + + /* Determine number of values */ + while (true) + { + if (values[num_values].value) + { + /* Check if this is the default value */ + if (default_value) + if (strcmp(values[num_values].value, default_value) == 0) + default_index = num_values; + + buf_len += strlen(values[num_values].value); + num_values++; + } + else + break; + } + + /* Build values string */ + if (num_values > 1) + { + size_t j; + + buf_len += num_values - 1; + buf_len += strlen(desc); + + values_buf[i] = (char *)calloc(buf_len, sizeof(char)); + if (!values_buf[i]) + goto error; + + strcpy(values_buf[i], desc); + strcat(values_buf[i], "; "); + + /* Default value goes first */ + strcat(values_buf[i], values[default_index].value); + + /* Add remaining values */ + for (j = 0; j < num_values; j++) + { + if (j != default_index) + { + strcat(values_buf[i], "|"); + strcat(values_buf[i], values[j].value); + } + } + } + } + + variables[i].key = key; + variables[i].value = values_buf[i]; + } + + /* Set variables */ + environ_cb(RETRO_ENVIRONMENT_SET_VARIABLES, variables); + +error: + + /* Clean up */ + if (values_buf) + { + for (i = 0; i < num_options; i++) + { + if (values_buf[i]) + { + free(values_buf[i]); + values_buf[i] = NULL; + } + } + + free(values_buf); + values_buf = NULL; + } + + if (variables) + { + free(variables); + variables = NULL; + } + } +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/platform/libretro/link.T b/src/platform/libretro/link.T new file mode 100644 index 00000000..b0c262db --- /dev/null +++ b/src/platform/libretro/link.T @@ -0,0 +1,5 @@ +{ + global: retro_*; + local: *; +}; + diff --git a/src/platform/libretro/main.cpp b/src/platform/libretro/main.cpp new file mode 100644 index 00000000..ae937815 --- /dev/null +++ b/src/platform/libretro/main.cpp @@ -0,0 +1,816 @@ +#include +#include +#include +#include +#include + +//#include +#include +#include +#include + +#include "libretro_core_options.h" +#include "../../game.h" + +#ifdef OSX +#include +#endif + +#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) +struct retro_hw_render_callback hw_render; + +#if defined(HAVE_PSGL) +#define RARCH_GL_FRAMEBUFFER GL_FRAMEBUFFER_OES +#define RARCH_GL_FRAMEBUFFER_COMPLETE GL_FRAMEBUFFER_COMPLETE_OES +#define RARCH_GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT0_EXT +#elif defined(OSX_PPC) +#define RARCH_GL_FRAMEBUFFER GL_FRAMEBUFFER_EXT +#define RARCH_GL_FRAMEBUFFER_COMPLETE GL_FRAMEBUFFER_COMPLETE_EXT +#define RARCH_GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT0_EXT +#else +#define RARCH_GL_FRAMEBUFFER GL_FRAMEBUFFER +#define RARCH_GL_FRAMEBUFFER_COMPLETE GL_FRAMEBUFFER_COMPLETE +#define RARCH_GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT0 +#endif + +#define BASE_WIDTH 320 +#define BASE_HEIGHT 240 + +static unsigned MAX_WIDTH = 320; +static unsigned MAX_HEIGHT = 240; + +static unsigned FRAMERATE = 60; +static unsigned SND_RATE = 44100; + +static unsigned width = BASE_WIDTH; +static unsigned height = BASE_HEIGHT; + +static bool libretro_supports_bitmasks = false; + +Sound::Frame *sndData; + +char levelpath[255] = {0}; + +static retro_video_refresh_t video_cb; +static retro_audio_sample_batch_t audio_batch_cb; +static retro_environment_t environ_cb; +static retro_input_poll_t input_poll_cb; +static retro_input_state_t input_cb; +static retro_set_rumble_state_t set_rumble_cb; + +#ifdef _WIN32 +#include +#include + +// multi-threading +void* osMutexInit() { + CRITICAL_SECTION *CS = new CRITICAL_SECTION(); + InitializeCriticalSection(CS); + return CS; +} + +void osMutexFree(void *obj) { + DeleteCriticalSection((CRITICAL_SECTION*)obj); + delete (CRITICAL_SECTION*)obj; +} + +void osMutexLock(void *obj) { + EnterCriticalSection((CRITICAL_SECTION*)obj); +} + +void osMutexUnlock(void *obj) { + LeaveCriticalSection((CRITICAL_SECTION*)obj); +} + +int osGetTime() { + LARGE_INTEGER Freq, Count; + QueryPerformanceFrequency(&Freq); + QueryPerformanceCounter(&Count); + return int(Count.QuadPart * 1000L / Freq.QuadPart); +} + +void* osRWLockInit() { + return osMutexInit(); +} + +void osRWLockFree(void *obj) { + osMutexFree(obj); +} + +void osRWLockRead(void *obj) { + osMutexLock(obj); +} + +void osRWUnlockRead(void *obj) { + osMutexUnlock(obj); +} + +void osRWUnlockWrite(void *obj) { + osMutexUnlock(obj); +} + + +void osRWLockWrite(void *obj) { + osMutexUnlock(obj); +} + +#elif defined(__linux__) +#include +#include +unsigned int startTime; + +int osGetTime(void) +{ + timeval t; + gettimeofday(&t, NULL); + return int((t.tv_sec - startTime) * 1000 + t.tv_usec / 1000); +} +#endif + +#if defined(__MACH__) +#include + +int osGetTime(void) +{ + const int64_t kOneMillion = 1000 * 1000; + static mach_timebase_info_data_t info; + + if (info.denom == 0) + mach_timebase_info(&info); + + return (int)((mach_absolute_time() * info.numer) / (kOneMillion * info.denom)); +} +#endif + +void osJoyVibrate(int index, float L, float R) +{ + if(set_rumble_cb) + { + uint16_t left = int(0xffff * max(0.0f, min(L, 1.0f))); + uint16_t right = int(0xffff * max(0.0f, min(R, 1.0f))); + set_rumble_cb(index, RETRO_RUMBLE_STRONG, left); + set_rumble_cb(index, RETRO_RUMBLE_WEAK, right); + } +} + +void retro_init(void) +{ + contentDir[0] = 0; + + const char slash = path_default_slash_c(); + + const char *sysdir = NULL; + const char *savdir = NULL; + const char *subdir = "openlara"; + const char *csubdir = "cache"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, &sysdir)) + { + strncpy(cacheDir, sysdir, sizeof(cacheDir)); + fill_pathname_slash(cacheDir, sizeof(cacheDir)); + strcat(cacheDir, subdir); + fill_pathname_slash(cacheDir, sizeof(cacheDir)); + if (path_mkdir(cacheDir)) + { + strcat(cacheDir, csubdir); + fill_pathname_slash(cacheDir, sizeof(cacheDir)); + if (!path_mkdir(cacheDir)) + { + cacheDir[0] = 0; + fprintf(stderr, "[openlara]: Couldn't create cache subdirectory.\n"); + } + } + else + { + cacheDir[0] = 0; + fprintf(stderr, "[openlara]: Couldn't create cache subdirectory.\n"); + } + } + + if (environ_cb(RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY, &savdir)) + { + strncpy(saveDir, savdir, sizeof(saveDir)); + fill_pathname_slash(saveDir, sizeof(saveDir)); + strcat(saveDir, subdir); + fill_pathname_slash(saveDir, sizeof(saveDir)); + fprintf(stderr, "[openlara]: Saves should be in: %s\n", saveDir); + if (!path_mkdir(saveDir)) + { + saveDir[0] = 0; + fprintf(stderr, "[openlara]: Couldn't create save subdirectory.\n"); + } + } + + if (environ_cb(RETRO_ENVIRONMENT_GET_INPUT_BITMASKS, NULL)) + libretro_supports_bitmasks = true; + + struct retro_rumble_interface rumbleInterface; + if (environ_cb(RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE, &rumbleInterface)) + set_rumble_cb = rumbleInterface.set_rumble_state; +} + +void retro_deinit(void) +{ + contentDir[0] = cacheDir[0] = saveDir[0] = 0; + + libretro_supports_bitmasks = false; +} + +unsigned retro_api_version(void) +{ + return RETRO_API_VERSION; +} + +void retro_set_controller_port_device(unsigned port, unsigned device) +{ + (void)port; + (void)device; +} + +void retro_get_system_info(struct retro_system_info *info) +{ + memset(info, 0, sizeof(*info)); + info->library_name = "OpenLara"; + info->library_version = "v1"; + info->need_fullpath = true; + info->valid_extensions = "phd|psx|tr2|sat"; +} + +void retro_get_system_av_info(struct retro_system_av_info *info) +{ + info->timing = (struct retro_system_timing) { + .fps = (float)FRAMERATE, + .sample_rate = (float)SND_RATE, + }; + + info->geometry = (struct retro_game_geometry) { + .base_width = BASE_WIDTH, + .base_height = BASE_HEIGHT, + .max_width = MAX_WIDTH, + .max_height = MAX_HEIGHT, + .aspect_ratio = (float) MAX_WIDTH / MAX_HEIGHT, + }; +} + +void retro_set_environment(retro_environment_t cb) +{ + environ_cb = cb; + + struct retro_variable variables[] = { + { + "openlara_framerate", + "Framerate (restart); 60fps|70fps|72fps|75fps|90fps|100fps|119fps|120fps|144fps|240fps|244fps|300fps|360fps|30fps", + }, + { NULL, NULL }, + }; + + libretro_set_core_options(environ_cb); +} + +void retro_set_audio_sample(retro_audio_sample_t cb) +{ +} + +void retro_set_audio_sample_batch(retro_audio_sample_batch_t cb) +{ + audio_batch_cb = cb; +} + +void retro_set_input_poll(retro_input_poll_t cb) +{ + input_poll_cb = cb; +} + +void retro_set_input_state(retro_input_state_t cb) +{ + input_cb = cb; +} + +void retro_set_video_refresh(retro_video_refresh_t cb) +{ + video_cb = cb; +} + +static void update_variables(bool first_startup) +{ + if (first_startup) + { + struct retro_variable var; + + var.key = "openlara_resolution"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + char *pch; + char str[100]; + snprintf(str, sizeof(str), "%s", var.value); + + pch = strtok(str, "x"); + if (pch) + width = strtoul(pch, NULL, 0); + pch = strtok(NULL, "x"); + if (pch) + height = strtoul(pch, NULL, 0); + + MAX_WIDTH = width; + MAX_HEIGHT = height; + + fprintf(stderr, "[openlara]: Got size: %u x %u.\n", width, height); + } + + var.key = "openlara_framerate"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + if (!strcmp(var.value, "30fps")) + FRAMERATE = 30; + else if (!strcmp(var.value, "60fps")) + FRAMERATE = 60; + else if (!strcmp(var.value, "70fps")) + FRAMERATE = 70; + else if (!strcmp(var.value, "72fps")) + FRAMERATE = 72; + else if (!strcmp(var.value, "75fps")) + FRAMERATE = 75; + else if (!strcmp(var.value, "90fps")) + FRAMERATE = 90; + else if (!strcmp(var.value, "100fps")) + FRAMERATE = 100; + else if (!strcmp(var.value, "119fps")) + FRAMERATE = 119; + else if (!strcmp(var.value, "120fps")) + FRAMERATE = 120; + else if (!strcmp(var.value, "144fps")) + FRAMERATE = 144; + else if (!strcmp(var.value, "240fps")) + FRAMERATE = 240; + else if (!strcmp(var.value, "244fps")) + FRAMERATE = 244; + else if (!strcmp(var.value, "300fps")) + FRAMERATE = 300; + else if (!strcmp(var.value, "360fps")) + FRAMERATE = 360; + } + else + FRAMERATE = 60; + } +} + +static vec2 DeadZone(const int x, const int y) +{ + const float max = 0x8000; // abs( max value reported by libretro for analog sticks ) + const float deadzone = 0.25f; // TODO: Depends on pad and personal taste. Should probably be a core option. + float xa = (x / max); + float ya = (y / max); + + vec2 input(xa,ya); + + if(input.length() < deadzone) + { + input.x = 0; + input.y = 0; + } + + return input; +} + +void retro_run(void) +{ + bool updated = false; + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE, &updated) && updated) + update_variables(false); + + input_poll_cb(); + + static bool L3Presed = false; + static bool R3Presed = false; + + /* Player 1+2 */ + for (size_t i = 0; i < 2; i++) + { + int16_t ret = 0; + if (libretro_supports_bitmasks) + ret = input_cb(i, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_MASK); + else + { + unsigned j; + for (j = 0; j < (RETRO_DEVICE_ID_JOYPAD_R3+1); j++) + if (input_cb(i, RETRO_DEVICE_JOYPAD, 0, j)) + ret |= (1 << j); + } + + /* Analog */ + int lsx = input_cb(i, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_X); + int lsy = input_cb(i, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_Y); + + Input::setJoyPos(i, jkL, DeadZone(lsx, lsy)); + + /* Up */ + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_UP)) + Input::setJoyDown(i, JoyKey::jkUp, true); + else + Input::setJoyDown(i, JoyKey::jkUp, false); + + /* Down */ + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_DOWN)) + Input::setJoyDown(i, JoyKey::jkDown, true); + else + Input::setJoyDown(i, JoyKey::jkDown, false); + + /* Left */ + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) + Input::setJoyDown(i, JoyKey::jkLeft, true); + else + Input::setJoyDown(i, JoyKey::jkLeft, false); + + /* Right */ + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) + Input::setJoyDown(i, JoyKey::jkRight, true); + else + Input::setJoyDown(i, JoyKey::jkRight, false); + + /* Inventory screen */ + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_SELECT)) + Input::setJoyDown(i, JoyKey::jkSelect, true); + else + Input::setJoyDown(i, JoyKey::jkSelect, false); + + /* Start */ + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_START)) + Input::setJoyDown(i, JoyKey::jkStart, true); + else + Input::setJoyDown(i, JoyKey::jkStart, false); + + /* Draw weapon */ + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_X)) + Input::setJoyDown(i, JoyKey::jkY, true); + else + Input::setJoyDown(i, JoyKey::jkY, false); + + /* Grab/shoot - Action button */ + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_B)) + Input::setJoyDown(i, JoyKey::jkA, true); + else + Input::setJoyDown(i, JoyKey::jkA, false); + + /* Roll */ + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_A)) + Input::setJoyDown(i, JoyKey::jkB, true); + else + Input::setJoyDown(i, JoyKey::jkB, false); + + /* Jump */ + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_Y)) + Input::setJoyDown(i, JoyKey::jkX, true); + else + Input::setJoyDown(i, JoyKey::jkX, false); + + /* Walk */ + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_R)) + Input::setJoyDown(i, JoyKey::jkRB, true); + else + Input::setJoyDown(i, JoyKey::jkRB, false); + + /* Look */ + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_L)) + Input::setJoyDown(i, JoyKey::jkLB, true); + else + Input::setJoyDown(i, JoyKey::jkLB, false); + + /* Duck/Crouch */ + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_L2)) + Input::setJoyDown(i, JoyKey::jkLT, true); + else + Input::setJoyDown(i, JoyKey::jkLT, false); + + /* Dash */ + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_R2)) + Input::setJoyDown(i, JoyKey::jkRT, true); + else + Input::setJoyDown(i, JoyKey::jkRT, false); + + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_L3)) //Save + { + //Input::setJoyDown(i, JoyKey::ik5, true); + printf("Input::setDown(ik5, 1)d \n"); + if(!L3Presed) + Game::quickSave(); + L3Presed = true; + } + else + // Input::setJoyDown(i, JoyKey::ik5, false); + L3Presed = false; + + if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_R3)) //Load + { + // Input::setJoyDown(i, JoyKey::ik9, true); + printf("Input::setDown(ik9, 1)d \n"); + if(!R3Presed) + Game::quickLoad(false); + R3Presed = true; + } + else + // Input::setJoyDown(i, JoyKey::ik9, false); + R3Presed = false; + + } + + int audio_frames = SND_RATE / FRAMERATE; + int16_t *samples = (int16_t*)sndData; + + Sound::fill(sndData, audio_frames); + + while (audio_frames > 512) + { + audio_batch_cb(samples, 512); + samples += 1024; + audio_frames -= 512; + } + audio_batch_cb(samples, audio_frames); + + Core::deltaTime = 1.0 / FRAMERATE; + + updated = Game::update(); + if (updated) + Game::render(); + video_cb(RETRO_HW_FRAME_BUFFER_VALID, width, height, 0); +} + +static void context_reset(void) +{ + fprintf(stderr, "Context reset!\n"); + rglgen_resolve_symbols(hw_render.get_proc_address); + + sndData = new Sound::Frame[SND_RATE / FRAMERATE]; + Game::init(levelpath); +} + +static void context_destroy(void) +{} + +#ifdef HAVE_OPENGLES +static bool retro_init_hw_context(void) +{ +#if defined(HAVE_OPENGLES_3_1) + hw_render.context_type = RETRO_HW_CONTEXT_OPENGLES_VERSION; + hw_render.version_major = 3; + hw_render.version_minor = 2; +#elif defined(HAVE_OPENGLES3) + hw_render.context_type = RETRO_HW_CONTEXT_OPENGLES3; +#else + hw_render.context_type = RETRO_HW_CONTEXT_OPENGLES2; +#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; + + if (!environ_cb(RETRO_ENVIRONMENT_SET_HW_RENDER, &hw_render)) + return false; + + return true; +} +#else +static bool retro_init_hw_context(void) +{ +#if defined(CORE) + hw_render.context_type = RETRO_HW_CONTEXT_OPENGL_CORE; + hw_render.version_major = 3; + hw_render.version_minor = 2; +#else + hw_render.context_type = RETRO_HW_CONTEXT_OPENGL; +#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; + + if (!environ_cb(RETRO_ENVIRONMENT_SET_HW_RENDER, &hw_render)) + return false; + + return true; +} +#endif + +bool retro_load_game(const struct retro_game_info *info) +{ + struct retro_input_descriptor desc[] = { + // Player 1 + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "Left" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "Up" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "Down" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "Right" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Inventory" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "Jump" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Draw weapon" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "Action (Shoot/grab)" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "Roll" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "Look (when holding)" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "Walk (when holding)" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2, "Duck/Crouch (TR3 and up)" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2, "Dash (TR3 and up)" }, + // Player 2 + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "Left" }, + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "Up" }, + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "Down" }, + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "Right" }, + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Inventory" }, + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "Jump" }, + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Draw weapon" }, + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "Action (Shoot/grab)" }, + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "Roll" }, + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "Look (when holding)" }, + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "Walk (when holding)" }, + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2, "Duck/Crouch (TR3 and up)" }, + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2, "Dash (TR3 and up)" }, + { 0 }, + }; + + environ_cb(RETRO_ENVIRONMENT_SET_HW_SHARED_CONTEXT, NULL); + + update_variables(true); + + environ_cb(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, desc); + + enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_XRGB8888; + if (!environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt)) + { + fprintf(stderr, "XRGB8888 is not supported.\n"); + return false; + } + + if (!retro_init_hw_context()) + { + fprintf(stderr, "HW Context could not be initialized, exiting...\n"); + return false; + } + +if (!path_is_absolute(info->path)) + { + fprintf(stderr, "Full path to content is required, exiting...\n"); + return false; + } + + char basedir[1024] = {0}; + fill_pathname_basedir(basedir, info->path, sizeof(basedir)); + + // contentDir acts as the current working directory in OpenLara + strcpy(contentDir, basedir); + path_parent_dir(contentDir); + fill_pathname_parent_dir_name(basedir, contentDir, sizeof(basedir)); + + if (strcmp(basedir, "level") == 0) + { + // level/X/ + path_parent_dir(contentDir); + } + fprintf(stderr, "[openlara]: contentDir: %s\n", contentDir); + + // make levelpath contain a path relative to contentDir + strcpy(levelpath, (info->path+strlen(contentDir))); + + fprintf(stderr, "[openlara]: levelpath: %s\n", levelpath); + + Core::width = width; + Core::height = height; + + fprintf(stderr, "Loaded game!\n"); + + return true; +} + +void retro_unload_game(void) +{ + delete[] sndData; + Game::deinit(); +} + +unsigned retro_get_region(void) +{ + return RETRO_REGION_NTSC; +} + +bool retro_load_game_special(unsigned type, const struct retro_game_info *info, size_t num) +{ + (void)type; + (void)info; + (void)num; + return false; +} + +size_t retro_serialize_size(void) +{ + return 8192; //暂定大小 应该够用 +} + + +extern Array saveSlots; +extern SaveResult saveResult; +extern int loadSlot; + +bool retro_serialize(void *data, size_t size) +{ + (void)size; + + if (!Game::level || TR::isTitleLevel(Game::level->level.id) || TR::isCutsceneLevel(Game::level->level.id)) { + return false; + } + //level->saveGame(level->level.id, true, false); + + //saveGame(TR::LevelID id, bool checkpoint, bool updateStats) + + if (saveResult == SAVE_RESULT_WAIT) + return false; + + //LOG("Save Game...\n"); + + removeSaveSlot((Game::level->level.id), true); // remove checkpoints and level saves + SaveSlot slotsave = Game::level->createSaveSlot((Game::level->level.id), true); + saveSlots.push(slotsave); + saveSlots.sort(); + + saveResult = SAVE_RESULT_WAIT; + //UI::showHint(STR_HINT_SAVING, 60.0f); + //int count; + //uint8 *savecount = writeSaveSlots(count); + memcpy( data, &slotsave.size, sizeof(uint32)); + memcpy( ((uint8*)data+sizeof(uint32)), slotsave.data, count); + delete[] slotsave.data; + + return true; + +// (void)data; + +// return false; +} + +bool retro_unserialize(const void *data, size_t size) +{ + if (!Game::level) return false; + + + int savesieze + + + SaveSlot slotload; + + memcpy( &slotload.size , data, sizeof(uint32)); + + slotload.data = slotload.size + + + int slot = getSaveSlot(Game::level->level.id, true); + + printf("quickLoad slot :%d \n", slot); + + + if (slot == -1) { + slot = getSaveSlot(Game::level->level.id, false); + } + + if (slot > -1) { + Game::level->loadGame(slot); + } + + + (void)data; + (void)size; + return false; +} + +void *retro_get_memory_data(unsigned id) +{ + (void)id; + return NULL; +} + +size_t retro_get_memory_size(unsigned id) +{ + (void)id; + return 0; +} + +void retro_reset(void) +{} + +void retro_cheat_reset(void) +{} + +void retro_cheat_set(unsigned index, bool enabled, const char *code) +{ + (void)index; + (void)enabled; + (void)code; +} + +//void osToggleVR(bool enable) { +//} +int osGetTimeMS() { + timeval t; + gettimeofday(&t, NULL); + return int((t.tv_sec - startTime) * 1000 + t.tv_usec / 1000); +} \ No newline at end of file diff --git a/src/savegame.h b/src/savegame.h index f3ce52a9..d236d315 100644 --- a/src/savegame.h +++ b/src/savegame.h @@ -154,7 +154,6 @@ uint8* writeSaveSlots(int &size) { memcpy(ptr + 4, s.data, s.size); ptr += 4 + s.size; } - return data; } diff --git a/src/ui.h b/src/ui.h index 73fd1c26..be2a54b0 100644 --- a/src/ui.h +++ b/src/ui.h @@ -719,7 +719,7 @@ namespace UI { textOut(vec2(16, 32), hintStr, aLeft, width - 32, 255, UI::SHADE_GRAY); } - #if defined(_OS_WEB) || defined(_OS_WIN) || defined(_OS_LINUX) || defined(_OS_MAC) || defined(_OS_RPI) + #if !defined(__LIBRETRO__) && (defined(_OS_WEB) || defined(_OS_WIN) || defined(_OS_LINUX) || defined(_OS_MAC) || defined(_OS_RPI)) if (showHelp) { textOut(vec2(32, 32), STR_HELP_TEXT, aLeft, width - 32, 255, UI::SHADE_GRAY); } else { diff --git a/src/utils.h b/src/utils.h index 04032739..3eaaafe4 100644 --- a/src/utils.h +++ b/src/utils.h @@ -58,7 +58,7 @@ #define LOG(...) psvDebugScreenPrintf(__VA_ARGS__) #endif -#ifdef _OS_ANDROID +#if defined(_OS_ANDROID) && !defined(__LIBRETRO__) #include #undef LOG #define LOG(...) __android_log_print(ANDROID_LOG_INFO,"OpenLara",__VA_ARGS__)