summary refs log tree commit diff stats
path: root/vendor/SDL2/include
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/SDL2/include')
-rw-r--r--vendor/SDL2/include/SDL.h232
-rw-r--r--vendor/SDL2/include/SDL_assert.h324
-rw-r--r--vendor/SDL2/include/SDL_atomic.h395
-rw-r--r--vendor/SDL2/include/SDL_audio.h1464
-rw-r--r--vendor/SDL2/include/SDL_bits.h126
-rw-r--r--vendor/SDL2/include/SDL_blendmode.h200
-rw-r--r--vendor/SDL2/include/SDL_clipboard.h94
-rw-r--r--vendor/SDL2/include/SDL_config.h305
-rw-r--r--vendor/SDL2/include/SDL_config.h.cmake445
-rw-r--r--vendor/SDL2/include/SDL_config.h.in389
-rw-r--r--vendor/SDL2/include/SDL_config_android.h157
-rw-r--r--vendor/SDL2/include/SDL_config_iphoneos.h166
-rw-r--r--vendor/SDL2/include/SDL_config_macosx.h197
-rw-r--r--vendor/SDL2/include/SDL_config_macosx.h.orig197
-rw-r--r--vendor/SDL2/include/SDL_config_minimal.h82
-rw-r--r--vendor/SDL2/include/SDL_config_pandora.h128
-rw-r--r--vendor/SDL2/include/SDL_config_psp.h144
-rw-r--r--vendor/SDL2/include/SDL_config_windows.h225
-rw-r--r--vendor/SDL2/include/SDL_config_winrt.h215
-rw-r--r--vendor/SDL2/include/SDL_config_wiz.h121
-rw-r--r--vendor/SDL2/include/SDL_copying.h20
-rw-r--r--vendor/SDL2/include/SDL_cpuinfo.h559
-rw-r--r--vendor/SDL2/include/SDL_egl.h2302
-rw-r--r--vendor/SDL2/include/SDL_endian.h317
-rw-r--r--vendor/SDL2/include/SDL_error.h163
-rw-r--r--vendor/SDL2/include/SDL_events.h1135
-rw-r--r--vendor/SDL2/include/SDL_filesystem.h145
-rw-r--r--vendor/SDL2/include/SDL_gamecontroller.h1001
-rw-r--r--vendor/SDL2/include/SDL_gesture.h117
-rw-r--r--vendor/SDL2/include/SDL_haptic.h1341
-rw-r--r--vendor/SDL2/include/SDL_hidapi.h451
-rw-r--r--vendor/SDL2/include/SDL_hints.h1967
-rw-r--r--vendor/SDL2/include/SDL_joystick.h946
-rw-r--r--vendor/SDL2/include/SDL_keyboard.h316
-rw-r--r--vendor/SDL2/include/SDL_keycode.h353
-rw-r--r--vendor/SDL2/include/SDL_loadso.h115
-rw-r--r--vendor/SDL2/include/SDL_locale.h103
-rw-r--r--vendor/SDL2/include/SDL_log.h404
-rw-r--r--vendor/SDL2/include/SDL_main.h235
-rw-r--r--vendor/SDL2/include/SDL_messagebox.h193
-rw-r--r--vendor/SDL2/include/SDL_metal.h112
-rw-r--r--vendor/SDL2/include/SDL_misc.h79
-rw-r--r--vendor/SDL2/include/SDL_mouse.h454
-rw-r--r--vendor/SDL2/include/SDL_mutex.h471
-rw-r--r--vendor/SDL2/include/SDL_name.h33
-rw-r--r--vendor/SDL2/include/SDL_opengl.h2183
-rw-r--r--vendor/SDL2/include/SDL_opengl_glext.h11180
-rw-r--r--vendor/SDL2/include/SDL_opengles.h39
-rw-r--r--vendor/SDL2/include/SDL_opengles2.h52
-rw-r--r--vendor/SDL2/include/SDL_opengles2_gl2.h621
-rw-r--r--vendor/SDL2/include/SDL_opengles2_gl2ext.h2050
-rw-r--r--vendor/SDL2/include/SDL_opengles2_gl2platform.h30
-rw-r--r--vendor/SDL2/include/SDL_opengles2_khrplatform.h282
-rw-r--r--vendor/SDL2/include/SDL_pixels.h644
-rw-r--r--vendor/SDL2/include/SDL_platform.h235
-rw-r--r--vendor/SDL2/include/SDL_power.h88
-rw-r--r--vendor/SDL2/include/SDL_quit.h58
-rw-r--r--vendor/SDL2/include/SDL_rect.h224
-rw-r--r--vendor/SDL2/include/SDL_render.h1890
-rw-r--r--vendor/SDL2/include/SDL_revision.h2
-rw-r--r--vendor/SDL2/include/SDL_rwops.h855
-rw-r--r--vendor/SDL2/include/SDL_scancode.h413
-rw-r--r--vendor/SDL2/include/SDL_sensor.h301
-rw-r--r--vendor/SDL2/include/SDL_shape.h155
-rw-r--r--vendor/SDL2/include/SDL_stdinc.h719
-rw-r--r--vendor/SDL2/include/SDL_surface.h995
-rw-r--r--vendor/SDL2/include/SDL_system.h563
-rw-r--r--vendor/SDL2/include/SDL_syswm.h384
-rw-r--r--vendor/SDL2/include/SDL_test.h69
-rw-r--r--vendor/SDL2/include/SDL_test_assert.h105
-rw-r--r--vendor/SDL2/include/SDL_test_common.h235
-rw-r--r--vendor/SDL2/include/SDL_test_compare.h69
-rw-r--r--vendor/SDL2/include/SDL_test_crc32.h124
-rw-r--r--vendor/SDL2/include/SDL_test_font.h81
-rw-r--r--vendor/SDL2/include/SDL_test_fuzzer.h386
-rw-r--r--vendor/SDL2/include/SDL_test_harness.h134
-rw-r--r--vendor/SDL2/include/SDL_test_images.h78
-rw-r--r--vendor/SDL2/include/SDL_test_log.h67
-rw-r--r--vendor/SDL2/include/SDL_test_md5.h129
-rw-r--r--vendor/SDL2/include/SDL_test_memory.h63
-rw-r--r--vendor/SDL2/include/SDL_test_random.h115
-rw-r--r--vendor/SDL2/include/SDL_thread.h464
-rw-r--r--vendor/SDL2/include/SDL_timer.h222
-rw-r--r--vendor/SDL2/include/SDL_touch.h142
-rw-r--r--vendor/SDL2/include/SDL_types.h29
-rw-r--r--vendor/SDL2/include/SDL_version.h188
-rw-r--r--vendor/SDL2/include/SDL_video.h2088
-rw-r--r--vendor/SDL2/include/SDL_vulkan.h215
-rw-r--r--vendor/SDL2/include/begin_code.h187
-rw-r--r--vendor/SDL2/include/close_code.h40
90 files changed, 48131 insertions, 0 deletions
diff --git a/vendor/SDL2/include/SDL.h b/vendor/SDL2/include/SDL.h new file mode 100644 index 0000000..7cdd324 --- /dev/null +++ b/vendor/SDL2/include/SDL.h
@@ -0,0 +1,232 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL.h
24 *
25 * Main include header for the SDL library
26 */
27
28
29#ifndef SDL_h_
30#define SDL_h_
31
32#include "SDL_main.h"
33#include "SDL_stdinc.h"
34#include "SDL_assert.h"
35#include "SDL_atomic.h"
36#include "SDL_audio.h"
37#include "SDL_clipboard.h"
38#include "SDL_cpuinfo.h"
39#include "SDL_endian.h"
40#include "SDL_error.h"
41#include "SDL_events.h"
42#include "SDL_filesystem.h"
43#include "SDL_gamecontroller.h"
44#include "SDL_haptic.h"
45#include "SDL_hidapi.h"
46#include "SDL_hints.h"
47#include "SDL_joystick.h"
48#include "SDL_loadso.h"
49#include "SDL_log.h"
50#include "SDL_messagebox.h"
51#include "SDL_metal.h"
52#include "SDL_mutex.h"
53#include "SDL_power.h"
54#include "SDL_render.h"
55#include "SDL_rwops.h"
56#include "SDL_sensor.h"
57#include "SDL_shape.h"
58#include "SDL_system.h"
59#include "SDL_thread.h"
60#include "SDL_timer.h"
61#include "SDL_version.h"
62#include "SDL_video.h"
63#include "SDL_locale.h"
64#include "SDL_misc.h"
65
66#include "begin_code.h"
67/* Set up for C function definitions, even when using C++ */
68#ifdef __cplusplus
69extern "C" {
70#endif
71
72/* As of version 0.5, SDL is loaded dynamically into the application */
73
74/**
75 * \name SDL_INIT_*
76 *
77 * These are the flags which may be passed to SDL_Init(). You should
78 * specify the subsystems which you will be using in your application.
79 */
80/* @{ */
81#define SDL_INIT_TIMER 0x00000001u
82#define SDL_INIT_AUDIO 0x00000010u
83#define SDL_INIT_VIDEO 0x00000020u /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */
84#define SDL_INIT_JOYSTICK 0x00000200u /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */
85#define SDL_INIT_HAPTIC 0x00001000u
86#define SDL_INIT_GAMECONTROLLER 0x00002000u /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */
87#define SDL_INIT_EVENTS 0x00004000u
88#define SDL_INIT_SENSOR 0x00008000u
89#define SDL_INIT_NOPARACHUTE 0x00100000u /**< compatibility; this flag is ignored. */
90#define SDL_INIT_EVERYTHING ( \
91 SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \
92 SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \
93 )
94/* @} */
95
96/**
97 * Initialize the SDL library.
98 *
99 * SDL_Init() simply forwards to calling SDL_InitSubSystem(). Therefore, the
100 * two may be used interchangeably. Though for readability of your code
101 * SDL_InitSubSystem() might be preferred.
102 *
103 * The file I/O (for example: SDL_RWFromFile) and threading (SDL_CreateThread)
104 * subsystems are initialized by default. Message boxes
105 * (SDL_ShowSimpleMessageBox) also attempt to work without initializing the
106 * video subsystem, in hopes of being useful in showing an error dialog when
107 * SDL_Init fails. You must specifically initialize other subsystems if you
108 * use them in your application.
109 *
110 * Logging (such as SDL_Log) works without initialization, too.
111 *
112 * `flags` may be any of the following OR'd together:
113 *
114 * - `SDL_INIT_TIMER`: timer subsystem
115 * - `SDL_INIT_AUDIO`: audio subsystem
116 * - `SDL_INIT_VIDEO`: video subsystem; automatically initializes the events
117 * subsystem
118 * - `SDL_INIT_JOYSTICK`: joystick subsystem; automatically initializes the
119 * events subsystem
120 * - `SDL_INIT_HAPTIC`: haptic (force feedback) subsystem
121 * - `SDL_INIT_GAMECONTROLLER`: controller subsystem; automatically
122 * initializes the joystick subsystem
123 * - `SDL_INIT_EVENTS`: events subsystem
124 * - `SDL_INIT_EVERYTHING`: all of the above subsystems
125 * - `SDL_INIT_NOPARACHUTE`: compatibility; this flag is ignored
126 *
127 * Subsystem initialization is ref-counted, you must call SDL_QuitSubSystem()
128 * for each SDL_InitSubSystem() to correctly shutdown a subsystem manually (or
129 * call SDL_Quit() to force shutdown). If a subsystem is already loaded then
130 * this call will increase the ref-count and return.
131 *
132 * \param flags subsystem initialization flags
133 * \returns 0 on success or a negative error code on failure; call
134 * SDL_GetError() for more information.
135 *
136 * \since This function is available since SDL 2.0.0.
137 *
138 * \sa SDL_InitSubSystem
139 * \sa SDL_Quit
140 * \sa SDL_SetMainReady
141 * \sa SDL_WasInit
142 */
143extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags);
144
145/**
146 * Compatibility function to initialize the SDL library.
147 *
148 * In SDL2, this function and SDL_Init() are interchangeable.
149 *
150 * \param flags any of the flags used by SDL_Init(); see SDL_Init for details.
151 * \returns 0 on success or a negative error code on failure; call
152 * SDL_GetError() for more information.
153 *
154 * \since This function is available since SDL 2.0.0.
155 *
156 * \sa SDL_Init
157 * \sa SDL_Quit
158 * \sa SDL_QuitSubSystem
159 */
160extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags);
161
162/**
163 * Shut down specific SDL subsystems.
164 *
165 * If you start a subsystem using a call to that subsystem's init function
166 * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(),
167 * SDL_QuitSubSystem() and SDL_WasInit() will not work. You will need to use
168 * that subsystem's quit function (SDL_VideoQuit()) directly instead. But
169 * generally, you should not be using those functions directly anyhow; use
170 * SDL_Init() instead.
171 *
172 * You still need to call SDL_Quit() even if you close all open subsystems
173 * with SDL_QuitSubSystem().
174 *
175 * \param flags any of the flags used by SDL_Init(); see SDL_Init for details.
176 *
177 * \since This function is available since SDL 2.0.0.
178 *
179 * \sa SDL_InitSubSystem
180 * \sa SDL_Quit
181 */
182extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags);
183
184/**
185 * Get a mask of the specified subsystems which are currently initialized.
186 *
187 * \param flags any of the flags used by SDL_Init(); see SDL_Init for details.
188 * \returns a mask of all initialized subsystems if `flags` is 0, otherwise it
189 * returns the initialization status of the specified subsystems.
190 *
191 * The return value does not include SDL_INIT_NOPARACHUTE.
192 *
193 * \since This function is available since SDL 2.0.0.
194 *
195 * \sa SDL_Init
196 * \sa SDL_InitSubSystem
197 */
198extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags);
199
200/**
201 * Clean up all initialized subsystems.
202 *
203 * You should call this function even if you have already shutdown each
204 * initialized subsystem with SDL_QuitSubSystem(). It is safe to call this
205 * function even in the case of errors in initialization.
206 *
207 * If you start a subsystem using a call to that subsystem's init function
208 * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(),
209 * then you must use that subsystem's quit function (SDL_VideoQuit()) to shut
210 * it down before calling SDL_Quit(). But generally, you should not be using
211 * those functions directly anyhow; use SDL_Init() instead.
212 *
213 * You can use this function with atexit() to ensure that it is run when your
214 * application is shutdown, but it is not wise to do this from a library or
215 * other dynamically loaded code.
216 *
217 * \since This function is available since SDL 2.0.0.
218 *
219 * \sa SDL_Init
220 * \sa SDL_QuitSubSystem
221 */
222extern DECLSPEC void SDLCALL SDL_Quit(void);
223
224/* Ends C function definitions when using C++ */
225#ifdef __cplusplus
226}
227#endif
228#include "close_code.h"
229
230#endif /* SDL_h_ */
231
232/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_assert.h b/vendor/SDL2/include/SDL_assert.h new file mode 100644 index 0000000..defadf1 --- /dev/null +++ b/vendor/SDL2/include/SDL_assert.h
@@ -0,0 +1,324 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_assert_h_
23#define SDL_assert_h_
24
25#include "SDL_config.h"
26
27#include "begin_code.h"
28/* Set up for C function definitions, even when using C++ */
29#ifdef __cplusplus
30extern "C" {
31#endif
32
33#ifndef SDL_ASSERT_LEVEL
34#ifdef SDL_DEFAULT_ASSERT_LEVEL
35#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL
36#elif defined(_DEBUG) || defined(DEBUG) || \
37 (defined(__GNUC__) && !defined(__OPTIMIZE__))
38#define SDL_ASSERT_LEVEL 2
39#else
40#define SDL_ASSERT_LEVEL 1
41#endif
42#endif /* SDL_ASSERT_LEVEL */
43
44/*
45These are macros and not first class functions so that the debugger breaks
46on the assertion line and not in some random guts of SDL, and so each
47assert can have unique static variables associated with it.
48*/
49
50#if defined(_MSC_VER)
51/* Don't include intrin.h here because it contains C++ code */
52 extern void __cdecl __debugbreak(void);
53 #define SDL_TriggerBreakpoint() __debugbreak()
54#elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) )
55 #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" )
56#elif ( defined(__APPLE__) && (defined(__arm64__) || defined(__aarch64__)) ) /* this might work on other ARM targets, but this is a known quantity... */
57 #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #22\n\t" )
58#elif defined(__APPLE__) && defined(__arm__)
59 #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "bkpt #22\n\t" )
60#elif defined(__386__) && defined(__WATCOMC__)
61 #define SDL_TriggerBreakpoint() { _asm { int 0x03 } }
62#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__)
63 #include <signal.h>
64 #define SDL_TriggerBreakpoint() raise(SIGTRAP)
65#else
66 /* How do we trigger breakpoints on this platform? */
67 #define SDL_TriggerBreakpoint()
68#endif
69
70#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */
71# define SDL_FUNCTION __func__
72#elif ((__GNUC__ >= 2) || defined(_MSC_VER) || defined (__WATCOMC__))
73# define SDL_FUNCTION __FUNCTION__
74#else
75# define SDL_FUNCTION "???"
76#endif
77#define SDL_FILE __FILE__
78#define SDL_LINE __LINE__
79
80/*
81sizeof (x) makes the compiler still parse the expression even without
82assertions enabled, so the code is always checked at compile time, but
83doesn't actually generate code for it, so there are no side effects or
84expensive checks at run time, just the constant size of what x WOULD be,
85which presumably gets optimized out as unused.
86This also solves the problem of...
87
88 int somevalue = blah();
89 SDL_assert(somevalue == 1);
90
91...which would cause compiles to complain that somevalue is unused if we
92disable assertions.
93*/
94
95/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking
96 this condition isn't constant. And looks like an owl's face! */
97#ifdef _MSC_VER /* stupid /W4 warnings. */
98#define SDL_NULL_WHILE_LOOP_CONDITION (0,0)
99#else
100#define SDL_NULL_WHILE_LOOP_CONDITION (0)
101#endif
102
103#define SDL_disabled_assert(condition) \
104 do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION)
105
106typedef enum
107{
108 SDL_ASSERTION_RETRY, /**< Retry the assert immediately. */
109 SDL_ASSERTION_BREAK, /**< Make the debugger trigger a breakpoint. */
110 SDL_ASSERTION_ABORT, /**< Terminate the program. */
111 SDL_ASSERTION_IGNORE, /**< Ignore the assert. */
112 SDL_ASSERTION_ALWAYS_IGNORE /**< Ignore the assert from now on. */
113} SDL_AssertState;
114
115typedef struct SDL_AssertData
116{
117 int always_ignore;
118 unsigned int trigger_count;
119 const char *condition;
120 const char *filename;
121 int linenum;
122 const char *function;
123 const struct SDL_AssertData *next;
124} SDL_AssertData;
125
126#if (SDL_ASSERT_LEVEL > 0)
127
128/* Never call this directly. Use the SDL_assert* macros. */
129extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *,
130 const char *,
131 const char *, int)
132#if defined(__clang__)
133#if __has_feature(attribute_analyzer_noreturn)
134/* this tells Clang's static analysis that we're a custom assert function,
135 and that the analyzer should assume the condition was always true past this
136 SDL_assert test. */
137 __attribute__((analyzer_noreturn))
138#endif
139#endif
140;
141
142/* the do {} while(0) avoids dangling else problems:
143 if (x) SDL_assert(y); else blah();
144 ... without the do/while, the "else" could attach to this macro's "if".
145 We try to handle just the minimum we need here in a macro...the loop,
146 the static vars, and break points. The heavy lifting is handled in
147 SDL_ReportAssertion(), in SDL_assert.c.
148*/
149#define SDL_enabled_assert(condition) \
150 do { \
151 while ( !(condition) ) { \
152 static struct SDL_AssertData sdl_assert_data = { \
153 0, 0, #condition, 0, 0, 0, 0 \
154 }; \
155 const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \
156 if (sdl_assert_state == SDL_ASSERTION_RETRY) { \
157 continue; /* go again. */ \
158 } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \
159 SDL_TriggerBreakpoint(); \
160 } \
161 break; /* not retrying. */ \
162 } \
163 } while (SDL_NULL_WHILE_LOOP_CONDITION)
164
165#endif /* enabled assertions support code */
166
167/* Enable various levels of assertions. */
168#if SDL_ASSERT_LEVEL == 0 /* assertions disabled */
169# define SDL_assert(condition) SDL_disabled_assert(condition)
170# define SDL_assert_release(condition) SDL_disabled_assert(condition)
171# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
172#elif SDL_ASSERT_LEVEL == 1 /* release settings. */
173# define SDL_assert(condition) SDL_disabled_assert(condition)
174# define SDL_assert_release(condition) SDL_enabled_assert(condition)
175# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
176#elif SDL_ASSERT_LEVEL == 2 /* normal settings. */
177# define SDL_assert(condition) SDL_enabled_assert(condition)
178# define SDL_assert_release(condition) SDL_enabled_assert(condition)
179# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
180#elif SDL_ASSERT_LEVEL == 3 /* paranoid settings. */
181# define SDL_assert(condition) SDL_enabled_assert(condition)
182# define SDL_assert_release(condition) SDL_enabled_assert(condition)
183# define SDL_assert_paranoid(condition) SDL_enabled_assert(condition)
184#else
185# error Unknown assertion level.
186#endif
187
188/* this assertion is never disabled at any level. */
189#define SDL_assert_always(condition) SDL_enabled_assert(condition)
190
191
192/**
193 * A callback that fires when an SDL assertion fails.
194 *
195 * \param data a pointer to the SDL_AssertData structure corresponding to the
196 * current assertion
197 * \param userdata what was passed as `userdata` to SDL_SetAssertionHandler()
198 * \returns an SDL_AssertState value indicating how to handle the failure.
199 */
200typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)(
201 const SDL_AssertData* data, void* userdata);
202
203/**
204 * Set an application-defined assertion handler.
205 *
206 * This function allows an application to show its own assertion UI and/or
207 * force the response to an assertion failure. If the application doesn't
208 * provide this, SDL will try to do the right thing, popping up a
209 * system-specific GUI dialog, and probably minimizing any fullscreen windows.
210 *
211 * This callback may fire from any thread, but it runs wrapped in a mutex, so
212 * it will only fire from one thread at a time.
213 *
214 * This callback is NOT reset to SDL's internal handler upon SDL_Quit()!
215 *
216 * \param handler the SDL_AssertionHandler function to call when an assertion
217 * fails or NULL for the default handler
218 * \param userdata a pointer that is passed to `handler`
219 *
220 * \since This function is available since SDL 2.0.0.
221 *
222 * \sa SDL_GetAssertionHandler
223 */
224extern DECLSPEC void SDLCALL SDL_SetAssertionHandler(
225 SDL_AssertionHandler handler,
226 void *userdata);
227
228/**
229 * Get the default assertion handler.
230 *
231 * This returns the function pointer that is called by default when an
232 * assertion is triggered. This is an internal function provided by SDL, that
233 * is used for assertions when SDL_SetAssertionHandler() hasn't been used to
234 * provide a different function.
235 *
236 * \returns the default SDL_AssertionHandler that is called when an assert
237 * triggers.
238 *
239 * \since This function is available since SDL 2.0.2.
240 *
241 * \sa SDL_GetAssertionHandler
242 */
243extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void);
244
245/**
246 * Get the current assertion handler.
247 *
248 * This returns the function pointer that is called when an assertion is
249 * triggered. This is either the value last passed to
250 * SDL_SetAssertionHandler(), or if no application-specified function is set,
251 * is equivalent to calling SDL_GetDefaultAssertionHandler().
252 *
253 * The parameter `puserdata` is a pointer to a void*, which will store the
254 * "userdata" pointer that was passed to SDL_SetAssertionHandler(). This value
255 * will always be NULL for the default handler. If you don't care about this
256 * data, it is safe to pass a NULL pointer to this function to ignore it.
257 *
258 * \param puserdata pointer which is filled with the "userdata" pointer that
259 * was passed to SDL_SetAssertionHandler()
260 * \returns the SDL_AssertionHandler that is called when an assert triggers.
261 *
262 * \since This function is available since SDL 2.0.2.
263 *
264 * \sa SDL_SetAssertionHandler
265 */
266extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata);
267
268/**
269 * Get a list of all assertion failures.
270 *
271 * This function gets all assertions triggered since the last call to
272 * SDL_ResetAssertionReport(), or the start of the program.
273 *
274 * The proper way to examine this data looks something like this:
275 *
276 * ```c
277 * const SDL_AssertData *item = SDL_GetAssertionReport();
278 * while (item) {
279 * printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n",
280 * item->condition, item->function, item->filename,
281 * item->linenum, item->trigger_count,
282 * item->always_ignore ? "yes" : "no");
283 * item = item->next;
284 * }
285 * ```
286 *
287 * \returns a list of all failed assertions or NULL if the list is empty. This
288 * memory should not be modified or freed by the application.
289 *
290 * \since This function is available since SDL 2.0.0.
291 *
292 * \sa SDL_ResetAssertionReport
293 */
294extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void);
295
296/**
297 * Clear the list of all assertion failures.
298 *
299 * This function will clear the list of all assertions triggered up to that
300 * point. Immediately following this call, SDL_GetAssertionReport will return
301 * no items. In addition, any previously-triggered assertions will be reset to
302 * a trigger_count of zero, and their always_ignore state will be false.
303 *
304 * \since This function is available since SDL 2.0.0.
305 *
306 * \sa SDL_GetAssertionReport
307 */
308extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void);
309
310
311/* these had wrong naming conventions until 2.0.4. Please update your app! */
312#define SDL_assert_state SDL_AssertState
313#define SDL_assert_data SDL_AssertData
314
315
316/* Ends C function definitions when using C++ */
317#ifdef __cplusplus
318}
319#endif
320#include "close_code.h"
321
322#endif /* SDL_assert_h_ */
323
324/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_atomic.h b/vendor/SDL2/include/SDL_atomic.h new file mode 100644 index 0000000..b29ceea --- /dev/null +++ b/vendor/SDL2/include/SDL_atomic.h
@@ -0,0 +1,395 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_atomic.h
24 *
25 * Atomic operations.
26 *
27 * IMPORTANT:
28 * If you are not an expert in concurrent lockless programming, you should
29 * only be using the atomic lock and reference counting functions in this
30 * file. In all other cases you should be protecting your data structures
31 * with full mutexes.
32 *
33 * The list of "safe" functions to use are:
34 * SDL_AtomicLock()
35 * SDL_AtomicUnlock()
36 * SDL_AtomicIncRef()
37 * SDL_AtomicDecRef()
38 *
39 * Seriously, here be dragons!
40 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^
41 *
42 * You can find out a little more about lockless programming and the
43 * subtle issues that can arise here:
44 * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx
45 *
46 * There's also lots of good information here:
47 * http://www.1024cores.net/home/lock-free-algorithms
48 * http://preshing.com/
49 *
50 * These operations may or may not actually be implemented using
51 * processor specific atomic operations. When possible they are
52 * implemented as true processor specific atomic operations. When that
53 * is not possible the are implemented using locks that *do* use the
54 * available atomic operations.
55 *
56 * All of the atomic operations that modify memory are full memory barriers.
57 */
58
59#ifndef SDL_atomic_h_
60#define SDL_atomic_h_
61
62#include "SDL_stdinc.h"
63#include "SDL_platform.h"
64
65#include "begin_code.h"
66
67/* Set up for C function definitions, even when using C++ */
68#ifdef __cplusplus
69extern "C" {
70#endif
71
72/**
73 * \name SDL AtomicLock
74 *
75 * The atomic locks are efficient spinlocks using CPU instructions,
76 * but are vulnerable to starvation and can spin forever if a thread
77 * holding a lock has been terminated. For this reason you should
78 * minimize the code executed inside an atomic lock and never do
79 * expensive things like API or system calls while holding them.
80 *
81 * The atomic locks are not safe to lock recursively.
82 *
83 * Porting Note:
84 * The spin lock functions and type are required and can not be
85 * emulated because they are used in the atomic emulation code.
86 */
87/* @{ */
88
89typedef int SDL_SpinLock;
90
91/**
92 * Try to lock a spin lock by setting it to a non-zero value.
93 *
94 * ***Please note that spinlocks are dangerous if you don't know what you're
95 * doing. Please be careful using any sort of spinlock!***
96 *
97 * \param lock a pointer to a lock variable
98 * \returns SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already
99 * held.
100 *
101 * \since This function is available since SDL 2.0.0.
102 *
103 * \sa SDL_AtomicLock
104 * \sa SDL_AtomicUnlock
105 */
106extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock);
107
108/**
109 * Lock a spin lock by setting it to a non-zero value.
110 *
111 * ***Please note that spinlocks are dangerous if you don't know what you're
112 * doing. Please be careful using any sort of spinlock!***
113 *
114 * \param lock a pointer to a lock variable
115 *
116 * \since This function is available since SDL 2.0.0.
117 *
118 * \sa SDL_AtomicTryLock
119 * \sa SDL_AtomicUnlock
120 */
121extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock);
122
123/**
124 * Unlock a spin lock by setting it to 0.
125 *
126 * Always returns immediately.
127 *
128 * ***Please note that spinlocks are dangerous if you don't know what you're
129 * doing. Please be careful using any sort of spinlock!***
130 *
131 * \param lock a pointer to a lock variable
132 *
133 * \since This function is available since SDL 2.0.0.
134 *
135 * \sa SDL_AtomicLock
136 * \sa SDL_AtomicTryLock
137 */
138extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock);
139
140/* @} *//* SDL AtomicLock */
141
142
143/**
144 * The compiler barrier prevents the compiler from reordering
145 * reads and writes to globally visible variables across the call.
146 */
147#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__)
148void _ReadWriteBarrier(void);
149#pragma intrinsic(_ReadWriteBarrier)
150#define SDL_CompilerBarrier() _ReadWriteBarrier()
151#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))
152/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */
153#define SDL_CompilerBarrier() __asm__ __volatile__ ("" : : : "memory")
154#elif defined(__WATCOMC__)
155extern __inline void SDL_CompilerBarrier(void);
156#pragma aux SDL_CompilerBarrier = "" parm [] modify exact [];
157#else
158#define SDL_CompilerBarrier() \
159{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); }
160#endif
161
162/**
163 * Memory barriers are designed to prevent reads and writes from being
164 * reordered by the compiler and being seen out of order on multi-core CPUs.
165 *
166 * A typical pattern would be for thread A to write some data and a flag, and
167 * for thread B to read the flag and get the data. In this case you would
168 * insert a release barrier between writing the data and the flag,
169 * guaranteeing that the data write completes no later than the flag is
170 * written, and you would insert an acquire barrier between reading the flag
171 * and reading the data, to ensure that all the reads associated with the flag
172 * have completed.
173 *
174 * In this pattern you should always see a release barrier paired with an
175 * acquire barrier and you should gate the data reads/writes with a single
176 * flag variable.
177 *
178 * For more information on these semantics, take a look at the blog post:
179 * http://preshing.com/20120913/acquire-and-release-semantics
180 *
181 * \since This function is available since SDL 2.0.6.
182 */
183extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void);
184extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void);
185
186#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
187#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("lwsync" : : : "memory")
188#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("lwsync" : : : "memory")
189#elif defined(__GNUC__) && defined(__aarch64__)
190#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory")
191#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory")
192#elif defined(__GNUC__) && defined(__arm__)
193#if 0 /* defined(__LINUX__) || defined(__ANDROID__) */
194/* Information from:
195 https://chromium.googlesource.com/chromium/chromium/+/trunk/base/atomicops_internals_arm_gcc.h#19
196
197 The Linux kernel provides a helper function which provides the right code for a memory barrier,
198 hard-coded at address 0xffff0fa0
199*/
200typedef void (*SDL_KernelMemoryBarrierFunc)();
201#define SDL_MemoryBarrierRelease() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)()
202#define SDL_MemoryBarrierAcquire() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)()
203#elif 0 /* defined(__QNXNTO__) */
204#include <sys/cpuinline.h>
205
206#define SDL_MemoryBarrierRelease() __cpu_membarrier()
207#define SDL_MemoryBarrierAcquire() __cpu_membarrier()
208#else
209#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__)
210#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory")
211#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory")
212#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_5TE__)
213#ifdef __thumb__
214/* The mcr instruction isn't available in thumb mode, use real functions */
215#define SDL_MEMORY_BARRIER_USES_FUNCTION
216#define SDL_MemoryBarrierRelease() SDL_MemoryBarrierReleaseFunction()
217#define SDL_MemoryBarrierAcquire() SDL_MemoryBarrierAcquireFunction()
218#else
219#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
220#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
221#endif /* __thumb__ */
222#else
223#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("" : : : "memory")
224#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("" : : : "memory")
225#endif /* __LINUX__ || __ANDROID__ */
226#endif /* __GNUC__ && __arm__ */
227#else
228#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))
229/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */
230#include <mbarrier.h>
231#define SDL_MemoryBarrierRelease() __machine_rel_barrier()
232#define SDL_MemoryBarrierAcquire() __machine_acq_barrier()
233#else
234/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */
235#define SDL_MemoryBarrierRelease() SDL_CompilerBarrier()
236#define SDL_MemoryBarrierAcquire() SDL_CompilerBarrier()
237#endif
238#endif
239
240/**
241 * \brief A type representing an atomic integer value. It is a struct
242 * so people don't accidentally use numeric operations on it.
243 */
244typedef struct { int value; } SDL_atomic_t;
245
246/**
247 * Set an atomic variable to a new value if it is currently an old value.
248 *
249 * ***Note: If you don't know what this function is for, you shouldn't use
250 * it!***
251 *
252 * \param a a pointer to an SDL_atomic_t variable to be modified
253 * \param oldval the old value
254 * \param newval the new value
255 * \returns SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise.
256 *
257 * \since This function is available since SDL 2.0.0.
258 *
259 * \sa SDL_AtomicCASPtr
260 * \sa SDL_AtomicGet
261 * \sa SDL_AtomicSet
262 */
263extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval);
264
265/**
266 * Set an atomic variable to a value.
267 *
268 * This function also acts as a full memory barrier.
269 *
270 * ***Note: If you don't know what this function is for, you shouldn't use
271 * it!***
272 *
273 * \param a a pointer to an SDL_atomic_t variable to be modified
274 * \param v the desired value
275 * \returns the previous value of the atomic variable.
276 *
277 * \since This function is available since SDL 2.0.2.
278 *
279 * \sa SDL_AtomicGet
280 */
281extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v);
282
283/**
284 * Get the value of an atomic variable.
285 *
286 * ***Note: If you don't know what this function is for, you shouldn't use
287 * it!***
288 *
289 * \param a a pointer to an SDL_atomic_t variable
290 * \returns the current value of an atomic variable.
291 *
292 * \since This function is available since SDL 2.0.2.
293 *
294 * \sa SDL_AtomicSet
295 */
296extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a);
297
298/**
299 * Add to an atomic variable.
300 *
301 * This function also acts as a full memory barrier.
302 *
303 * ***Note: If you don't know what this function is for, you shouldn't use
304 * it!***
305 *
306 * \param a a pointer to an SDL_atomic_t variable to be modified
307 * \param v the desired value to add
308 * \returns the previous value of the atomic variable.
309 *
310 * \since This function is available since SDL 2.0.2.
311 *
312 * \sa SDL_AtomicDecRef
313 * \sa SDL_AtomicIncRef
314 */
315extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v);
316
317/**
318 * \brief Increment an atomic variable used as a reference count.
319 */
320#ifndef SDL_AtomicIncRef
321#define SDL_AtomicIncRef(a) SDL_AtomicAdd(a, 1)
322#endif
323
324/**
325 * \brief Decrement an atomic variable used as a reference count.
326 *
327 * \return SDL_TRUE if the variable reached zero after decrementing,
328 * SDL_FALSE otherwise
329 */
330#ifndef SDL_AtomicDecRef
331#define SDL_AtomicDecRef(a) (SDL_AtomicAdd(a, -1) == 1)
332#endif
333
334/**
335 * Set a pointer to a new value if it is currently an old value.
336 *
337 * ***Note: If you don't know what this function is for, you shouldn't use
338 * it!***
339 *
340 * \param a a pointer to a pointer
341 * \param oldval the old pointer value
342 * \param newval the new pointer value
343 * \returns SDL_TRUE if the pointer was set, SDL_FALSE otherwise.
344 *
345 * \since This function is available since SDL 2.0.0.
346 *
347 * \sa SDL_AtomicCAS
348 * \sa SDL_AtomicGetPtr
349 * \sa SDL_AtomicSetPtr
350 */
351extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval);
352
353/**
354 * Set a pointer to a value atomically.
355 *
356 * ***Note: If you don't know what this function is for, you shouldn't use
357 * it!***
358 *
359 * \param a a pointer to a pointer
360 * \param v the desired pointer value
361 * \returns the previous value of the pointer.
362 *
363 * \since This function is available since SDL 2.0.2.
364 *
365 * \sa SDL_AtomicCASPtr
366 * \sa SDL_AtomicGetPtr
367 */
368extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v);
369
370/**
371 * Get the value of a pointer atomically.
372 *
373 * ***Note: If you don't know what this function is for, you shouldn't use
374 * it!***
375 *
376 * \param a a pointer to a pointer
377 * \returns the current value of a pointer.
378 *
379 * \since This function is available since SDL 2.0.2.
380 *
381 * \sa SDL_AtomicCASPtr
382 * \sa SDL_AtomicSetPtr
383 */
384extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a);
385
386/* Ends C function definitions when using C++ */
387#ifdef __cplusplus
388}
389#endif
390
391#include "close_code.h"
392
393#endif /* SDL_atomic_h_ */
394
395/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_audio.h b/vendor/SDL2/include/SDL_audio.h new file mode 100644 index 0000000..181f66c --- /dev/null +++ b/vendor/SDL2/include/SDL_audio.h
@@ -0,0 +1,1464 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/* !!! FIXME: several functions in here need Doxygen comments. */
23
24/**
25 * \file SDL_audio.h
26 *
27 * Access to the raw audio mixing buffer for the SDL library.
28 */
29
30#ifndef SDL_audio_h_
31#define SDL_audio_h_
32
33#include "SDL_stdinc.h"
34#include "SDL_error.h"
35#include "SDL_endian.h"
36#include "SDL_mutex.h"
37#include "SDL_thread.h"
38#include "SDL_rwops.h"
39
40#include "begin_code.h"
41/* Set up for C function definitions, even when using C++ */
42#ifdef __cplusplus
43extern "C" {
44#endif
45
46/**
47 * \brief Audio format flags.
48 *
49 * These are what the 16 bits in SDL_AudioFormat currently mean...
50 * (Unspecified bits are always zero).
51 *
52 * \verbatim
53 ++-----------------------sample is signed if set
54 ||
55 || ++-----------sample is bigendian if set
56 || ||
57 || || ++---sample is float if set
58 || || ||
59 || || || +---sample bit size---+
60 || || || | |
61 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
62 \endverbatim
63 *
64 * There are macros in SDL 2.0 and later to query these bits.
65 */
66typedef Uint16 SDL_AudioFormat;
67
68/**
69 * \name Audio flags
70 */
71/* @{ */
72
73#define SDL_AUDIO_MASK_BITSIZE (0xFF)
74#define SDL_AUDIO_MASK_DATATYPE (1<<8)
75#define SDL_AUDIO_MASK_ENDIAN (1<<12)
76#define SDL_AUDIO_MASK_SIGNED (1<<15)
77#define SDL_AUDIO_BITSIZE(x) (x & SDL_AUDIO_MASK_BITSIZE)
78#define SDL_AUDIO_ISFLOAT(x) (x & SDL_AUDIO_MASK_DATATYPE)
79#define SDL_AUDIO_ISBIGENDIAN(x) (x & SDL_AUDIO_MASK_ENDIAN)
80#define SDL_AUDIO_ISSIGNED(x) (x & SDL_AUDIO_MASK_SIGNED)
81#define SDL_AUDIO_ISINT(x) (!SDL_AUDIO_ISFLOAT(x))
82#define SDL_AUDIO_ISLITTLEENDIAN(x) (!SDL_AUDIO_ISBIGENDIAN(x))
83#define SDL_AUDIO_ISUNSIGNED(x) (!SDL_AUDIO_ISSIGNED(x))
84
85/**
86 * \name Audio format flags
87 *
88 * Defaults to LSB byte order.
89 */
90/* @{ */
91#define AUDIO_U8 0x0008 /**< Unsigned 8-bit samples */
92#define AUDIO_S8 0x8008 /**< Signed 8-bit samples */
93#define AUDIO_U16LSB 0x0010 /**< Unsigned 16-bit samples */
94#define AUDIO_S16LSB 0x8010 /**< Signed 16-bit samples */
95#define AUDIO_U16MSB 0x1010 /**< As above, but big-endian byte order */
96#define AUDIO_S16MSB 0x9010 /**< As above, but big-endian byte order */
97#define AUDIO_U16 AUDIO_U16LSB
98#define AUDIO_S16 AUDIO_S16LSB
99/* @} */
100
101/**
102 * \name int32 support
103 */
104/* @{ */
105#define AUDIO_S32LSB 0x8020 /**< 32-bit integer samples */
106#define AUDIO_S32MSB 0x9020 /**< As above, but big-endian byte order */
107#define AUDIO_S32 AUDIO_S32LSB
108/* @} */
109
110/**
111 * \name float32 support
112 */
113/* @{ */
114#define AUDIO_F32LSB 0x8120 /**< 32-bit floating point samples */
115#define AUDIO_F32MSB 0x9120 /**< As above, but big-endian byte order */
116#define AUDIO_F32 AUDIO_F32LSB
117/* @} */
118
119/**
120 * \name Native audio byte ordering
121 */
122/* @{ */
123#if SDL_BYTEORDER == SDL_LIL_ENDIAN
124#define AUDIO_U16SYS AUDIO_U16LSB
125#define AUDIO_S16SYS AUDIO_S16LSB
126#define AUDIO_S32SYS AUDIO_S32LSB
127#define AUDIO_F32SYS AUDIO_F32LSB
128#else
129#define AUDIO_U16SYS AUDIO_U16MSB
130#define AUDIO_S16SYS AUDIO_S16MSB
131#define AUDIO_S32SYS AUDIO_S32MSB
132#define AUDIO_F32SYS AUDIO_F32MSB
133#endif
134/* @} */
135
136/**
137 * \name Allow change flags
138 *
139 * Which audio format changes are allowed when opening a device.
140 */
141/* @{ */
142#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE 0x00000001
143#define SDL_AUDIO_ALLOW_FORMAT_CHANGE 0x00000002
144#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE 0x00000004
145#define SDL_AUDIO_ALLOW_SAMPLES_CHANGE 0x00000008
146#define SDL_AUDIO_ALLOW_ANY_CHANGE (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE|SDL_AUDIO_ALLOW_SAMPLES_CHANGE)
147/* @} */
148
149/* @} *//* Audio flags */
150
151/**
152 * This function is called when the audio device needs more data.
153 *
154 * \param userdata An application-specific parameter saved in
155 * the SDL_AudioSpec structure
156 * \param stream A pointer to the audio data buffer.
157 * \param len The length of that buffer in bytes.
158 *
159 * Once the callback returns, the buffer will no longer be valid.
160 * Stereo samples are stored in a LRLRLR ordering.
161 *
162 * You can choose to avoid callbacks and use SDL_QueueAudio() instead, if
163 * you like. Just open your audio device with a NULL callback.
164 */
165typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream,
166 int len);
167
168/**
169 * The calculated values in this structure are calculated by SDL_OpenAudio().
170 *
171 * For multi-channel audio, the default SDL channel mapping is:
172 * 2: FL FR (stereo)
173 * 3: FL FR LFE (2.1 surround)
174 * 4: FL FR BL BR (quad)
175 * 5: FL FR FC BL BR (quad + center)
176 * 6: FL FR FC LFE SL SR (5.1 surround - last two can also be BL BR)
177 * 7: FL FR FC LFE BC SL SR (6.1 surround)
178 * 8: FL FR FC LFE BL BR SL SR (7.1 surround)
179 */
180typedef struct SDL_AudioSpec
181{
182 int freq; /**< DSP frequency -- samples per second */
183 SDL_AudioFormat format; /**< Audio data format */
184 Uint8 channels; /**< Number of channels: 1 mono, 2 stereo */
185 Uint8 silence; /**< Audio buffer silence value (calculated) */
186 Uint16 samples; /**< Audio buffer size in sample FRAMES (total samples divided by channel count) */
187 Uint16 padding; /**< Necessary for some compile environments */
188 Uint32 size; /**< Audio buffer size in bytes (calculated) */
189 SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */
190 void *userdata; /**< Userdata passed to callback (ignored for NULL callbacks). */
191} SDL_AudioSpec;
192
193
194struct SDL_AudioCVT;
195typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt,
196 SDL_AudioFormat format);
197
198/**
199 * \brief Upper limit of filters in SDL_AudioCVT
200 *
201 * The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is
202 * currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers,
203 * one of which is the terminating NULL pointer.
204 */
205#define SDL_AUDIOCVT_MAX_FILTERS 9
206
207/**
208 * \struct SDL_AudioCVT
209 * \brief A structure to hold a set of audio conversion filters and buffers.
210 *
211 * Note that various parts of the conversion pipeline can take advantage
212 * of SIMD operations (like SSE2, for example). SDL_AudioCVT doesn't require
213 * you to pass it aligned data, but can possibly run much faster if you
214 * set both its (buf) field to a pointer that is aligned to 16 bytes, and its
215 * (len) field to something that's a multiple of 16, if possible.
216 */
217#if defined(__GNUC__) && !defined(__CHERI_PURE_CAPABILITY__)
218/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't
219 pad it out to 88 bytes to guarantee ABI compatibility between compilers.
220 This is not a concern on CHERI architectures, where pointers must be stored
221 at aligned locations otherwise they will become invalid, and thus structs
222 containing pointers cannot be packed without giving a warning or error.
223 vvv
224 The next time we rev the ABI, make sure to size the ints and add padding.
225*/
226#define SDL_AUDIOCVT_PACKED __attribute__((packed))
227#else
228#define SDL_AUDIOCVT_PACKED
229#endif
230/* */
231typedef struct SDL_AudioCVT
232{
233 int needed; /**< Set to 1 if conversion possible */
234 SDL_AudioFormat src_format; /**< Source audio format */
235 SDL_AudioFormat dst_format; /**< Target audio format */
236 double rate_incr; /**< Rate conversion increment */
237 Uint8 *buf; /**< Buffer to hold entire audio data */
238 int len; /**< Length of original audio buffer */
239 int len_cvt; /**< Length of converted audio buffer */
240 int len_mult; /**< buffer must be len*len_mult big */
241 double len_ratio; /**< Given len, final size is len*len_ratio */
242 SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS + 1]; /**< NULL-terminated list of filter functions */
243 int filter_index; /**< Current audio conversion function */
244} SDL_AUDIOCVT_PACKED SDL_AudioCVT;
245
246
247/* Function prototypes */
248
249/**
250 * \name Driver discovery functions
251 *
252 * These functions return the list of built in audio drivers, in the
253 * order that they are normally initialized by default.
254 */
255/* @{ */
256
257/**
258 * Use this function to get the number of built-in audio drivers.
259 *
260 * This function returns a hardcoded number. This never returns a negative
261 * value; if there are no drivers compiled into this build of SDL, this
262 * function returns zero. The presence of a driver in this list does not mean
263 * it will function, it just means SDL is capable of interacting with that
264 * interface. For example, a build of SDL might have esound support, but if
265 * there's no esound server available, SDL's esound driver would fail if used.
266 *
267 * By default, SDL tries all drivers, in its preferred order, until one is
268 * found to be usable.
269 *
270 * \returns the number of built-in audio drivers.
271 *
272 * \since This function is available since SDL 2.0.0.
273 *
274 * \sa SDL_GetAudioDriver
275 */
276extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void);
277
278/**
279 * Use this function to get the name of a built in audio driver.
280 *
281 * The list of audio drivers is given in the order that they are normally
282 * initialized by default; the drivers that seem more reasonable to choose
283 * first (as far as the SDL developers believe) are earlier in the list.
284 *
285 * The names of drivers are all simple, low-ASCII identifiers, like "alsa",
286 * "coreaudio" or "xaudio2". These never have Unicode characters, and are not
287 * meant to be proper names.
288 *
289 * \param index the index of the audio driver; the value ranges from 0 to
290 * SDL_GetNumAudioDrivers() - 1
291 * \returns the name of the audio driver at the requested index, or NULL if an
292 * invalid index was specified.
293 *
294 * \since This function is available since SDL 2.0.0.
295 *
296 * \sa SDL_GetNumAudioDrivers
297 */
298extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index);
299/* @} */
300
301/**
302 * \name Initialization and cleanup
303 *
304 * \internal These functions are used internally, and should not be used unless
305 * you have a specific need to specify the audio driver you want to
306 * use. You should normally use SDL_Init() or SDL_InitSubSystem().
307 */
308/* @{ */
309
310/**
311 * Use this function to initialize a particular audio driver.
312 *
313 * This function is used internally, and should not be used unless you have a
314 * specific need to designate the audio driver you want to use. You should
315 * normally use SDL_Init() or SDL_InitSubSystem().
316 *
317 * \param driver_name the name of the desired audio driver
318 * \returns 0 on success or a negative error code on failure; call
319 * SDL_GetError() for more information.
320 *
321 * \since This function is available since SDL 2.0.0.
322 *
323 * \sa SDL_AudioQuit
324 */
325extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name);
326
327/**
328 * Use this function to shut down audio if you initialized it with
329 * SDL_AudioInit().
330 *
331 * This function is used internally, and should not be used unless you have a
332 * specific need to specify the audio driver you want to use. You should
333 * normally use SDL_Quit() or SDL_QuitSubSystem().
334 *
335 * \since This function is available since SDL 2.0.0.
336 *
337 * \sa SDL_AudioInit
338 */
339extern DECLSPEC void SDLCALL SDL_AudioQuit(void);
340/* @} */
341
342/**
343 * Get the name of the current audio driver.
344 *
345 * The returned string points to internal static memory and thus never becomes
346 * invalid, even if you quit the audio subsystem and initialize a new driver
347 * (although such a case would return a different static string from another
348 * call to this function, of course). As such, you should not modify or free
349 * the returned string.
350 *
351 * \returns the name of the current audio driver or NULL if no driver has been
352 * initialized.
353 *
354 * \since This function is available since SDL 2.0.0.
355 *
356 * \sa SDL_AudioInit
357 */
358extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void);
359
360/**
361 * This function is a legacy means of opening the audio device.
362 *
363 * This function remains for compatibility with SDL 1.2, but also because it's
364 * slightly easier to use than the new functions in SDL 2.0. The new, more
365 * powerful, and preferred way to do this is SDL_OpenAudioDevice().
366 *
367 * This function is roughly equivalent to:
368 *
369 * ```c
370 * SDL_OpenAudioDevice(NULL, 0, desired, obtained, SDL_AUDIO_ALLOW_ANY_CHANGE);
371 * ```
372 *
373 * With two notable exceptions:
374 *
375 * - If `obtained` is NULL, we use `desired` (and allow no changes), which
376 * means desired will be modified to have the correct values for silence,
377 * etc, and SDL will convert any differences between your app's specific
378 * request and the hardware behind the scenes.
379 * - The return value is always success or failure, and not a device ID, which
380 * means you can only have one device open at a time with this function.
381 *
382 * \param desired an SDL_AudioSpec structure representing the desired output
383 * format. Please refer to the SDL_OpenAudioDevice
384 * documentation for details on how to prepare this structure.
385 * \param obtained an SDL_AudioSpec structure filled in with the actual
386 * parameters, or NULL.
387 * \returns 0 if successful, placing the actual hardware parameters in the
388 * structure pointed to by `obtained`.
389 *
390 * If `obtained` is NULL, the audio data passed to the callback
391 * function will be guaranteed to be in the requested format, and
392 * will be automatically converted to the actual hardware audio
393 * format if necessary. If `obtained` is NULL, `desired` will have
394 * fields modified.
395 *
396 * This function returns a negative error code on failure to open the
397 * audio device or failure to set up the audio thread; call
398 * SDL_GetError() for more information.
399 *
400 * \since This function is available since SDL 2.0.0.
401 *
402 * \sa SDL_CloseAudio
403 * \sa SDL_LockAudio
404 * \sa SDL_PauseAudio
405 * \sa SDL_UnlockAudio
406 */
407extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired,
408 SDL_AudioSpec * obtained);
409
410/**
411 * SDL Audio Device IDs.
412 *
413 * A successful call to SDL_OpenAudio() is always device id 1, and legacy
414 * SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls
415 * always returns devices >= 2 on success. The legacy calls are good both
416 * for backwards compatibility and when you don't care about multiple,
417 * specific, or capture devices.
418 */
419typedef Uint32 SDL_AudioDeviceID;
420
421/**
422 * Get the number of built-in audio devices.
423 *
424 * This function is only valid after successfully initializing the audio
425 * subsystem.
426 *
427 * Note that audio capture support is not implemented as of SDL 2.0.4, so the
428 * `iscapture` parameter is for future expansion and should always be zero for
429 * now.
430 *
431 * This function will return -1 if an explicit list of devices can't be
432 * determined. Returning -1 is not an error. For example, if SDL is set up to
433 * talk to a remote audio server, it can't list every one available on the
434 * Internet, but it will still allow a specific host to be specified in
435 * SDL_OpenAudioDevice().
436 *
437 * In many common cases, when this function returns a value <= 0, it can still
438 * successfully open the default device (NULL for first argument of
439 * SDL_OpenAudioDevice()).
440 *
441 * This function may trigger a complete redetect of available hardware. It
442 * should not be called for each iteration of a loop, but rather once at the
443 * start of a loop:
444 *
445 * ```c
446 * // Don't do this:
447 * for (int i = 0; i < SDL_GetNumAudioDevices(0); i++)
448 *
449 * // do this instead:
450 * const int count = SDL_GetNumAudioDevices(0);
451 * for (int i = 0; i < count; ++i) { do_something_here(); }
452 * ```
453 *
454 * \param iscapture zero to request playback devices, non-zero to request
455 * recording devices
456 * \returns the number of available devices exposed by the current driver or
457 * -1 if an explicit list of devices can't be determined. A return
458 * value of -1 does not necessarily mean an error condition.
459 *
460 * \since This function is available since SDL 2.0.0.
461 *
462 * \sa SDL_GetAudioDeviceName
463 * \sa SDL_OpenAudioDevice
464 */
465extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture);
466
467/**
468 * Get the human-readable name of a specific audio device.
469 *
470 * This function is only valid after successfully initializing the audio
471 * subsystem. The values returned by this function reflect the latest call to
472 * SDL_GetNumAudioDevices(); re-call that function to redetect available
473 * hardware.
474 *
475 * The string returned by this function is UTF-8 encoded, read-only, and
476 * managed internally. You are not to free it. If you need to keep the string
477 * for any length of time, you should make your own copy of it, as it will be
478 * invalid next time any of several other SDL functions are called.
479 *
480 * \param index the index of the audio device; valid values range from 0 to
481 * SDL_GetNumAudioDevices() - 1
482 * \param iscapture non-zero to query the list of recording devices, zero to
483 * query the list of output devices.
484 * \returns the name of the audio device at the requested index, or NULL on
485 * error.
486 *
487 * \since This function is available since SDL 2.0.0.
488 *
489 * \sa SDL_GetNumAudioDevices
490 */
491extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index,
492 int iscapture);
493
494/**
495 * Get the preferred audio format of a specific audio device.
496 *
497 * This function is only valid after a successfully initializing the audio
498 * subsystem. The values returned by this function reflect the latest call to
499 * SDL_GetNumAudioDevices(); re-call that function to redetect available
500 * hardware.
501 *
502 * `spec` will be filled with the sample rate, sample format, and channel
503 * count. All other values in the structure are filled with 0. When the
504 * supported struct members are 0, SDL was unable to get the property from the
505 * backend.
506 *
507 * \param index the index of the audio device; valid values range from 0 to
508 * SDL_GetNumAudioDevices() - 1
509 * \param iscapture non-zero to query the list of recording devices, zero to
510 * query the list of output devices.
511 * \param spec The SDL_AudioSpec to be initialized by this function.
512 * \returns 0 on success, nonzero on error
513 *
514 * \since This function is available since SDL 2.0.16.
515 *
516 * \sa SDL_GetNumAudioDevices
517 */
518extern DECLSPEC int SDLCALL SDL_GetAudioDeviceSpec(int index,
519 int iscapture,
520 SDL_AudioSpec *spec);
521
522
523/**
524 * Open a specific audio device.
525 *
526 * SDL_OpenAudio(), unlike this function, always acts on device ID 1. As such,
527 * this function will never return a 1 so as not to conflict with the legacy
528 * function.
529 *
530 * Please note that SDL 2.0 before 2.0.5 did not support recording; as such,
531 * this function would fail if `iscapture` was not zero. Starting with SDL
532 * 2.0.5, recording is implemented and this value can be non-zero.
533 *
534 * Passing in a `device` name of NULL requests the most reasonable default
535 * (and is equivalent to what SDL_OpenAudio() does to choose a device). The
536 * `device` name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but
537 * some drivers allow arbitrary and driver-specific strings, such as a
538 * hostname/IP address for a remote audio server, or a filename in the
539 * diskaudio driver.
540 *
541 * An opened audio device starts out paused, and should be enabled for playing
542 * by calling SDL_PauseAudioDevice(devid, 0) when you are ready for your audio
543 * callback function to be called. Since the audio driver may modify the
544 * requested size of the audio buffer, you should allocate any local mixing
545 * buffers after you open the audio device.
546 *
547 * The audio callback runs in a separate thread in most cases; you can prevent
548 * race conditions between your callback and other threads without fully
549 * pausing playback with SDL_LockAudioDevice(). For more information about the
550 * callback, see SDL_AudioSpec.
551 *
552 * Managing the audio spec via 'desired' and 'obtained':
553 *
554 * When filling in the desired audio spec structure:
555 *
556 * - `desired->freq` should be the frequency in sample-frames-per-second (Hz).
557 * - `desired->format` should be the audio format (`AUDIO_S16SYS`, etc).
558 * - `desired->samples` is the desired size of the audio buffer, in _sample
559 * frames_ (with stereo output, two samples--left and right--would make a
560 * single sample frame). This number should be a power of two, and may be
561 * adjusted by the audio driver to a value more suitable for the hardware.
562 * Good values seem to range between 512 and 8096 inclusive, depending on
563 * the application and CPU speed. Smaller values reduce latency, but can
564 * lead to underflow if the application is doing heavy processing and cannot
565 * fill the audio buffer in time. Note that the number of sample frames is
566 * directly related to time by the following formula: `ms =
567 * (sampleframes*1000)/freq`
568 * - `desired->size` is the size in _bytes_ of the audio buffer, and is
569 * calculated by SDL_OpenAudioDevice(). You don't initialize this.
570 * - `desired->silence` is the value used to set the buffer to silence, and is
571 * calculated by SDL_OpenAudioDevice(). You don't initialize this.
572 * - `desired->callback` should be set to a function that will be called when
573 * the audio device is ready for more data. It is passed a pointer to the
574 * audio buffer, and the length in bytes of the audio buffer. This function
575 * usually runs in a separate thread, and so you should protect data
576 * structures that it accesses by calling SDL_LockAudioDevice() and
577 * SDL_UnlockAudioDevice() in your code. Alternately, you may pass a NULL
578 * pointer here, and call SDL_QueueAudio() with some frequency, to queue
579 * more audio samples to be played (or for capture devices, call
580 * SDL_DequeueAudio() with some frequency, to obtain audio samples).
581 * - `desired->userdata` is passed as the first parameter to your callback
582 * function. If you passed a NULL callback, this value is ignored.
583 *
584 * `allowed_changes` can have the following flags OR'd together:
585 *
586 * - `SDL_AUDIO_ALLOW_FREQUENCY_CHANGE`
587 * - `SDL_AUDIO_ALLOW_FORMAT_CHANGE`
588 * - `SDL_AUDIO_ALLOW_CHANNELS_CHANGE`
589 * - `SDL_AUDIO_ALLOW_ANY_CHANGE`
590 *
591 * These flags specify how SDL should behave when a device cannot offer a
592 * specific feature. If the application requests a feature that the hardware
593 * doesn't offer, SDL will always try to get the closest equivalent.
594 *
595 * For example, if you ask for float32 audio format, but the sound card only
596 * supports int16, SDL will set the hardware to int16. If you had set
597 * SDL_AUDIO_ALLOW_FORMAT_CHANGE, SDL will change the format in the `obtained`
598 * structure. If that flag was *not* set, SDL will prepare to convert your
599 * callback's float32 audio to int16 before feeding it to the hardware and
600 * will keep the originally requested format in the `obtained` structure.
601 *
602 * The resulting audio specs, varying depending on hardware and on what
603 * changes were allowed, will then be written back to `obtained`.
604 *
605 * If your application can only handle one specific data format, pass a zero
606 * for `allowed_changes` and let SDL transparently handle any differences.
607 *
608 * \param device a UTF-8 string reported by SDL_GetAudioDeviceName() or a
609 * driver-specific name as appropriate. NULL requests the most
610 * reasonable default device.
611 * \param iscapture non-zero to specify a device should be opened for
612 * recording, not playback
613 * \param desired an SDL_AudioSpec structure representing the desired output
614 * format; see SDL_OpenAudio() for more information
615 * \param obtained an SDL_AudioSpec structure filled in with the actual output
616 * format; see SDL_OpenAudio() for more information
617 * \param allowed_changes 0, or one or more flags OR'd together
618 * \returns a valid device ID that is > 0 on success or 0 on failure; call
619 * SDL_GetError() for more information.
620 *
621 * For compatibility with SDL 1.2, this will never return 1, since
622 * SDL reserves that ID for the legacy SDL_OpenAudio() function.
623 *
624 * \since This function is available since SDL 2.0.0.
625 *
626 * \sa SDL_CloseAudioDevice
627 * \sa SDL_GetAudioDeviceName
628 * \sa SDL_LockAudioDevice
629 * \sa SDL_OpenAudio
630 * \sa SDL_PauseAudioDevice
631 * \sa SDL_UnlockAudioDevice
632 */
633extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice(
634 const char *device,
635 int iscapture,
636 const SDL_AudioSpec *desired,
637 SDL_AudioSpec *obtained,
638 int allowed_changes);
639
640
641
642/**
643 * \name Audio state
644 *
645 * Get the current audio state.
646 */
647/* @{ */
648typedef enum
649{
650 SDL_AUDIO_STOPPED = 0,
651 SDL_AUDIO_PLAYING,
652 SDL_AUDIO_PAUSED
653} SDL_AudioStatus;
654
655/**
656 * This function is a legacy means of querying the audio device.
657 *
658 * New programs might want to use SDL_GetAudioDeviceStatus() instead. This
659 * function is equivalent to calling...
660 *
661 * ```c
662 * SDL_GetAudioDeviceStatus(1);
663 * ```
664 *
665 * ...and is only useful if you used the legacy SDL_OpenAudio() function.
666 *
667 * \returns the SDL_AudioStatus of the audio device opened by SDL_OpenAudio().
668 *
669 * \since This function is available since SDL 2.0.0.
670 *
671 * \sa SDL_GetAudioDeviceStatus
672 */
673extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void);
674
675/**
676 * Use this function to get the current audio state of an audio device.
677 *
678 * \param dev the ID of an audio device previously opened with
679 * SDL_OpenAudioDevice()
680 * \returns the SDL_AudioStatus of the specified audio device.
681 *
682 * \since This function is available since SDL 2.0.0.
683 *
684 * \sa SDL_PauseAudioDevice
685 */
686extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev);
687/* @} *//* Audio State */
688
689/**
690 * \name Pause audio functions
691 *
692 * These functions pause and unpause the audio callback processing.
693 * They should be called with a parameter of 0 after opening the audio
694 * device to start playing sound. This is so you can safely initialize
695 * data for your callback function after opening the audio device.
696 * Silence will be written to the audio device during the pause.
697 */
698/* @{ */
699
700/**
701 * This function is a legacy means of pausing the audio device.
702 *
703 * New programs might want to use SDL_PauseAudioDevice() instead. This
704 * function is equivalent to calling...
705 *
706 * ```c
707 * SDL_PauseAudioDevice(1, pause_on);
708 * ```
709 *
710 * ...and is only useful if you used the legacy SDL_OpenAudio() function.
711 *
712 * \param pause_on non-zero to pause, 0 to unpause
713 *
714 * \since This function is available since SDL 2.0.0.
715 *
716 * \sa SDL_GetAudioStatus
717 * \sa SDL_PauseAudioDevice
718 */
719extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on);
720
721/**
722 * Use this function to pause and unpause audio playback on a specified
723 * device.
724 *
725 * This function pauses and unpauses the audio callback processing for a given
726 * device. Newly-opened audio devices start in the paused state, so you must
727 * call this function with **pause_on**=0 after opening the specified audio
728 * device to start playing sound. This allows you to safely initialize data
729 * for your callback function after opening the audio device. Silence will be
730 * written to the audio device while paused, and the audio callback is
731 * guaranteed to not be called. Pausing one device does not prevent other
732 * unpaused devices from running their callbacks.
733 *
734 * Pausing state does not stack; even if you pause a device several times, a
735 * single unpause will start the device playing again, and vice versa. This is
736 * different from how SDL_LockAudioDevice() works.
737 *
738 * If you just need to protect a few variables from race conditions vs your
739 * callback, you shouldn't pause the audio device, as it will lead to dropouts
740 * in the audio playback. Instead, you should use SDL_LockAudioDevice().
741 *
742 * \param dev a device opened by SDL_OpenAudioDevice()
743 * \param pause_on non-zero to pause, 0 to unpause
744 *
745 * \since This function is available since SDL 2.0.0.
746 *
747 * \sa SDL_LockAudioDevice
748 */
749extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,
750 int pause_on);
751/* @} *//* Pause audio functions */
752
753/**
754 * Load the audio data of a WAVE file into memory.
755 *
756 * Loading a WAVE file requires `src`, `spec`, `audio_buf` and `audio_len` to
757 * be valid pointers. The entire data portion of the file is then loaded into
758 * memory and decoded if necessary.
759 *
760 * If `freesrc` is non-zero, the data source gets automatically closed and
761 * freed before the function returns.
762 *
763 * Supported formats are RIFF WAVE files with the formats PCM (8, 16, 24, and
764 * 32 bits), IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and
765 * A-law and mu-law (8 bits). Other formats are currently unsupported and
766 * cause an error.
767 *
768 * If this function succeeds, the pointer returned by it is equal to `spec`
769 * and the pointer to the audio data allocated by the function is written to
770 * `audio_buf` and its length in bytes to `audio_len`. The SDL_AudioSpec
771 * members `freq`, `channels`, and `format` are set to the values of the audio
772 * data in the buffer. The `samples` member is set to a sane default and all
773 * others are set to zero.
774 *
775 * It's necessary to use SDL_FreeWAV() to free the audio data returned in
776 * `audio_buf` when it is no longer used.
777 *
778 * Because of the underspecification of the .WAV format, there are many
779 * problematic files in the wild that cause issues with strict decoders. To
780 * provide compatibility with these files, this decoder is lenient in regards
781 * to the truncation of the file, the fact chunk, and the size of the RIFF
782 * chunk. The hints `SDL_HINT_WAVE_RIFF_CHUNK_SIZE`,
783 * `SDL_HINT_WAVE_TRUNCATION`, and `SDL_HINT_WAVE_FACT_CHUNK` can be used to
784 * tune the behavior of the loading process.
785 *
786 * Any file that is invalid (due to truncation, corruption, or wrong values in
787 * the headers), too big, or unsupported causes an error. Additionally, any
788 * critical I/O error from the data source will terminate the loading process
789 * with an error. The function returns NULL on error and in all cases (with
790 * the exception of `src` being NULL), an appropriate error message will be
791 * set.
792 *
793 * It is required that the data source supports seeking.
794 *
795 * Example:
796 *
797 * ```c
798 * SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, &spec, &buf, &len);
799 * ```
800 *
801 * Note that the SDL_LoadWAV macro does this same thing for you, but in a less
802 * messy way:
803 *
804 * ```c
805 * SDL_LoadWAV("sample.wav", &spec, &buf, &len);
806 * ```
807 *
808 * \param src The data source for the WAVE data
809 * \param freesrc If non-zero, SDL will _always_ free the data source
810 * \param spec An SDL_AudioSpec that will be filled in with the wave file's
811 * format details
812 * \param audio_buf A pointer filled with the audio data, allocated by the
813 * function.
814 * \param audio_len A pointer filled with the length of the audio data buffer
815 * in bytes
816 * \returns This function, if successfully called, returns `spec`, which will
817 * be filled with the audio data format of the wave source data.
818 * `audio_buf` will be filled with a pointer to an allocated buffer
819 * containing the audio data, and `audio_len` is filled with the
820 * length of that audio buffer in bytes.
821 *
822 * This function returns NULL if the .WAV file cannot be opened, uses
823 * an unknown data format, or is corrupt; call SDL_GetError() for
824 * more information.
825 *
826 * When the application is done with the data returned in
827 * `audio_buf`, it should call SDL_FreeWAV() to dispose of it.
828 *
829 * \since This function is available since SDL 2.0.0.
830 *
831 * \sa SDL_FreeWAV
832 * \sa SDL_LoadWAV
833 */
834extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src,
835 int freesrc,
836 SDL_AudioSpec * spec,
837 Uint8 ** audio_buf,
838 Uint32 * audio_len);
839
840/**
841 * Loads a WAV from a file.
842 * Compatibility convenience function.
843 */
844#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \
845 SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len)
846
847/**
848 * Free data previously allocated with SDL_LoadWAV() or SDL_LoadWAV_RW().
849 *
850 * After a WAVE file has been opened with SDL_LoadWAV() or SDL_LoadWAV_RW()
851 * its data can eventually be freed with SDL_FreeWAV(). It is safe to call
852 * this function with a NULL pointer.
853 *
854 * \param audio_buf a pointer to the buffer created by SDL_LoadWAV() or
855 * SDL_LoadWAV_RW()
856 *
857 * \since This function is available since SDL 2.0.0.
858 *
859 * \sa SDL_LoadWAV
860 * \sa SDL_LoadWAV_RW
861 */
862extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf);
863
864/**
865 * Initialize an SDL_AudioCVT structure for conversion.
866 *
867 * Before an SDL_AudioCVT structure can be used to convert audio data it must
868 * be initialized with source and destination information.
869 *
870 * This function will zero out every field of the SDL_AudioCVT, so it must be
871 * called before the application fills in the final buffer information.
872 *
873 * Once this function has returned successfully, and reported that a
874 * conversion is necessary, the application fills in the rest of the fields in
875 * SDL_AudioCVT, now that it knows how large a buffer it needs to allocate,
876 * and then can call SDL_ConvertAudio() to complete the conversion.
877 *
878 * \param cvt an SDL_AudioCVT structure filled in with audio conversion
879 * information
880 * \param src_format the source format of the audio data; for more info see
881 * SDL_AudioFormat
882 * \param src_channels the number of channels in the source
883 * \param src_rate the frequency (sample-frames-per-second) of the source
884 * \param dst_format the destination format of the audio data; for more info
885 * see SDL_AudioFormat
886 * \param dst_channels the number of channels in the destination
887 * \param dst_rate the frequency (sample-frames-per-second) of the destination
888 * \returns 1 if the audio filter is prepared, 0 if no conversion is needed,
889 * or a negative error code on failure; call SDL_GetError() for more
890 * information.
891 *
892 * \since This function is available since SDL 2.0.0.
893 *
894 * \sa SDL_ConvertAudio
895 */
896extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt,
897 SDL_AudioFormat src_format,
898 Uint8 src_channels,
899 int src_rate,
900 SDL_AudioFormat dst_format,
901 Uint8 dst_channels,
902 int dst_rate);
903
904/**
905 * Convert audio data to a desired audio format.
906 *
907 * This function does the actual audio data conversion, after the application
908 * has called SDL_BuildAudioCVT() to prepare the conversion information and
909 * then filled in the buffer details.
910 *
911 * Once the application has initialized the `cvt` structure using
912 * SDL_BuildAudioCVT(), allocated an audio buffer and filled it with audio
913 * data in the source format, this function will convert the buffer, in-place,
914 * to the desired format.
915 *
916 * The data conversion may go through several passes; any given pass may
917 * possibly temporarily increase the size of the data. For example, SDL might
918 * expand 16-bit data to 32 bits before resampling to a lower frequency,
919 * shrinking the data size after having grown it briefly. Since the supplied
920 * buffer will be both the source and destination, converting as necessary
921 * in-place, the application must allocate a buffer that will fully contain
922 * the data during its largest conversion pass. After SDL_BuildAudioCVT()
923 * returns, the application should set the `cvt->len` field to the size, in
924 * bytes, of the source data, and allocate a buffer that is `cvt->len *
925 * cvt->len_mult` bytes long for the `buf` field.
926 *
927 * The source data should be copied into this buffer before the call to
928 * SDL_ConvertAudio(). Upon successful return, this buffer will contain the
929 * converted audio, and `cvt->len_cvt` will be the size of the converted data,
930 * in bytes. Any bytes in the buffer past `cvt->len_cvt` are undefined once
931 * this function returns.
932 *
933 * \param cvt an SDL_AudioCVT structure that was previously set up by
934 * SDL_BuildAudioCVT().
935 * \returns 0 if the conversion was completed successfully or a negative error
936 * code on failure; call SDL_GetError() for more information.
937 *
938 * \since This function is available since SDL 2.0.0.
939 *
940 * \sa SDL_BuildAudioCVT
941 */
942extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt);
943
944/* SDL_AudioStream is a new audio conversion interface.
945 The benefits vs SDL_AudioCVT:
946 - it can handle resampling data in chunks without generating
947 artifacts, when it doesn't have the complete buffer available.
948 - it can handle incoming data in any variable size.
949 - You push data as you have it, and pull it when you need it
950 */
951/* this is opaque to the outside world. */
952struct _SDL_AudioStream;
953typedef struct _SDL_AudioStream SDL_AudioStream;
954
955/**
956 * Create a new audio stream.
957 *
958 * \param src_format The format of the source audio
959 * \param src_channels The number of channels of the source audio
960 * \param src_rate The sampling rate of the source audio
961 * \param dst_format The format of the desired audio output
962 * \param dst_channels The number of channels of the desired audio output
963 * \param dst_rate The sampling rate of the desired audio output
964 * \returns 0 on success, or -1 on error.
965 *
966 * \since This function is available since SDL 2.0.7.
967 *
968 * \sa SDL_AudioStreamPut
969 * \sa SDL_AudioStreamGet
970 * \sa SDL_AudioStreamAvailable
971 * \sa SDL_AudioStreamFlush
972 * \sa SDL_AudioStreamClear
973 * \sa SDL_FreeAudioStream
974 */
975extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format,
976 const Uint8 src_channels,
977 const int src_rate,
978 const SDL_AudioFormat dst_format,
979 const Uint8 dst_channels,
980 const int dst_rate);
981
982/**
983 * Add data to be converted/resampled to the stream.
984 *
985 * \param stream The stream the audio data is being added to
986 * \param buf A pointer to the audio data to add
987 * \param len The number of bytes to write to the stream
988 * \returns 0 on success, or -1 on error.
989 *
990 * \since This function is available since SDL 2.0.7.
991 *
992 * \sa SDL_NewAudioStream
993 * \sa SDL_AudioStreamGet
994 * \sa SDL_AudioStreamAvailable
995 * \sa SDL_AudioStreamFlush
996 * \sa SDL_AudioStreamClear
997 * \sa SDL_FreeAudioStream
998 */
999extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len);
1000
1001/**
1002 * Get converted/resampled data from the stream
1003 *
1004 * \param stream The stream the audio is being requested from
1005 * \param buf A buffer to fill with audio data
1006 * \param len The maximum number of bytes to fill
1007 * \returns the number of bytes read from the stream, or -1 on error
1008 *
1009 * \since This function is available since SDL 2.0.7.
1010 *
1011 * \sa SDL_NewAudioStream
1012 * \sa SDL_AudioStreamPut
1013 * \sa SDL_AudioStreamAvailable
1014 * \sa SDL_AudioStreamFlush
1015 * \sa SDL_AudioStreamClear
1016 * \sa SDL_FreeAudioStream
1017 */
1018extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len);
1019
1020/**
1021 * Get the number of converted/resampled bytes available.
1022 *
1023 * The stream may be buffering data behind the scenes until it has enough to
1024 * resample correctly, so this number might be lower than what you expect, or
1025 * even be zero. Add more data or flush the stream if you need the data now.
1026 *
1027 * \since This function is available since SDL 2.0.7.
1028 *
1029 * \sa SDL_NewAudioStream
1030 * \sa SDL_AudioStreamPut
1031 * \sa SDL_AudioStreamGet
1032 * \sa SDL_AudioStreamFlush
1033 * \sa SDL_AudioStreamClear
1034 * \sa SDL_FreeAudioStream
1035 */
1036extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream);
1037
1038/**
1039 * Tell the stream that you're done sending data, and anything being buffered
1040 * should be converted/resampled and made available immediately.
1041 *
1042 * It is legal to add more data to a stream after flushing, but there will be
1043 * audio gaps in the output. Generally this is intended to signal the end of
1044 * input, so the complete output becomes available.
1045 *
1046 * \since This function is available since SDL 2.0.7.
1047 *
1048 * \sa SDL_NewAudioStream
1049 * \sa SDL_AudioStreamPut
1050 * \sa SDL_AudioStreamGet
1051 * \sa SDL_AudioStreamAvailable
1052 * \sa SDL_AudioStreamClear
1053 * \sa SDL_FreeAudioStream
1054 */
1055extern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream);
1056
1057/**
1058 * Clear any pending data in the stream without converting it
1059 *
1060 * \since This function is available since SDL 2.0.7.
1061 *
1062 * \sa SDL_NewAudioStream
1063 * \sa SDL_AudioStreamPut
1064 * \sa SDL_AudioStreamGet
1065 * \sa SDL_AudioStreamAvailable
1066 * \sa SDL_AudioStreamFlush
1067 * \sa SDL_FreeAudioStream
1068 */
1069extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream);
1070
1071/**
1072 * Free an audio stream
1073 *
1074 * \since This function is available since SDL 2.0.7.
1075 *
1076 * \sa SDL_NewAudioStream
1077 * \sa SDL_AudioStreamPut
1078 * \sa SDL_AudioStreamGet
1079 * \sa SDL_AudioStreamAvailable
1080 * \sa SDL_AudioStreamFlush
1081 * \sa SDL_AudioStreamClear
1082 */
1083extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream);
1084
1085#define SDL_MIX_MAXVOLUME 128
1086
1087/**
1088 * This function is a legacy means of mixing audio.
1089 *
1090 * This function is equivalent to calling...
1091 *
1092 * ```c
1093 * SDL_MixAudioFormat(dst, src, format, len, volume);
1094 * ```
1095 *
1096 * ...where `format` is the obtained format of the audio device from the
1097 * legacy SDL_OpenAudio() function.
1098 *
1099 * \param dst the destination for the mixed audio
1100 * \param src the source audio buffer to be mixed
1101 * \param len the length of the audio buffer in bytes
1102 * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME
1103 * for full audio volume
1104 *
1105 * \since This function is available since SDL 2.0.0.
1106 *
1107 * \sa SDL_MixAudioFormat
1108 */
1109extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src,
1110 Uint32 len, int volume);
1111
1112/**
1113 * Mix audio data in a specified format.
1114 *
1115 * This takes an audio buffer `src` of `len` bytes of `format` data and mixes
1116 * it into `dst`, performing addition, volume adjustment, and overflow
1117 * clipping. The buffer pointed to by `dst` must also be `len` bytes of
1118 * `format` data.
1119 *
1120 * This is provided for convenience -- you can mix your own audio data.
1121 *
1122 * Do not use this function for mixing together more than two streams of
1123 * sample data. The output from repeated application of this function may be
1124 * distorted by clipping, because there is no accumulator with greater range
1125 * than the input (not to mention this being an inefficient way of doing it).
1126 *
1127 * It is a common misconception that this function is required to write audio
1128 * data to an output stream in an audio callback. While you can do that,
1129 * SDL_MixAudioFormat() is really only needed when you're mixing a single
1130 * audio stream with a volume adjustment.
1131 *
1132 * \param dst the destination for the mixed audio
1133 * \param src the source audio buffer to be mixed
1134 * \param format the SDL_AudioFormat structure representing the desired audio
1135 * format
1136 * \param len the length of the audio buffer in bytes
1137 * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME
1138 * for full audio volume
1139 *
1140 * \since This function is available since SDL 2.0.0.
1141 */
1142extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst,
1143 const Uint8 * src,
1144 SDL_AudioFormat format,
1145 Uint32 len, int volume);
1146
1147/**
1148 * Queue more audio on non-callback devices.
1149 *
1150 * If you are looking to retrieve queued audio from a non-callback capture
1151 * device, you want SDL_DequeueAudio() instead. SDL_QueueAudio() will return
1152 * -1 to signify an error if you use it with capture devices.
1153 *
1154 * SDL offers two ways to feed audio to the device: you can either supply a
1155 * callback that SDL triggers with some frequency to obtain more audio (pull
1156 * method), or you can supply no callback, and then SDL will expect you to
1157 * supply data at regular intervals (push method) with this function.
1158 *
1159 * There are no limits on the amount of data you can queue, short of
1160 * exhaustion of address space. Queued data will drain to the device as
1161 * necessary without further intervention from you. If the device needs audio
1162 * but there is not enough queued, it will play silence to make up the
1163 * difference. This means you will have skips in your audio playback if you
1164 * aren't routinely queueing sufficient data.
1165 *
1166 * This function copies the supplied data, so you are safe to free it when the
1167 * function returns. This function is thread-safe, but queueing to the same
1168 * device from two threads at once does not promise which buffer will be
1169 * queued first.
1170 *
1171 * You may not queue audio on a device that is using an application-supplied
1172 * callback; doing so returns an error. You have to use the audio callback or
1173 * queue audio with this function, but not both.
1174 *
1175 * You should not call SDL_LockAudio() on the device before queueing; SDL
1176 * handles locking internally for this function.
1177 *
1178 * Note that SDL2 does not support planar audio. You will need to resample
1179 * from planar audio formats into a non-planar one (see SDL_AudioFormat)
1180 * before queuing audio.
1181 *
1182 * \param dev the device ID to which we will queue audio
1183 * \param data the data to queue to the device for later playback
1184 * \param len the number of bytes (not samples!) to which `data` points
1185 * \returns 0 on success or a negative error code on failure; call
1186 * SDL_GetError() for more information.
1187 *
1188 * \since This function is available since SDL 2.0.4.
1189 *
1190 * \sa SDL_ClearQueuedAudio
1191 * \sa SDL_GetQueuedAudioSize
1192 */
1193extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len);
1194
1195/**
1196 * Dequeue more audio on non-callback devices.
1197 *
1198 * If you are looking to queue audio for output on a non-callback playback
1199 * device, you want SDL_QueueAudio() instead. SDL_DequeueAudio() will always
1200 * return 0 if you use it with playback devices.
1201 *
1202 * SDL offers two ways to retrieve audio from a capture device: you can either
1203 * supply a callback that SDL triggers with some frequency as the device
1204 * records more audio data, (push method), or you can supply no callback, and
1205 * then SDL will expect you to retrieve data at regular intervals (pull
1206 * method) with this function.
1207 *
1208 * There are no limits on the amount of data you can queue, short of
1209 * exhaustion of address space. Data from the device will keep queuing as
1210 * necessary without further intervention from you. This means you will
1211 * eventually run out of memory if you aren't routinely dequeueing data.
1212 *
1213 * Capture devices will not queue data when paused; if you are expecting to
1214 * not need captured audio for some length of time, use SDL_PauseAudioDevice()
1215 * to stop the capture device from queueing more data. This can be useful
1216 * during, say, level loading times. When unpaused, capture devices will start
1217 * queueing data from that point, having flushed any capturable data available
1218 * while paused.
1219 *
1220 * This function is thread-safe, but dequeueing from the same device from two
1221 * threads at once does not promise which thread will dequeue data first.
1222 *
1223 * You may not dequeue audio from a device that is using an
1224 * application-supplied callback; doing so returns an error. You have to use
1225 * the audio callback, or dequeue audio with this function, but not both.
1226 *
1227 * You should not call SDL_LockAudio() on the device before dequeueing; SDL
1228 * handles locking internally for this function.
1229 *
1230 * \param dev the device ID from which we will dequeue audio
1231 * \param data a pointer into where audio data should be copied
1232 * \param len the number of bytes (not samples!) to which (data) points
1233 * \returns the number of bytes dequeued, which could be less than requested;
1234 * call SDL_GetError() for more information.
1235 *
1236 * \since This function is available since SDL 2.0.5.
1237 *
1238 * \sa SDL_ClearQueuedAudio
1239 * \sa SDL_GetQueuedAudioSize
1240 */
1241extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len);
1242
1243/**
1244 * Get the number of bytes of still-queued audio.
1245 *
1246 * For playback devices: this is the number of bytes that have been queued for
1247 * playback with SDL_QueueAudio(), but have not yet been sent to the hardware.
1248 *
1249 * Once we've sent it to the hardware, this function can not decide the exact
1250 * byte boundary of what has been played. It's possible that we just gave the
1251 * hardware several kilobytes right before you called this function, but it
1252 * hasn't played any of it yet, or maybe half of it, etc.
1253 *
1254 * For capture devices, this is the number of bytes that have been captured by
1255 * the device and are waiting for you to dequeue. This number may grow at any
1256 * time, so this only informs of the lower-bound of available data.
1257 *
1258 * You may not queue or dequeue audio on a device that is using an
1259 * application-supplied callback; calling this function on such a device
1260 * always returns 0. You have to use the audio callback or queue audio, but
1261 * not both.
1262 *
1263 * You should not call SDL_LockAudio() on the device before querying; SDL
1264 * handles locking internally for this function.
1265 *
1266 * \param dev the device ID of which we will query queued audio size
1267 * \returns the number of bytes (not samples!) of queued audio.
1268 *
1269 * \since This function is available since SDL 2.0.4.
1270 *
1271 * \sa SDL_ClearQueuedAudio
1272 * \sa SDL_QueueAudio
1273 * \sa SDL_DequeueAudio
1274 */
1275extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev);
1276
1277/**
1278 * Drop any queued audio data waiting to be sent to the hardware.
1279 *
1280 * Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For
1281 * output devices, the hardware will start playing silence if more audio isn't
1282 * queued. For capture devices, the hardware will start filling the empty
1283 * queue with new data if the capture device isn't paused.
1284 *
1285 * This will not prevent playback of queued audio that's already been sent to
1286 * the hardware, as we can not undo that, so expect there to be some fraction
1287 * of a second of audio that might still be heard. This can be useful if you
1288 * want to, say, drop any pending music or any unprocessed microphone input
1289 * during a level change in your game.
1290 *
1291 * You may not queue or dequeue audio on a device that is using an
1292 * application-supplied callback; calling this function on such a device
1293 * always returns 0. You have to use the audio callback or queue audio, but
1294 * not both.
1295 *
1296 * You should not call SDL_LockAudio() on the device before clearing the
1297 * queue; SDL handles locking internally for this function.
1298 *
1299 * This function always succeeds and thus returns void.
1300 *
1301 * \param dev the device ID of which to clear the audio queue
1302 *
1303 * \since This function is available since SDL 2.0.4.
1304 *
1305 * \sa SDL_GetQueuedAudioSize
1306 * \sa SDL_QueueAudio
1307 * \sa SDL_DequeueAudio
1308 */
1309extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev);
1310
1311
1312/**
1313 * \name Audio lock functions
1314 *
1315 * The lock manipulated by these functions protects the callback function.
1316 * During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that
1317 * the callback function is not running. Do not call these from the callback
1318 * function or you will cause deadlock.
1319 */
1320/* @{ */
1321
1322/**
1323 * This function is a legacy means of locking the audio device.
1324 *
1325 * New programs might want to use SDL_LockAudioDevice() instead. This function
1326 * is equivalent to calling...
1327 *
1328 * ```c
1329 * SDL_LockAudioDevice(1);
1330 * ```
1331 *
1332 * ...and is only useful if you used the legacy SDL_OpenAudio() function.
1333 *
1334 * \since This function is available since SDL 2.0.0.
1335 *
1336 * \sa SDL_LockAudioDevice
1337 * \sa SDL_UnlockAudio
1338 * \sa SDL_UnlockAudioDevice
1339 */
1340extern DECLSPEC void SDLCALL SDL_LockAudio(void);
1341
1342/**
1343 * Use this function to lock out the audio callback function for a specified
1344 * device.
1345 *
1346 * The lock manipulated by these functions protects the audio callback
1347 * function specified in SDL_OpenAudioDevice(). During a
1348 * SDL_LockAudioDevice()/SDL_UnlockAudioDevice() pair, you can be guaranteed
1349 * that the callback function for that device is not running, even if the
1350 * device is not paused. While a device is locked, any other unpaused,
1351 * unlocked devices may still run their callbacks.
1352 *
1353 * Calling this function from inside your audio callback is unnecessary. SDL
1354 * obtains this lock before calling your function, and releases it when the
1355 * function returns.
1356 *
1357 * You should not hold the lock longer than absolutely necessary. If you hold
1358 * it too long, you'll experience dropouts in your audio playback. Ideally,
1359 * your application locks the device, sets a few variables and unlocks again.
1360 * Do not do heavy work while holding the lock for a device.
1361 *
1362 * It is safe to lock the audio device multiple times, as long as you unlock
1363 * it an equivalent number of times. The callback will not run until the
1364 * device has been unlocked completely in this way. If your application fails
1365 * to unlock the device appropriately, your callback will never run, you might
1366 * hear repeating bursts of audio, and SDL_CloseAudioDevice() will probably
1367 * deadlock.
1368 *
1369 * Internally, the audio device lock is a mutex; if you lock from two threads
1370 * at once, not only will you block the audio callback, you'll block the other
1371 * thread.
1372 *
1373 * \param dev the ID of the device to be locked
1374 *
1375 * \since This function is available since SDL 2.0.0.
1376 *
1377 * \sa SDL_UnlockAudioDevice
1378 */
1379extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev);
1380
1381/**
1382 * This function is a legacy means of unlocking the audio device.
1383 *
1384 * New programs might want to use SDL_UnlockAudioDevice() instead. This
1385 * function is equivalent to calling...
1386 *
1387 * ```c
1388 * SDL_UnlockAudioDevice(1);
1389 * ```
1390 *
1391 * ...and is only useful if you used the legacy SDL_OpenAudio() function.
1392 *
1393 * \since This function is available since SDL 2.0.0.
1394 *
1395 * \sa SDL_LockAudio
1396 * \sa SDL_UnlockAudioDevice
1397 */
1398extern DECLSPEC void SDLCALL SDL_UnlockAudio(void);
1399
1400/**
1401 * Use this function to unlock the audio callback function for a specified
1402 * device.
1403 *
1404 * This function should be paired with a previous SDL_LockAudioDevice() call.
1405 *
1406 * \param dev the ID of the device to be unlocked
1407 *
1408 * \since This function is available since SDL 2.0.0.
1409 *
1410 * \sa SDL_LockAudioDevice
1411 */
1412extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev);
1413/* @} *//* Audio lock functions */
1414
1415/**
1416 * This function is a legacy means of closing the audio device.
1417 *
1418 * This function is equivalent to calling...
1419 *
1420 * ```c
1421 * SDL_CloseAudioDevice(1);
1422 * ```
1423 *
1424 * ...and is only useful if you used the legacy SDL_OpenAudio() function.
1425 *
1426 * \since This function is available since SDL 2.0.0.
1427 *
1428 * \sa SDL_OpenAudio
1429 */
1430extern DECLSPEC void SDLCALL SDL_CloseAudio(void);
1431
1432/**
1433 * Use this function to shut down audio processing and close the audio device.
1434 *
1435 * The application should close open audio devices once they are no longer
1436 * needed. Calling this function will wait until the device's audio callback
1437 * is not running, release the audio hardware and then clean up internal
1438 * state. No further audio will play from this device once this function
1439 * returns.
1440 *
1441 * This function may block briefly while pending audio data is played by the
1442 * hardware, so that applications don't drop the last buffer of data they
1443 * supplied.
1444 *
1445 * The device ID is invalid as soon as the device is closed, and is eligible
1446 * for reuse in a new SDL_OpenAudioDevice() call immediately.
1447 *
1448 * \param dev an audio device previously opened with SDL_OpenAudioDevice()
1449 *
1450 * \since This function is available since SDL 2.0.0.
1451 *
1452 * \sa SDL_OpenAudioDevice
1453 */
1454extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev);
1455
1456/* Ends C function definitions when using C++ */
1457#ifdef __cplusplus
1458}
1459#endif
1460#include "close_code.h"
1461
1462#endif /* SDL_audio_h_ */
1463
1464/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_bits.h b/vendor/SDL2/include/SDL_bits.h new file mode 100644 index 0000000..22cb853 --- /dev/null +++ b/vendor/SDL2/include/SDL_bits.h
@@ -0,0 +1,126 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_bits.h
24 *
25 * Functions for fiddling with bits and bitmasks.
26 */
27
28#ifndef SDL_bits_h_
29#define SDL_bits_h_
30
31#include "SDL_stdinc.h"
32
33#include "begin_code.h"
34/* Set up for C function definitions, even when using C++ */
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39/**
40 * \file SDL_bits.h
41 */
42
43/**
44 * Get the index of the most significant bit. Result is undefined when called
45 * with 0. This operation can also be stated as "count leading zeroes" and
46 * "log base 2".
47 *
48 * \return the index of the most significant bit, or -1 if the value is 0.
49 */
50#if defined(__WATCOMC__) && defined(__386__)
51extern __inline int _SDL_bsr_watcom(Uint32);
52#pragma aux _SDL_bsr_watcom = \
53 "bsr eax, eax" \
54 parm [eax] nomemory \
55 value [eax] \
56 modify exact [eax] nomemory;
57#endif
58
59SDL_FORCE_INLINE int
60SDL_MostSignificantBitIndex32(Uint32 x)
61{
62#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
63 /* Count Leading Zeroes builtin in GCC.
64 * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html
65 */
66 if (x == 0) {
67 return -1;
68 }
69 return 31 - __builtin_clz(x);
70#elif defined(__WATCOMC__) && defined(__386__)
71 if (x == 0) {
72 return -1;
73 }
74 return _SDL_bsr_watcom(x);
75#elif defined(_MSC_VER)
76 unsigned long index;
77 if (_BitScanReverse(&index, x)) {
78 return index;
79 }
80 return -1;
81#else
82 /* Based off of Bit Twiddling Hacks by Sean Eron Anderson
83 * <seander@cs.stanford.edu>, released in the public domain.
84 * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog
85 */
86 const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000};
87 const int S[] = {1, 2, 4, 8, 16};
88
89 int msbIndex = 0;
90 int i;
91
92 if (x == 0) {
93 return -1;
94 }
95
96 for (i = 4; i >= 0; i--)
97 {
98 if (x & b[i])
99 {
100 x >>= S[i];
101 msbIndex |= S[i];
102 }
103 }
104
105 return msbIndex;
106#endif
107}
108
109SDL_FORCE_INLINE SDL_bool
110SDL_HasExactlyOneBitSet32(Uint32 x)
111{
112 if (x && !(x & (x - 1))) {
113 return SDL_TRUE;
114 }
115 return SDL_FALSE;
116}
117
118/* Ends C function definitions when using C++ */
119#ifdef __cplusplus
120}
121#endif
122#include "close_code.h"
123
124#endif /* SDL_bits_h_ */
125
126/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_blendmode.h b/vendor/SDL2/include/SDL_blendmode.h new file mode 100644 index 0000000..b6d140d --- /dev/null +++ b/vendor/SDL2/include/SDL_blendmode.h
@@ -0,0 +1,200 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_blendmode.h
24 *
25 * Header file declaring the SDL_BlendMode enumeration
26 */
27
28#ifndef SDL_blendmode_h_
29#define SDL_blendmode_h_
30
31#include "begin_code.h"
32/* Set up for C function definitions, even when using C++ */
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37/**
38 * \brief The blend mode used in SDL_RenderCopy() and drawing operations.
39 */
40typedef enum
41{
42 SDL_BLENDMODE_NONE = 0x00000000, /**< no blending
43 dstRGBA = srcRGBA */
44 SDL_BLENDMODE_BLEND = 0x00000001, /**< alpha blending
45 dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA))
46 dstA = srcA + (dstA * (1-srcA)) */
47 SDL_BLENDMODE_ADD = 0x00000002, /**< additive blending
48 dstRGB = (srcRGB * srcA) + dstRGB
49 dstA = dstA */
50 SDL_BLENDMODE_MOD = 0x00000004, /**< color modulate
51 dstRGB = srcRGB * dstRGB
52 dstA = dstA */
53 SDL_BLENDMODE_MUL = 0x00000008, /**< color multiply
54 dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA))
55 dstA = (srcA * dstA) + (dstA * (1-srcA)) */
56 SDL_BLENDMODE_INVALID = 0x7FFFFFFF
57
58 /* Additional custom blend modes can be returned by SDL_ComposeCustomBlendMode() */
59
60} SDL_BlendMode;
61
62/**
63 * \brief The blend operation used when combining source and destination pixel components
64 */
65typedef enum
66{
67 SDL_BLENDOPERATION_ADD = 0x1, /**< dst + src: supported by all renderers */
68 SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */
69 SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */
70 SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D11 */
71 SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D11 */
72
73} SDL_BlendOperation;
74
75/**
76 * \brief The normalized factor used to multiply pixel components
77 */
78typedef enum
79{
80 SDL_BLENDFACTOR_ZERO = 0x1, /**< 0, 0, 0, 0 */
81 SDL_BLENDFACTOR_ONE = 0x2, /**< 1, 1, 1, 1 */
82 SDL_BLENDFACTOR_SRC_COLOR = 0x3, /**< srcR, srcG, srcB, srcA */
83 SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4, /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */
84 SDL_BLENDFACTOR_SRC_ALPHA = 0x5, /**< srcA, srcA, srcA, srcA */
85 SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6, /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */
86 SDL_BLENDFACTOR_DST_COLOR = 0x7, /**< dstR, dstG, dstB, dstA */
87 SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8, /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */
88 SDL_BLENDFACTOR_DST_ALPHA = 0x9, /**< dstA, dstA, dstA, dstA */
89 SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */
90
91} SDL_BlendFactor;
92
93/**
94 * Compose a custom blend mode for renderers.
95 *
96 * The functions SDL_SetRenderDrawBlendMode and SDL_SetTextureBlendMode accept
97 * the SDL_BlendMode returned by this function if the renderer supports it.
98 *
99 * A blend mode controls how the pixels from a drawing operation (source) get
100 * combined with the pixels from the render target (destination). First, the
101 * components of the source and destination pixels get multiplied with their
102 * blend factors. Then, the blend operation takes the two products and
103 * calculates the result that will get stored in the render target.
104 *
105 * Expressed in pseudocode, it would look like this:
106 *
107 * ```c
108 * dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor);
109 * dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor);
110 * ```
111 *
112 * Where the functions `colorOperation(src, dst)` and `alphaOperation(src,
113 * dst)` can return one of the following:
114 *
115 * - `src + dst`
116 * - `src - dst`
117 * - `dst - src`
118 * - `min(src, dst)`
119 * - `max(src, dst)`
120 *
121 * The red, green, and blue components are always multiplied with the first,
122 * second, and third components of the SDL_BlendFactor, respectively. The
123 * fourth component is not used.
124 *
125 * The alpha component is always multiplied with the fourth component of the
126 * SDL_BlendFactor. The other components are not used in the alpha
127 * calculation.
128 *
129 * Support for these blend modes varies for each renderer. To check if a
130 * specific SDL_BlendMode is supported, create a renderer and pass it to
131 * either SDL_SetRenderDrawBlendMode or SDL_SetTextureBlendMode. They will
132 * return with an error if the blend mode is not supported.
133 *
134 * This list describes the support of custom blend modes for each renderer in
135 * SDL 2.0.6. All renderers support the four blend modes listed in the
136 * SDL_BlendMode enumeration.
137 *
138 * - **direct3d**: Supports `SDL_BLENDOPERATION_ADD` with all factors.
139 * - **direct3d11**: Supports all operations with all factors. However, some
140 * factors produce unexpected results with `SDL_BLENDOPERATION_MINIMUM` and
141 * `SDL_BLENDOPERATION_MAXIMUM`.
142 * - **opengl**: Supports the `SDL_BLENDOPERATION_ADD` operation with all
143 * factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly with SDL
144 * 2.0.6.
145 * - **opengles**: Supports the `SDL_BLENDOPERATION_ADD` operation with all
146 * factors. Color and alpha factors need to be the same. OpenGL ES 1
147 * implementation specific: May also support `SDL_BLENDOPERATION_SUBTRACT`
148 * and `SDL_BLENDOPERATION_REV_SUBTRACT`. May support color and alpha
149 * operations being different from each other. May support color and alpha
150 * factors being different from each other.
151 * - **opengles2**: Supports the `SDL_BLENDOPERATION_ADD`,
152 * `SDL_BLENDOPERATION_SUBTRACT`, `SDL_BLENDOPERATION_REV_SUBTRACT`
153 * operations with all factors.
154 * - **psp**: No custom blend mode support.
155 * - **software**: No custom blend mode support.
156 *
157 * Some renderers do not provide an alpha component for the default render
158 * target. The `SDL_BLENDFACTOR_DST_ALPHA` and
159 * `SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA` factors do not have an effect in this
160 * case.
161 *
162 * \param srcColorFactor the SDL_BlendFactor applied to the red, green, and
163 * blue components of the source pixels
164 * \param dstColorFactor the SDL_BlendFactor applied to the red, green, and
165 * blue components of the destination pixels
166 * \param colorOperation the SDL_BlendOperation used to combine the red,
167 * green, and blue components of the source and
168 * destination pixels
169 * \param srcAlphaFactor the SDL_BlendFactor applied to the alpha component of
170 * the source pixels
171 * \param dstAlphaFactor the SDL_BlendFactor applied to the alpha component of
172 * the destination pixels
173 * \param alphaOperation the SDL_BlendOperation used to combine the alpha
174 * component of the source and destination pixels
175 * \returns an SDL_BlendMode that represents the chosen factors and
176 * operations.
177 *
178 * \since This function is available since SDL 2.0.6.
179 *
180 * \sa SDL_SetRenderDrawBlendMode
181 * \sa SDL_GetRenderDrawBlendMode
182 * \sa SDL_SetTextureBlendMode
183 * \sa SDL_GetTextureBlendMode
184 */
185extern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor,
186 SDL_BlendFactor dstColorFactor,
187 SDL_BlendOperation colorOperation,
188 SDL_BlendFactor srcAlphaFactor,
189 SDL_BlendFactor dstAlphaFactor,
190 SDL_BlendOperation alphaOperation);
191
192/* Ends C function definitions when using C++ */
193#ifdef __cplusplus
194}
195#endif
196#include "close_code.h"
197
198#endif /* SDL_blendmode_h_ */
199
200/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_clipboard.h b/vendor/SDL2/include/SDL_clipboard.h new file mode 100644 index 0000000..9351363 --- /dev/null +++ b/vendor/SDL2/include/SDL_clipboard.h
@@ -0,0 +1,94 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_clipboard.h
24 *
25 * Include file for SDL clipboard handling
26 */
27
28#ifndef SDL_clipboard_h_
29#define SDL_clipboard_h_
30
31#include "SDL_stdinc.h"
32
33#include "begin_code.h"
34/* Set up for C function definitions, even when using C++ */
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39/* Function prototypes */
40
41/**
42 * Put UTF-8 text into the clipboard.
43 *
44 * \param text the text to store in the clipboard
45 * \returns 0 on success or a negative error code on failure; call
46 * SDL_GetError() for more information.
47 *
48 * \since This function is available since SDL 2.0.0.
49 *
50 * \sa SDL_GetClipboardText
51 * \sa SDL_HasClipboardText
52 */
53extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text);
54
55/**
56 * Get UTF-8 text from the clipboard, which must be freed with SDL_free().
57 *
58 * This functions returns empty string if there was not enough memory left for
59 * a copy of the clipboard's content.
60 *
61 * \returns the clipboard text on success or an empty string on failure; call
62 * SDL_GetError() for more information. Caller must call SDL_free()
63 * on the returned pointer when done with it (even if there was an
64 * error).
65 *
66 * \since This function is available since SDL 2.0.0.
67 *
68 * \sa SDL_HasClipboardText
69 * \sa SDL_SetClipboardText
70 */
71extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void);
72
73/**
74 * Query whether the clipboard exists and contains a non-empty text string.
75 *
76 * \returns SDL_TRUE if the clipboard has text, or SDL_FALSE if it does not.
77 *
78 * \since This function is available since SDL 2.0.0.
79 *
80 * \sa SDL_GetClipboardText
81 * \sa SDL_SetClipboardText
82 */
83extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void);
84
85
86/* Ends C function definitions when using C++ */
87#ifdef __cplusplus
88}
89#endif
90#include "close_code.h"
91
92#endif /* SDL_clipboard_h_ */
93
94/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_config.h b/vendor/SDL2/include/SDL_config.h new file mode 100644 index 0000000..c9ed1cf --- /dev/null +++ b/vendor/SDL2/include/SDL_config.h
@@ -0,0 +1,305 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_config_windows_h_
23#define SDL_config_windows_h_
24#define SDL_config_h_
25
26#include "SDL_platform.h"
27
28/* winsdkver.h defines _WIN32_MAXVER for SDK version detection. It is present since at least the Windows 7 SDK,
29 * but out of caution we'll only use it if the compiler supports __has_include() to confirm its presence.
30 * If your compiler doesn't support __has_include() but you have winsdkver.h, define HAVE_WINSDKVER_H. */
31#if !defined(HAVE_WINSDKVER_H) && defined(__has_include)
32#if __has_include(<winsdkver.h>)
33#define HAVE_WINSDKVER_H 1
34#endif
35#endif
36
37#ifdef HAVE_WINSDKVER_H
38#include <winsdkver.h>
39#endif
40
41/* This is a set of defines to configure the SDL features */
42
43#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H)
44#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__) || defined(__clang__) || defined(__BORLANDC__) || defined(__CODEGEARC__)
45#define HAVE_STDINT_H 1
46#elif defined(_MSC_VER)
47typedef signed __int8 int8_t;
48typedef unsigned __int8 uint8_t;
49typedef signed __int16 int16_t;
50typedef unsigned __int16 uint16_t;
51typedef signed __int32 int32_t;
52typedef unsigned __int32 uint32_t;
53typedef signed __int64 int64_t;
54typedef unsigned __int64 uint64_t;
55#ifndef _UINTPTR_T_DEFINED
56#ifdef _WIN64
57typedef unsigned __int64 uintptr_t;
58#else
59typedef unsigned int uintptr_t;
60#endif
61#define _UINTPTR_T_DEFINED
62#endif
63/* Older Visual C++ headers don't have the Win64-compatible typedefs... */
64#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR)))
65#define DWORD_PTR DWORD
66#endif
67#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR)))
68#define LONG_PTR LONG
69#endif
70#else /* !__GNUC__ && !_MSC_VER */
71typedef signed char int8_t;
72typedef unsigned char uint8_t;
73typedef signed short int16_t;
74typedef unsigned short uint16_t;
75typedef signed int int32_t;
76typedef unsigned int uint32_t;
77typedef signed long long int64_t;
78typedef unsigned long long uint64_t;
79#ifndef _SIZE_T_DEFINED_
80#define _SIZE_T_DEFINED_
81typedef unsigned int size_t;
82#endif
83typedef unsigned int uintptr_t;
84#endif /* __GNUC__ || _MSC_VER */
85#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
86
87#ifdef _WIN64
88# define SIZEOF_VOIDP 8
89#else
90# define SIZEOF_VOIDP 4
91#endif
92
93#define HAVE_DDRAW_H 1
94#define HAVE_DINPUT_H 1
95#define HAVE_DSOUND_H 1
96#define HAVE_DXGI_H 1
97#define HAVE_XINPUT_H 1
98#if defined(_WIN32_MAXVER) && _WIN32_MAXVER >= 0x0A00 /* Windows 10 SDK */
99#define HAVE_WINDOWS_GAMING_INPUT_H 1
100#endif
101#if defined(_WIN32_MAXVER) && _WIN32_MAXVER >= 0x0602 /* Windows 8 SDK */
102#define HAVE_D3D11_H 1
103#endif
104#define HAVE_MMDEVICEAPI_H 1
105#define HAVE_AUDIOCLIENT_H 1
106#define HAVE_TPCSHRD_H 1
107#define HAVE_SENSORSAPI_H 1
108#if (defined(_M_IX86) || defined(_M_X64) || defined(_M_AMD64)) && (defined(_MSC_VER) && _MSC_VER >= 1600)
109#define HAVE_IMMINTRIN_H 1
110#elif defined(__has_include) && (defined(__i386__) || defined(__x86_64))
111# if __has_include(<immintrin.h>)
112# define HAVE_IMMINTRIN_H 1
113# endif
114#endif
115
116/* This is disabled by default to avoid C runtime dependencies and manifest requirements */
117#ifdef HAVE_LIBC
118/* Useful headers */
119#define STDC_HEADERS 1
120#define HAVE_CTYPE_H 1
121#define HAVE_FLOAT_H 1
122#define HAVE_LIMITS_H 1
123#define HAVE_MATH_H 1
124#define HAVE_SIGNAL_H 1
125#define HAVE_STDIO_H 1
126#define HAVE_STRING_H 1
127
128/* C library functions */
129#define HAVE_MALLOC 1
130#define HAVE_CALLOC 1
131#define HAVE_REALLOC 1
132#define HAVE_FREE 1
133#define HAVE_ALLOCA 1
134#define HAVE_QSORT 1
135#define HAVE_ABS 1
136#define HAVE_MEMSET 1
137#define HAVE_MEMCPY 1
138#define HAVE_MEMMOVE 1
139#define HAVE_MEMCMP 1
140#define HAVE_STRLEN 1
141#define HAVE__STRREV 1
142/* These functions have security warnings, so we won't use them */
143/* #undef HAVE__STRUPR */
144/* #undef HAVE__STRLWR */
145#define HAVE_STRCHR 1
146#define HAVE_STRRCHR 1
147#define HAVE_STRSTR 1
148/* #undef HAVE_STRTOK_R */
149/* These functions have security warnings, so we won't use them */
150/* #undef HAVE__LTOA */
151/* #undef HAVE__ULTOA */
152#define HAVE_STRTOL 1
153#define HAVE_STRTOUL 1
154#define HAVE_STRTOD 1
155#define HAVE_ATOI 1
156#define HAVE_ATOF 1
157#define HAVE_STRCMP 1
158#define HAVE_STRNCMP 1
159#define HAVE__STRICMP 1
160#define HAVE__STRNICMP 1
161#define HAVE__WCSICMP 1
162#define HAVE__WCSNICMP 1
163#define HAVE__WCSDUP 1
164#define HAVE_ACOS 1
165#define HAVE_ACOSF 1
166#define HAVE_ASIN 1
167#define HAVE_ASINF 1
168#define HAVE_ATAN 1
169#define HAVE_ATANF 1
170#define HAVE_ATAN2 1
171#define HAVE_ATAN2F 1
172#define HAVE_CEILF 1
173#define HAVE__COPYSIGN 1
174#define HAVE_COS 1
175#define HAVE_COSF 1
176#define HAVE_EXP 1
177#define HAVE_EXPF 1
178#define HAVE_FABS 1
179#define HAVE_FABSF 1
180#define HAVE_FLOOR 1
181#define HAVE_FLOORF 1
182#define HAVE_FMOD 1
183#define HAVE_FMODF 1
184#define HAVE_LOG 1
185#define HAVE_LOGF 1
186#define HAVE_LOG10 1
187#define HAVE_LOG10F 1
188#define HAVE_POW 1
189#define HAVE_POWF 1
190#define HAVE_SIN 1
191#define HAVE_SINF 1
192#define HAVE_SQRT 1
193#define HAVE_SQRTF 1
194#define HAVE_TAN 1
195#define HAVE_TANF 1
196#if defined(_MSC_VER)
197/* These functions were added with the VC++ 2013 C runtime library */
198#if _MSC_VER >= 1800
199#define HAVE_STRTOLL 1
200#define HAVE_STRTOULL 1
201#define HAVE_VSSCANF 1
202#define HAVE_LROUND 1
203#define HAVE_LROUNDF 1
204#define HAVE_ROUND 1
205#define HAVE_ROUNDF 1
206#define HAVE_SCALBN 1
207#define HAVE_SCALBNF 1
208#define HAVE_TRUNC 1
209#define HAVE_TRUNCF 1
210#endif
211/* This function is available with at least the VC++ 2008 C runtime library */
212#if _MSC_VER >= 1400
213#define HAVE__FSEEKI64 1
214#endif
215#endif
216#if !defined(_MSC_VER) || defined(_USE_MATH_DEFINES)
217#define HAVE_M_PI 1
218#endif
219#else
220#define HAVE_STDARG_H 1
221#define HAVE_STDDEF_H 1
222#endif
223
224/* Enable various audio drivers */
225#define SDL_AUDIO_DRIVER_WASAPI 1
226#define SDL_AUDIO_DRIVER_DSOUND 1
227#define SDL_AUDIO_DRIVER_WINMM 1
228#define SDL_AUDIO_DRIVER_DISK 1
229#define SDL_AUDIO_DRIVER_DUMMY 1
230
231/* Enable various input drivers */
232#define SDL_JOYSTICK_DINPUT 1
233#define SDL_JOYSTICK_HIDAPI 1
234#ifndef __WINRT__
235#define SDL_JOYSTICK_RAWINPUT 1
236#endif
237#define SDL_JOYSTICK_VIRTUAL 1
238#ifdef HAVE_WINDOWS_GAMING_INPUT_H
239#define SDL_JOYSTICK_WGI 1
240#endif
241#define SDL_JOYSTICK_XINPUT 1
242#define SDL_HAPTIC_DINPUT 1
243#define SDL_HAPTIC_XINPUT 1
244
245/* Enable the sensor driver */
246#define SDL_SENSOR_WINDOWS 1
247
248/* Enable various shared object loading systems */
249#define SDL_LOADSO_WINDOWS 1
250
251/* Enable various threading systems */
252#define SDL_THREAD_GENERIC_COND_SUFFIX 1
253#define SDL_THREAD_WINDOWS 1
254
255/* Enable various timer systems */
256#define SDL_TIMER_WINDOWS 1
257
258/* Enable various video drivers */
259#define SDL_VIDEO_DRIVER_DUMMY 1
260#define SDL_VIDEO_DRIVER_WINDOWS 1
261
262#ifndef SDL_VIDEO_RENDER_D3D
263#define SDL_VIDEO_RENDER_D3D 1
264#endif
265#if !defined(SDL_VIDEO_RENDER_D3D11) && defined(HAVE_D3D11_H)
266#define SDL_VIDEO_RENDER_D3D11 1
267#endif
268
269/* Enable OpenGL support */
270#ifndef SDL_VIDEO_OPENGL
271#define SDL_VIDEO_OPENGL 1
272#endif
273#ifndef SDL_VIDEO_OPENGL_WGL
274#define SDL_VIDEO_OPENGL_WGL 1
275#endif
276#ifndef SDL_VIDEO_RENDER_OGL
277#define SDL_VIDEO_RENDER_OGL 1
278#endif
279#ifndef SDL_VIDEO_RENDER_OGL_ES2
280#define SDL_VIDEO_RENDER_OGL_ES2 1
281#endif
282#ifndef SDL_VIDEO_OPENGL_ES2
283#define SDL_VIDEO_OPENGL_ES2 1
284#endif
285#ifndef SDL_VIDEO_OPENGL_EGL
286#define SDL_VIDEO_OPENGL_EGL 1
287#endif
288
289/* Enable Vulkan support */
290#define SDL_VIDEO_VULKAN 1
291
292/* Enable system power support */
293#define SDL_POWER_WINDOWS 1
294
295/* Enable filesystem support */
296#define SDL_FILESYSTEM_WINDOWS 1
297
298/* Enable assembly routines (Win64 doesn't have inline asm) */
299#ifndef _WIN64
300#define SDL_ASSEMBLY_ROUTINES 1
301#endif
302
303#endif /* SDL_config_windows_h_ */
304
305/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_config.h.cmake b/vendor/SDL2/include/SDL_config.h.cmake new file mode 100644 index 0000000..c57266c --- /dev/null +++ b/vendor/SDL2/include/SDL_config.h.cmake
@@ -0,0 +1,445 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_config_h_
23#define SDL_config_h_
24
25/**
26 * \file SDL_config.h.in
27 *
28 * This is a set of defines to configure the SDL features
29 */
30
31/* General platform specific identifiers */
32#include "SDL_platform.h"
33
34/* C language features */
35#cmakedefine const @HAVE_CONST@
36#cmakedefine inline @HAVE_INLINE@
37#cmakedefine volatile @HAVE_VOLATILE@
38
39/* C datatypes */
40/* Define SIZEOF_VOIDP for 64/32 architectures */
41#ifdef __LP64__
42#define SIZEOF_VOIDP 8
43#else
44#define SIZEOF_VOIDP 4
45#endif
46
47#cmakedefine HAVE_GCC_ATOMICS @HAVE_GCC_ATOMICS@
48#cmakedefine HAVE_GCC_SYNC_LOCK_TEST_AND_SET @HAVE_GCC_SYNC_LOCK_TEST_AND_SET@
49
50#cmakedefine HAVE_D3D_H @HAVE_D3D_H@
51#cmakedefine HAVE_D3D11_H @HAVE_D3D11_H@
52#cmakedefine HAVE_DDRAW_H @HAVE_DDRAW_H@
53#cmakedefine HAVE_DSOUND_H @HAVE_DSOUND_H@
54#cmakedefine HAVE_DINPUT_H @HAVE_DINPUT_H@
55#cmakedefine HAVE_XAUDIO2_H @HAVE_XAUDIO2_H@
56#cmakedefine HAVE_XINPUT_H @HAVE_XINPUT_H@
57#cmakedefine HAVE_DXGI_H @HAVE_DXGI_H@
58#cmakedefine HAVE_XINPUT_GAMEPAD_EX @HAVE_XINPUT_GAMEPAD_EX@
59#cmakedefine HAVE_XINPUT_STATE_EX @HAVE_XINPUT_STATE_EX@
60
61/* Comment this if you want to build without any C library requirements */
62#cmakedefine HAVE_LIBC 1
63#if HAVE_LIBC
64
65/* Useful headers */
66#cmakedefine HAVE_ALLOCA_H 1
67#cmakedefine HAVE_SYS_TYPES_H 1
68#cmakedefine HAVE_STDIO_H 1
69#cmakedefine STDC_HEADERS 1
70#cmakedefine HAVE_STDLIB_H 1
71#cmakedefine HAVE_STDARG_H 1
72#cmakedefine HAVE_MALLOC_H 1
73#cmakedefine HAVE_MEMORY_H 1
74#cmakedefine HAVE_STRING_H 1
75#cmakedefine HAVE_STRINGS_H 1
76#cmakedefine HAVE_WCHAR_H 1
77#cmakedefine HAVE_INTTYPES_H 1
78#cmakedefine HAVE_STDINT_H 1
79#cmakedefine HAVE_CTYPE_H 1
80#cmakedefine HAVE_MATH_H 1
81#cmakedefine HAVE_ICONV_H 1
82#cmakedefine HAVE_SIGNAL_H 1
83#cmakedefine HAVE_ALTIVEC_H 1
84#cmakedefine HAVE_PTHREAD_NP_H 1
85#cmakedefine HAVE_LIBUDEV_H 1
86#cmakedefine HAVE_DBUS_DBUS_H 1
87#cmakedefine HAVE_IBUS_IBUS_H 1
88#cmakedefine HAVE_FCITX_FRONTEND_H 1
89#cmakedefine HAVE_LIBSAMPLERATE_H 1
90
91/* C library functions */
92#cmakedefine HAVE_MALLOC 1
93#cmakedefine HAVE_CALLOC 1
94#cmakedefine HAVE_REALLOC 1
95#cmakedefine HAVE_FREE 1
96#cmakedefine HAVE_ALLOCA 1
97#ifndef __WIN32__ /* Don't use C runtime versions of these on Windows */
98#cmakedefine HAVE_GETENV 1
99#cmakedefine HAVE_SETENV 1
100#cmakedefine HAVE_PUTENV 1
101#cmakedefine HAVE_UNSETENV 1
102#endif
103#cmakedefine HAVE_QSORT 1
104#cmakedefine HAVE_ABS 1
105#cmakedefine HAVE_BCOPY 1
106#cmakedefine HAVE_MEMSET 1
107#cmakedefine HAVE_MEMCPY 1
108#cmakedefine HAVE_MEMMOVE 1
109#cmakedefine HAVE_MEMCMP 1
110#cmakedefine HAVE_WCSLEN 1
111#cmakedefine HAVE_WCSLCPY 1
112#cmakedefine HAVE_WCSLCAT 1
113#cmakedefine HAVE_WCSCMP 1
114#cmakedefine HAVE_STRLEN 1
115#cmakedefine HAVE_STRLCPY 1
116#cmakedefine HAVE_STRLCAT 1
117#cmakedefine HAVE_STRDUP 1
118#cmakedefine HAVE__STRREV 1
119#cmakedefine HAVE__STRUPR 1
120#cmakedefine HAVE__STRLWR 1
121#cmakedefine HAVE_INDEX 1
122#cmakedefine HAVE_RINDEX 1
123#cmakedefine HAVE_STRCHR 1
124#cmakedefine HAVE_STRRCHR 1
125#cmakedefine HAVE_STRSTR 1
126#cmakedefine HAVE_ITOA 1
127#cmakedefine HAVE__LTOA 1
128#cmakedefine HAVE__UITOA 1
129#cmakedefine HAVE__ULTOA 1
130#cmakedefine HAVE_STRTOL 1
131#cmakedefine HAVE_STRTOUL 1
132#cmakedefine HAVE__I64TOA 1
133#cmakedefine HAVE__UI64TOA 1
134#cmakedefine HAVE_STRTOLL 1
135#cmakedefine HAVE_STRTOULL 1
136#cmakedefine HAVE_STRTOD 1
137#cmakedefine HAVE_ATOI 1
138#cmakedefine HAVE_ATOF 1
139#cmakedefine HAVE_STRCMP 1
140#cmakedefine HAVE_STRNCMP 1
141#cmakedefine HAVE__STRICMP 1
142#cmakedefine HAVE_STRCASECMP 1
143#cmakedefine HAVE__STRNICMP 1
144#cmakedefine HAVE_STRNCASECMP 1
145#cmakedefine HAVE_VSSCANF 1
146#cmakedefine HAVE_VSNPRINTF 1
147#cmakedefine HAVE_M_PI 1
148#cmakedefine HAVE_ATAN 1
149#cmakedefine HAVE_ATAN2 1
150#cmakedefine HAVE_ACOS 1
151#cmakedefine HAVE_ASIN 1
152#cmakedefine HAVE_CEIL 1
153#cmakedefine HAVE_COPYSIGN 1
154#cmakedefine HAVE_COS 1
155#cmakedefine HAVE_COSF 1
156#cmakedefine HAVE_FABS 1
157#cmakedefine HAVE_FLOOR 1
158#cmakedefine HAVE_LOG 1
159#cmakedefine HAVE_POW 1
160#cmakedefine HAVE_SCALBN 1
161#cmakedefine HAVE_SIN 1
162#cmakedefine HAVE_SINF 1
163#cmakedefine HAVE_SQRT 1
164#cmakedefine HAVE_SQRTF 1
165#cmakedefine HAVE_TAN 1
166#cmakedefine HAVE_TANF 1
167#cmakedefine HAVE_FOPEN64 1
168#cmakedefine HAVE_FSEEKO 1
169#cmakedefine HAVE_FSEEKO64 1
170#cmakedefine HAVE_SIGACTION 1
171#cmakedefine HAVE_SA_SIGACTION 1
172#cmakedefine HAVE_SETJMP 1
173#cmakedefine HAVE_NANOSLEEP 1
174#cmakedefine HAVE_SYSCONF 1
175#cmakedefine HAVE_SYSCTLBYNAME 1
176#cmakedefine HAVE_CLOCK_GETTIME 1
177#cmakedefine HAVE_GETPAGESIZE 1
178#cmakedefine HAVE_MPROTECT 1
179#cmakedefine HAVE_ICONV 1
180#cmakedefine HAVE_PTHREAD_SETNAME_NP 1
181#cmakedefine HAVE_PTHREAD_SET_NAME_NP 1
182#cmakedefine HAVE_SEM_TIMEDWAIT 1
183#cmakedefine HAVE_GETAUXVAL 1
184#cmakedefine HAVE_POLL 1
185
186#elif __WIN32__
187#cmakedefine HAVE_STDARG_H 1
188#cmakedefine HAVE_STDDEF_H 1
189#else
190/* We may need some replacement for stdarg.h here */
191#include <stdarg.h>
192#endif /* HAVE_LIBC */
193
194/* SDL internal assertion support */
195#cmakedefine SDL_DEFAULT_ASSERT_LEVEL @SDL_DEFAULT_ASSERT_LEVEL@
196
197/* Allow disabling of core subsystems */
198#cmakedefine SDL_ATOMIC_DISABLED @SDL_ATOMIC_DISABLED@
199#cmakedefine SDL_AUDIO_DISABLED @SDL_AUDIO_DISABLED@
200#cmakedefine SDL_CPUINFO_DISABLED @SDL_CPUINFO_DISABLED@
201#cmakedefine SDL_EVENTS_DISABLED @SDL_EVENTS_DISABLED@
202#cmakedefine SDL_FILE_DISABLED @SDL_FILE_DISABLED@
203#cmakedefine SDL_JOYSTICK_DISABLED @SDL_JOYSTICK_DISABLED@
204#cmakedefine SDL_HAPTIC_DISABLED @SDL_HAPTIC_DISABLED@
205#cmakedefine SDL_LOADSO_DISABLED @SDL_LOADSO_DISABLED@
206#cmakedefine SDL_RENDER_DISABLED @SDL_RENDER_DISABLED@
207#cmakedefine SDL_THREADS_DISABLED @SDL_THREADS_DISABLED@
208#cmakedefine SDL_TIMERS_DISABLED @SDL_TIMERS_DISABLED@
209#cmakedefine SDL_VIDEO_DISABLED @SDL_VIDEO_DISABLED@
210#cmakedefine SDL_POWER_DISABLED @SDL_POWER_DISABLED@
211#cmakedefine SDL_FILESYSTEM_DISABLED @SDL_FILESYSTEM_DISABLED@
212
213/* Enable various audio drivers */
214#cmakedefine SDL_AUDIO_DRIVER_ALSA @SDL_AUDIO_DRIVER_ALSA@
215#cmakedefine SDL_AUDIO_DRIVER_ALSA_DYNAMIC @SDL_AUDIO_DRIVER_ALSA_DYNAMIC@
216#cmakedefine SDL_AUDIO_DRIVER_ANDROID @SDL_AUDIO_DRIVER_ANDROID@
217#cmakedefine SDL_AUDIO_DRIVER_ARTS @SDL_AUDIO_DRIVER_ARTS@
218#cmakedefine SDL_AUDIO_DRIVER_ARTS_DYNAMIC @SDL_AUDIO_DRIVER_ARTS_DYNAMIC@
219#cmakedefine SDL_AUDIO_DRIVER_COREAUDIO @SDL_AUDIO_DRIVER_COREAUDIO@
220#cmakedefine SDL_AUDIO_DRIVER_DISK @SDL_AUDIO_DRIVER_DISK@
221#cmakedefine SDL_AUDIO_DRIVER_DSOUND @SDL_AUDIO_DRIVER_DSOUND@
222#cmakedefine SDL_AUDIO_DRIVER_DUMMY @SDL_AUDIO_DRIVER_DUMMY@
223#cmakedefine SDL_AUDIO_DRIVER_EMSCRIPTEN @SDL_AUDIO_DRIVER_EMSCRIPTEN@
224#cmakedefine SDL_AUDIO_DRIVER_ESD @SDL_AUDIO_DRIVER_ESD@
225#cmakedefine SDL_AUDIO_DRIVER_ESD_DYNAMIC @SDL_AUDIO_DRIVER_ESD_DYNAMIC@
226#cmakedefine SDL_AUDIO_DRIVER_FUSIONSOUND @SDL_AUDIO_DRIVER_FUSIONSOUND@
227#cmakedefine SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC @SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC@
228#cmakedefine SDL_AUDIO_DRIVER_HAIKU @SDL_AUDIO_DRIVER_HAIKU@
229#cmakedefine SDL_AUDIO_DRIVER_JACK @SDL_AUDIO_DRIVER_JACK@
230#cmakedefine SDL_AUDIO_DRIVER_JACK_DYNAMIC @SDL_AUDIO_DRIVER_JACK_DYNAMIC@
231#cmakedefine SDL_AUDIO_DRIVER_NAS @SDL_AUDIO_DRIVER_NAS@
232#cmakedefine SDL_AUDIO_DRIVER_NAS_DYNAMIC @SDL_AUDIO_DRIVER_NAS_DYNAMIC@
233#cmakedefine SDL_AUDIO_DRIVER_NETBSD @SDL_AUDIO_DRIVER_NETBSD@
234#cmakedefine SDL_AUDIO_DRIVER_OSS @SDL_AUDIO_DRIVER_OSS@
235#cmakedefine SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H @SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H@
236#cmakedefine SDL_AUDIO_DRIVER_PAUDIO @SDL_AUDIO_DRIVER_PAUDIO@
237#cmakedefine SDL_AUDIO_DRIVER_PULSEAUDIO @SDL_AUDIO_DRIVER_PULSEAUDIO@
238#cmakedefine SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC @SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC@
239#cmakedefine SDL_AUDIO_DRIVER_QSA @SDL_AUDIO_DRIVER_QSA@
240#cmakedefine SDL_AUDIO_DRIVER_SNDIO @SDL_AUDIO_DRIVER_SNDIO@
241#cmakedefine SDL_AUDIO_DRIVER_SNDIO_DYNAMIC @SDL_AUDIO_DRIVER_SNDIO_DYNAMIC@
242#cmakedefine SDL_AUDIO_DRIVER_SUNAUDIO @SDL_AUDIO_DRIVER_SUNAUDIO@
243#cmakedefine SDL_AUDIO_DRIVER_WASAPI @SDL_AUDIO_DRIVER_WASAPI@
244#cmakedefine SDL_AUDIO_DRIVER_WINMM @SDL_AUDIO_DRIVER_WINMM@
245#cmakedefine SDL_AUDIO_DRIVER_XAUDIO2 @SDL_AUDIO_DRIVER_XAUDIO2@
246
247/* Enable various input drivers */
248#cmakedefine SDL_INPUT_LINUXEV @SDL_INPUT_LINUXEV@
249#cmakedefine SDL_INPUT_LINUXKD @SDL_INPUT_LINUXKD@
250#cmakedefine SDL_INPUT_TSLIB @SDL_INPUT_TSLIB@
251#cmakedefine SDL_JOYSTICK_ANDROID @SDL_JOYSTICK_ANDROID@
252#cmakedefine SDL_JOYSTICK_HAIKU @SDL_JOYSTICK_HAIKU@
253#cmakedefine SDL_JOYSTICK_DINPUT @SDL_JOYSTICK_DINPUT@
254#cmakedefine SDL_JOYSTICK_XINPUT @SDL_JOYSTICK_XINPUT@
255#cmakedefine SDL_JOYSTICK_DUMMY @SDL_JOYSTICK_DUMMY@
256#cmakedefine SDL_JOYSTICK_IOKIT @SDL_JOYSTICK_IOKIT@
257#cmakedefine SDL_JOYSTICK_MFI @SDL_JOYSTICK_MFI@
258#cmakedefine SDL_JOYSTICK_LINUX @SDL_JOYSTICK_LINUX@
259#cmakedefine SDL_JOYSTICK_WINMM @SDL_JOYSTICK_WINMM@
260#cmakedefine SDL_JOYSTICK_USBHID @SDL_JOYSTICK_USBHID@
261#cmakedefine SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H @SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H@
262#cmakedefine SDL_JOYSTICK_EMSCRIPTEN @SDL_JOYSTICK_EMSCRIPTEN@
263#cmakedefine SDL_HAPTIC_DUMMY @SDL_HAPTIC_DUMMY@
264#cmakedefine SDL_HAPTIC_LINUX @SDL_HAPTIC_LINUX@
265#cmakedefine SDL_HAPTIC_IOKIT @SDL_HAPTIC_IOKIT@
266#cmakedefine SDL_HAPTIC_DINPUT @SDL_HAPTIC_DINPUT@
267#cmakedefine SDL_HAPTIC_XINPUT @SDL_HAPTIC_XINPUT@
268#cmakedefine SDL_HAPTIC_ANDROID @SDL_HAPTIC_ANDROID@
269
270/* Enable various shared object loading systems */
271#cmakedefine SDL_LOADSO_DLOPEN @SDL_LOADSO_DLOPEN@
272#cmakedefine SDL_LOADSO_DUMMY @SDL_LOADSO_DUMMY@
273#cmakedefine SDL_LOADSO_LDG @SDL_LOADSO_LDG@
274#cmakedefine SDL_LOADSO_WINDOWS @SDL_LOADSO_WINDOWS@
275
276/* Enable various threading systems */
277#cmakedefine SDL_THREAD_PTHREAD @SDL_THREAD_PTHREAD@
278#cmakedefine SDL_THREAD_PTHREAD_RECURSIVE_MUTEX @SDL_THREAD_PTHREAD_RECURSIVE_MUTEX@
279#cmakedefine SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP @SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP@
280#cmakedefine SDL_THREAD_WINDOWS @SDL_THREAD_WINDOWS@
281
282/* Enable various timer systems */
283#cmakedefine SDL_TIMER_HAIKU @SDL_TIMER_HAIKU@
284#cmakedefine SDL_TIMER_DUMMY @SDL_TIMER_DUMMY@
285#cmakedefine SDL_TIMER_UNIX @SDL_TIMER_UNIX@
286#cmakedefine SDL_TIMER_WINDOWS @SDL_TIMER_WINDOWS@
287#cmakedefine SDL_TIMER_WINCE @SDL_TIMER_WINCE@
288
289/* Enable various video drivers */
290#cmakedefine SDL_VIDEO_DRIVER_ANDROID @SDL_VIDEO_DRIVER_ANDROID@
291#cmakedefine SDL_VIDEO_DRIVER_HAIKU @SDL_VIDEO_DRIVER_HAIKU@
292#cmakedefine SDL_VIDEO_DRIVER_COCOA @SDL_VIDEO_DRIVER_COCOA@
293#cmakedefine SDL_VIDEO_DRIVER_DIRECTFB @SDL_VIDEO_DRIVER_DIRECTFB@
294#cmakedefine SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC @SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC@
295#cmakedefine SDL_VIDEO_DRIVER_DUMMY @SDL_VIDEO_DRIVER_DUMMY@
296#cmakedefine SDL_VIDEO_DRIVER_WINDOWS @SDL_VIDEO_DRIVER_WINDOWS@
297#cmakedefine SDL_VIDEO_DRIVER_WAYLAND @SDL_VIDEO_DRIVER_WAYLAND@
298#cmakedefine SDL_VIDEO_DRIVER_RPI @SDL_VIDEO_DRIVER_RPI@
299#cmakedefine SDL_VIDEO_DRIVER_VIVANTE @SDL_VIDEO_DRIVER_VIVANTE@
300#cmakedefine SDL_VIDEO_DRIVER_VIVANTE_VDK @SDL_VIDEO_DRIVER_VIVANTE_VDK@
301
302#cmakedefine SDL_VIDEO_DRIVER_KMSDRM @SDL_VIDEO_DRIVER_KMSDRM@
303#cmakedefine SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC @SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC@
304#cmakedefine SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM @SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM@
305
306#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH @SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH@
307#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC@
308#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL@
309#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR@
310#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON@
311
312#cmakedefine SDL_VIDEO_DRIVER_MIR @SDL_VIDEO_DRIVER_MIR@
313#cmakedefine SDL_VIDEO_DRIVER_MIR_DYNAMIC @SDL_VIDEO_DRIVER_MIR_DYNAMIC@
314#cmakedefine SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON @SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON@
315#cmakedefine SDL_VIDEO_DRIVER_EMSCRIPTEN @SDL_VIDEO_DRIVER_EMSCRIPTEN@
316#cmakedefine SDL_VIDEO_DRIVER_X11 @SDL_VIDEO_DRIVER_X11@
317#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC @SDL_VIDEO_DRIVER_X11_DYNAMIC@
318#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT @SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT@
319#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR @SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR@
320#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA @SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA@
321#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 @SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2@
322#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR @SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR@
323#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS @SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS@
324#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE @SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE@
325#cmakedefine SDL_VIDEO_DRIVER_X11_XCURSOR @SDL_VIDEO_DRIVER_X11_XCURSOR@
326#cmakedefine SDL_VIDEO_DRIVER_X11_XDBE @SDL_VIDEO_DRIVER_X11_XDBE@
327#cmakedefine SDL_VIDEO_DRIVER_X11_XINERAMA @SDL_VIDEO_DRIVER_X11_XINERAMA@
328#cmakedefine SDL_VIDEO_DRIVER_X11_XINPUT2 @SDL_VIDEO_DRIVER_X11_XINPUT2@
329#cmakedefine SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH @SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH@
330#cmakedefine SDL_VIDEO_DRIVER_X11_XRANDR @SDL_VIDEO_DRIVER_X11_XRANDR@
331#cmakedefine SDL_VIDEO_DRIVER_X11_XSCRNSAVER @SDL_VIDEO_DRIVER_X11_XSCRNSAVER@
332#cmakedefine SDL_VIDEO_DRIVER_X11_XSHAPE @SDL_VIDEO_DRIVER_X11_XSHAPE@
333#cmakedefine SDL_VIDEO_DRIVER_X11_XVIDMODE @SDL_VIDEO_DRIVER_X11_XVIDMODE@
334#cmakedefine SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS @SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS@
335#cmakedefine SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY @SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY@
336#cmakedefine SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM @SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM@
337
338#cmakedefine SDL_VIDEO_RENDER_D3D @SDL_VIDEO_RENDER_D3D@
339#cmakedefine SDL_VIDEO_RENDER_D3D11 @SDL_VIDEO_RENDER_D3D11@
340#cmakedefine SDL_VIDEO_RENDER_OGL @SDL_VIDEO_RENDER_OGL@
341#cmakedefine SDL_VIDEO_RENDER_OGL_ES @SDL_VIDEO_RENDER_OGL_ES@
342#cmakedefine SDL_VIDEO_RENDER_OGL_ES2 @SDL_VIDEO_RENDER_OGL_ES2@
343#cmakedefine SDL_VIDEO_RENDER_DIRECTFB @SDL_VIDEO_RENDER_DIRECTFB@
344
345/* Enable OpenGL support */
346#cmakedefine SDL_VIDEO_OPENGL @SDL_VIDEO_OPENGL@
347#cmakedefine SDL_VIDEO_OPENGL_ES @SDL_VIDEO_OPENGL_ES@
348#cmakedefine SDL_VIDEO_OPENGL_ES2 @SDL_VIDEO_OPENGL_ES2@
349#cmakedefine SDL_VIDEO_OPENGL_BGL @SDL_VIDEO_OPENGL_BGL@
350#cmakedefine SDL_VIDEO_OPENGL_CGL @SDL_VIDEO_OPENGL_CGL@
351#cmakedefine SDL_VIDEO_OPENGL_GLX @SDL_VIDEO_OPENGL_GLX@
352#cmakedefine SDL_VIDEO_OPENGL_WGL @SDL_VIDEO_OPENGL_WGL@
353#cmakedefine SDL_VIDEO_OPENGL_EGL @SDL_VIDEO_OPENGL_EGL@
354#cmakedefine SDL_VIDEO_OPENGL_OSMESA @SDL_VIDEO_OPENGL_OSMESA@
355#cmakedefine SDL_VIDEO_OPENGL_OSMESA_DYNAMIC @SDL_VIDEO_OPENGL_OSMESA_DYNAMIC@
356
357/* Enable Vulkan support */
358#cmakedefine SDL_VIDEO_VULKAN @SDL_VIDEO_VULKAN@
359
360/* Enable system power support */
361#cmakedefine SDL_POWER_ANDROID @SDL_POWER_ANDROID@
362#cmakedefine SDL_POWER_LINUX @SDL_POWER_LINUX@
363#cmakedefine SDL_POWER_WINDOWS @SDL_POWER_WINDOWS@
364#cmakedefine SDL_POWER_MACOSX @SDL_POWER_MACOSX@
365#cmakedefine SDL_POWER_HAIKU @SDL_POWER_HAIKU@
366#cmakedefine SDL_POWER_EMSCRIPTEN @SDL_POWER_EMSCRIPTEN@
367#cmakedefine SDL_POWER_HARDWIRED @SDL_POWER_HARDWIRED@
368
369/* Enable system filesystem support */
370#cmakedefine SDL_FILESYSTEM_ANDROID @SDL_FILESYSTEM_ANDROID@
371#cmakedefine SDL_FILESYSTEM_HAIKU @SDL_FILESYSTEM_HAIKU@
372#cmakedefine SDL_FILESYSTEM_COCOA @SDL_FILESYSTEM_COCOA@
373#cmakedefine SDL_FILESYSTEM_DUMMY @SDL_FILESYSTEM_DUMMY@
374#cmakedefine SDL_FILESYSTEM_UNIX @SDL_FILESYSTEM_UNIX@
375#cmakedefine SDL_FILESYSTEM_WINDOWS @SDL_FILESYSTEM_WINDOWS@
376#cmakedefine SDL_FILESYSTEM_EMSCRIPTEN @SDL_FILESYSTEM_EMSCRIPTEN@
377
378/* Enable assembly routines */
379#cmakedefine SDL_ASSEMBLY_ROUTINES @SDL_ASSEMBLY_ROUTINES@
380#cmakedefine SDL_ALTIVEC_BLITTERS @SDL_ALTIVEC_BLITTERS@
381
382/* Enable dynamic libsamplerate support */
383#cmakedefine SDL_LIBSAMPLERATE_DYNAMIC @SDL_LIBSAMPLERATE_DYNAMIC@
384
385/* Platform specific definitions */
386#if !defined(__WIN32__)
387# if !defined(_STDINT_H_) && !defined(_STDINT_H) && !defined(HAVE_STDINT_H) && !defined(_HAVE_STDINT_H)
388typedef unsigned int size_t;
389typedef signed char int8_t;
390typedef unsigned char uint8_t;
391typedef signed short int16_t;
392typedef unsigned short uint16_t;
393typedef signed int int32_t;
394typedef unsigned int uint32_t;
395typedef signed long long int64_t;
396typedef unsigned long long uint64_t;
397typedef unsigned long uintptr_t;
398# endif /* if (stdint.h isn't available) */
399#else /* __WIN32__ */
400# if !defined(_STDINT_H_) && !defined(HAVE_STDINT_H) && !defined(_HAVE_STDINT_H)
401# if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__)
402#define HAVE_STDINT_H 1
403# elif defined(_MSC_VER)
404typedef signed __int8 int8_t;
405typedef unsigned __int8 uint8_t;
406typedef signed __int16 int16_t;
407typedef unsigned __int16 uint16_t;
408typedef signed __int32 int32_t;
409typedef unsigned __int32 uint32_t;
410typedef signed __int64 int64_t;
411typedef unsigned __int64 uint64_t;
412# ifndef _UINTPTR_T_DEFINED
413# ifdef _WIN64
414typedef unsigned __int64 uintptr_t;
415# else
416typedef unsigned int uintptr_t;
417# endif
418#define _UINTPTR_T_DEFINED
419# endif
420/* Older Visual C++ headers don't have the Win64-compatible typedefs... */
421# if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR)))
422#define DWORD_PTR DWORD
423# endif
424# if ((_MSC_VER <= 1200) && (!defined(LONG_PTR)))
425#define LONG_PTR LONG
426# endif
427# else /* !__GNUC__ && !_MSC_VER */
428typedef signed char int8_t;
429typedef unsigned char uint8_t;
430typedef signed short int16_t;
431typedef unsigned short uint16_t;
432typedef signed int int32_t;
433typedef unsigned int uint32_t;
434typedef signed long long int64_t;
435typedef unsigned long long uint64_t;
436# ifndef _SIZE_T_DEFINED_
437#define _SIZE_T_DEFINED_
438typedef unsigned int size_t;
439# endif
440typedef unsigned int uintptr_t;
441# endif /* __GNUC__ || _MSC_VER */
442# endif /* !_STDINT_H_ && !HAVE_STDINT_H */
443#endif /* __WIN32__ */
444
445#endif /* SDL_config_h_ */
diff --git a/vendor/SDL2/include/SDL_config.h.in b/vendor/SDL2/include/SDL_config.h.in new file mode 100644 index 0000000..8b3d208 --- /dev/null +++ b/vendor/SDL2/include/SDL_config.h.in
@@ -0,0 +1,389 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_config_h_
23#define SDL_config_h_
24
25/**
26 * \file SDL_config.h.in
27 *
28 * This is a set of defines to configure the SDL features
29 */
30
31/* General platform specific identifiers */
32#include "SDL_platform.h"
33
34/* Make sure that this isn't included by Visual C++ */
35#ifdef _MSC_VER
36#error You should run hg revert SDL_config.h
37#endif
38
39/* C language features */
40#undef const
41#undef inline
42#undef volatile
43
44/* C datatypes */
45#ifdef __LP64__
46#define SIZEOF_VOIDP 8
47#else
48#define SIZEOF_VOIDP 4
49#endif
50#undef HAVE_GCC_ATOMICS
51#undef HAVE_GCC_SYNC_LOCK_TEST_AND_SET
52
53#undef HAVE_DDRAW_H
54#undef HAVE_DINPUT_H
55#undef HAVE_DSOUND_H
56#undef HAVE_DXGI_H
57#undef HAVE_XINPUT_H
58#undef HAVE_XINPUT_GAMEPAD_EX
59#undef HAVE_XINPUT_STATE_EX
60
61/* Comment this if you want to build without any C library requirements */
62#undef HAVE_LIBC
63#if HAVE_LIBC
64
65/* Useful headers */
66#undef HAVE_ALLOCA_H
67#undef HAVE_SYS_TYPES_H
68#undef HAVE_STDIO_H
69#undef STDC_HEADERS
70#undef HAVE_STDLIB_H
71#undef HAVE_STDARG_H
72#undef HAVE_MALLOC_H
73#undef HAVE_MEMORY_H
74#undef HAVE_STRING_H
75#undef HAVE_STRINGS_H
76#undef HAVE_WCHAR_H
77#undef HAVE_INTTYPES_H
78#undef HAVE_STDINT_H
79#undef HAVE_CTYPE_H
80#undef HAVE_MATH_H
81#undef HAVE_ICONV_H
82#undef HAVE_SIGNAL_H
83#undef HAVE_ALTIVEC_H
84#undef HAVE_PTHREAD_NP_H
85#undef HAVE_LIBUDEV_H
86#undef HAVE_DBUS_DBUS_H
87#undef HAVE_IBUS_IBUS_H
88#undef HAVE_FCITX_FRONTEND_H
89#undef HAVE_LIBSAMPLERATE_H
90
91/* C library functions */
92#undef HAVE_MALLOC
93#undef HAVE_CALLOC
94#undef HAVE_REALLOC
95#undef HAVE_FREE
96#undef HAVE_ALLOCA
97#ifndef __WIN32__ /* Don't use C runtime versions of these on Windows */
98#undef HAVE_GETENV
99#undef HAVE_SETENV
100#undef HAVE_PUTENV
101#undef HAVE_UNSETENV
102#endif
103#undef HAVE_QSORT
104#undef HAVE_ABS
105#undef HAVE_BCOPY
106#undef HAVE_MEMSET
107#undef HAVE_MEMCPY
108#undef HAVE_MEMMOVE
109#undef HAVE_MEMCMP
110#undef HAVE_WCSLEN
111#undef HAVE_WCSLCPY
112#undef HAVE_WCSLCAT
113#undef HAVE_WCSCMP
114#undef HAVE_STRLEN
115#undef HAVE_STRLCPY
116#undef HAVE_STRLCAT
117#undef HAVE_STRDUP
118#undef HAVE__STRREV
119#undef HAVE__STRUPR
120#undef HAVE__STRLWR
121#undef HAVE_INDEX
122#undef HAVE_RINDEX
123#undef HAVE_STRCHR
124#undef HAVE_STRRCHR
125#undef HAVE_STRSTR
126#undef HAVE_ITOA
127#undef HAVE__LTOA
128#undef HAVE__UITOA
129#undef HAVE__ULTOA
130#undef HAVE_STRTOL
131#undef HAVE_STRTOUL
132#undef HAVE__I64TOA
133#undef HAVE__UI64TOA
134#undef HAVE_STRTOLL
135#undef HAVE_STRTOULL
136#undef HAVE_STRTOD
137#undef HAVE_ATOI
138#undef HAVE_ATOF
139#undef HAVE_STRCMP
140#undef HAVE_STRNCMP
141#undef HAVE__STRICMP
142#undef HAVE_STRCASECMP
143#undef HAVE__STRNICMP
144#undef HAVE_STRNCASECMP
145#undef HAVE_SSCANF
146#undef HAVE_VSSCANF
147#undef HAVE_SNPRINTF
148#undef HAVE_VSNPRINTF
149#undef HAVE_M_PI
150#undef HAVE_ATAN
151#undef HAVE_ATAN2
152#undef HAVE_ACOS
153#undef HAVE_ASIN
154#undef HAVE_CEIL
155#undef HAVE_COPYSIGN
156#undef HAVE_COS
157#undef HAVE_COSF
158#undef HAVE_FABS
159#undef HAVE_FLOOR
160#undef HAVE_LOG
161#undef HAVE_POW
162#undef HAVE_SCALBN
163#undef HAVE_SIN
164#undef HAVE_SINF
165#undef HAVE_SQRT
166#undef HAVE_SQRTF
167#undef HAVE_TAN
168#undef HAVE_TANF
169#undef HAVE_FOPEN64
170#undef HAVE_FSEEKO
171#undef HAVE_FSEEKO64
172#undef HAVE_SIGACTION
173#undef HAVE_SA_SIGACTION
174#undef HAVE_SETJMP
175#undef HAVE_NANOSLEEP
176#undef HAVE_SYSCONF
177#undef HAVE_SYSCTLBYNAME
178#undef HAVE_CLOCK_GETTIME
179#undef HAVE_GETPAGESIZE
180#undef HAVE_MPROTECT
181#undef HAVE_ICONV
182#undef HAVE_PTHREAD_SETNAME_NP
183#undef HAVE_PTHREAD_SET_NAME_NP
184#undef HAVE_SEM_TIMEDWAIT
185#undef HAVE_GETAUXVAL
186#undef HAVE_POLL
187
188#else
189#define HAVE_STDARG_H 1
190#define HAVE_STDDEF_H 1
191#define HAVE_STDINT_H 1
192#endif /* HAVE_LIBC */
193
194/* SDL internal assertion support */
195#undef SDL_DEFAULT_ASSERT_LEVEL
196
197/* Allow disabling of core subsystems */
198#undef SDL_ATOMIC_DISABLED
199#undef SDL_AUDIO_DISABLED
200#undef SDL_CPUINFO_DISABLED
201#undef SDL_EVENTS_DISABLED
202#undef SDL_FILE_DISABLED
203#undef SDL_JOYSTICK_DISABLED
204#undef SDL_HAPTIC_DISABLED
205#undef SDL_LOADSO_DISABLED
206#undef SDL_RENDER_DISABLED
207#undef SDL_THREADS_DISABLED
208#undef SDL_TIMERS_DISABLED
209#undef SDL_VIDEO_DISABLED
210#undef SDL_POWER_DISABLED
211#undef SDL_FILESYSTEM_DISABLED
212
213/* Enable various audio drivers */
214#undef SDL_AUDIO_DRIVER_ALSA
215#undef SDL_AUDIO_DRIVER_ALSA_DYNAMIC
216#undef SDL_AUDIO_DRIVER_ANDROID
217#undef SDL_AUDIO_DRIVER_ARTS
218#undef SDL_AUDIO_DRIVER_ARTS_DYNAMIC
219#undef SDL_AUDIO_DRIVER_COREAUDIO
220#undef SDL_AUDIO_DRIVER_DISK
221#undef SDL_AUDIO_DRIVER_DSOUND
222#undef SDL_AUDIO_DRIVER_DUMMY
223#undef SDL_AUDIO_DRIVER_EMSCRIPTEN
224#undef SDL_AUDIO_DRIVER_ESD
225#undef SDL_AUDIO_DRIVER_ESD_DYNAMIC
226#undef SDL_AUDIO_DRIVER_FUSIONSOUND
227#undef SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC
228#undef SDL_AUDIO_DRIVER_HAIKU
229#undef SDL_AUDIO_DRIVER_JACK
230#undef SDL_AUDIO_DRIVER_JACK_DYNAMIC
231#undef SDL_AUDIO_DRIVER_NACL
232#undef SDL_AUDIO_DRIVER_NAS
233#undef SDL_AUDIO_DRIVER_NAS_DYNAMIC
234#undef SDL_AUDIO_DRIVER_NETBSD
235#undef SDL_AUDIO_DRIVER_OSS
236#undef SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H
237#undef SDL_AUDIO_DRIVER_PAUDIO
238#undef SDL_AUDIO_DRIVER_PULSEAUDIO
239#undef SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC
240#undef SDL_AUDIO_DRIVER_QSA
241#undef SDL_AUDIO_DRIVER_SNDIO
242#undef SDL_AUDIO_DRIVER_SNDIO_DYNAMIC
243#undef SDL_AUDIO_DRIVER_SUNAUDIO
244#undef SDL_AUDIO_DRIVER_WASAPI
245#undef SDL_AUDIO_DRIVER_WINMM
246#undef SDL_AUDIO_DRIVER_XAUDIO2
247
248/* Enable various input drivers */
249#undef SDL_INPUT_LINUXEV
250#undef SDL_INPUT_LINUXKD
251#undef SDL_INPUT_TSLIB
252#undef SDL_JOYSTICK_HAIKU
253#undef SDL_JOYSTICK_DINPUT
254#undef SDL_JOYSTICK_XINPUT
255#undef SDL_JOYSTICK_DUMMY
256#undef SDL_JOYSTICK_IOKIT
257#undef SDL_JOYSTICK_LINUX
258#undef SDL_JOYSTICK_ANDROID
259#undef SDL_JOYSTICK_WINMM
260#undef SDL_JOYSTICK_USBHID
261#undef SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H
262#undef SDL_JOYSTICK_EMSCRIPTEN
263#undef SDL_HAPTIC_DUMMY
264#undef SDL_HAPTIC_LINUX
265#undef SDL_HAPTIC_IOKIT
266#undef SDL_HAPTIC_DINPUT
267#undef SDL_HAPTIC_XINPUT
268
269/* Enable various shared object loading systems */
270#undef SDL_LOADSO_DLOPEN
271#undef SDL_LOADSO_DUMMY
272#undef SDL_LOADSO_LDG
273#undef SDL_LOADSO_WINDOWS
274
275/* Enable various threading systems */
276#undef SDL_THREAD_PTHREAD
277#undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX
278#undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP
279#undef SDL_THREAD_WINDOWS
280
281/* Enable various timer systems */
282#undef SDL_TIMER_HAIKU
283#undef SDL_TIMER_DUMMY
284#undef SDL_TIMER_UNIX
285#undef SDL_TIMER_WINDOWS
286
287/* Enable various video drivers */
288#undef SDL_VIDEO_DRIVER_HAIKU
289#undef SDL_VIDEO_DRIVER_COCOA
290#undef SDL_VIDEO_DRIVER_DIRECTFB
291#undef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC
292#undef SDL_VIDEO_DRIVER_DUMMY
293#undef SDL_VIDEO_DRIVER_WINDOWS
294#undef SDL_VIDEO_DRIVER_WAYLAND
295#undef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
296#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC
297#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL
298#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR
299#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON
300#undef SDL_VIDEO_DRIVER_MIR
301#undef SDL_VIDEO_DRIVER_MIR_DYNAMIC
302#undef SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON
303#undef SDL_VIDEO_DRIVER_X11
304#undef SDL_VIDEO_DRIVER_RPI
305#undef SDL_VIDEO_DRIVER_KMSDRM
306#undef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC
307#undef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM
308#undef SDL_VIDEO_DRIVER_ANDROID
309#undef SDL_VIDEO_DRIVER_EMSCRIPTEN
310#undef SDL_VIDEO_DRIVER_X11_DYNAMIC
311#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT
312#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR
313#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA
314#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2
315#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR
316#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS
317#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE
318#undef SDL_VIDEO_DRIVER_X11_XCURSOR
319#undef SDL_VIDEO_DRIVER_X11_XDBE
320#undef SDL_VIDEO_DRIVER_X11_XINERAMA
321#undef SDL_VIDEO_DRIVER_X11_XINPUT2
322#undef SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH
323#undef SDL_VIDEO_DRIVER_X11_XRANDR
324#undef SDL_VIDEO_DRIVER_X11_XSCRNSAVER
325#undef SDL_VIDEO_DRIVER_X11_XSHAPE
326#undef SDL_VIDEO_DRIVER_X11_XVIDMODE
327#undef SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS
328#undef SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY
329#undef SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM
330#undef SDL_VIDEO_DRIVER_NACL
331#undef SDL_VIDEO_DRIVER_VIVANTE
332#undef SDL_VIDEO_DRIVER_VIVANTE_VDK
333#undef SDL_VIDEO_DRIVER_QNX
334
335#undef SDL_VIDEO_RENDER_D3D
336#undef SDL_VIDEO_RENDER_D3D11
337#undef SDL_VIDEO_RENDER_OGL
338#undef SDL_VIDEO_RENDER_OGL_ES
339#undef SDL_VIDEO_RENDER_OGL_ES2
340#undef SDL_VIDEO_RENDER_DIRECTFB
341
342/* Enable OpenGL support */
343#undef SDL_VIDEO_OPENGL
344#undef SDL_VIDEO_OPENGL_ES
345#undef SDL_VIDEO_OPENGL_ES2
346#undef SDL_VIDEO_OPENGL_BGL
347#undef SDL_VIDEO_OPENGL_CGL
348#undef SDL_VIDEO_OPENGL_EGL
349#undef SDL_VIDEO_OPENGL_GLX
350#undef SDL_VIDEO_OPENGL_WGL
351#undef SDL_VIDEO_OPENGL_OSMESA
352#undef SDL_VIDEO_OPENGL_OSMESA_DYNAMIC
353
354/* Enable Vulkan support */
355#undef SDL_VIDEO_VULKAN
356
357/* Enable system power support */
358#undef SDL_POWER_LINUX
359#undef SDL_POWER_WINDOWS
360#undef SDL_POWER_MACOSX
361#undef SDL_POWER_HAIKU
362#undef SDL_POWER_ANDROID
363#undef SDL_POWER_EMSCRIPTEN
364#undef SDL_POWER_HARDWIRED
365
366/* Enable system filesystem support */
367#undef SDL_FILESYSTEM_HAIKU
368#undef SDL_FILESYSTEM_COCOA
369#undef SDL_FILESYSTEM_DUMMY
370#undef SDL_FILESYSTEM_UNIX
371#undef SDL_FILESYSTEM_WINDOWS
372#undef SDL_FILESYSTEM_NACL
373#undef SDL_FILESYSTEM_ANDROID
374#undef SDL_FILESYSTEM_EMSCRIPTEN
375
376/* Enable assembly routines */
377#undef SDL_ASSEMBLY_ROUTINES
378#undef SDL_ALTIVEC_BLITTERS
379
380/* Enable ime support */
381#undef SDL_USE_IME
382
383/* Enable dynamic udev support */
384#undef SDL_UDEV_DYNAMIC
385
386/* Enable dynamic libsamplerate support */
387#undef SDL_LIBSAMPLERATE_DYNAMIC
388
389#endif /* SDL_config_h_ */
diff --git a/vendor/SDL2/include/SDL_config_android.h b/vendor/SDL2/include/SDL_config_android.h new file mode 100644 index 0000000..361bad8 --- /dev/null +++ b/vendor/SDL2/include/SDL_config_android.h
@@ -0,0 +1,157 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_config_android_h_
23#define SDL_config_android_h_
24#define SDL_config_h_
25
26#include "SDL_platform.h"
27
28/**
29 * \file SDL_config_android.h
30 *
31 * This is a configuration that can be used to build SDL for Android
32 */
33
34#include <stdarg.h>
35
36#define HAVE_GCC_ATOMICS 1
37
38#define HAVE_ALLOCA_H 1
39#define HAVE_SYS_TYPES_H 1
40#define HAVE_STDIO_H 1
41#define STDC_HEADERS 1
42#define HAVE_STRING_H 1
43#define HAVE_INTTYPES_H 1
44#define HAVE_STDINT_H 1
45#define HAVE_CTYPE_H 1
46#define HAVE_MATH_H 1
47#define HAVE_SIGNAL_H 1
48
49/* C library functions */
50#define HAVE_MALLOC 1
51#define HAVE_CALLOC 1
52#define HAVE_REALLOC 1
53#define HAVE_FREE 1
54#define HAVE_ALLOCA 1
55#define HAVE_GETENV 1
56#define HAVE_SETENV 1
57#define HAVE_PUTENV 1
58#define HAVE_SETENV 1
59#define HAVE_UNSETENV 1
60#define HAVE_QSORT 1
61#define HAVE_ABS 1
62#define HAVE_BCOPY 1
63#define HAVE_MEMSET 1
64#define HAVE_MEMCPY 1
65#define HAVE_MEMMOVE 1
66#define HAVE_MEMCMP 1
67#define HAVE_STRLEN 1
68#define HAVE_STRLCPY 1
69#define HAVE_STRLCAT 1
70#define HAVE_STRDUP 1
71#define HAVE_STRCHR 1
72#define HAVE_STRRCHR 1
73#define HAVE_STRSTR 1
74#define HAVE_STRTOL 1
75#define HAVE_STRTOUL 1
76#define HAVE_STRTOLL 1
77#define HAVE_STRTOULL 1
78#define HAVE_STRTOD 1
79#define HAVE_ATOI 1
80#define HAVE_ATOF 1
81#define HAVE_STRCMP 1
82#define HAVE_STRNCMP 1
83#define HAVE_STRCASECMP 1
84#define HAVE_STRNCASECMP 1
85#define HAVE_VSSCANF 1
86#define HAVE_VSNPRINTF 1
87#define HAVE_M_PI 1
88#define HAVE_ATAN 1
89#define HAVE_ATAN2 1
90#define HAVE_ACOS 1
91#define HAVE_ASIN 1
92#define HAVE_CEIL 1
93#define HAVE_COPYSIGN 1
94#define HAVE_COS 1
95#define HAVE_COSF 1
96#define HAVE_FABS 1
97#define HAVE_FLOOR 1
98#define HAVE_LOG 1
99#define HAVE_POW 1
100#define HAVE_SCALBN 1
101#define HAVE_SIN 1
102#define HAVE_SINF 1
103#define HAVE_SQRT 1
104#define HAVE_SQRTF 1
105#define HAVE_TAN 1
106#define HAVE_TANF 1
107#define HAVE_SIGACTION 1
108#define HAVE_SETJMP 1
109#define HAVE_NANOSLEEP 1
110#define HAVE_SYSCONF 1
111#define HAVE_CLOCK_GETTIME 1
112
113#define SIZEOF_VOIDP 4
114
115/* Enable various audio drivers */
116#define SDL_AUDIO_DRIVER_ANDROID 1
117#define SDL_AUDIO_DRIVER_DUMMY 1
118
119/* Enable various input drivers */
120#define SDL_JOYSTICK_ANDROID 1
121#define SDL_HAPTIC_ANDROID 1
122
123/* Enable various shared object loading systems */
124#define SDL_LOADSO_DLOPEN 1
125
126/* Enable various threading systems */
127#define SDL_THREAD_PTHREAD 1
128#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1
129
130/* Enable various timer systems */
131#define SDL_TIMER_UNIX 1
132
133/* Enable various video drivers */
134#define SDL_VIDEO_DRIVER_ANDROID 1
135
136/* Enable OpenGL ES */
137#define SDL_VIDEO_OPENGL_ES 1
138#define SDL_VIDEO_OPENGL_ES2 1
139#define SDL_VIDEO_OPENGL_EGL 1
140#define SDL_VIDEO_RENDER_OGL_ES 1
141#define SDL_VIDEO_RENDER_OGL_ES2 1
142
143/* Enable Vulkan support */
144/* Android does not support Vulkan in native code using the "armeabi" ABI. */
145#if defined(__ARM_ARCH) && __ARM_ARCH < 7
146#define SDL_VIDEO_VULKAN 0
147#else
148#define SDL_VIDEO_VULKAN 1
149#endif
150
151/* Enable system power support */
152#define SDL_POWER_ANDROID 1
153
154/* Enable the filesystem driver */
155#define SDL_FILESYSTEM_ANDROID 1
156
157#endif /* SDL_config_android_h_ */
diff --git a/vendor/SDL2/include/SDL_config_iphoneos.h b/vendor/SDL2/include/SDL_config_iphoneos.h new file mode 100644 index 0000000..deea030 --- /dev/null +++ b/vendor/SDL2/include/SDL_config_iphoneos.h
@@ -0,0 +1,166 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_config_iphoneos_h_
23#define SDL_config_iphoneos_h_
24#define SDL_config_h_
25
26#include "SDL_platform.h"
27
28#ifdef __LP64__
29#define SIZEOF_VOIDP 8
30#else
31#define SIZEOF_VOIDP 4
32#endif
33
34#define HAVE_GCC_ATOMICS 1
35
36#define HAVE_ALLOCA_H 1
37#define HAVE_SYS_TYPES_H 1
38#define HAVE_STDIO_H 1
39#define STDC_HEADERS 1
40#define HAVE_STRING_H 1
41#define HAVE_INTTYPES_H 1
42#define HAVE_STDINT_H 1
43#define HAVE_CTYPE_H 1
44#define HAVE_MATH_H 1
45#define HAVE_SIGNAL_H 1
46
47/* C library functions */
48#define HAVE_MALLOC 1
49#define HAVE_CALLOC 1
50#define HAVE_REALLOC 1
51#define HAVE_FREE 1
52#define HAVE_ALLOCA 1
53#define HAVE_GETENV 1
54#define HAVE_SETENV 1
55#define HAVE_PUTENV 1
56#define HAVE_SETENV 1
57#define HAVE_UNSETENV 1
58#define HAVE_QSORT 1
59#define HAVE_ABS 1
60#define HAVE_BCOPY 1
61#define HAVE_MEMSET 1
62#define HAVE_MEMCPY 1
63#define HAVE_MEMMOVE 1
64#define HAVE_MEMCMP 1
65#define HAVE_STRLEN 1
66#define HAVE_STRLCPY 1
67#define HAVE_STRLCAT 1
68#define HAVE_STRDUP 1
69#define HAVE_STRCHR 1
70#define HAVE_STRRCHR 1
71#define HAVE_STRSTR 1
72#define HAVE_STRTOL 1
73#define HAVE_STRTOUL 1
74#define HAVE_STRTOLL 1
75#define HAVE_STRTOULL 1
76#define HAVE_STRTOD 1
77#define HAVE_ATOI 1
78#define HAVE_ATOF 1
79#define HAVE_STRCMP 1
80#define HAVE_STRNCMP 1
81#define HAVE_STRCASECMP 1
82#define HAVE_STRNCASECMP 1
83#define HAVE_VSSCANF 1
84#define HAVE_VSNPRINTF 1
85#define HAVE_M_PI 1
86#define HAVE_ATAN 1
87#define HAVE_ATAN2 1
88#define HAVE_ACOS 1
89#define HAVE_ASIN 1
90#define HAVE_CEIL 1
91#define HAVE_COPYSIGN 1
92#define HAVE_COS 1
93#define HAVE_COSF 1
94#define HAVE_FABS 1
95#define HAVE_FLOOR 1
96#define HAVE_LOG 1
97#define HAVE_POW 1
98#define HAVE_SCALBN 1
99#define HAVE_SIN 1
100#define HAVE_SINF 1
101#define HAVE_SQRT 1
102#define HAVE_SQRTF 1
103#define HAVE_TAN 1
104#define HAVE_TANF 1
105#define HAVE_SIGACTION 1
106#define HAVE_SETJMP 1
107#define HAVE_NANOSLEEP 1
108#define HAVE_SYSCONF 1
109#define HAVE_SYSCTLBYNAME 1
110
111/* enable iPhone version of Core Audio driver */
112#define SDL_AUDIO_DRIVER_COREAUDIO 1
113/* Enable the dummy audio driver (src/audio/dummy/\*.c) */
114#define SDL_AUDIO_DRIVER_DUMMY 1
115
116/* Enable the stub haptic driver (src/haptic/dummy/\*.c) */
117#define SDL_HAPTIC_DUMMY 1
118
119/* Enable MFi joystick support */
120#define SDL_JOYSTICK_MFI 1
121
122/* Enable Unix style SO loading */
123#define SDL_LOADSO_DLOPEN 1
124
125/* Enable various threading systems */
126#define SDL_THREAD_PTHREAD 1
127#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1
128
129/* Enable various timer systems */
130#define SDL_TIMER_UNIX 1
131
132/* Supported video drivers */
133#define SDL_VIDEO_DRIVER_UIKIT 1
134#define SDL_VIDEO_DRIVER_DUMMY 1
135
136/* enable OpenGL ES */
137#define SDL_VIDEO_OPENGL_ES2 1
138#define SDL_VIDEO_OPENGL_ES 1
139#define SDL_VIDEO_RENDER_OGL_ES 1
140#define SDL_VIDEO_RENDER_OGL_ES2 1
141
142/* Enable Vulkan support */
143#if !TARGET_OS_SIMULATOR && !TARGET_CPU_ARM // Only 64-bit devices have Metal
144#define SDL_VIDEO_VULKAN 1
145#else
146#define SDL_VIDEO_VULKAN 0
147#endif
148
149/* Enable system power support */
150#define SDL_POWER_UIKIT 1
151
152/* enable iPhone keyboard support */
153#define SDL_IPHONE_KEYBOARD 1
154
155/* enable iOS extended launch screen */
156#define SDL_IPHONE_LAUNCHSCREEN 1
157
158/* Set max recognized G-force from accelerometer
159 See src/joystick/uikit/SDL_sysjoystick.m for notes on why this is needed
160 */
161#define SDL_IPHONE_MAX_GFORCE 5.0
162
163/* enable filesystem support */
164#define SDL_FILESYSTEM_COCOA 1
165
166#endif /* SDL_config_iphoneos_h_ */
diff --git a/vendor/SDL2/include/SDL_config_macosx.h b/vendor/SDL2/include/SDL_config_macosx.h new file mode 100644 index 0000000..9b09899 --- /dev/null +++ b/vendor/SDL2/include/SDL_config_macosx.h
@@ -0,0 +1,197 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_config_macosx_h_
23#define SDL_config_macosx_h_
24#define SDL_config_h_
25
26#include "SDL_platform.h"
27
28/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */
29#include <AvailabilityMacros.h>
30
31/* This is a set of defines to configure the SDL features */
32
33#ifdef __LP64__
34 #define SIZEOF_VOIDP 8
35#else
36 #define SIZEOF_VOIDP 4
37#endif
38
39/* Useful headers */
40#define HAVE_ALLOCA_H 1
41#define HAVE_SYS_TYPES_H 1
42#define HAVE_STDIO_H 1
43#define STDC_HEADERS 1
44#define HAVE_STRING_H 1
45#define HAVE_INTTYPES_H 1
46#define HAVE_STDINT_H 1
47#define HAVE_CTYPE_H 1
48#define HAVE_MATH_H 1
49#define HAVE_SIGNAL_H 1
50
51/* C library functions */
52#define HAVE_MALLOC 1
53#define HAVE_CALLOC 1
54#define HAVE_REALLOC 1
55#define HAVE_FREE 1
56#define HAVE_ALLOCA 1
57#define HAVE_GETENV 1
58#define HAVE_SETENV 1
59#define HAVE_PUTENV 1
60#define HAVE_UNSETENV 1
61#define HAVE_QSORT 1
62#define HAVE_ABS 1
63#define HAVE_BCOPY 1
64#define HAVE_MEMSET 1
65#define HAVE_MEMCPY 1
66#define HAVE_MEMMOVE 1
67#define HAVE_MEMCMP 1
68#define HAVE_STRLEN 1
69#define HAVE_STRLCPY 1
70#define HAVE_STRLCAT 1
71#define HAVE_STRDUP 1
72#define HAVE_STRCHR 1
73#define HAVE_STRRCHR 1
74#define HAVE_STRSTR 1
75#define HAVE_STRTOL 1
76#define HAVE_STRTOUL 1
77#define HAVE_STRTOLL 1
78#define HAVE_STRTOULL 1
79#define HAVE_STRTOD 1
80#define HAVE_ATOI 1
81#define HAVE_ATOF 1
82#define HAVE_STRCMP 1
83#define HAVE_STRNCMP 1
84#define HAVE_STRCASECMP 1
85#define HAVE_STRNCASECMP 1
86#define HAVE_VSSCANF 1
87#define HAVE_VSNPRINTF 1
88#define HAVE_CEIL 1
89#define HAVE_COPYSIGN 1
90#define HAVE_COS 1
91#define HAVE_COSF 1
92#define HAVE_FABS 1
93#define HAVE_FLOOR 1
94#define HAVE_LOG 1
95#define HAVE_POW 1
96#define HAVE_SCALBN 1
97#define HAVE_SIN 1
98#define HAVE_SINF 1
99#define HAVE_SQRT 1
100#define HAVE_SQRTF 1
101#define HAVE_TAN 1
102#define HAVE_TANF 1
103#define HAVE_SIGACTION 1
104#define HAVE_SETJMP 1
105#define HAVE_NANOSLEEP 1
106#define HAVE_SYSCONF 1
107#define HAVE_SYSCTLBYNAME 1
108#define HAVE_ATAN 1
109#define HAVE_ATAN2 1
110#define HAVE_ACOS 1
111#define HAVE_ASIN 1
112
113/* Enable various audio drivers */
114#define SDL_AUDIO_DRIVER_COREAUDIO 1
115#define SDL_AUDIO_DRIVER_DISK 1
116#define SDL_AUDIO_DRIVER_DUMMY 1
117
118/* Enable various input drivers */
119#define SDL_JOYSTICK_IOKIT 1
120#define SDL_HAPTIC_IOKIT 1
121
122/* Enable various shared object loading systems */
123#define SDL_LOADSO_DLOPEN 1
124
125/* Enable various threading systems */
126#define SDL_THREAD_PTHREAD 1
127#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1
128
129/* Enable various timer systems */
130#define SDL_TIMER_UNIX 1
131
132/* Enable various video drivers */
133#define SDL_VIDEO_DRIVER_COCOA 1
134#define SDL_VIDEO_DRIVER_DUMMY 1
135#undef SDL_VIDEO_DRIVER_X11
136#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/usr/X11R6/lib/libX11.6.dylib"
137#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/usr/X11R6/lib/libXext.6.dylib"
138#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "/usr/X11R6/lib/libXinerama.1.dylib"
139#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/usr/X11R6/lib/libXi.6.dylib"
140#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/usr/X11R6/lib/libXrandr.2.dylib"
141#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/usr/X11R6/lib/libXss.1.dylib"
142#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "/usr/X11R6/lib/libXxf86vm.1.dylib"
143#define SDL_VIDEO_DRIVER_X11_XDBE 1
144#define SDL_VIDEO_DRIVER_X11_XINERAMA 1
145#define SDL_VIDEO_DRIVER_X11_XRANDR 1
146#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1
147#define SDL_VIDEO_DRIVER_X11_XSHAPE 1
148#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1
149#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1
150
151#ifdef MAC_OS_X_VERSION_10_8
152/*
153 * No matter the versions targeted, this is the 10.8 or later SDK, so you have
154 * to use the external Xquartz, which is a more modern Xlib. Previous SDKs
155 * used an older Xlib.
156 */
157#define SDL_VIDEO_DRIVER_X11_XINPUT2 1
158#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1
159#define SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY 1
160#endif
161
162#ifndef SDL_VIDEO_RENDER_OGL
163#define SDL_VIDEO_RENDER_OGL 1
164#endif
165
166/* Enable OpenGL support */
167#ifndef SDL_VIDEO_OPENGL
168#define SDL_VIDEO_OPENGL 1
169#endif
170#ifndef SDL_VIDEO_OPENGL_CGL
171#define SDL_VIDEO_OPENGL_CGL 1
172#endif
173#ifndef SDL_VIDEO_OPENGL_GLX
174#define SDL_VIDEO_OPENGL_GLX 1
175#endif
176
177/* Enable Vulkan support */
178/* Metal/MoltenVK/Vulkan only supported on 64-bit architectures with 10.11+ */
179#if TARGET_CPU_X86_64 && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100)
180#define SDL_VIDEO_VULKAN 1
181#else
182#define SDL_VIDEO_VULKAN 0
183#endif
184
185/* Enable system power support */
186#define SDL_POWER_MACOSX 1
187
188/* enable filesystem support */
189#define SDL_FILESYSTEM_COCOA 1
190
191/* Enable assembly routines */
192#define SDL_ASSEMBLY_ROUTINES 1
193#ifdef __ppc__
194#define SDL_ALTIVEC_BLITTERS 1
195#endif
196
197#endif /* SDL_config_macosx_h_ */
diff --git a/vendor/SDL2/include/SDL_config_macosx.h.orig b/vendor/SDL2/include/SDL_config_macosx.h.orig new file mode 100644 index 0000000..f03f1ae --- /dev/null +++ b/vendor/SDL2/include/SDL_config_macosx.h.orig
@@ -0,0 +1,197 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_config_macosx_h_
23#define SDL_config_macosx_h_
24#define SDL_config_h_
25
26#include "SDL_platform.h"
27
28/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */
29#include <AvailabilityMacros.h>
30
31/* This is a set of defines to configure the SDL features */
32
33#ifdef __LP64__
34 #define SIZEOF_VOIDP 8
35#else
36 #define SIZEOF_VOIDP 4
37#endif
38
39/* Useful headers */
40#define HAVE_ALLOCA_H 1
41#define HAVE_SYS_TYPES_H 1
42#define HAVE_STDIO_H 1
43#define STDC_HEADERS 1
44#define HAVE_STRING_H 1
45#define HAVE_INTTYPES_H 1
46#define HAVE_STDINT_H 1
47#define HAVE_CTYPE_H 1
48#define HAVE_MATH_H 1
49#define HAVE_SIGNAL_H 1
50
51/* C library functions */
52#define HAVE_MALLOC 1
53#define HAVE_CALLOC 1
54#define HAVE_REALLOC 1
55#define HAVE_FREE 1
56#define HAVE_ALLOCA 1
57#define HAVE_GETENV 1
58#define HAVE_SETENV 1
59#define HAVE_PUTENV 1
60#define HAVE_UNSETENV 1
61#define HAVE_QSORT 1
62#define HAVE_ABS 1
63#define HAVE_BCOPY 1
64#define HAVE_MEMSET 1
65#define HAVE_MEMCPY 1
66#define HAVE_MEMMOVE 1
67#define HAVE_MEMCMP 1
68#define HAVE_STRLEN 1
69#define HAVE_STRLCPY 1
70#define HAVE_STRLCAT 1
71#define HAVE_STRDUP 1
72#define HAVE_STRCHR 1
73#define HAVE_STRRCHR 1
74#define HAVE_STRSTR 1
75#define HAVE_STRTOL 1
76#define HAVE_STRTOUL 1
77#define HAVE_STRTOLL 1
78#define HAVE_STRTOULL 1
79#define HAVE_STRTOD 1
80#define HAVE_ATOI 1
81#define HAVE_ATOF 1
82#define HAVE_STRCMP 1
83#define HAVE_STRNCMP 1
84#define HAVE_STRCASECMP 1
85#define HAVE_STRNCASECMP 1
86#define HAVE_VSSCANF 1
87#define HAVE_VSNPRINTF 1
88#define HAVE_CEIL 1
89#define HAVE_COPYSIGN 1
90#define HAVE_COS 1
91#define HAVE_COSF 1
92#define HAVE_FABS 1
93#define HAVE_FLOOR 1
94#define HAVE_LOG 1
95#define HAVE_POW 1
96#define HAVE_SCALBN 1
97#define HAVE_SIN 1
98#define HAVE_SINF 1
99#define HAVE_SQRT 1
100#define HAVE_SQRTF 1
101#define HAVE_TAN 1
102#define HAVE_TANF 1
103#define HAVE_SIGACTION 1
104#define HAVE_SETJMP 1
105#define HAVE_NANOSLEEP 1
106#define HAVE_SYSCONF 1
107#define HAVE_SYSCTLBYNAME 1
108#define HAVE_ATAN 1
109#define HAVE_ATAN2 1
110#define HAVE_ACOS 1
111#define HAVE_ASIN 1
112
113/* Enable various audio drivers */
114#define SDL_AUDIO_DRIVER_COREAUDIO 1
115#define SDL_AUDIO_DRIVER_DISK 1
116#define SDL_AUDIO_DRIVER_DUMMY 1
117
118/* Enable various input drivers */
119#define SDL_JOYSTICK_IOKIT 1
120#define SDL_HAPTIC_IOKIT 1
121
122/* Enable various shared object loading systems */
123#define SDL_LOADSO_DLOPEN 1
124
125/* Enable various threading systems */
126#define SDL_THREAD_PTHREAD 1
127#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1
128
129/* Enable various timer systems */
130#define SDL_TIMER_UNIX 1
131
132/* Enable various video drivers */
133#define SDL_VIDEO_DRIVER_COCOA 1
134#define SDL_VIDEO_DRIVER_DUMMY 1
135#undef SDL_VIDEO_DRIVER_X11
136#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/usr/X11R6/lib/libX11.6.dylib"
137#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/usr/X11R6/lib/libXext.6.dylib"
138#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "/usr/X11R6/lib/libXinerama.1.dylib"
139#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/usr/X11R6/lib/libXi.6.dylib"
140#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/usr/X11R6/lib/libXrandr.2.dylib"
141#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/usr/X11R6/lib/libXss.1.dylib"
142#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "/usr/X11R6/lib/libXxf86vm.1.dylib"
143#define SDL_VIDEO_DRIVER_X11_XDBE 1
144#define SDL_VIDEO_DRIVER_X11_XINERAMA 1
145#define SDL_VIDEO_DRIVER_X11_XRANDR 1
146#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1
147#define SDL_VIDEO_DRIVER_X11_XSHAPE 1
148#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1
149#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1
150
151#ifdef MAC_OS_X_VERSION_10_8
152/*
153 * No matter the versions targeted, this is the 10.8 or later SDK, so you have
154 * to use the external Xquartz, which is a more modern Xlib. Previous SDKs
155 * used an older Xlib.
156 */
157#define SDL_VIDEO_DRIVER_X11_XINPUT2 1
158#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1
159#define SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY 1
160#endif
161
162#ifndef SDL_VIDEO_RENDER_OGL
163#define SDL_VIDEO_RENDER_OGL 1
164#endif
165
166/* Enable OpenGL support */
167#ifndef SDL_VIDEO_OPENGL
168#define SDL_VIDEO_OPENGL 1
169#endif
170#ifndef SDL_VIDEO_OPENGL_CGL
171#define SDL_VIDEO_OPENGL_CGL 1
172#endif
173#ifndef SDL_VIDEO_OPENGL_GLX
174#define SDL_VIDEO_OPENGL_GLX 1
175#endif
176
177/* Enable Vulkan support */
178/* Metal/MoltenVK/Vulkan only supported on 64-bit architectures and 10.11+ */
179#if TARGET_CPU_X86_64
180#define SDL_VIDEO_VULKAN 1
181#else
182#define SDL_VIDEO_VULKAN 0
183#endif
184
185/* Enable system power support */
186#define SDL_POWER_MACOSX 1
187
188/* enable filesystem support */
189#define SDL_FILESYSTEM_COCOA 1
190
191/* Enable assembly routines */
192#define SDL_ASSEMBLY_ROUTINES 1
193#ifdef __ppc__
194#define SDL_ALTIVEC_BLITTERS 1
195#endif
196
197#endif /* SDL_config_macosx_h_ */
diff --git a/vendor/SDL2/include/SDL_config_minimal.h b/vendor/SDL2/include/SDL_config_minimal.h new file mode 100644 index 0000000..3112700 --- /dev/null +++ b/vendor/SDL2/include/SDL_config_minimal.h
@@ -0,0 +1,82 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_config_minimal_h_
23#define SDL_config_minimal_h_
24#define SDL_config_h_
25
26#include "SDL_platform.h"
27
28/**
29 * \file SDL_config_minimal.h
30 *
31 * This is the minimal configuration that can be used to build SDL.
32 */
33
34#define HAVE_STDARG_H 1
35#define HAVE_STDDEF_H 1
36
37/* Most everything except Visual Studio 2008 and earlier has stdint.h now */
38#if defined(_MSC_VER) && (_MSC_VER < 1600)
39/* Here are some reasonable defaults */
40typedef unsigned int size_t;
41typedef signed char int8_t;
42typedef unsigned char uint8_t;
43typedef signed short int16_t;
44typedef unsigned short uint16_t;
45typedef signed int int32_t;
46typedef unsigned int uint32_t;
47typedef signed long long int64_t;
48typedef unsigned long long uint64_t;
49typedef unsigned long uintptr_t;
50#else
51#define HAVE_STDINT_H 1
52#endif /* Visual Studio 2008 */
53
54#ifdef __GNUC__
55#define HAVE_GCC_SYNC_LOCK_TEST_AND_SET 1
56#endif
57
58/* Enable the dummy audio driver (src/audio/dummy/\*.c) */
59#define SDL_AUDIO_DRIVER_DUMMY 1
60
61/* Enable the stub joystick driver (src/joystick/dummy/\*.c) */
62#define SDL_JOYSTICK_DISABLED 1
63
64/* Enable the stub haptic driver (src/haptic/dummy/\*.c) */
65#define SDL_HAPTIC_DISABLED 1
66
67/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */
68#define SDL_LOADSO_DISABLED 1
69
70/* Enable the stub thread support (src/thread/generic/\*.c) */
71#define SDL_THREADS_DISABLED 1
72
73/* Enable the stub timer support (src/timer/dummy/\*.c) */
74#define SDL_TIMERS_DISABLED 1
75
76/* Enable the dummy video driver (src/video/dummy/\*.c) */
77#define SDL_VIDEO_DRIVER_DUMMY 1
78
79/* Enable the dummy filesystem driver (src/filesystem/dummy/\*.c) */
80#define SDL_FILESYSTEM_DUMMY 1
81
82#endif /* SDL_config_minimal_h_ */
diff --git a/vendor/SDL2/include/SDL_config_pandora.h b/vendor/SDL2/include/SDL_config_pandora.h new file mode 100644 index 0000000..ea62fe5 --- /dev/null +++ b/vendor/SDL2/include/SDL_config_pandora.h
@@ -0,0 +1,128 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_config_pandora_h_
23#define SDL_config_pandora_h_
24#define SDL_config_h_
25
26/* This is a set of defines to configure the SDL features */
27
28/* General platform specific identifiers */
29#include "SDL_platform.h"
30
31#ifdef __LP64__
32#define SIZEOF_VOIDP 8
33#else
34#define SIZEOF_VOIDP 4
35#endif
36
37#define SDL_BYTEORDER 1234
38
39#define HAVE_ALLOCA_H 1
40#define HAVE_SYS_TYPES_H 1
41#define HAVE_STDIO_H 1
42#define STDC_HEADERS 1
43#define HAVE_STDLIB_H 1
44#define HAVE_STDARG_H 1
45#define HAVE_MALLOC_H 1
46#define HAVE_MEMORY_H 1
47#define HAVE_STRING_H 1
48#define HAVE_STRINGS_H 1
49#define HAVE_INTTYPES_H 1
50#define HAVE_STDINT_H 1
51#define HAVE_CTYPE_H 1
52#define HAVE_MATH_H 1
53#define HAVE_ICONV_H 1
54#define HAVE_SIGNAL_H 1
55#define HAVE_MALLOC 1
56#define HAVE_CALLOC 1
57#define HAVE_REALLOC 1
58#define HAVE_FREE 1
59#define HAVE_ALLOCA 1
60#define HAVE_GETENV 1
61#define HAVE_SETENV 1
62#define HAVE_PUTENV 1
63#define HAVE_UNSETENV 1
64#define HAVE_QSORT 1
65#define HAVE_ABS 1
66#define HAVE_BCOPY 1
67#define HAVE_MEMSET 1
68#define HAVE_MEMCPY 1
69#define HAVE_MEMMOVE 1
70#define HAVE_STRLEN 1
71#define HAVE_STRDUP 1
72#define HAVE_STRCHR 1
73#define HAVE_STRRCHR 1
74#define HAVE_STRSTR 1
75#define HAVE_STRTOL 1
76#define HAVE_STRTOUL 1
77#define HAVE_STRTOLL 1
78#define HAVE_STRTOULL 1
79#define HAVE_ATOI 1
80#define HAVE_ATOF 1
81#define HAVE_STRCMP 1
82#define HAVE_STRNCMP 1
83#define HAVE_STRCASECMP 1
84#define HAVE_STRNCASECMP 1
85#define HAVE_VSSCANF 1
86#define HAVE_VSNPRINTF 1
87#define HAVE_M_PI 1
88#define HAVE_CEIL 1
89#define HAVE_COPYSIGN 1
90#define HAVE_COS 1
91#define HAVE_COSF 1
92#define HAVE_FABS 1
93#define HAVE_FLOOR 1
94#define HAVE_LOG 1
95#define HAVE_SCALBN 1
96#define HAVE_SIN 1
97#define HAVE_SINF 1
98#define HAVE_SQRT 1
99#define HAVE_SQRTF 1
100#define HAVE_TAN 1
101#define HAVE_TANF 1
102#define HAVE_SIGACTION 1
103#define HAVE_SETJMP 1
104#define HAVE_NANOSLEEP 1
105
106#define SDL_AUDIO_DRIVER_DUMMY 1
107#define SDL_AUDIO_DRIVER_OSS 1
108
109#define SDL_INPUT_LINUXEV 1
110#define SDL_INPUT_TSLIB 1
111#define SDL_JOYSTICK_LINUX 1
112#define SDL_HAPTIC_LINUX 1
113
114#define SDL_LOADSO_DLOPEN 1
115
116#define SDL_THREAD_PTHREAD 1
117#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP 1
118
119#define SDL_TIMER_UNIX 1
120#define SDL_FILESYSTEM_UNIX 1
121
122#define SDL_VIDEO_DRIVER_DUMMY 1
123#define SDL_VIDEO_DRIVER_X11 1
124#define SDL_VIDEO_DRIVER_PANDORA 1
125#define SDL_VIDEO_RENDER_OGL_ES 1
126#define SDL_VIDEO_OPENGL_ES 1
127
128#endif /* SDL_config_pandora_h_ */
diff --git a/vendor/SDL2/include/SDL_config_psp.h b/vendor/SDL2/include/SDL_config_psp.h new file mode 100644 index 0000000..28efb4c --- /dev/null +++ b/vendor/SDL2/include/SDL_config_psp.h
@@ -0,0 +1,144 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_config_psp_h_
23#define SDL_config_psp_h_
24#define SDL_config_h_
25
26#include "SDL_platform.h"
27
28
29
30#ifdef __GNUC__
31#define HAVE_GCC_SYNC_LOCK_TEST_AND_SET 1
32#endif
33
34#define HAVE_GCC_ATOMICS 1
35
36#define HAVE_ALLOCA_H 1
37#define HAVE_SYS_TYPES_H 1
38#define HAVE_STDIO_H 1
39#define STDC_HEADERS 1
40#define HAVE_STRING_H 1
41#define HAVE_INTTYPES_H 1
42#define HAVE_STDINT_H 1
43#define HAVE_CTYPE_H 1
44#define HAVE_MATH_H 1
45#define HAVE_SIGNAL_H 1
46
47/* C library functions */
48#define HAVE_MALLOC 1
49#define HAVE_CALLOC 1
50#define HAVE_REALLOC 1
51#define HAVE_FREE 1
52#define HAVE_ALLOCA 1
53#define HAVE_GETENV 1
54#define HAVE_SETENV 1
55#define HAVE_PUTENV 1
56#define HAVE_SETENV 1
57#define HAVE_UNSETENV 1
58#define HAVE_QSORT 1
59#define HAVE_ABS 1
60#define HAVE_BCOPY 1
61#define HAVE_MEMSET 1
62#define HAVE_MEMCPY 1
63#define HAVE_MEMMOVE 1
64#define HAVE_MEMCMP 1
65#define HAVE_STRLEN 1
66#define HAVE_STRLCPY 1
67#define HAVE_STRLCAT 1
68#define HAVE_STRDUP 1
69#define HAVE_STRCHR 1
70#define HAVE_STRRCHR 1
71#define HAVE_STRSTR 1
72#define HAVE_STRTOL 1
73#define HAVE_STRTOUL 1
74#define HAVE_STRTOLL 1
75#define HAVE_STRTOULL 1
76#define HAVE_STRTOD 1
77#define HAVE_ATOI 1
78#define HAVE_ATOF 1
79#define HAVE_STRCMP 1
80#define HAVE_STRNCMP 1
81#define HAVE_STRCASECMP 1
82#define HAVE_STRNCASECMP 1
83#define HAVE_VSSCANF 1
84#define HAVE_VSNPRINTF 1
85#define HAVE_M_PI 1
86#define HAVE_ATAN 1
87#define HAVE_ATAN2 1
88#define HAVE_ACOS 1
89#define HAVE_ASIN 1
90#define HAVE_CEIL 1
91#define HAVE_COPYSIGN 1
92#define HAVE_COS 1
93#define HAVE_COSF 1
94#define HAVE_FABS 1
95#define HAVE_FLOOR 1
96#define HAVE_LOG 1
97#define HAVE_POW 1
98#define HAVE_SCALBN 1
99#define HAVE_SIN 1
100#define HAVE_SINF 1
101#define HAVE_SQRT 1
102#define HAVE_SQRTF 1
103#define HAVE_TAN 1
104#define HAVE_TANF 1
105#define HAVE_SETJMP 1
106#define HAVE_NANOSLEEP 1
107/* #define HAVE_SYSCONF 1 */
108/* #define HAVE_SIGACTION 1 */
109
110
111/* PSP isn't that sophisticated */
112#define LACKS_SYS_MMAN_H 1
113
114/* Enable the stub thread support (src/thread/psp/\*.c) */
115#define SDL_THREAD_PSP 1
116
117/* Enable the stub timer support (src/timer/psp/\*.c) */
118#define SDL_TIMERS_PSP 1
119
120/* Enable the stub joystick driver (src/joystick/psp/\*.c) */
121#define SDL_JOYSTICK_PSP 1
122
123/* Enable the stub audio driver (src/audio/psp/\*.c) */
124#define SDL_AUDIO_DRIVER_PSP 1
125
126/* PSP video dirver */
127#define SDL_VIDEO_DRIVER_PSP 1
128
129/* PSP render dirver */
130#define SDL_VIDEO_RENDER_PSP 1
131
132#define SDL_POWER_PSP 1
133
134/* !!! FIXME: what does PSP do for filesystem stuff? */
135#define SDL_FILESYSTEM_DUMMY 1
136
137/* PSP doesn't have haptic device (src/haptic/dummy/\*.c) */
138#define SDL_HAPTIC_DISABLED 1
139
140/* PSP can't load shared object (src/loadso/dummy/\*.c) */
141#define SDL_LOADSO_DISABLED 1
142
143
144#endif /* SDL_config_psp_h_ */
diff --git a/vendor/SDL2/include/SDL_config_windows.h b/vendor/SDL2/include/SDL_config_windows.h new file mode 100644 index 0000000..2456c84 --- /dev/null +++ b/vendor/SDL2/include/SDL_config_windows.h
@@ -0,0 +1,225 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_config_windows_h_
23#define SDL_config_windows_h_
24#define SDL_config_h_
25
26#include "SDL_platform.h"
27
28/* This is a set of defines to configure the SDL features */
29
30#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H)
31#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__)
32#define HAVE_STDINT_H 1
33#elif defined(_MSC_VER)
34typedef signed __int8 int8_t;
35typedef unsigned __int8 uint8_t;
36typedef signed __int16 int16_t;
37typedef unsigned __int16 uint16_t;
38typedef signed __int32 int32_t;
39typedef unsigned __int32 uint32_t;
40typedef signed __int64 int64_t;
41typedef unsigned __int64 uint64_t;
42#ifndef _UINTPTR_T_DEFINED
43#ifdef _WIN64
44typedef unsigned __int64 uintptr_t;
45#else
46typedef unsigned int uintptr_t;
47#endif
48#define _UINTPTR_T_DEFINED
49#endif
50/* Older Visual C++ headers don't have the Win64-compatible typedefs... */
51#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR)))
52#define DWORD_PTR DWORD
53#endif
54#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR)))
55#define LONG_PTR LONG
56#endif
57#else /* !__GNUC__ && !_MSC_VER */
58typedef signed char int8_t;
59typedef unsigned char uint8_t;
60typedef signed short int16_t;
61typedef unsigned short uint16_t;
62typedef signed int int32_t;
63typedef unsigned int uint32_t;
64typedef signed long long int64_t;
65typedef unsigned long long uint64_t;
66#ifndef _SIZE_T_DEFINED_
67#define _SIZE_T_DEFINED_
68typedef unsigned int size_t;
69#endif
70typedef unsigned int uintptr_t;
71#endif /* __GNUC__ || _MSC_VER */
72#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
73
74#ifdef _WIN64
75# define SIZEOF_VOIDP 8
76#else
77# define SIZEOF_VOIDP 4
78#endif
79
80#define HAVE_DDRAW_H 1
81#define HAVE_DINPUT_H 1
82#define HAVE_DSOUND_H 1
83#define HAVE_DXGI_H 1
84#define HAVE_XINPUT_H 1
85
86/* This is disabled by default to avoid C runtime dependencies and manifest requirements */
87#ifdef HAVE_LIBC
88/* Useful headers */
89#define HAVE_STDIO_H 1
90#define STDC_HEADERS 1
91#define HAVE_STRING_H 1
92#define HAVE_CTYPE_H 1
93#define HAVE_MATH_H 1
94#define HAVE_SIGNAL_H 1
95
96/* C library functions */
97#define HAVE_MALLOC 1
98#define HAVE_CALLOC 1
99#define HAVE_REALLOC 1
100#define HAVE_FREE 1
101#define HAVE_ALLOCA 1
102#define HAVE_QSORT 1
103#define HAVE_ABS 1
104#define HAVE_MEMSET 1
105#define HAVE_MEMCPY 1
106#define HAVE_MEMMOVE 1
107#define HAVE_MEMCMP 1
108#define HAVE_STRLEN 1
109#define HAVE__STRREV 1
110#define HAVE__STRUPR 1
111#define HAVE__STRLWR 1
112#define HAVE_STRCHR 1
113#define HAVE_STRRCHR 1
114#define HAVE_STRSTR 1
115#define HAVE__LTOA 1
116#define HAVE__ULTOA 1
117#define HAVE_STRTOL 1
118#define HAVE_STRTOUL 1
119#define HAVE_STRTOD 1
120#define HAVE_ATOI 1
121#define HAVE_ATOF 1
122#define HAVE_STRCMP 1
123#define HAVE_STRNCMP 1
124#define HAVE__STRICMP 1
125#define HAVE__STRNICMP 1
126#define HAVE_ATAN 1
127#define HAVE_ATAN2 1
128#define HAVE_ACOS 1
129#define HAVE_ASIN 1
130#define HAVE_CEIL 1
131#define HAVE_COS 1
132#define HAVE_COSF 1
133#define HAVE_FABS 1
134#define HAVE_FLOOR 1
135#define HAVE_LOG 1
136#define HAVE_POW 1
137#define HAVE_SIN 1
138#define HAVE_SINF 1
139#define HAVE_SQRT 1
140#define HAVE_SQRTF 1
141#define HAVE_TAN 1
142#define HAVE_TANF 1
143#if _MSC_VER >= 1800
144#define HAVE_STRTOLL 1
145#define HAVE_VSSCANF 1
146#define HAVE_COPYSIGN 1
147#define HAVE_SCALBN 1
148#endif
149#if !defined(_MSC_VER) || defined(_USE_MATH_DEFINES)
150#define HAVE_M_PI 1
151#endif
152#else
153#define HAVE_STDARG_H 1
154#define HAVE_STDDEF_H 1
155#endif
156
157/* Enable various audio drivers */
158#define SDL_AUDIO_DRIVER_WASAPI 1
159#define SDL_AUDIO_DRIVER_DSOUND 1
160#define SDL_AUDIO_DRIVER_XAUDIO2 0
161#define SDL_AUDIO_DRIVER_WINMM 1
162#define SDL_AUDIO_DRIVER_DISK 1
163#define SDL_AUDIO_DRIVER_DUMMY 1
164
165/* Enable various input drivers */
166#define SDL_JOYSTICK_DINPUT 1
167#define SDL_JOYSTICK_XINPUT 1
168#define SDL_HAPTIC_DINPUT 1
169#define SDL_HAPTIC_XINPUT 1
170
171/* Enable various shared object loading systems */
172#define SDL_LOADSO_WINDOWS 1
173
174/* Enable various threading systems */
175#define SDL_THREAD_WINDOWS 1
176
177/* Enable various timer systems */
178#define SDL_TIMER_WINDOWS 1
179
180/* Enable various video drivers */
181#define SDL_VIDEO_DRIVER_DUMMY 1
182#define SDL_VIDEO_DRIVER_WINDOWS 1
183
184#ifndef SDL_VIDEO_RENDER_D3D
185#define SDL_VIDEO_RENDER_D3D 1
186#endif
187#ifndef SDL_VIDEO_RENDER_D3D11
188#define SDL_VIDEO_RENDER_D3D11 0
189#endif
190
191/* Enable OpenGL support */
192#ifndef SDL_VIDEO_OPENGL
193#define SDL_VIDEO_OPENGL 1
194#endif
195#ifndef SDL_VIDEO_OPENGL_WGL
196#define SDL_VIDEO_OPENGL_WGL 1
197#endif
198#ifndef SDL_VIDEO_RENDER_OGL
199#define SDL_VIDEO_RENDER_OGL 1
200#endif
201#ifndef SDL_VIDEO_RENDER_OGL_ES2
202#define SDL_VIDEO_RENDER_OGL_ES2 1
203#endif
204#ifndef SDL_VIDEO_OPENGL_ES2
205#define SDL_VIDEO_OPENGL_ES2 1
206#endif
207#ifndef SDL_VIDEO_OPENGL_EGL
208#define SDL_VIDEO_OPENGL_EGL 1
209#endif
210
211/* Enable Vulkan support */
212#define SDL_VIDEO_VULKAN 1
213
214/* Enable system power support */
215#define SDL_POWER_WINDOWS 1
216
217/* Enable filesystem support */
218#define SDL_FILESYSTEM_WINDOWS 1
219
220/* Enable assembly routines (Win64 doesn't have inline asm) */
221#ifndef _WIN64
222#define SDL_ASSEMBLY_ROUTINES 1
223#endif
224
225#endif /* SDL_config_windows_h_ */
diff --git a/vendor/SDL2/include/SDL_config_winrt.h b/vendor/SDL2/include/SDL_config_winrt.h new file mode 100644 index 0000000..24f9e17 --- /dev/null +++ b/vendor/SDL2/include/SDL_config_winrt.h
@@ -0,0 +1,215 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_config_winrt_h_
23#define SDL_config_winrt_h_
24#define SDL_config_h_
25
26#include "SDL_platform.h"
27
28/* Make sure the Windows SDK's NTDDI_VERSION macro gets defined. This is used
29 by SDL to determine which version of the Windows SDK is being used.
30*/
31#include <sdkddkver.h>
32
33/* Define possibly-undefined NTDDI values (used when compiling SDL against
34 older versions of the Windows SDK.
35*/
36#ifndef NTDDI_WINBLUE
37#define NTDDI_WINBLUE 0x06030000
38#endif
39#ifndef NTDDI_WIN10
40#define NTDDI_WIN10 0x0A000000
41#endif
42
43/* This is a set of defines to configure the SDL features */
44
45#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H)
46#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__)
47#define HAVE_STDINT_H 1
48#elif defined(_MSC_VER)
49typedef signed __int8 int8_t;
50typedef unsigned __int8 uint8_t;
51typedef signed __int16 int16_t;
52typedef unsigned __int16 uint16_t;
53typedef signed __int32 int32_t;
54typedef unsigned __int32 uint32_t;
55typedef signed __int64 int64_t;
56typedef unsigned __int64 uint64_t;
57#ifndef _UINTPTR_T_DEFINED
58#ifdef _WIN64
59typedef unsigned __int64 uintptr_t;
60#else
61typedef unsigned int uintptr_t;
62#endif
63#define _UINTPTR_T_DEFINED
64#endif
65/* Older Visual C++ headers don't have the Win64-compatible typedefs... */
66#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR)))
67#define DWORD_PTR DWORD
68#endif
69#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR)))
70#define LONG_PTR LONG
71#endif
72#else /* !__GNUC__ && !_MSC_VER */
73typedef signed char int8_t;
74typedef unsigned char uint8_t;
75typedef signed short int16_t;
76typedef unsigned short uint16_t;
77typedef signed int int32_t;
78typedef unsigned int uint32_t;
79typedef signed long long int64_t;
80typedef unsigned long long uint64_t;
81#ifndef _SIZE_T_DEFINED_
82#define _SIZE_T_DEFINED_
83typedef unsigned int size_t;
84#endif
85typedef unsigned int uintptr_t;
86#endif /* __GNUC__ || _MSC_VER */
87#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
88
89#ifdef _WIN64
90# define SIZEOF_VOIDP 8
91#else
92# define SIZEOF_VOIDP 4
93#endif
94
95/* Useful headers */
96#define HAVE_DXGI_H 1
97#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
98#define HAVE_XINPUT_H 1
99#endif
100#define HAVE_LIBC 1
101#define HAVE_STDIO_H 1
102#define STDC_HEADERS 1
103#define HAVE_STRING_H 1
104#define HAVE_CTYPE_H 1
105#define HAVE_MATH_H 1
106#define HAVE_FLOAT_H 1
107#define HAVE_SIGNAL_H 1
108
109/* C library functions */
110#define HAVE_MALLOC 1
111#define HAVE_CALLOC 1
112#define HAVE_REALLOC 1
113#define HAVE_FREE 1
114#define HAVE_ALLOCA 1
115#define HAVE_QSORT 1
116#define HAVE_ABS 1
117#define HAVE_MEMSET 1
118#define HAVE_MEMCPY 1
119#define HAVE_MEMMOVE 1
120#define HAVE_MEMCMP 1
121#define HAVE_STRLEN 1
122#define HAVE__STRREV 1
123#define HAVE__STRUPR 1
124//#define HAVE__STRLWR 1 // TODO, WinRT: consider using _strlwr_s instead
125#define HAVE_STRCHR 1
126#define HAVE_STRRCHR 1
127#define HAVE_STRSTR 1
128//#define HAVE_ITOA 1 // TODO, WinRT: consider using _itoa_s instead
129//#define HAVE__LTOA 1 // TODO, WinRT: consider using _ltoa_s instead
130//#define HAVE__ULTOA 1 // TODO, WinRT: consider using _ultoa_s instead
131#define HAVE_STRTOL 1
132#define HAVE_STRTOUL 1
133//#define HAVE_STRTOLL 1
134#define HAVE_STRTOD 1
135#define HAVE_ATOI 1
136#define HAVE_ATOF 1
137#define HAVE_STRCMP 1
138#define HAVE_STRNCMP 1
139#define HAVE__STRICMP 1
140#define HAVE__STRNICMP 1
141#define HAVE_VSNPRINTF 1
142//#define HAVE_SSCANF 1 // TODO, WinRT: consider using sscanf_s instead
143#define HAVE_M_PI 1
144#define HAVE_ATAN 1
145#define HAVE_ATAN2 1
146#define HAVE_CEIL 1
147#define HAVE__COPYSIGN 1
148#define HAVE_COS 1
149#define HAVE_COSF 1
150#define HAVE_FABS 1
151#define HAVE_FLOOR 1
152#define HAVE_LOG 1
153#define HAVE_POW 1
154//#define HAVE_SCALBN 1
155#define HAVE__SCALB 1
156#define HAVE_SIN 1
157#define HAVE_SINF 1
158#define HAVE_SQRT 1
159#define HAVE_SQRTF 1
160#define HAVE_TAN 1
161#define HAVE_TANF 1
162#define HAVE__FSEEKI64 1
163
164/* Enable various audio drivers */
165#define SDL_AUDIO_DRIVER_XAUDIO2 1
166#define SDL_AUDIO_DRIVER_DISK 1
167#define SDL_AUDIO_DRIVER_DUMMY 1
168
169/* Enable various input drivers */
170#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
171#define SDL_JOYSTICK_DISABLED 1
172#define SDL_HAPTIC_DISABLED 1
173#else
174#define SDL_JOYSTICK_XINPUT 1
175#define SDL_HAPTIC_XINPUT 1
176#endif
177
178/* Enable various shared object loading systems */
179#define SDL_LOADSO_WINDOWS 1
180
181/* Enable various threading systems */
182#if (NTDDI_VERSION >= NTDDI_WINBLUE)
183#define SDL_THREAD_WINDOWS 1
184#else
185/* WinRT on Windows 8.0 and Windows Phone 8.0 don't support CreateThread() */
186#define SDL_THREAD_STDCPP 1
187#endif
188
189/* Enable various timer systems */
190#define SDL_TIMER_WINDOWS 1
191
192/* Enable various video drivers */
193#define SDL_VIDEO_DRIVER_WINRT 1
194#define SDL_VIDEO_DRIVER_DUMMY 1
195
196/* Enable OpenGL ES 2.0 (via a modified ANGLE library) */
197#define SDL_VIDEO_OPENGL_ES2 1
198#define SDL_VIDEO_OPENGL_EGL 1
199
200/* Enable appropriate renderer(s) */
201#define SDL_VIDEO_RENDER_D3D11 1
202
203#if SDL_VIDEO_OPENGL_ES2
204#define SDL_VIDEO_RENDER_OGL_ES2 1
205#endif
206
207/* Enable system power support */
208#define SDL_POWER_WINRT 1
209
210/* Enable assembly routines (Win64 doesn't have inline asm) */
211#ifndef _WIN64
212#define SDL_ASSEMBLY_ROUTINES 1
213#endif
214
215#endif /* SDL_config_winrt_h_ */
diff --git a/vendor/SDL2/include/SDL_config_wiz.h b/vendor/SDL2/include/SDL_config_wiz.h new file mode 100644 index 0000000..5bb845a --- /dev/null +++ b/vendor/SDL2/include/SDL_config_wiz.h
@@ -0,0 +1,121 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_config_wiz_h_
23#define SDL_config_wiz_h_
24#define SDL_config_h_
25
26/* This is a set of defines to configure the SDL features */
27
28/* General platform specific identifiers */
29#include "SDL_platform.h"
30
31#define SDL_BYTEORDER 1234
32
33#define HAVE_ALLOCA_H 1
34#define HAVE_SYS_TYPES_H 1
35#define HAVE_STDIO_H 1
36#define STDC_HEADERS 1
37#define HAVE_STDLIB_H 1
38#define HAVE_STDARG_H 1
39#define HAVE_MALLOC_H 1
40#define HAVE_MEMORY_H 1
41#define HAVE_STRING_H 1
42#define HAVE_STRINGS_H 1
43#define HAVE_INTTYPES_H 1
44#define HAVE_STDINT_H 1
45#define HAVE_CTYPE_H 1
46#define HAVE_MATH_H 1
47#define HAVE_ICONV_H 1
48#define HAVE_SIGNAL_H 1
49#define HAVE_MALLOC 1
50#define HAVE_CALLOC 1
51#define HAVE_REALLOC 1
52#define HAVE_FREE 1
53#define HAVE_ALLOCA 1
54#define HAVE_GETENV 1
55#define HAVE_SETENV 1
56#define HAVE_PUTENV 1
57#define HAVE_UNSETENV 1
58#define HAVE_QSORT 1
59#define HAVE_ABS 1
60#define HAVE_BCOPY 1
61#define HAVE_MEMSET 1
62#define HAVE_MEMCPY 1
63#define HAVE_MEMMOVE 1
64#define HAVE_STRLEN 1
65#define HAVE_STRDUP 1
66#define HAVE_STRCHR 1
67#define HAVE_STRRCHR 1
68#define HAVE_STRSTR 1
69#define HAVE_STRTOL 1
70#define HAVE_STRTOUL 1
71#define HAVE_STRTOLL 1
72#define HAVE_STRTOULL 1
73#define HAVE_ATOI 1
74#define HAVE_ATOF 1
75#define HAVE_STRCMP 1
76#define HAVE_STRNCMP 1
77#define HAVE_STRCASECMP 1
78#define HAVE_STRNCASECMP 1
79#define HAVE_VSSCANF 1
80#define HAVE_VSNPRINTF 1
81#define HAVE_M_PI 1
82#define HAVE_CEIL 1
83#define HAVE_COPYSIGN 1
84#define HAVE_COS 1
85#define HAVE_COSF 1
86#define HAVE_FABS 1
87#define HAVE_FLOOR 1
88#define HAVE_LOG 1
89#define HAVE_SCALBN 1
90#define HAVE_SIN 1
91#define HAVE_SINF 1
92#define HAVE_SQRT 1
93#define HAVE_SQRTF 1
94#define HAVE_TAN 1
95#define HAVE_TANF 1
96#define HAVE_SIGACTION 1
97#define HAVE_SETJMP 1
98#define HAVE_NANOSLEEP 1
99#define HAVE_POW 1
100
101#define SDL_AUDIO_DRIVER_DUMMY 1
102#define SDL_AUDIO_DRIVER_OSS 1
103
104#define SDL_INPUT_LINUXEV 1
105#define SDL_INPUT_TSLIB 1
106#define SDL_JOYSTICK_LINUX 1
107#define SDL_HAPTIC_LINUX 1
108
109#define SDL_LOADSO_DLOPEN 1
110
111#define SDL_THREAD_PTHREAD 1
112#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP 1
113
114#define SDL_TIMER_UNIX 1
115
116#define SDL_VIDEO_DRIVER_DUMMY 1
117#define SDL_VIDEO_DRIVER_PANDORA 1
118#define SDL_VIDEO_RENDER_OGL_ES 1
119#define SDL_VIDEO_OPENGL_ES 1
120
121#endif /* SDL_config_wiz_h_ */
diff --git a/vendor/SDL2/include/SDL_copying.h b/vendor/SDL2/include/SDL_copying.h new file mode 100644 index 0000000..8f60af6 --- /dev/null +++ b/vendor/SDL2/include/SDL_copying.h
@@ -0,0 +1,20 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
diff --git a/vendor/SDL2/include/SDL_cpuinfo.h b/vendor/SDL2/include/SDL_cpuinfo.h new file mode 100644 index 0000000..1fc4099 --- /dev/null +++ b/vendor/SDL2/include/SDL_cpuinfo.h
@@ -0,0 +1,559 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_cpuinfo.h
24 *
25 * CPU feature detection for SDL.
26 */
27
28#ifndef SDL_cpuinfo_h_
29#define SDL_cpuinfo_h_
30
31#include "SDL_stdinc.h"
32
33/* Need to do this here because intrin.h has C++ code in it */
34/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */
35#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64))
36#ifdef __clang__
37/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version,
38 so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */
39
40#ifndef __PRFCHWINTRIN_H
41#define __PRFCHWINTRIN_H
42
43static __inline__ void __attribute__((__always_inline__, __nodebug__))
44_m_prefetch(void *__P)
45{
46 __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */);
47}
48
49#endif /* __PRFCHWINTRIN_H */
50#endif /* __clang__ */
51#include <intrin.h>
52#ifndef _WIN64
53#ifndef __MMX__
54#define __MMX__
55#endif
56#ifndef __3dNOW__
57#define __3dNOW__
58#endif
59#endif
60#ifndef __SSE__
61#define __SSE__
62#endif
63#ifndef __SSE2__
64#define __SSE2__
65#endif
66#ifndef __SSE3__
67#define __SSE3__
68#endif
69#elif defined(__MINGW64_VERSION_MAJOR)
70#include <intrin.h>
71#if !defined(SDL_DISABLE_ARM_NEON_H) && defined(__ARM_NEON)
72# include <arm_neon.h>
73#endif
74#else
75/* altivec.h redefining bool causes a number of problems, see bugs 3993 and 4392, so you need to explicitly define SDL_ENABLE_ALTIVEC_H to have it included. */
76#if defined(HAVE_ALTIVEC_H) && defined(__ALTIVEC__) && !defined(__APPLE_ALTIVEC__) && defined(SDL_ENABLE_ALTIVEC_H)
77#include <altivec.h>
78#endif
79#if !defined(SDL_DISABLE_ARM_NEON_H)
80# if defined(__ARM_NEON)
81# include <arm_neon.h>
82# elif defined(__WINDOWS__) || defined(__WINRT__)
83/* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */
84# if defined(_M_ARM)
85# include <armintr.h>
86# include <arm_neon.h>
87# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */
88# endif
89# if defined (_M_ARM64)
90# include <arm64intr.h>
91# include <arm64_neon.h>
92# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */
93# endif
94# endif
95#endif
96#endif /* compiler version */
97
98#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H)
99#include <mm3dnow.h>
100#endif
101#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H)
102#include <immintrin.h>
103#else
104#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H)
105#include <mmintrin.h>
106#endif
107#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H)
108#include <xmmintrin.h>
109#endif
110#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H)
111#include <emmintrin.h>
112#endif
113#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H)
114#include <pmmintrin.h>
115#endif
116#endif /* HAVE_IMMINTRIN_H */
117
118#include "begin_code.h"
119/* Set up for C function definitions, even when using C++ */
120#ifdef __cplusplus
121extern "C" {
122#endif
123
124/* This is a guess for the cacheline size used for padding.
125 * Most x86 processors have a 64 byte cache line.
126 * The 64-bit PowerPC processors have a 128 byte cache line.
127 * We'll use the larger value to be generally safe.
128 */
129#define SDL_CACHELINE_SIZE 128
130
131/**
132 * Get the number of CPU cores available.
133 *
134 * \returns the total number of logical CPU cores. On CPUs that include
135 * technologies such as hyperthreading, the number of logical cores
136 * may be more than the number of physical cores.
137 *
138 * \since This function is available since SDL 2.0.0.
139 */
140extern DECLSPEC int SDLCALL SDL_GetCPUCount(void);
141
142/**
143 * Determine the L1 cache line size of the CPU.
144 *
145 * This is useful for determining multi-threaded structure padding or SIMD
146 * prefetch sizes.
147 *
148 * \returns the L1 cache line size of the CPU, in bytes.
149 *
150 * \since This function is available since SDL 2.0.0.
151 */
152extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void);
153
154/**
155 * Determine whether the CPU has the RDTSC instruction.
156 *
157 * This always returns false on CPUs that aren't using Intel instruction sets.
158 *
159 * \returns SDL_TRUE if the CPU has the RDTSC instruction or SDL_FALSE if not.
160 *
161 * \since This function is available since SDL 2.0.0.
162 *
163 * \sa SDL_Has3DNow
164 * \sa SDL_HasAltiVec
165 * \sa SDL_HasAVX
166 * \sa SDL_HasAVX2
167 * \sa SDL_HasMMX
168 * \sa SDL_HasSSE
169 * \sa SDL_HasSSE2
170 * \sa SDL_HasSSE3
171 * \sa SDL_HasSSE41
172 * \sa SDL_HasSSE42
173 */
174extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void);
175
176/**
177 * Determine whether the CPU has AltiVec features.
178 *
179 * This always returns false on CPUs that aren't using PowerPC instruction
180 * sets.
181 *
182 * \returns SDL_TRUE if the CPU has AltiVec features or SDL_FALSE if not.
183 *
184 * \since This function is available since SDL 2.0.0.
185 *
186 * \sa SDL_Has3DNow
187 * \sa SDL_HasAVX
188 * \sa SDL_HasAVX2
189 * \sa SDL_HasMMX
190 * \sa SDL_HasRDTSC
191 * \sa SDL_HasSSE
192 * \sa SDL_HasSSE2
193 * \sa SDL_HasSSE3
194 * \sa SDL_HasSSE41
195 * \sa SDL_HasSSE42
196 */
197extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void);
198
199/**
200 * Determine whether the CPU has MMX features.
201 *
202 * This always returns false on CPUs that aren't using Intel instruction sets.
203 *
204 * \returns SDL_TRUE if the CPU has MMX features or SDL_FALSE if not.
205 *
206 * \since This function is available since SDL 2.0.0.
207 *
208 * \sa SDL_Has3DNow
209 * \sa SDL_HasAltiVec
210 * \sa SDL_HasAVX
211 * \sa SDL_HasAVX2
212 * \sa SDL_HasRDTSC
213 * \sa SDL_HasSSE
214 * \sa SDL_HasSSE2
215 * \sa SDL_HasSSE3
216 * \sa SDL_HasSSE41
217 * \sa SDL_HasSSE42
218 */
219extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void);
220
221/**
222 * Determine whether the CPU has 3DNow! features.
223 *
224 * This always returns false on CPUs that aren't using AMD instruction sets.
225 *
226 * \returns SDL_TRUE if the CPU has 3DNow! features or SDL_FALSE if not.
227 *
228 * \since This function is available since SDL 2.0.0.
229 *
230 * \sa SDL_HasAltiVec
231 * \sa SDL_HasAVX
232 * \sa SDL_HasAVX2
233 * \sa SDL_HasMMX
234 * \sa SDL_HasRDTSC
235 * \sa SDL_HasSSE
236 * \sa SDL_HasSSE2
237 * \sa SDL_HasSSE3
238 * \sa SDL_HasSSE41
239 * \sa SDL_HasSSE42
240 */
241extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void);
242
243/**
244 * Determine whether the CPU has SSE features.
245 *
246 * This always returns false on CPUs that aren't using Intel instruction sets.
247 *
248 * \returns SDL_TRUE if the CPU has SSE features or SDL_FALSE if not.
249 *
250 * \since This function is available since SDL 2.0.0.
251 *
252 * \sa SDL_Has3DNow
253 * \sa SDL_HasAltiVec
254 * \sa SDL_HasAVX
255 * \sa SDL_HasAVX2
256 * \sa SDL_HasMMX
257 * \sa SDL_HasRDTSC
258 * \sa SDL_HasSSE2
259 * \sa SDL_HasSSE3
260 * \sa SDL_HasSSE41
261 * \sa SDL_HasSSE42
262 */
263extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void);
264
265/**
266 * Determine whether the CPU has SSE2 features.
267 *
268 * This always returns false on CPUs that aren't using Intel instruction sets.
269 *
270 * \returns SDL_TRUE if the CPU has SSE2 features or SDL_FALSE if not.
271 *
272 * \since This function is available since SDL 2.0.0.
273 *
274 * \sa SDL_Has3DNow
275 * \sa SDL_HasAltiVec
276 * \sa SDL_HasAVX
277 * \sa SDL_HasAVX2
278 * \sa SDL_HasMMX
279 * \sa SDL_HasRDTSC
280 * \sa SDL_HasSSE
281 * \sa SDL_HasSSE3
282 * \sa SDL_HasSSE41
283 * \sa SDL_HasSSE42
284 */
285extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void);
286
287/**
288 * Determine whether the CPU has SSE3 features.
289 *
290 * This always returns false on CPUs that aren't using Intel instruction sets.
291 *
292 * \returns SDL_TRUE if the CPU has SSE3 features or SDL_FALSE if not.
293 *
294 * \since This function is available since SDL 2.0.0.
295 *
296 * \sa SDL_Has3DNow
297 * \sa SDL_HasAltiVec
298 * \sa SDL_HasAVX
299 * \sa SDL_HasAVX2
300 * \sa SDL_HasMMX
301 * \sa SDL_HasRDTSC
302 * \sa SDL_HasSSE
303 * \sa SDL_HasSSE2
304 * \sa SDL_HasSSE41
305 * \sa SDL_HasSSE42
306 */
307extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void);
308
309/**
310 * Determine whether the CPU has SSE4.1 features.
311 *
312 * This always returns false on CPUs that aren't using Intel instruction sets.
313 *
314 * \returns SDL_TRUE if the CPU has SSE4.1 features or SDL_FALSE if not.
315 *
316 * \since This function is available since SDL 2.0.0.
317 *
318 * \sa SDL_Has3DNow
319 * \sa SDL_HasAltiVec
320 * \sa SDL_HasAVX
321 * \sa SDL_HasAVX2
322 * \sa SDL_HasMMX
323 * \sa SDL_HasRDTSC
324 * \sa SDL_HasSSE
325 * \sa SDL_HasSSE2
326 * \sa SDL_HasSSE3
327 * \sa SDL_HasSSE42
328 */
329extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void);
330
331/**
332 * Determine whether the CPU has SSE4.2 features.
333 *
334 * This always returns false on CPUs that aren't using Intel instruction sets.
335 *
336 * \returns SDL_TRUE if the CPU has SSE4.2 features or SDL_FALSE if not.
337 *
338 * \since This function is available since SDL 2.0.0.
339 *
340 * \sa SDL_Has3DNow
341 * \sa SDL_HasAltiVec
342 * \sa SDL_HasAVX
343 * \sa SDL_HasAVX2
344 * \sa SDL_HasMMX
345 * \sa SDL_HasRDTSC
346 * \sa SDL_HasSSE
347 * \sa SDL_HasSSE2
348 * \sa SDL_HasSSE3
349 * \sa SDL_HasSSE41
350 */
351extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void);
352
353/**
354 * Determine whether the CPU has AVX features.
355 *
356 * This always returns false on CPUs that aren't using Intel instruction sets.
357 *
358 * \returns SDL_TRUE if the CPU has AVX features or SDL_FALSE if not.
359 *
360 * \since This function is available since SDL 2.0.2.
361 *
362 * \sa SDL_Has3DNow
363 * \sa SDL_HasAltiVec
364 * \sa SDL_HasAVX2
365 * \sa SDL_HasMMX
366 * \sa SDL_HasRDTSC
367 * \sa SDL_HasSSE
368 * \sa SDL_HasSSE2
369 * \sa SDL_HasSSE3
370 * \sa SDL_HasSSE41
371 * \sa SDL_HasSSE42
372 */
373extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void);
374
375/**
376 * Determine whether the CPU has AVX2 features.
377 *
378 * This always returns false on CPUs that aren't using Intel instruction sets.
379 *
380 * \returns SDL_TRUE if the CPU has AVX2 features or SDL_FALSE if not.
381 *
382 * \since This function is available since SDL 2.0.4.
383 *
384 * \sa SDL_Has3DNow
385 * \sa SDL_HasAltiVec
386 * \sa SDL_HasAVX
387 * \sa SDL_HasMMX
388 * \sa SDL_HasRDTSC
389 * \sa SDL_HasSSE
390 * \sa SDL_HasSSE2
391 * \sa SDL_HasSSE3
392 * \sa SDL_HasSSE41
393 * \sa SDL_HasSSE42
394 */
395extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void);
396
397/**
398 * Determine whether the CPU has AVX-512F (foundation) features.
399 *
400 * This always returns false on CPUs that aren't using Intel instruction sets.
401 *
402 * \returns SDL_TRUE if the CPU has AVX-512F features or SDL_FALSE if not.
403 *
404 * \since This function is available since SDL 2.0.9.
405 *
406 * \sa SDL_HasAVX
407 */
408extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void);
409
410/**
411 * Determine whether the CPU has ARM SIMD (ARMv6) features.
412 *
413 * This is different from ARM NEON, which is a different instruction set.
414 *
415 * This always returns false on CPUs that aren't using ARM instruction sets.
416 *
417 * \returns SDL_TRUE if the CPU has ARM SIMD features or SDL_FALSE if not.
418 *
419 * \since This function is available since SDL 2.0.12.
420 *
421 * \sa SDL_HasNEON
422 */
423extern DECLSPEC SDL_bool SDLCALL SDL_HasARMSIMD(void);
424
425/**
426 * Determine whether the CPU has NEON (ARM SIMD) features.
427 *
428 * This always returns false on CPUs that aren't using ARM instruction sets.
429 *
430 * \returns SDL_TRUE if the CPU has ARM NEON features or SDL_FALSE if not.
431 *
432 * \since This function is available since SDL 2.0.6.
433 */
434extern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void);
435
436/**
437 * Get the amount of RAM configured in the system.
438 *
439 * \returns the amount of RAM configured in the system in MB.
440 *
441 * \since This function is available since SDL 2.0.1.
442 */
443extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void);
444
445/**
446 * Report the alignment this system needs for SIMD allocations.
447 *
448 * This will return the minimum number of bytes to which a pointer must be
449 * aligned to be compatible with SIMD instructions on the current machine. For
450 * example, if the machine supports SSE only, it will return 16, but if it
451 * supports AVX-512F, it'll return 64 (etc). This only reports values for
452 * instruction sets SDL knows about, so if your SDL build doesn't have
453 * SDL_HasAVX512F(), then it might return 16 for the SSE support it sees and
454 * not 64 for the AVX-512 instructions that exist but SDL doesn't know about.
455 * Plan accordingly.
456 *
457 * \returns the alignment in bytes needed for available, known SIMD
458 * instructions.
459 *
460 * \since This function is available since SDL 2.0.10.
461 */
462extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void);
463
464/**
465 * Allocate memory in a SIMD-friendly way.
466 *
467 * This will allocate a block of memory that is suitable for use with SIMD
468 * instructions. Specifically, it will be properly aligned and padded for the
469 * system's supported vector instructions.
470 *
471 * The memory returned will be padded such that it is safe to read or write an
472 * incomplete vector at the end of the memory block. This can be useful so you
473 * don't have to drop back to a scalar fallback at the end of your SIMD
474 * processing loop to deal with the final elements without overflowing the
475 * allocated buffer.
476 *
477 * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free() or
478 * delete[], etc.
479 *
480 * Note that SDL will only deal with SIMD instruction sets it is aware of; for
481 * example, SDL 2.0.8 knows that SSE wants 16-byte vectors (SDL_HasSSE()), and
482 * AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't know that AVX-512 wants
483 * 64. To be clear: if you can't decide to use an instruction set with an
484 * SDL_Has*() function, don't use that instruction set with memory allocated
485 * through here.
486 *
487 * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't
488 * out of memory, but you are not allowed to dereference it (because you only
489 * own zero bytes of that buffer).
490 *
491 * \param len The length, in bytes, of the block to allocate. The actual
492 * allocated block might be larger due to padding, etc.
493 * \returns a pointer to the newly-allocated block, NULL if out of memory.
494 *
495 * \since This function is available since SDL 2.0.10.
496 *
497 * \sa SDL_SIMDAlignment
498 * \sa SDL_SIMDRealloc
499 * \sa SDL_SIMDFree
500 */
501extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len);
502
503/**
504 * Reallocate memory obtained from SDL_SIMDAlloc
505 *
506 * It is not valid to use this function on a pointer from anything but
507 * SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc,
508 * SDL_malloc, memalign, new[], etc.
509 *
510 * \param mem The pointer obtained from SDL_SIMDAlloc. This function also
511 * accepts NULL, at which point this function is the same as
512 * calling SDL_SIMDAlloc with a NULL pointer.
513 * \param len The length, in bytes, of the block to allocated. The actual
514 * allocated block might be larger due to padding, etc. Passing 0
515 * will return a non-NULL pointer, assuming the system isn't out of
516 * memory.
517 * \returns a pointer to the newly-reallocated block, NULL if out of memory.
518 *
519 * \since This function is available since SDL 2.0.14.
520 *
521 * \sa SDL_SIMDAlignment
522 * \sa SDL_SIMDAlloc
523 * \sa SDL_SIMDFree
524 */
525extern DECLSPEC void * SDLCALL SDL_SIMDRealloc(void *mem, const size_t len);
526
527/**
528 * Deallocate memory obtained from SDL_SIMDAlloc
529 *
530 * It is not valid to use this function on a pointer from anything but
531 * SDL_SIMDAlloc() or SDL_SIMDRealloc(). It can't be used on pointers from
532 * malloc, realloc, SDL_malloc, memalign, new[], etc.
533 *
534 * However, SDL_SIMDFree(NULL) is a legal no-op.
535 *
536 * The memory pointed to by `ptr` is no longer valid for access upon return,
537 * and may be returned to the system or reused by a future allocation. The
538 * pointer passed to this function is no longer safe to dereference once this
539 * function returns, and should be discarded.
540 *
541 * \param ptr The pointer, returned from SDL_SIMDAlloc or SDL_SIMDRealloc, to
542 * deallocate. NULL is a legal no-op.
543 *
544 * \since This function is available since SDL 2.0.10.
545 *
546 * \sa SDL_SIMDAlloc
547 * \sa SDL_SIMDRealloc
548 */
549extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr);
550
551/* Ends C function definitions when using C++ */
552#ifdef __cplusplus
553}
554#endif
555#include "close_code.h"
556
557#endif /* SDL_cpuinfo_h_ */
558
559/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_egl.h b/vendor/SDL2/include/SDL_egl.h new file mode 100644 index 0000000..f90e27b --- /dev/null +++ b/vendor/SDL2/include/SDL_egl.h
@@ -0,0 +1,2302 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_egl.h
24 *
25 * This is a simple file to encapsulate the EGL API headers.
26 */
27#if !defined(_MSC_VER) && !defined(__ANDROID__) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS)
28
29#if defined(__vita__) || defined(__psp2__)
30#include <psp2/types.h>
31#endif
32
33#include <EGL/egl.h>
34#include <EGL/eglext.h>
35
36#else /* _MSC_VER */
37
38/* EGL headers for Visual Studio */
39
40#ifndef __khrplatform_h_
41#define __khrplatform_h_
42
43/*
44** Copyright (c) 2008-2018 The Khronos Group Inc.
45**
46** Permission is hereby granted, free of charge, to any person obtaining a
47** copy of this software and/or associated documentation files (the
48** "Materials"), to deal in the Materials without restriction, including
49** without limitation the rights to use, copy, modify, merge, publish,
50** distribute, sublicense, and/or sell copies of the Materials, and to
51** permit persons to whom the Materials are furnished to do so, subject to
52** the following conditions:
53**
54** The above copyright notice and this permission notice shall be included
55** in all copies or substantial portions of the Materials.
56**
57** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
58** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
59** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
60** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
61** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
62** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
63** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
64*/
65
66/* Khronos platform-specific types and definitions.
67 *
68 * The master copy of khrplatform.h is maintained in the Khronos EGL
69 * Registry repository at https://github.com/KhronosGroup/EGL-Registry
70 * The last semantic modification to khrplatform.h was at commit ID:
71 * 67a3e0864c2d75ea5287b9f3d2eb74a745936692
72 *
73 * Adopters may modify this file to suit their platform. Adopters are
74 * encouraged to submit platform specific modifications to the Khronos
75 * group so that they can be included in future versions of this file.
76 * Please submit changes by filing pull requests or issues on
77 * the EGL Registry repository linked above.
78 *
79 *
80 * See the Implementer's Guidelines for information about where this file
81 * should be located on your system and for more details of its use:
82 * http://www.khronos.org/registry/implementers_guide.pdf
83 *
84 * This file should be included as
85 * #include <KHR/khrplatform.h>
86 * by Khronos client API header files that use its types and defines.
87 *
88 * The types in khrplatform.h should only be used to define API-specific types.
89 *
90 * Types defined in khrplatform.h:
91 * khronos_int8_t signed 8 bit
92 * khronos_uint8_t unsigned 8 bit
93 * khronos_int16_t signed 16 bit
94 * khronos_uint16_t unsigned 16 bit
95 * khronos_int32_t signed 32 bit
96 * khronos_uint32_t unsigned 32 bit
97 * khronos_int64_t signed 64 bit
98 * khronos_uint64_t unsigned 64 bit
99 * khronos_intptr_t signed same number of bits as a pointer
100 * khronos_uintptr_t unsigned same number of bits as a pointer
101 * khronos_ssize_t signed size
102 * khronos_usize_t unsigned size
103 * khronos_float_t signed 32 bit floating point
104 * khronos_time_ns_t unsigned 64 bit time in nanoseconds
105 * khronos_utime_nanoseconds_t unsigned time interval or absolute time in
106 * nanoseconds
107 * khronos_stime_nanoseconds_t signed time interval in nanoseconds
108 * khronos_boolean_enum_t enumerated boolean type. This should
109 * only be used as a base type when a client API's boolean type is
110 * an enum. Client APIs which use an integer or other type for
111 * booleans cannot use this as the base type for their boolean.
112 *
113 * Tokens defined in khrplatform.h:
114 *
115 * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
116 *
117 * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
118 * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
119 *
120 * Calling convention macros defined in this file:
121 * KHRONOS_APICALL
122 * KHRONOS_APIENTRY
123 * KHRONOS_APIATTRIBUTES
124 *
125 * These may be used in function prototypes as:
126 *
127 * KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
128 * int arg1,
129 * int arg2) KHRONOS_APIATTRIBUTES;
130 */
131
132#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)
133# define KHRONOS_STATIC 1
134#endif
135
136/*-------------------------------------------------------------------------
137 * Definition of KHRONOS_APICALL
138 *-------------------------------------------------------------------------
139 * This precedes the return type of the function in the function prototype.
140 */
141#if defined(KHRONOS_STATIC)
142 /* If the preprocessor constant KHRONOS_STATIC is defined, make the
143 * header compatible with static linking. */
144# define KHRONOS_APICALL
145#elif defined(_WIN32)
146# define KHRONOS_APICALL __declspec(dllimport)
147#elif defined (__SYMBIAN32__)
148# define KHRONOS_APICALL IMPORT_C
149#elif defined(__ANDROID__)
150# define KHRONOS_APICALL __attribute__((visibility("default")))
151#else
152# define KHRONOS_APICALL
153#endif
154
155/*-------------------------------------------------------------------------
156 * Definition of KHRONOS_APIENTRY
157 *-------------------------------------------------------------------------
158 * This follows the return type of the function and precedes the function
159 * name in the function prototype.
160 */
161#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
162 /* Win32 but not WinCE */
163# define KHRONOS_APIENTRY __stdcall
164#else
165# define KHRONOS_APIENTRY
166#endif
167
168/*-------------------------------------------------------------------------
169 * Definition of KHRONOS_APIATTRIBUTES
170 *-------------------------------------------------------------------------
171 * This follows the closing parenthesis of the function prototype arguments.
172 */
173#if defined (__ARMCC_2__)
174#define KHRONOS_APIATTRIBUTES __softfp
175#else
176#define KHRONOS_APIATTRIBUTES
177#endif
178
179/*-------------------------------------------------------------------------
180 * basic type definitions
181 *-----------------------------------------------------------------------*/
182#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
183
184
185/*
186 * Using <stdint.h>
187 */
188#include <stdint.h>
189typedef int32_t khronos_int32_t;
190typedef uint32_t khronos_uint32_t;
191typedef int64_t khronos_int64_t;
192typedef uint64_t khronos_uint64_t;
193#define KHRONOS_SUPPORT_INT64 1
194#define KHRONOS_SUPPORT_FLOAT 1
195
196#elif defined(__VMS ) || defined(__sgi)
197
198/*
199 * Using <inttypes.h>
200 */
201#include <inttypes.h>
202typedef int32_t khronos_int32_t;
203typedef uint32_t khronos_uint32_t;
204typedef int64_t khronos_int64_t;
205typedef uint64_t khronos_uint64_t;
206#define KHRONOS_SUPPORT_INT64 1
207#define KHRONOS_SUPPORT_FLOAT 1
208
209#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
210
211/*
212 * Win32
213 */
214typedef __int32 khronos_int32_t;
215typedef unsigned __int32 khronos_uint32_t;
216typedef __int64 khronos_int64_t;
217typedef unsigned __int64 khronos_uint64_t;
218#define KHRONOS_SUPPORT_INT64 1
219#define KHRONOS_SUPPORT_FLOAT 1
220
221#elif defined(__sun__) || defined(__digital__)
222
223/*
224 * Sun or Digital
225 */
226typedef int khronos_int32_t;
227typedef unsigned int khronos_uint32_t;
228#if defined(__arch64__) || defined(_LP64)
229typedef long int khronos_int64_t;
230typedef unsigned long int khronos_uint64_t;
231#else
232typedef long long int khronos_int64_t;
233typedef unsigned long long int khronos_uint64_t;
234#endif /* __arch64__ */
235#define KHRONOS_SUPPORT_INT64 1
236#define KHRONOS_SUPPORT_FLOAT 1
237
238#elif 0
239
240/*
241 * Hypothetical platform with no float or int64 support
242 */
243typedef int khronos_int32_t;
244typedef unsigned int khronos_uint32_t;
245#define KHRONOS_SUPPORT_INT64 0
246#define KHRONOS_SUPPORT_FLOAT 0
247
248#else
249
250/*
251 * Generic fallback
252 */
253#include <stdint.h>
254typedef int32_t khronos_int32_t;
255typedef uint32_t khronos_uint32_t;
256typedef int64_t khronos_int64_t;
257typedef uint64_t khronos_uint64_t;
258#define KHRONOS_SUPPORT_INT64 1
259#define KHRONOS_SUPPORT_FLOAT 1
260
261#endif
262
263
264/*
265 * Types that are (so far) the same on all platforms
266 */
267typedef signed char khronos_int8_t;
268typedef unsigned char khronos_uint8_t;
269typedef signed short int khronos_int16_t;
270typedef unsigned short int khronos_uint16_t;
271
272/*
273 * Types that differ between LLP64 and LP64 architectures - in LLP64,
274 * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
275 * to be the only LLP64 architecture in current use.
276 */
277#ifdef _WIN64
278typedef signed long long int khronos_intptr_t;
279typedef unsigned long long int khronos_uintptr_t;
280typedef signed long long int khronos_ssize_t;
281typedef unsigned long long int khronos_usize_t;
282#else
283typedef signed long int khronos_intptr_t;
284typedef unsigned long int khronos_uintptr_t;
285typedef signed long int khronos_ssize_t;
286typedef unsigned long int khronos_usize_t;
287#endif
288
289#if KHRONOS_SUPPORT_FLOAT
290/*
291 * Float type
292 */
293typedef float khronos_float_t;
294#endif
295
296#if KHRONOS_SUPPORT_INT64
297/* Time types
298 *
299 * These types can be used to represent a time interval in nanoseconds or
300 * an absolute Unadjusted System Time. Unadjusted System Time is the number
301 * of nanoseconds since some arbitrary system event (e.g. since the last
302 * time the system booted). The Unadjusted System Time is an unsigned
303 * 64 bit value that wraps back to 0 every 584 years. Time intervals
304 * may be either signed or unsigned.
305 */
306typedef khronos_uint64_t khronos_utime_nanoseconds_t;
307typedef khronos_int64_t khronos_stime_nanoseconds_t;
308#endif
309
310/*
311 * Dummy value used to pad enum types to 32 bits.
312 */
313#ifndef KHRONOS_MAX_ENUM
314#define KHRONOS_MAX_ENUM 0x7FFFFFFF
315#endif
316
317/*
318 * Enumerated boolean type
319 *
320 * Values other than zero should be considered to be true. Therefore
321 * comparisons should not be made against KHRONOS_TRUE.
322 */
323typedef enum {
324 KHRONOS_FALSE = 0,
325 KHRONOS_TRUE = 1,
326 KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
327} khronos_boolean_enum_t;
328
329#endif /* __khrplatform_h_ */
330
331
332#ifndef __eglplatform_h_
333#define __eglplatform_h_
334
335/*
336** Copyright 2007-2020 The Khronos Group Inc.
337** SPDX-License-Identifier: Apache-2.0
338*/
339
340/* Platform-specific types and definitions for egl.h
341 *
342 * Adopters may modify khrplatform.h and this file to suit their platform.
343 * You are encouraged to submit all modifications to the Khronos group so that
344 * they can be included in future versions of this file. Please submit changes
345 * by filing an issue or pull request on the public Khronos EGL Registry, at
346 * https://www.github.com/KhronosGroup/EGL-Registry/
347 */
348
349/*#include <KHR/khrplatform.h>*/
350
351/* Macros used in EGL function prototype declarations.
352 *
353 * EGL functions should be prototyped as:
354 *
355 * EGLAPI return-type EGLAPIENTRY eglFunction(arguments);
356 * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments);
357 *
358 * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h
359 */
360
361#ifndef EGLAPI
362#define EGLAPI KHRONOS_APICALL
363#endif
364
365#ifndef EGLAPIENTRY
366#define EGLAPIENTRY KHRONOS_APIENTRY
367#endif
368#define EGLAPIENTRYP EGLAPIENTRY*
369
370/* The types NativeDisplayType, NativeWindowType, and NativePixmapType
371 * are aliases of window-system-dependent types, such as X Display * or
372 * Windows Device Context. They must be defined in platform-specific
373 * code below. The EGL-prefixed versions of Native*Type are the same
374 * types, renamed in EGL 1.3 so all types in the API start with "EGL".
375 *
376 * Khronos STRONGLY RECOMMENDS that you use the default definitions
377 * provided below, since these changes affect both binary and source
378 * portability of applications using EGL running on different EGL
379 * implementations.
380 */
381
382#if defined(EGL_NO_PLATFORM_SPECIFIC_TYPES)
383
384typedef void *EGLNativeDisplayType;
385typedef void *EGLNativePixmapType;
386typedef void *EGLNativeWindowType;
387
388#elif defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
389#ifndef WIN32_LEAN_AND_MEAN
390#define WIN32_LEAN_AND_MEAN 1
391#endif
392#include <windows.h>
393
394typedef HDC EGLNativeDisplayType;
395typedef HBITMAP EGLNativePixmapType;
396typedef HWND EGLNativeWindowType;
397
398#elif defined(__EMSCRIPTEN__)
399
400typedef int EGLNativeDisplayType;
401typedef int EGLNativePixmapType;
402typedef int EGLNativeWindowType;
403
404#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */
405
406typedef int EGLNativeDisplayType;
407typedef void *EGLNativePixmapType;
408typedef void *EGLNativeWindowType;
409
410#elif defined(WL_EGL_PLATFORM)
411
412typedef struct wl_display *EGLNativeDisplayType;
413typedef struct wl_egl_pixmap *EGLNativePixmapType;
414typedef struct wl_egl_window *EGLNativeWindowType;
415
416#elif defined(__GBM__)
417
418typedef struct gbm_device *EGLNativeDisplayType;
419typedef struct gbm_bo *EGLNativePixmapType;
420typedef void *EGLNativeWindowType;
421
422#elif defined(__ANDROID__) || defined(ANDROID)
423
424struct ANativeWindow;
425struct egl_native_pixmap_t;
426
427typedef void* EGLNativeDisplayType;
428typedef struct egl_native_pixmap_t* EGLNativePixmapType;
429typedef struct ANativeWindow* EGLNativeWindowType;
430
431#elif defined(USE_OZONE)
432
433typedef intptr_t EGLNativeDisplayType;
434typedef intptr_t EGLNativePixmapType;
435typedef intptr_t EGLNativeWindowType;
436
437#elif defined(USE_X11)
438
439/* X11 (tentative) */
440#include <X11/Xlib.h>
441#include <X11/Xutil.h>
442
443typedef Display *EGLNativeDisplayType;
444typedef Pixmap EGLNativePixmapType;
445typedef Window EGLNativeWindowType;
446
447#elif defined(__unix__)
448
449typedef void *EGLNativeDisplayType;
450typedef khronos_uintptr_t EGLNativePixmapType;
451typedef khronos_uintptr_t EGLNativeWindowType;
452
453#elif defined(__APPLE__)
454
455typedef int EGLNativeDisplayType;
456typedef void *EGLNativePixmapType;
457typedef void *EGLNativeWindowType;
458
459#elif defined(__HAIKU__)
460
461#include <kernel/image.h>
462
463typedef void *EGLNativeDisplayType;
464typedef khronos_uintptr_t EGLNativePixmapType;
465typedef khronos_uintptr_t EGLNativeWindowType;
466
467#elif defined(__Fuchsia__)
468
469typedef void *EGLNativeDisplayType;
470typedef khronos_uintptr_t EGLNativePixmapType;
471typedef khronos_uintptr_t EGLNativeWindowType;
472
473#else
474#error "Platform not recognized"
475#endif
476
477/* EGL 1.2 types, renamed for consistency in EGL 1.3 */
478typedef EGLNativeDisplayType NativeDisplayType;
479typedef EGLNativePixmapType NativePixmapType;
480typedef EGLNativeWindowType NativeWindowType;
481
482
483/* Define EGLint. This must be a signed integral type large enough to contain
484 * all legal attribute names and values passed into and out of EGL, whether
485 * their type is boolean, bitmask, enumerant (symbolic constant), integer,
486 * handle, or other. While in general a 32-bit integer will suffice, if
487 * handles are 64 bit types, then EGLint should be defined as a signed 64-bit
488 * integer type.
489 */
490typedef khronos_int32_t EGLint;
491
492
493/* C++ / C typecast macros for special EGL handle values */
494#if defined(__cplusplus)
495#define EGL_CAST(type, value) (static_cast<type>(value))
496#else
497#define EGL_CAST(type, value) ((type) (value))
498#endif
499
500#endif /* __eglplatform_h */
501
502
503#ifndef __egl_h_
504#define __egl_h_ 1
505
506#ifdef __cplusplus
507extern "C" {
508#endif
509
510/*
511** Copyright 2013-2020 The Khronos Group Inc.
512** SPDX-License-Identifier: Apache-2.0
513**
514** This header is generated from the Khronos EGL XML API Registry.
515** The current version of the Registry, generator scripts
516** used to make the header, and the header can be found at
517** http://www.khronos.org/registry/egl
518**
519** Khronos $Git commit SHA1: b35e89ca9a $ on $Git commit date: 2021-09-01 09:34:00 +0530 $
520*/
521
522/*#include <EGL/eglplatform.h>*/
523
524#ifndef EGL_EGL_PROTOTYPES
525#define EGL_EGL_PROTOTYPES 1
526#endif
527
528/* Generated on date 20210901 */
529
530/* Generated C header for:
531 * API: egl
532 * Versions considered: .*
533 * Versions emitted: .*
534 * Default extensions included: None
535 * Additional extensions included: _nomatch_^
536 * Extensions removed: _nomatch_^
537 */
538
539#ifndef EGL_VERSION_1_0
540#define EGL_VERSION_1_0 1
541typedef unsigned int EGLBoolean;
542typedef void *EGLDisplay;
543/*#include <KHR/khrplatform.h>*/
544/*#include <EGL/eglplatform.h>*/
545typedef void *EGLConfig;
546typedef void *EGLSurface;
547typedef void *EGLContext;
548typedef void (*__eglMustCastToProperFunctionPointerType)(void);
549#define EGL_ALPHA_SIZE 0x3021
550#define EGL_BAD_ACCESS 0x3002
551#define EGL_BAD_ALLOC 0x3003
552#define EGL_BAD_ATTRIBUTE 0x3004
553#define EGL_BAD_CONFIG 0x3005
554#define EGL_BAD_CONTEXT 0x3006
555#define EGL_BAD_CURRENT_SURFACE 0x3007
556#define EGL_BAD_DISPLAY 0x3008
557#define EGL_BAD_MATCH 0x3009
558#define EGL_BAD_NATIVE_PIXMAP 0x300A
559#define EGL_BAD_NATIVE_WINDOW 0x300B
560#define EGL_BAD_PARAMETER 0x300C
561#define EGL_BAD_SURFACE 0x300D
562#define EGL_BLUE_SIZE 0x3022
563#define EGL_BUFFER_SIZE 0x3020
564#define EGL_CONFIG_CAVEAT 0x3027
565#define EGL_CONFIG_ID 0x3028
566#define EGL_CORE_NATIVE_ENGINE 0x305B
567#define EGL_DEPTH_SIZE 0x3025
568#define EGL_DONT_CARE EGL_CAST(EGLint,-1)
569#define EGL_DRAW 0x3059
570#define EGL_EXTENSIONS 0x3055
571#define EGL_FALSE 0
572#define EGL_GREEN_SIZE 0x3023
573#define EGL_HEIGHT 0x3056
574#define EGL_LARGEST_PBUFFER 0x3058
575#define EGL_LEVEL 0x3029
576#define EGL_MAX_PBUFFER_HEIGHT 0x302A
577#define EGL_MAX_PBUFFER_PIXELS 0x302B
578#define EGL_MAX_PBUFFER_WIDTH 0x302C
579#define EGL_NATIVE_RENDERABLE 0x302D
580#define EGL_NATIVE_VISUAL_ID 0x302E
581#define EGL_NATIVE_VISUAL_TYPE 0x302F
582#define EGL_NONE 0x3038
583#define EGL_NON_CONFORMANT_CONFIG 0x3051
584#define EGL_NOT_INITIALIZED 0x3001
585#define EGL_NO_CONTEXT EGL_CAST(EGLContext,0)
586#define EGL_NO_DISPLAY EGL_CAST(EGLDisplay,0)
587#define EGL_NO_SURFACE EGL_CAST(EGLSurface,0)
588#define EGL_PBUFFER_BIT 0x0001
589#define EGL_PIXMAP_BIT 0x0002
590#define EGL_READ 0x305A
591#define EGL_RED_SIZE 0x3024
592#define EGL_SAMPLES 0x3031
593#define EGL_SAMPLE_BUFFERS 0x3032
594#define EGL_SLOW_CONFIG 0x3050
595#define EGL_STENCIL_SIZE 0x3026
596#define EGL_SUCCESS 0x3000
597#define EGL_SURFACE_TYPE 0x3033
598#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
599#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
600#define EGL_TRANSPARENT_RED_VALUE 0x3037
601#define EGL_TRANSPARENT_RGB 0x3052
602#define EGL_TRANSPARENT_TYPE 0x3034
603#define EGL_TRUE 1
604#define EGL_VENDOR 0x3053
605#define EGL_VERSION 0x3054
606#define EGL_WIDTH 0x3057
607#define EGL_WINDOW_BIT 0x0004
608typedef EGLBoolean (EGLAPIENTRYP PFNEGLCHOOSECONFIGPROC) (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
609typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOPYBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
610typedef EGLContext (EGLAPIENTRYP PFNEGLCREATECONTEXTPROC) (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
611typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPBUFFERSURFACEPROC) (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
612typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
613typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);
614typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx);
615typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface);
616typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCONFIGATTRIBPROC) (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
617typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCONFIGSPROC) (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
618typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETCURRENTDISPLAYPROC) (void);
619typedef EGLSurface (EGLAPIENTRYP PFNEGLGETCURRENTSURFACEPROC) (EGLint readdraw);
620typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETDISPLAYPROC) (EGLNativeDisplayType display_id);
621typedef EGLint (EGLAPIENTRYP PFNEGLGETERRORPROC) (void);
622typedef __eglMustCastToProperFunctionPointerType (EGLAPIENTRYP PFNEGLGETPROCADDRESSPROC) (const char *procname);
623typedef EGLBoolean (EGLAPIENTRYP PFNEGLINITIALIZEPROC) (EGLDisplay dpy, EGLint *major, EGLint *minor);
624typedef EGLBoolean (EGLAPIENTRYP PFNEGLMAKECURRENTPROC) (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
625typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
626typedef const char *(EGLAPIENTRYP PFNEGLQUERYSTRINGPROC) (EGLDisplay dpy, EGLint name);
627typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
628typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface);
629typedef EGLBoolean (EGLAPIENTRYP PFNEGLTERMINATEPROC) (EGLDisplay dpy);
630typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITGLPROC) (void);
631typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITNATIVEPROC) (EGLint engine);
632#if EGL_EGL_PROTOTYPES
633EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
634EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
635EGLAPI EGLContext EGLAPIENTRY eglCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
636EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
637EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
638EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);
639EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext (EGLDisplay dpy, EGLContext ctx);
640EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface (EGLDisplay dpy, EGLSurface surface);
641EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
642EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
643EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay (void);
644EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface (EGLint readdraw);
645EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay (EGLNativeDisplayType display_id);
646EGLAPI EGLint EGLAPIENTRY eglGetError (void);
647EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname);
648EGLAPI EGLBoolean EGLAPIENTRY eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor);
649EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
650EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
651EGLAPI const char *EGLAPIENTRY eglQueryString (EGLDisplay dpy, EGLint name);
652EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
653EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers (EGLDisplay dpy, EGLSurface surface);
654EGLAPI EGLBoolean EGLAPIENTRY eglTerminate (EGLDisplay dpy);
655EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL (void);
656EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative (EGLint engine);
657#endif
658#endif /* EGL_VERSION_1_0 */
659
660#ifndef EGL_VERSION_1_1
661#define EGL_VERSION_1_1 1
662#define EGL_BACK_BUFFER 0x3084
663#define EGL_BIND_TO_TEXTURE_RGB 0x3039
664#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
665#define EGL_CONTEXT_LOST 0x300E
666#define EGL_MIN_SWAP_INTERVAL 0x303B
667#define EGL_MAX_SWAP_INTERVAL 0x303C
668#define EGL_MIPMAP_TEXTURE 0x3082
669#define EGL_MIPMAP_LEVEL 0x3083
670#define EGL_NO_TEXTURE 0x305C
671#define EGL_TEXTURE_2D 0x305F
672#define EGL_TEXTURE_FORMAT 0x3080
673#define EGL_TEXTURE_RGB 0x305D
674#define EGL_TEXTURE_RGBA 0x305E
675#define EGL_TEXTURE_TARGET 0x3081
676typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDTEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
677typedef EGLBoolean (EGLAPIENTRYP PFNEGLRELEASETEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
678typedef EGLBoolean (EGLAPIENTRYP PFNEGLSURFACEATTRIBPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
679typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPINTERVALPROC) (EGLDisplay dpy, EGLint interval);
680#if EGL_EGL_PROTOTYPES
681EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
682EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
683EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
684EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval (EGLDisplay dpy, EGLint interval);
685#endif
686#endif /* EGL_VERSION_1_1 */
687
688#ifndef EGL_VERSION_1_2
689#define EGL_VERSION_1_2 1
690typedef unsigned int EGLenum;
691typedef void *EGLClientBuffer;
692#define EGL_ALPHA_FORMAT 0x3088
693#define EGL_ALPHA_FORMAT_NONPRE 0x308B
694#define EGL_ALPHA_FORMAT_PRE 0x308C
695#define EGL_ALPHA_MASK_SIZE 0x303E
696#define EGL_BUFFER_PRESERVED 0x3094
697#define EGL_BUFFER_DESTROYED 0x3095
698#define EGL_CLIENT_APIS 0x308D
699#define EGL_COLORSPACE 0x3087
700#define EGL_COLORSPACE_sRGB 0x3089
701#define EGL_COLORSPACE_LINEAR 0x308A
702#define EGL_COLOR_BUFFER_TYPE 0x303F
703#define EGL_CONTEXT_CLIENT_TYPE 0x3097
704#define EGL_DISPLAY_SCALING 10000
705#define EGL_HORIZONTAL_RESOLUTION 0x3090
706#define EGL_LUMINANCE_BUFFER 0x308F
707#define EGL_LUMINANCE_SIZE 0x303D
708#define EGL_OPENGL_ES_BIT 0x0001
709#define EGL_OPENVG_BIT 0x0002
710#define EGL_OPENGL_ES_API 0x30A0
711#define EGL_OPENVG_API 0x30A1
712#define EGL_OPENVG_IMAGE 0x3096
713#define EGL_PIXEL_ASPECT_RATIO 0x3092
714#define EGL_RENDERABLE_TYPE 0x3040
715#define EGL_RENDER_BUFFER 0x3086
716#define EGL_RGB_BUFFER 0x308E
717#define EGL_SINGLE_BUFFER 0x3085
718#define EGL_SWAP_BEHAVIOR 0x3093
719#define EGL_UNKNOWN EGL_CAST(EGLint,-1)
720#define EGL_VERTICAL_RESOLUTION 0x3091
721typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDAPIPROC) (EGLenum api);
722typedef EGLenum (EGLAPIENTRYP PFNEGLQUERYAPIPROC) (void);
723typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC) (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
724typedef EGLBoolean (EGLAPIENTRYP PFNEGLRELEASETHREADPROC) (void);
725typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITCLIENTPROC) (void);
726#if EGL_EGL_PROTOTYPES
727EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI (EGLenum api);
728EGLAPI EGLenum EGLAPIENTRY eglQueryAPI (void);
729EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
730EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread (void);
731EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient (void);
732#endif
733#endif /* EGL_VERSION_1_2 */
734
735#ifndef EGL_VERSION_1_3
736#define EGL_VERSION_1_3 1
737#define EGL_CONFORMANT 0x3042
738#define EGL_CONTEXT_CLIENT_VERSION 0x3098
739#define EGL_MATCH_NATIVE_PIXMAP 0x3041
740#define EGL_OPENGL_ES2_BIT 0x0004
741#define EGL_VG_ALPHA_FORMAT 0x3088
742#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B
743#define EGL_VG_ALPHA_FORMAT_PRE 0x308C
744#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040
745#define EGL_VG_COLORSPACE 0x3087
746#define EGL_VG_COLORSPACE_sRGB 0x3089
747#define EGL_VG_COLORSPACE_LINEAR 0x308A
748#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020
749#endif /* EGL_VERSION_1_3 */
750
751#ifndef EGL_VERSION_1_4
752#define EGL_VERSION_1_4 1
753#define EGL_DEFAULT_DISPLAY EGL_CAST(EGLNativeDisplayType,0)
754#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200
755#define EGL_MULTISAMPLE_RESOLVE 0x3099
756#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A
757#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B
758#define EGL_OPENGL_API 0x30A2
759#define EGL_OPENGL_BIT 0x0008
760#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400
761typedef EGLContext (EGLAPIENTRYP PFNEGLGETCURRENTCONTEXTPROC) (void);
762#if EGL_EGL_PROTOTYPES
763EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext (void);
764#endif
765#endif /* EGL_VERSION_1_4 */
766
767#ifndef EGL_VERSION_1_5
768#define EGL_VERSION_1_5 1
769typedef void *EGLSync;
770typedef intptr_t EGLAttrib;
771typedef khronos_utime_nanoseconds_t EGLTime;
772typedef void *EGLImage;
773#define EGL_CONTEXT_MAJOR_VERSION 0x3098
774#define EGL_CONTEXT_MINOR_VERSION 0x30FB
775#define EGL_CONTEXT_OPENGL_PROFILE_MASK 0x30FD
776#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY 0x31BD
777#define EGL_NO_RESET_NOTIFICATION 0x31BE
778#define EGL_LOSE_CONTEXT_ON_RESET 0x31BF
779#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT 0x00000001
780#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT 0x00000002
781#define EGL_CONTEXT_OPENGL_DEBUG 0x31B0
782#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE 0x31B1
783#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS 0x31B2
784#define EGL_OPENGL_ES3_BIT 0x00000040
785#define EGL_CL_EVENT_HANDLE 0x309C
786#define EGL_SYNC_CL_EVENT 0x30FE
787#define EGL_SYNC_CL_EVENT_COMPLETE 0x30FF
788#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE 0x30F0
789#define EGL_SYNC_TYPE 0x30F7
790#define EGL_SYNC_STATUS 0x30F1
791#define EGL_SYNC_CONDITION 0x30F8
792#define EGL_SIGNALED 0x30F2
793#define EGL_UNSIGNALED 0x30F3
794#define EGL_SYNC_FLUSH_COMMANDS_BIT 0x0001
795#define EGL_FOREVER 0xFFFFFFFFFFFFFFFFull
796#define EGL_TIMEOUT_EXPIRED 0x30F5
797#define EGL_CONDITION_SATISFIED 0x30F6
798#define EGL_NO_SYNC EGL_CAST(EGLSync,0)
799#define EGL_SYNC_FENCE 0x30F9
800#define EGL_GL_COLORSPACE 0x309D
801#define EGL_GL_COLORSPACE_SRGB 0x3089
802#define EGL_GL_COLORSPACE_LINEAR 0x308A
803#define EGL_GL_RENDERBUFFER 0x30B9
804#define EGL_GL_TEXTURE_2D 0x30B1
805#define EGL_GL_TEXTURE_LEVEL 0x30BC
806#define EGL_GL_TEXTURE_3D 0x30B2
807#define EGL_GL_TEXTURE_ZOFFSET 0x30BD
808#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x30B3
809#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x30B4
810#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x30B5
811#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x30B6
812#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x30B7
813#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x30B8
814#define EGL_IMAGE_PRESERVED 0x30D2
815#define EGL_NO_IMAGE EGL_CAST(EGLImage,0)
816typedef EGLSync (EGLAPIENTRYP PFNEGLCREATESYNCPROC) (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);
817typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCPROC) (EGLDisplay dpy, EGLSync sync);
818typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
819typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBPROC) (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value);
820typedef EGLImage (EGLAPIENTRYP PFNEGLCREATEIMAGEPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);
821typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEPROC) (EGLDisplay dpy, EGLImage image);
822typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYPROC) (EGLenum platform, void *native_display, const EGLAttrib *attrib_list);
823typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);
824typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);
825typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags);
826#if EGL_EGL_PROTOTYPES
827EGLAPI EGLSync EGLAPIENTRY eglCreateSync (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);
828EGLAPI EGLBoolean EGLAPIENTRY eglDestroySync (EGLDisplay dpy, EGLSync sync);
829EGLAPI EGLint EGLAPIENTRY eglClientWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
830EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttrib (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value);
831EGLAPI EGLImage EGLAPIENTRY eglCreateImage (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);
832EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImage (EGLDisplay dpy, EGLImage image);
833EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplay (EGLenum platform, void *native_display, const EGLAttrib *attrib_list);
834EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);
835EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);
836EGLAPI EGLBoolean EGLAPIENTRY eglWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags);
837#endif
838#endif /* EGL_VERSION_1_5 */
839
840#ifdef __cplusplus
841}
842#endif
843
844#endif /* __egl_h_ */
845
846
847#ifndef __eglext_h_
848#define __eglext_h_ 1
849
850#ifdef __cplusplus
851extern "C" {
852#endif
853
854/*
855** Copyright 2013-2020 The Khronos Group Inc.
856** SPDX-License-Identifier: Apache-2.0
857**
858** This header is generated from the Khronos EGL XML API Registry.
859** The current version of the Registry, generator scripts
860** used to make the header, and the header can be found at
861** http://www.khronos.org/registry/egl
862**
863** Khronos $Git commit SHA1: b35e89ca9a $ on $Git commit date: 2021-09-01 09:34:00 +0530 $
864*/
865
866/*#include <EGL/eglplatform.h>*/
867
868#define EGL_EGLEXT_VERSION 20210901
869
870/* Generated C header for:
871 * API: egl
872 * Versions considered: .*
873 * Versions emitted: _nomatch_^
874 * Default extensions included: egl
875 * Additional extensions included: _nomatch_^
876 * Extensions removed: _nomatch_^
877 */
878
879#ifndef EGL_KHR_cl_event
880#define EGL_KHR_cl_event 1
881#define EGL_CL_EVENT_HANDLE_KHR 0x309C
882#define EGL_SYNC_CL_EVENT_KHR 0x30FE
883#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
884#endif /* EGL_KHR_cl_event */
885
886#ifndef EGL_KHR_cl_event2
887#define EGL_KHR_cl_event2 1
888typedef void *EGLSyncKHR;
889typedef intptr_t EGLAttribKHR;
890typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
891#ifdef EGL_EGLEXT_PROTOTYPES
892EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
893#endif
894#endif /* EGL_KHR_cl_event2 */
895
896#ifndef EGL_KHR_client_get_all_proc_addresses
897#define EGL_KHR_client_get_all_proc_addresses 1
898#endif /* EGL_KHR_client_get_all_proc_addresses */
899
900#ifndef EGL_KHR_config_attribs
901#define EGL_KHR_config_attribs 1
902#define EGL_CONFORMANT_KHR 0x3042
903#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020
904#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040
905#endif /* EGL_KHR_config_attribs */
906
907#ifndef EGL_KHR_context_flush_control
908#define EGL_KHR_context_flush_control 1
909#define EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR 0
910#define EGL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x2097
911#define EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098
912#endif /* EGL_KHR_context_flush_control */
913
914#ifndef EGL_KHR_create_context
915#define EGL_KHR_create_context 1
916#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098
917#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB
918#define EGL_CONTEXT_FLAGS_KHR 0x30FC
919#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
920#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
921#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE
922#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF
923#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001
924#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
925#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
926#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
927#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
928#define EGL_OPENGL_ES3_BIT_KHR 0x00000040
929#endif /* EGL_KHR_create_context */
930
931#ifndef EGL_KHR_create_context_no_error
932#define EGL_KHR_create_context_no_error 1
933#define EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3
934#endif /* EGL_KHR_create_context_no_error */
935
936#ifndef EGL_KHR_debug
937#define EGL_KHR_debug 1
938typedef void *EGLLabelKHR;
939typedef void *EGLObjectKHR;
940typedef void (EGLAPIENTRY *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message);
941#define EGL_OBJECT_THREAD_KHR 0x33B0
942#define EGL_OBJECT_DISPLAY_KHR 0x33B1
943#define EGL_OBJECT_CONTEXT_KHR 0x33B2
944#define EGL_OBJECT_SURFACE_KHR 0x33B3
945#define EGL_OBJECT_IMAGE_KHR 0x33B4
946#define EGL_OBJECT_SYNC_KHR 0x33B5
947#define EGL_OBJECT_STREAM_KHR 0x33B6
948#define EGL_DEBUG_MSG_CRITICAL_KHR 0x33B9
949#define EGL_DEBUG_MSG_ERROR_KHR 0x33BA
950#define EGL_DEBUG_MSG_WARN_KHR 0x33BB
951#define EGL_DEBUG_MSG_INFO_KHR 0x33BC
952#define EGL_DEBUG_CALLBACK_KHR 0x33B8
953typedef EGLint (EGLAPIENTRYP PFNEGLDEBUGMESSAGECONTROLKHRPROC) (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list);
954typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEBUGKHRPROC) (EGLint attribute, EGLAttrib *value);
955typedef EGLint (EGLAPIENTRYP PFNEGLLABELOBJECTKHRPROC) (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
956#ifdef EGL_EGLEXT_PROTOTYPES
957EGLAPI EGLint EGLAPIENTRY eglDebugMessageControlKHR (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list);
958EGLAPI EGLBoolean EGLAPIENTRY eglQueryDebugKHR (EGLint attribute, EGLAttrib *value);
959EGLAPI EGLint EGLAPIENTRY eglLabelObjectKHR (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
960#endif
961#endif /* EGL_KHR_debug */
962
963#ifndef EGL_KHR_display_reference
964#define EGL_KHR_display_reference 1
965#define EGL_TRACK_REFERENCES_KHR 0x3352
966typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBKHRPROC) (EGLDisplay dpy, EGLint name, EGLAttrib *value);
967#ifdef EGL_EGLEXT_PROTOTYPES
968EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribKHR (EGLDisplay dpy, EGLint name, EGLAttrib *value);
969#endif
970#endif /* EGL_KHR_display_reference */
971
972#ifndef EGL_KHR_fence_sync
973#define EGL_KHR_fence_sync 1
974typedef khronos_utime_nanoseconds_t EGLTimeKHR;
975#ifdef KHRONOS_SUPPORT_INT64
976#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
977#define EGL_SYNC_CONDITION_KHR 0x30F8
978#define EGL_SYNC_FENCE_KHR 0x30F9
979typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
980typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
981typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
982typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
983#ifdef EGL_EGLEXT_PROTOTYPES
984EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
985EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync);
986EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
987EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
988#endif
989#endif /* KHRONOS_SUPPORT_INT64 */
990#endif /* EGL_KHR_fence_sync */
991
992#ifndef EGL_KHR_get_all_proc_addresses
993#define EGL_KHR_get_all_proc_addresses 1
994#endif /* EGL_KHR_get_all_proc_addresses */
995
996#ifndef EGL_KHR_gl_colorspace
997#define EGL_KHR_gl_colorspace 1
998#define EGL_GL_COLORSPACE_KHR 0x309D
999#define EGL_GL_COLORSPACE_SRGB_KHR 0x3089
1000#define EGL_GL_COLORSPACE_LINEAR_KHR 0x308A
1001#endif /* EGL_KHR_gl_colorspace */
1002
1003#ifndef EGL_KHR_gl_renderbuffer_image
1004#define EGL_KHR_gl_renderbuffer_image 1
1005#define EGL_GL_RENDERBUFFER_KHR 0x30B9
1006#endif /* EGL_KHR_gl_renderbuffer_image */
1007
1008#ifndef EGL_KHR_gl_texture_2D_image
1009#define EGL_KHR_gl_texture_2D_image 1
1010#define EGL_GL_TEXTURE_2D_KHR 0x30B1
1011#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC
1012#endif /* EGL_KHR_gl_texture_2D_image */
1013
1014#ifndef EGL_KHR_gl_texture_3D_image
1015#define EGL_KHR_gl_texture_3D_image 1
1016#define EGL_GL_TEXTURE_3D_KHR 0x30B2
1017#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD
1018#endif /* EGL_KHR_gl_texture_3D_image */
1019
1020#ifndef EGL_KHR_gl_texture_cubemap_image
1021#define EGL_KHR_gl_texture_cubemap_image 1
1022#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
1023#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
1024#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
1025#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
1026#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
1027#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
1028#endif /* EGL_KHR_gl_texture_cubemap_image */
1029
1030#ifndef EGL_KHR_image
1031#define EGL_KHR_image 1
1032typedef void *EGLImageKHR;
1033#define EGL_NATIVE_PIXMAP_KHR 0x30B0
1034#define EGL_NO_IMAGE_KHR EGL_CAST(EGLImageKHR,0)
1035typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
1036typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
1037#ifdef EGL_EGLEXT_PROTOTYPES
1038EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
1039EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
1040#endif
1041#endif /* EGL_KHR_image */
1042
1043#ifndef EGL_KHR_image_base
1044#define EGL_KHR_image_base 1
1045#define EGL_IMAGE_PRESERVED_KHR 0x30D2
1046#endif /* EGL_KHR_image_base */
1047
1048#ifndef EGL_KHR_image_pixmap
1049#define EGL_KHR_image_pixmap 1
1050#endif /* EGL_KHR_image_pixmap */
1051
1052#ifndef EGL_KHR_lock_surface
1053#define EGL_KHR_lock_surface 1
1054#define EGL_READ_SURFACE_BIT_KHR 0x0001
1055#define EGL_WRITE_SURFACE_BIT_KHR 0x0002
1056#define EGL_LOCK_SURFACE_BIT_KHR 0x0080
1057#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
1058#define EGL_MATCH_FORMAT_KHR 0x3043
1059#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
1060#define EGL_FORMAT_RGB_565_KHR 0x30C1
1061#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
1062#define EGL_FORMAT_RGBA_8888_KHR 0x30C3
1063#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
1064#define EGL_LOCK_USAGE_HINT_KHR 0x30C5
1065#define EGL_BITMAP_POINTER_KHR 0x30C6
1066#define EGL_BITMAP_PITCH_KHR 0x30C7
1067#define EGL_BITMAP_ORIGIN_KHR 0x30C8
1068#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
1069#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
1070#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
1071#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
1072#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
1073#define EGL_LOWER_LEFT_KHR 0x30CE
1074#define EGL_UPPER_LEFT_KHR 0x30CF
1075typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
1076typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface);
1077#ifdef EGL_EGLEXT_PROTOTYPES
1078EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
1079EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface);
1080#endif
1081#endif /* EGL_KHR_lock_surface */
1082
1083#ifndef EGL_KHR_lock_surface2
1084#define EGL_KHR_lock_surface2 1
1085#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
1086#endif /* EGL_KHR_lock_surface2 */
1087
1088#ifndef EGL_KHR_lock_surface3
1089#define EGL_KHR_lock_surface3 1
1090typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACE64KHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
1091#ifdef EGL_EGLEXT_PROTOTYPES
1092EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
1093#endif
1094#endif /* EGL_KHR_lock_surface3 */
1095
1096#ifndef EGL_KHR_mutable_render_buffer
1097#define EGL_KHR_mutable_render_buffer 1
1098#define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000
1099#endif /* EGL_KHR_mutable_render_buffer */
1100
1101#ifndef EGL_KHR_no_config_context
1102#define EGL_KHR_no_config_context 1
1103#define EGL_NO_CONFIG_KHR EGL_CAST(EGLConfig,0)
1104#endif /* EGL_KHR_no_config_context */
1105
1106#ifndef EGL_KHR_partial_update
1107#define EGL_KHR_partial_update 1
1108#define EGL_BUFFER_AGE_KHR 0x313D
1109typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETDAMAGEREGIONKHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
1110#ifdef EGL_EGLEXT_PROTOTYPES
1111EGLAPI EGLBoolean EGLAPIENTRY eglSetDamageRegionKHR (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
1112#endif
1113#endif /* EGL_KHR_partial_update */
1114
1115#ifndef EGL_KHR_platform_android
1116#define EGL_KHR_platform_android 1
1117#define EGL_PLATFORM_ANDROID_KHR 0x3141
1118#endif /* EGL_KHR_platform_android */
1119
1120#ifndef EGL_KHR_platform_gbm
1121#define EGL_KHR_platform_gbm 1
1122#define EGL_PLATFORM_GBM_KHR 0x31D7
1123#endif /* EGL_KHR_platform_gbm */
1124
1125#ifndef EGL_KHR_platform_wayland
1126#define EGL_KHR_platform_wayland 1
1127#define EGL_PLATFORM_WAYLAND_KHR 0x31D8
1128#endif /* EGL_KHR_platform_wayland */
1129
1130#ifndef EGL_KHR_platform_x11
1131#define EGL_KHR_platform_x11 1
1132#define EGL_PLATFORM_X11_KHR 0x31D5
1133#define EGL_PLATFORM_X11_SCREEN_KHR 0x31D6
1134#endif /* EGL_KHR_platform_x11 */
1135
1136#ifndef EGL_KHR_reusable_sync
1137#define EGL_KHR_reusable_sync 1
1138#ifdef KHRONOS_SUPPORT_INT64
1139#define EGL_SYNC_STATUS_KHR 0x30F1
1140#define EGL_SIGNALED_KHR 0x30F2
1141#define EGL_UNSIGNALED_KHR 0x30F3
1142#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5
1143#define EGL_CONDITION_SATISFIED_KHR 0x30F6
1144#define EGL_SYNC_TYPE_KHR 0x30F7
1145#define EGL_SYNC_REUSABLE_KHR 0x30FA
1146#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
1147#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
1148#define EGL_NO_SYNC_KHR EGL_CAST(EGLSyncKHR,0)
1149typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
1150#ifdef EGL_EGLEXT_PROTOTYPES
1151EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
1152#endif
1153#endif /* KHRONOS_SUPPORT_INT64 */
1154#endif /* EGL_KHR_reusable_sync */
1155
1156#ifndef EGL_KHR_stream
1157#define EGL_KHR_stream 1
1158typedef void *EGLStreamKHR;
1159typedef khronos_uint64_t EGLuint64KHR;
1160#ifdef KHRONOS_SUPPORT_INT64
1161#define EGL_NO_STREAM_KHR EGL_CAST(EGLStreamKHR,0)
1162#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
1163#define EGL_PRODUCER_FRAME_KHR 0x3212
1164#define EGL_CONSUMER_FRAME_KHR 0x3213
1165#define EGL_STREAM_STATE_KHR 0x3214
1166#define EGL_STREAM_STATE_CREATED_KHR 0x3215
1167#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216
1168#define EGL_STREAM_STATE_EMPTY_KHR 0x3217
1169#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
1170#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
1171#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
1172#define EGL_BAD_STREAM_KHR 0x321B
1173#define EGL_BAD_STATE_KHR 0x321C
1174typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint *attrib_list);
1175typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
1176typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
1177typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
1178typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
1179#ifdef EGL_EGLEXT_PROTOTYPES
1180EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR (EGLDisplay dpy, const EGLint *attrib_list);
1181EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream);
1182EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
1183EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
1184EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
1185#endif
1186#endif /* KHRONOS_SUPPORT_INT64 */
1187#endif /* EGL_KHR_stream */
1188
1189#ifndef EGL_KHR_stream_attrib
1190#define EGL_KHR_stream_attrib 1
1191#ifdef KHRONOS_SUPPORT_INT64
1192typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMATTRIBKHRPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list);
1193typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);
1194typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib *value);
1195typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
1196typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
1197#ifdef EGL_EGLEXT_PROTOTYPES
1198EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamAttribKHR (EGLDisplay dpy, const EGLAttrib *attrib_list);
1199EGLAPI EGLBoolean EGLAPIENTRY eglSetStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);
1200EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib *value);
1201EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
1202EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
1203#endif
1204#endif /* KHRONOS_SUPPORT_INT64 */
1205#endif /* EGL_KHR_stream_attrib */
1206
1207#ifndef EGL_KHR_stream_consumer_gltexture
1208#define EGL_KHR_stream_consumer_gltexture 1
1209#ifdef EGL_KHR_stream
1210#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
1211typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
1212typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
1213typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
1214#ifdef EGL_EGLEXT_PROTOTYPES
1215EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream);
1216EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream);
1217EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream);
1218#endif
1219#endif /* EGL_KHR_stream */
1220#endif /* EGL_KHR_stream_consumer_gltexture */
1221
1222#ifndef EGL_KHR_stream_cross_process_fd
1223#define EGL_KHR_stream_cross_process_fd 1
1224typedef int EGLNativeFileDescriptorKHR;
1225#ifdef EGL_KHR_stream
1226#define EGL_NO_FILE_DESCRIPTOR_KHR EGL_CAST(EGLNativeFileDescriptorKHR,-1)
1227typedef EGLNativeFileDescriptorKHR (EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
1228typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
1229#ifdef EGL_EGLEXT_PROTOTYPES
1230EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream);
1231EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
1232#endif
1233#endif /* EGL_KHR_stream */
1234#endif /* EGL_KHR_stream_cross_process_fd */
1235
1236#ifndef EGL_KHR_stream_fifo
1237#define EGL_KHR_stream_fifo 1
1238#ifdef EGL_KHR_stream
1239#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC
1240#define EGL_STREAM_TIME_NOW_KHR 0x31FD
1241#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE
1242#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF
1243typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
1244#ifdef EGL_EGLEXT_PROTOTYPES
1245EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
1246#endif
1247#endif /* EGL_KHR_stream */
1248#endif /* EGL_KHR_stream_fifo */
1249
1250#ifndef EGL_KHR_stream_producer_aldatalocator
1251#define EGL_KHR_stream_producer_aldatalocator 1
1252#ifdef EGL_KHR_stream
1253#endif /* EGL_KHR_stream */
1254#endif /* EGL_KHR_stream_producer_aldatalocator */
1255
1256#ifndef EGL_KHR_stream_producer_eglsurface
1257#define EGL_KHR_stream_producer_eglsurface 1
1258#ifdef EGL_KHR_stream
1259#define EGL_STREAM_BIT_KHR 0x0800
1260typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
1261#ifdef EGL_EGLEXT_PROTOTYPES
1262EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
1263#endif
1264#endif /* EGL_KHR_stream */
1265#endif /* EGL_KHR_stream_producer_eglsurface */
1266
1267#ifndef EGL_KHR_surfaceless_context
1268#define EGL_KHR_surfaceless_context 1
1269#endif /* EGL_KHR_surfaceless_context */
1270
1271#ifndef EGL_KHR_swap_buffers_with_damage
1272#define EGL_KHR_swap_buffers_with_damage 1
1273typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
1274#ifdef EGL_EGLEXT_PROTOTYPES
1275EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
1276#endif
1277#endif /* EGL_KHR_swap_buffers_with_damage */
1278
1279#ifndef EGL_KHR_vg_parent_image
1280#define EGL_KHR_vg_parent_image 1
1281#define EGL_VG_PARENT_IMAGE_KHR 0x30BA
1282#endif /* EGL_KHR_vg_parent_image */
1283
1284#ifndef EGL_KHR_wait_sync
1285#define EGL_KHR_wait_sync 1
1286typedef EGLint (EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
1287#ifdef EGL_EGLEXT_PROTOTYPES
1288EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
1289#endif
1290#endif /* EGL_KHR_wait_sync */
1291
1292#ifndef EGL_ANDROID_GLES_layers
1293#define EGL_ANDROID_GLES_layers 1
1294#endif /* EGL_ANDROID_GLES_layers */
1295
1296#ifndef EGL_ANDROID_blob_cache
1297#define EGL_ANDROID_blob_cache 1
1298typedef khronos_ssize_t EGLsizeiANDROID;
1299typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);
1300typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);
1301typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
1302#ifdef EGL_EGLEXT_PROTOTYPES
1303EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
1304#endif
1305#endif /* EGL_ANDROID_blob_cache */
1306
1307#ifndef EGL_ANDROID_create_native_client_buffer
1308#define EGL_ANDROID_create_native_client_buffer 1
1309#define EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143
1310#define EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001
1311#define EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002
1312#define EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004
1313typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC) (const EGLint *attrib_list);
1314#ifdef EGL_EGLEXT_PROTOTYPES
1315EGLAPI EGLClientBuffer EGLAPIENTRY eglCreateNativeClientBufferANDROID (const EGLint *attrib_list);
1316#endif
1317#endif /* EGL_ANDROID_create_native_client_buffer */
1318
1319#ifndef EGL_ANDROID_framebuffer_target
1320#define EGL_ANDROID_framebuffer_target 1
1321#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147
1322#endif /* EGL_ANDROID_framebuffer_target */
1323
1324#ifndef EGL_ANDROID_front_buffer_auto_refresh
1325#define EGL_ANDROID_front_buffer_auto_refresh 1
1326#define EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C
1327#endif /* EGL_ANDROID_front_buffer_auto_refresh */
1328
1329#ifndef EGL_ANDROID_get_frame_timestamps
1330#define EGL_ANDROID_get_frame_timestamps 1
1331typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
1332#define EGL_TIMESTAMP_PENDING_ANDROID EGL_CAST(EGLnsecsANDROID,-2)
1333#define EGL_TIMESTAMP_INVALID_ANDROID EGL_CAST(EGLnsecsANDROID,-1)
1334#define EGL_TIMESTAMPS_ANDROID 0x3430
1335#define EGL_COMPOSITE_DEADLINE_ANDROID 0x3431
1336#define EGL_COMPOSITE_INTERVAL_ANDROID 0x3432
1337#define EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433
1338#define EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434
1339#define EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435
1340#define EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436
1341#define EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437
1342#define EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438
1343#define EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439
1344#define EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A
1345#define EGL_DEQUEUE_READY_TIME_ANDROID 0x343B
1346#define EGL_READS_DONE_TIME_ANDROID 0x343C
1347typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint name);
1348typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values);
1349typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETNEXTFRAMEIDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId);
1350typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint timestamp);
1351typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values);
1352#ifdef EGL_EGLEXT_PROTOTYPES
1353EGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint name);
1354EGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingANDROID (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values);
1355EGLAPI EGLBoolean EGLAPIENTRY eglGetNextFrameIdANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId);
1356EGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint timestamp);
1357EGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampsANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values);
1358#endif
1359#endif /* EGL_ANDROID_get_frame_timestamps */
1360
1361#ifndef EGL_ANDROID_get_native_client_buffer
1362#define EGL_ANDROID_get_native_client_buffer 1
1363struct AHardwareBuffer;
1364typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC) (const struct AHardwareBuffer *buffer);
1365#ifdef EGL_EGLEXT_PROTOTYPES
1366EGLAPI EGLClientBuffer EGLAPIENTRY eglGetNativeClientBufferANDROID (const struct AHardwareBuffer *buffer);
1367#endif
1368#endif /* EGL_ANDROID_get_native_client_buffer */
1369
1370#ifndef EGL_ANDROID_image_native_buffer
1371#define EGL_ANDROID_image_native_buffer 1
1372#define EGL_NATIVE_BUFFER_ANDROID 0x3140
1373#endif /* EGL_ANDROID_image_native_buffer */
1374
1375#ifndef EGL_ANDROID_native_fence_sync
1376#define EGL_ANDROID_native_fence_sync 1
1377#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144
1378#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145
1379#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
1380#define EGL_NO_NATIVE_FENCE_FD_ANDROID -1
1381typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync);
1382#ifdef EGL_EGLEXT_PROTOTYPES
1383EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync);
1384#endif
1385#endif /* EGL_ANDROID_native_fence_sync */
1386
1387#ifndef EGL_ANDROID_presentation_time
1388#define EGL_ANDROID_presentation_time 1
1389typedef EGLBoolean (EGLAPIENTRYP PFNEGLPRESENTATIONTIMEANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
1390#ifdef EGL_EGLEXT_PROTOTYPES
1391EGLAPI EGLBoolean EGLAPIENTRY eglPresentationTimeANDROID (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
1392#endif
1393#endif /* EGL_ANDROID_presentation_time */
1394
1395#ifndef EGL_ANDROID_recordable
1396#define EGL_ANDROID_recordable 1
1397#define EGL_RECORDABLE_ANDROID 0x3142
1398#endif /* EGL_ANDROID_recordable */
1399
1400#ifndef EGL_ANGLE_d3d_share_handle_client_buffer
1401#define EGL_ANGLE_d3d_share_handle_client_buffer 1
1402#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
1403#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
1404
1405#ifndef EGL_ANGLE_device_d3d
1406#define EGL_ANGLE_device_d3d 1
1407#define EGL_D3D9_DEVICE_ANGLE 0x33A0
1408#define EGL_D3D11_DEVICE_ANGLE 0x33A1
1409#endif /* EGL_ANGLE_device_d3d */
1410
1411#ifndef EGL_ANGLE_query_surface_pointer
1412#define EGL_ANGLE_query_surface_pointer 1
1413typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
1414#ifdef EGL_EGLEXT_PROTOTYPES
1415EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
1416#endif
1417#endif /* EGL_ANGLE_query_surface_pointer */
1418
1419#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle
1420#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1
1421#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
1422
1423#ifndef EGL_ANGLE_sync_control_rate
1424#define EGL_ANGLE_sync_control_rate 1
1425typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMSCRATEANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);
1426#ifdef EGL_EGLEXT_PROTOTYPES
1427EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateANGLE (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);
1428#endif
1429#endif /* EGL_ANGLE_sync_control_rate */
1430
1431#ifndef EGL_ANGLE_window_fixed_size
1432#define EGL_ANGLE_window_fixed_size 1
1433#define EGL_FIXED_SIZE_ANGLE 0x3201
1434#endif /* EGL_ANGLE_window_fixed_size */
1435
1436#ifndef EGL_ARM_image_format
1437#define EGL_ARM_image_format 1
1438#define EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM 0x3287
1439#define EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM 0x3288
1440#endif /* EGL_ARM_image_format */
1441
1442#ifndef EGL_ARM_implicit_external_sync
1443#define EGL_ARM_implicit_external_sync 1
1444#define EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM 0x328A
1445#endif /* EGL_ARM_implicit_external_sync */
1446
1447#ifndef EGL_ARM_pixmap_multisample_discard
1448#define EGL_ARM_pixmap_multisample_discard 1
1449#define EGL_DISCARD_SAMPLES_ARM 0x3286
1450#endif /* EGL_ARM_pixmap_multisample_discard */
1451
1452#ifndef EGL_EXT_bind_to_front
1453#define EGL_EXT_bind_to_front 1
1454#define EGL_FRONT_BUFFER_EXT 0x3464
1455#endif /* EGL_EXT_bind_to_front */
1456
1457#ifndef EGL_EXT_buffer_age
1458#define EGL_EXT_buffer_age 1
1459#define EGL_BUFFER_AGE_EXT 0x313D
1460#endif /* EGL_EXT_buffer_age */
1461
1462#ifndef EGL_EXT_client_extensions
1463#define EGL_EXT_client_extensions 1
1464#endif /* EGL_EXT_client_extensions */
1465
1466#ifndef EGL_EXT_client_sync
1467#define EGL_EXT_client_sync 1
1468#define EGL_SYNC_CLIENT_EXT 0x3364
1469#define EGL_SYNC_CLIENT_SIGNAL_EXT 0x3365
1470typedef EGLBoolean (EGLAPIENTRYP PFNEGLCLIENTSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
1471#ifdef EGL_EGLEXT_PROTOTYPES
1472EGLAPI EGLBoolean EGLAPIENTRY eglClientSignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
1473#endif
1474#endif /* EGL_EXT_client_sync */
1475
1476#ifndef EGL_EXT_compositor
1477#define EGL_EXT_compositor 1
1478#define EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT 0x3460
1479#define EGL_EXTERNAL_REF_ID_EXT 0x3461
1480#define EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT 0x3462
1481#define EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT 0x3463
1482typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC) (const EGLint *external_ref_ids, EGLint num_entries);
1483typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC) (EGLint external_ref_id, const EGLint *context_attributes, EGLint num_entries);
1484typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC) (EGLint external_ref_id, const EGLint *external_win_ids, EGLint num_entries);
1485typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC) (EGLint external_win_id, const EGLint *window_attributes, EGLint num_entries);
1486typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC) (EGLint external_win_id);
1487typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETSIZEEXTPROC) (EGLint external_win_id, EGLint width, EGLint height);
1488typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSWAPPOLICYEXTPROC) (EGLint external_win_id, EGLint policy);
1489#ifdef EGL_EGLEXT_PROTOTYPES
1490EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetContextListEXT (const EGLint *external_ref_ids, EGLint num_entries);
1491EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetContextAttributesEXT (EGLint external_ref_id, const EGLint *context_attributes, EGLint num_entries);
1492EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetWindowListEXT (EGLint external_ref_id, const EGLint *external_win_ids, EGLint num_entries);
1493EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetWindowAttributesEXT (EGLint external_win_id, const EGLint *window_attributes, EGLint num_entries);
1494EGLAPI EGLBoolean EGLAPIENTRY eglCompositorBindTexWindowEXT (EGLint external_win_id);
1495EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetSizeEXT (EGLint external_win_id, EGLint width, EGLint height);
1496EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSwapPolicyEXT (EGLint external_win_id, EGLint policy);
1497#endif
1498#endif /* EGL_EXT_compositor */
1499
1500#ifndef EGL_EXT_config_select_group
1501#define EGL_EXT_config_select_group 1
1502#define EGL_CONFIG_SELECT_GROUP_EXT 0x34C0
1503#endif /* EGL_EXT_config_select_group */
1504
1505#ifndef EGL_EXT_create_context_robustness
1506#define EGL_EXT_create_context_robustness 1
1507#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
1508#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
1509#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE
1510#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF
1511#endif /* EGL_EXT_create_context_robustness */
1512
1513#ifndef EGL_EXT_device_base
1514#define EGL_EXT_device_base 1
1515typedef void *EGLDeviceEXT;
1516#define EGL_NO_DEVICE_EXT EGL_CAST(EGLDeviceEXT,0)
1517#define EGL_BAD_DEVICE_EXT 0x322B
1518#define EGL_DEVICE_EXT 0x322C
1519typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEATTRIBEXTPROC) (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
1520typedef const char *(EGLAPIENTRYP PFNEGLQUERYDEVICESTRINGEXTPROC) (EGLDeviceEXT device, EGLint name);
1521typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICESEXTPROC) (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
1522typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBEXTPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
1523#ifdef EGL_EGLEXT_PROTOTYPES
1524EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceAttribEXT (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
1525EGLAPI const char *EGLAPIENTRY eglQueryDeviceStringEXT (EGLDeviceEXT device, EGLint name);
1526EGLAPI EGLBoolean EGLAPIENTRY eglQueryDevicesEXT (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
1527EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
1528#endif
1529#endif /* EGL_EXT_device_base */
1530
1531#ifndef EGL_EXT_device_drm
1532#define EGL_EXT_device_drm 1
1533#define EGL_DRM_DEVICE_FILE_EXT 0x3233
1534#define EGL_DRM_MASTER_FD_EXT 0x333C
1535#endif /* EGL_EXT_device_drm */
1536
1537#ifndef EGL_EXT_device_drm_render_node
1538#define EGL_EXT_device_drm_render_node 1
1539#define EGL_DRM_RENDER_NODE_FILE_EXT 0x3377
1540#endif /* EGL_EXT_device_drm_render_node */
1541
1542#ifndef EGL_EXT_device_enumeration
1543#define EGL_EXT_device_enumeration 1
1544#endif /* EGL_EXT_device_enumeration */
1545
1546#ifndef EGL_EXT_device_openwf
1547#define EGL_EXT_device_openwf 1
1548#define EGL_OPENWF_DEVICE_ID_EXT 0x3237
1549#define EGL_OPENWF_DEVICE_EXT 0x333D
1550#endif /* EGL_EXT_device_openwf */
1551
1552#ifndef EGL_EXT_device_persistent_id
1553#define EGL_EXT_device_persistent_id 1
1554#define EGL_DEVICE_UUID_EXT 0x335C
1555#define EGL_DRIVER_UUID_EXT 0x335D
1556#define EGL_DRIVER_NAME_EXT 0x335E
1557typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEBINARYEXTPROC) (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);
1558#ifdef EGL_EGLEXT_PROTOTYPES
1559EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceBinaryEXT (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);
1560#endif
1561#endif /* EGL_EXT_device_persistent_id */
1562
1563#ifndef EGL_EXT_device_query
1564#define EGL_EXT_device_query 1
1565#endif /* EGL_EXT_device_query */
1566
1567#ifndef EGL_EXT_device_query_name
1568#define EGL_EXT_device_query_name 1
1569#define EGL_RENDERER_EXT 0x335F
1570#endif /* EGL_EXT_device_query_name */
1571
1572#ifndef EGL_EXT_gl_colorspace_bt2020_linear
1573#define EGL_EXT_gl_colorspace_bt2020_linear 1
1574#define EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
1575#endif /* EGL_EXT_gl_colorspace_bt2020_linear */
1576
1577#ifndef EGL_EXT_gl_colorspace_bt2020_pq
1578#define EGL_EXT_gl_colorspace_bt2020_pq 1
1579#define EGL_GL_COLORSPACE_BT2020_PQ_EXT 0x3340
1580#endif /* EGL_EXT_gl_colorspace_bt2020_pq */
1581
1582#ifndef EGL_EXT_gl_colorspace_display_p3
1583#define EGL_EXT_gl_colorspace_display_p3 1
1584#define EGL_GL_COLORSPACE_DISPLAY_P3_EXT 0x3363
1585#endif /* EGL_EXT_gl_colorspace_display_p3 */
1586
1587#ifndef EGL_EXT_gl_colorspace_display_p3_linear
1588#define EGL_EXT_gl_colorspace_display_p3_linear 1
1589#define EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362
1590#endif /* EGL_EXT_gl_colorspace_display_p3_linear */
1591
1592#ifndef EGL_EXT_gl_colorspace_display_p3_passthrough
1593#define EGL_EXT_gl_colorspace_display_p3_passthrough 1
1594#define EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT 0x3490
1595#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */
1596
1597#ifndef EGL_EXT_gl_colorspace_scrgb
1598#define EGL_EXT_gl_colorspace_scrgb 1
1599#define EGL_GL_COLORSPACE_SCRGB_EXT 0x3351
1600#endif /* EGL_EXT_gl_colorspace_scrgb */
1601
1602#ifndef EGL_EXT_gl_colorspace_scrgb_linear
1603#define EGL_EXT_gl_colorspace_scrgb_linear 1
1604#define EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT 0x3350
1605#endif /* EGL_EXT_gl_colorspace_scrgb_linear */
1606
1607#ifndef EGL_EXT_image_dma_buf_import
1608#define EGL_EXT_image_dma_buf_import 1
1609#define EGL_LINUX_DMA_BUF_EXT 0x3270
1610#define EGL_LINUX_DRM_FOURCC_EXT 0x3271
1611#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
1612#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
1613#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
1614#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275
1615#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276
1616#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277
1617#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278
1618#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279
1619#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A
1620#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B
1621#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C
1622#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
1623#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
1624#define EGL_ITU_REC601_EXT 0x327F
1625#define EGL_ITU_REC709_EXT 0x3280
1626#define EGL_ITU_REC2020_EXT 0x3281
1627#define EGL_YUV_FULL_RANGE_EXT 0x3282
1628#define EGL_YUV_NARROW_RANGE_EXT 0x3283
1629#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284
1630#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285
1631#endif /* EGL_EXT_image_dma_buf_import */
1632
1633#ifndef EGL_EXT_image_dma_buf_import_modifiers
1634#define EGL_EXT_image_dma_buf_import_modifiers 1
1635#define EGL_DMA_BUF_PLANE3_FD_EXT 0x3440
1636#define EGL_DMA_BUF_PLANE3_OFFSET_EXT 0x3441
1637#define EGL_DMA_BUF_PLANE3_PITCH_EXT 0x3442
1638#define EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443
1639#define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444
1640#define EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445
1641#define EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446
1642#define EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447
1643#define EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448
1644#define EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449
1645#define EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A
1646typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFFORMATSEXTPROC) (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats);
1647typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFMODIFIERSEXTPROC) (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers);
1648#ifdef EGL_EGLEXT_PROTOTYPES
1649EGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufFormatsEXT (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats);
1650EGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufModifiersEXT (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers);
1651#endif
1652#endif /* EGL_EXT_image_dma_buf_import_modifiers */
1653
1654#ifndef EGL_EXT_image_gl_colorspace
1655#define EGL_EXT_image_gl_colorspace 1
1656#define EGL_GL_COLORSPACE_DEFAULT_EXT 0x314D
1657#endif /* EGL_EXT_image_gl_colorspace */
1658
1659#ifndef EGL_EXT_image_implicit_sync_control
1660#define EGL_EXT_image_implicit_sync_control 1
1661#define EGL_IMPORT_SYNC_TYPE_EXT 0x3470
1662#define EGL_IMPORT_IMPLICIT_SYNC_EXT 0x3471
1663#define EGL_IMPORT_EXPLICIT_SYNC_EXT 0x3472
1664#endif /* EGL_EXT_image_implicit_sync_control */
1665
1666#ifndef EGL_EXT_multiview_window
1667#define EGL_EXT_multiview_window 1
1668#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134
1669#endif /* EGL_EXT_multiview_window */
1670
1671#ifndef EGL_EXT_output_base
1672#define EGL_EXT_output_base 1
1673typedef void *EGLOutputLayerEXT;
1674typedef void *EGLOutputPortEXT;
1675#define EGL_NO_OUTPUT_LAYER_EXT EGL_CAST(EGLOutputLayerEXT,0)
1676#define EGL_NO_OUTPUT_PORT_EXT EGL_CAST(EGLOutputPortEXT,0)
1677#define EGL_BAD_OUTPUT_LAYER_EXT 0x322D
1678#define EGL_BAD_OUTPUT_PORT_EXT 0x322E
1679#define EGL_SWAP_INTERVAL_EXT 0x322F
1680typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTLAYERSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);
1681typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTPORTSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);
1682typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
1683typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);
1684typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
1685typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
1686typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);
1687typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
1688#ifdef EGL_EGLEXT_PROTOTYPES
1689EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputLayersEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);
1690EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputPortsEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);
1691EGLAPI EGLBoolean EGLAPIENTRY eglOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
1692EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);
1693EGLAPI const char *EGLAPIENTRY eglQueryOutputLayerStringEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
1694EGLAPI EGLBoolean EGLAPIENTRY eglOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
1695EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);
1696EGLAPI const char *EGLAPIENTRY eglQueryOutputPortStringEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
1697#endif
1698#endif /* EGL_EXT_output_base */
1699
1700#ifndef EGL_EXT_output_drm
1701#define EGL_EXT_output_drm 1
1702#define EGL_DRM_CRTC_EXT 0x3234
1703#define EGL_DRM_PLANE_EXT 0x3235
1704#define EGL_DRM_CONNECTOR_EXT 0x3236
1705#endif /* EGL_EXT_output_drm */
1706
1707#ifndef EGL_EXT_output_openwf
1708#define EGL_EXT_output_openwf 1
1709#define EGL_OPENWF_PIPELINE_ID_EXT 0x3238
1710#define EGL_OPENWF_PORT_ID_EXT 0x3239
1711#endif /* EGL_EXT_output_openwf */
1712
1713#ifndef EGL_EXT_pixel_format_float
1714#define EGL_EXT_pixel_format_float 1
1715#define EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
1716#define EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A
1717#define EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
1718#endif /* EGL_EXT_pixel_format_float */
1719
1720#ifndef EGL_EXT_platform_base
1721#define EGL_EXT_platform_base 1
1722typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list);
1723typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
1724typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
1725#ifdef EGL_EGLEXT_PROTOTYPES
1726EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT (EGLenum platform, void *native_display, const EGLint *attrib_list);
1727EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
1728EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
1729#endif
1730#endif /* EGL_EXT_platform_base */
1731
1732#ifndef EGL_EXT_platform_device
1733#define EGL_EXT_platform_device 1
1734#define EGL_PLATFORM_DEVICE_EXT 0x313F
1735#endif /* EGL_EXT_platform_device */
1736
1737#ifndef EGL_EXT_platform_wayland
1738#define EGL_EXT_platform_wayland 1
1739#define EGL_PLATFORM_WAYLAND_EXT 0x31D8
1740#endif /* EGL_EXT_platform_wayland */
1741
1742#ifndef EGL_EXT_platform_x11
1743#define EGL_EXT_platform_x11 1
1744#define EGL_PLATFORM_X11_EXT 0x31D5
1745#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
1746#endif /* EGL_EXT_platform_x11 */
1747
1748#ifndef EGL_EXT_platform_xcb
1749#define EGL_EXT_platform_xcb 1
1750#define EGL_PLATFORM_XCB_EXT 0x31DC
1751#define EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE
1752#endif /* EGL_EXT_platform_xcb */
1753
1754#ifndef EGL_EXT_present_opaque
1755#define EGL_EXT_present_opaque 1
1756#define EGL_PRESENT_OPAQUE_EXT 0x31DF
1757#endif /* EGL_EXT_present_opaque */
1758
1759#ifndef EGL_EXT_protected_content
1760#define EGL_EXT_protected_content 1
1761#define EGL_PROTECTED_CONTENT_EXT 0x32C0
1762#endif /* EGL_EXT_protected_content */
1763
1764#ifndef EGL_EXT_protected_surface
1765#define EGL_EXT_protected_surface 1
1766#endif /* EGL_EXT_protected_surface */
1767
1768#ifndef EGL_EXT_stream_consumer_egloutput
1769#define EGL_EXT_stream_consumer_egloutput 1
1770typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMEROUTPUTEXTPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
1771#ifdef EGL_EGLEXT_PROTOTYPES
1772EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerOutputEXT (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
1773#endif
1774#endif /* EGL_EXT_stream_consumer_egloutput */
1775
1776#ifndef EGL_EXT_surface_CTA861_3_metadata
1777#define EGL_EXT_surface_CTA861_3_metadata 1
1778#define EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT 0x3360
1779#define EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT 0x3361
1780#endif /* EGL_EXT_surface_CTA861_3_metadata */
1781
1782#ifndef EGL_EXT_surface_SMPTE2086_metadata
1783#define EGL_EXT_surface_SMPTE2086_metadata 1
1784#define EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT 0x3341
1785#define EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT 0x3342
1786#define EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT 0x3343
1787#define EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT 0x3344
1788#define EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT 0x3345
1789#define EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT 0x3346
1790#define EGL_SMPTE2086_WHITE_POINT_X_EXT 0x3347
1791#define EGL_SMPTE2086_WHITE_POINT_Y_EXT 0x3348
1792#define EGL_SMPTE2086_MAX_LUMINANCE_EXT 0x3349
1793#define EGL_SMPTE2086_MIN_LUMINANCE_EXT 0x334A
1794#define EGL_METADATA_SCALING_EXT 50000
1795#endif /* EGL_EXT_surface_SMPTE2086_metadata */
1796
1797#ifndef EGL_EXT_swap_buffers_with_damage
1798#define EGL_EXT_swap_buffers_with_damage 1
1799typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
1800#ifdef EGL_EGLEXT_PROTOTYPES
1801EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
1802#endif
1803#endif /* EGL_EXT_swap_buffers_with_damage */
1804
1805#ifndef EGL_EXT_sync_reuse
1806#define EGL_EXT_sync_reuse 1
1807typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
1808#ifdef EGL_EGLEXT_PROTOTYPES
1809EGLAPI EGLBoolean EGLAPIENTRY eglUnsignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
1810#endif
1811#endif /* EGL_EXT_sync_reuse */
1812
1813#ifndef EGL_EXT_yuv_surface
1814#define EGL_EXT_yuv_surface 1
1815#define EGL_YUV_ORDER_EXT 0x3301
1816#define EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
1817#define EGL_YUV_SUBSAMPLE_EXT 0x3312
1818#define EGL_YUV_DEPTH_RANGE_EXT 0x3317
1819#define EGL_YUV_CSC_STANDARD_EXT 0x330A
1820#define EGL_YUV_PLANE_BPP_EXT 0x331A
1821#define EGL_YUV_BUFFER_EXT 0x3300
1822#define EGL_YUV_ORDER_YUV_EXT 0x3302
1823#define EGL_YUV_ORDER_YVU_EXT 0x3303
1824#define EGL_YUV_ORDER_YUYV_EXT 0x3304
1825#define EGL_YUV_ORDER_UYVY_EXT 0x3305
1826#define EGL_YUV_ORDER_YVYU_EXT 0x3306
1827#define EGL_YUV_ORDER_VYUY_EXT 0x3307
1828#define EGL_YUV_ORDER_AYUV_EXT 0x3308
1829#define EGL_YUV_SUBSAMPLE_4_2_0_EXT 0x3313
1830#define EGL_YUV_SUBSAMPLE_4_2_2_EXT 0x3314
1831#define EGL_YUV_SUBSAMPLE_4_4_4_EXT 0x3315
1832#define EGL_YUV_DEPTH_RANGE_LIMITED_EXT 0x3318
1833#define EGL_YUV_DEPTH_RANGE_FULL_EXT 0x3319
1834#define EGL_YUV_CSC_STANDARD_601_EXT 0x330B
1835#define EGL_YUV_CSC_STANDARD_709_EXT 0x330C
1836#define EGL_YUV_CSC_STANDARD_2020_EXT 0x330D
1837#define EGL_YUV_PLANE_BPP_0_EXT 0x331B
1838#define EGL_YUV_PLANE_BPP_8_EXT 0x331C
1839#define EGL_YUV_PLANE_BPP_10_EXT 0x331D
1840#endif /* EGL_EXT_yuv_surface */
1841
1842#ifndef EGL_HI_clientpixmap
1843#define EGL_HI_clientpixmap 1
1844struct EGLClientPixmapHI {
1845 void *pData;
1846 EGLint iWidth;
1847 EGLint iHeight;
1848 EGLint iStride;
1849};
1850#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74
1851typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
1852#ifdef EGL_EGLEXT_PROTOTYPES
1853EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
1854#endif
1855#endif /* EGL_HI_clientpixmap */
1856
1857#ifndef EGL_HI_colorformats
1858#define EGL_HI_colorformats 1
1859#define EGL_COLOR_FORMAT_HI 0x8F70
1860#define EGL_COLOR_RGB_HI 0x8F71
1861#define EGL_COLOR_RGBA_HI 0x8F72
1862#define EGL_COLOR_ARGB_HI 0x8F73
1863#endif /* EGL_HI_colorformats */
1864
1865#ifndef EGL_IMG_context_priority
1866#define EGL_IMG_context_priority 1
1867#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
1868#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
1869#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
1870#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
1871#endif /* EGL_IMG_context_priority */
1872
1873#ifndef EGL_IMG_image_plane_attribs
1874#define EGL_IMG_image_plane_attribs 1
1875#define EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105
1876#define EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106
1877#endif /* EGL_IMG_image_plane_attribs */
1878
1879#ifndef EGL_MESA_drm_image
1880#define EGL_MESA_drm_image 1
1881#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
1882#define EGL_DRM_BUFFER_USE_MESA 0x31D1
1883#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
1884#define EGL_DRM_BUFFER_MESA 0x31D3
1885#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
1886#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001
1887#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002
1888#define EGL_DRM_BUFFER_USE_CURSOR_MESA 0x00000004
1889typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list);
1890typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
1891#ifdef EGL_EGLEXT_PROTOTYPES
1892EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list);
1893EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
1894#endif
1895#endif /* EGL_MESA_drm_image */
1896
1897#ifndef EGL_MESA_image_dma_buf_export
1898#define EGL_MESA_image_dma_buf_export 1
1899typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);
1900typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);
1901#ifdef EGL_EGLEXT_PROTOTYPES
1902EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageQueryMESA (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);
1903EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageMESA (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);
1904#endif
1905#endif /* EGL_MESA_image_dma_buf_export */
1906
1907#ifndef EGL_MESA_platform_gbm
1908#define EGL_MESA_platform_gbm 1
1909#define EGL_PLATFORM_GBM_MESA 0x31D7
1910#endif /* EGL_MESA_platform_gbm */
1911
1912#ifndef EGL_MESA_platform_surfaceless
1913#define EGL_MESA_platform_surfaceless 1
1914#define EGL_PLATFORM_SURFACELESS_MESA 0x31DD
1915#endif /* EGL_MESA_platform_surfaceless */
1916
1917#ifndef EGL_MESA_query_driver
1918#define EGL_MESA_query_driver 1
1919typedef char *(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERCONFIGPROC) (EGLDisplay dpy);
1920typedef const char *(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERNAMEPROC) (EGLDisplay dpy);
1921#ifdef EGL_EGLEXT_PROTOTYPES
1922EGLAPI char *EGLAPIENTRY eglGetDisplayDriverConfig (EGLDisplay dpy);
1923EGLAPI const char *EGLAPIENTRY eglGetDisplayDriverName (EGLDisplay dpy);
1924#endif
1925#endif /* EGL_MESA_query_driver */
1926
1927#ifndef EGL_NOK_swap_region
1928#define EGL_NOK_swap_region 1
1929typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
1930#ifdef EGL_EGLEXT_PROTOTYPES
1931EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegionNOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
1932#endif
1933#endif /* EGL_NOK_swap_region */
1934
1935#ifndef EGL_NOK_swap_region2
1936#define EGL_NOK_swap_region2 1
1937typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGION2NOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
1938#ifdef EGL_EGLEXT_PROTOTYPES
1939EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegion2NOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
1940#endif
1941#endif /* EGL_NOK_swap_region2 */
1942
1943#ifndef EGL_NOK_texture_from_pixmap
1944#define EGL_NOK_texture_from_pixmap 1
1945#define EGL_Y_INVERTED_NOK 0x307F
1946#endif /* EGL_NOK_texture_from_pixmap */
1947
1948#ifndef EGL_NV_3dvision_surface
1949#define EGL_NV_3dvision_surface 1
1950#define EGL_AUTO_STEREO_NV 0x3136
1951#endif /* EGL_NV_3dvision_surface */
1952
1953#ifndef EGL_NV_context_priority_realtime
1954#define EGL_NV_context_priority_realtime 1
1955#define EGL_CONTEXT_PRIORITY_REALTIME_NV 0x3357
1956#endif /* EGL_NV_context_priority_realtime */
1957
1958#ifndef EGL_NV_coverage_sample
1959#define EGL_NV_coverage_sample 1
1960#define EGL_COVERAGE_BUFFERS_NV 0x30E0
1961#define EGL_COVERAGE_SAMPLES_NV 0x30E1
1962#endif /* EGL_NV_coverage_sample */
1963
1964#ifndef EGL_NV_coverage_sample_resolve
1965#define EGL_NV_coverage_sample_resolve 1
1966#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131
1967#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
1968#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
1969#endif /* EGL_NV_coverage_sample_resolve */
1970
1971#ifndef EGL_NV_cuda_event
1972#define EGL_NV_cuda_event 1
1973#define EGL_CUDA_EVENT_HANDLE_NV 0x323B
1974#define EGL_SYNC_CUDA_EVENT_NV 0x323C
1975#define EGL_SYNC_CUDA_EVENT_COMPLETE_NV 0x323D
1976#endif /* EGL_NV_cuda_event */
1977
1978#ifndef EGL_NV_depth_nonlinear
1979#define EGL_NV_depth_nonlinear 1
1980#define EGL_DEPTH_ENCODING_NV 0x30E2
1981#define EGL_DEPTH_ENCODING_NONE_NV 0
1982#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
1983#endif /* EGL_NV_depth_nonlinear */
1984
1985#ifndef EGL_NV_device_cuda
1986#define EGL_NV_device_cuda 1
1987#define EGL_CUDA_DEVICE_NV 0x323A
1988#endif /* EGL_NV_device_cuda */
1989
1990#ifndef EGL_NV_native_query
1991#define EGL_NV_native_query 1
1992typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC) (EGLDisplay dpy, EGLNativeDisplayType *display_id);
1993typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
1994typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
1995#ifdef EGL_EGLEXT_PROTOTYPES
1996EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType *display_id);
1997EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
1998EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
1999#endif
2000#endif /* EGL_NV_native_query */
2001
2002#ifndef EGL_NV_post_convert_rounding
2003#define EGL_NV_post_convert_rounding 1
2004#endif /* EGL_NV_post_convert_rounding */
2005
2006#ifndef EGL_NV_post_sub_buffer
2007#define EGL_NV_post_sub_buffer 1
2008#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE
2009typedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
2010#ifdef EGL_EGLEXT_PROTOTYPES
2011EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
2012#endif
2013#endif /* EGL_NV_post_sub_buffer */
2014
2015#ifndef EGL_NV_quadruple_buffer
2016#define EGL_NV_quadruple_buffer 1
2017#define EGL_QUADRUPLE_BUFFER_NV 0x3231
2018#endif /* EGL_NV_quadruple_buffer */
2019
2020#ifndef EGL_NV_robustness_video_memory_purge
2021#define EGL_NV_robustness_video_memory_purge 1
2022#define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C
2023#endif /* EGL_NV_robustness_video_memory_purge */
2024
2025#ifndef EGL_NV_stream_consumer_eglimage
2026#define EGL_NV_stream_consumer_eglimage 1
2027#define EGL_STREAM_CONSUMER_IMAGE_NV 0x3373
2028#define EGL_STREAM_IMAGE_ADD_NV 0x3374
2029#define EGL_STREAM_IMAGE_REMOVE_NV 0x3375
2030#define EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376
2031typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, EGLuint64KHR *modifiers, EGLAttrib *attrib_list);
2032typedef EGLint (EGLAPIENTRYP PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);
2033typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMACQUIREIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);
2034typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMRELEASEIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
2035#ifdef EGL_EGLEXT_PROTOTYPES
2036EGLAPI EGLBoolean EGLAPIENTRY eglStreamImageConsumerConnectNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, EGLuint64KHR *modifiers, EGLAttrib *attrib_list);
2037EGLAPI EGLint EGLAPIENTRY eglQueryStreamConsumerEventNV (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);
2038EGLAPI EGLBoolean EGLAPIENTRY eglStreamAcquireImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);
2039EGLAPI EGLBoolean EGLAPIENTRY eglStreamReleaseImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
2040#endif
2041#endif /* EGL_NV_stream_consumer_eglimage */
2042
2043#ifndef EGL_NV_stream_consumer_gltexture_yuv
2044#define EGL_NV_stream_consumer_gltexture_yuv 1
2045#define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
2046#define EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D
2047#define EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E
2048typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
2049#ifdef EGL_EGLEXT_PROTOTYPES
2050EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalAttribsNV (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
2051#endif
2052#endif /* EGL_NV_stream_consumer_gltexture_yuv */
2053
2054#ifndef EGL_NV_stream_cross_display
2055#define EGL_NV_stream_cross_display 1
2056#define EGL_STREAM_CROSS_DISPLAY_NV 0x334E
2057#endif /* EGL_NV_stream_cross_display */
2058
2059#ifndef EGL_NV_stream_cross_object
2060#define EGL_NV_stream_cross_object 1
2061#define EGL_STREAM_CROSS_OBJECT_NV 0x334D
2062#endif /* EGL_NV_stream_cross_object */
2063
2064#ifndef EGL_NV_stream_cross_partition
2065#define EGL_NV_stream_cross_partition 1
2066#define EGL_STREAM_CROSS_PARTITION_NV 0x323F
2067#endif /* EGL_NV_stream_cross_partition */
2068
2069#ifndef EGL_NV_stream_cross_process
2070#define EGL_NV_stream_cross_process 1
2071#define EGL_STREAM_CROSS_PROCESS_NV 0x3245
2072#endif /* EGL_NV_stream_cross_process */
2073
2074#ifndef EGL_NV_stream_cross_system
2075#define EGL_NV_stream_cross_system 1
2076#define EGL_STREAM_CROSS_SYSTEM_NV 0x334F
2077#endif /* EGL_NV_stream_cross_system */
2078
2079#ifndef EGL_NV_stream_dma
2080#define EGL_NV_stream_dma 1
2081#define EGL_STREAM_DMA_NV 0x3371
2082#define EGL_STREAM_DMA_SERVER_NV 0x3372
2083#endif /* EGL_NV_stream_dma */
2084
2085#ifndef EGL_NV_stream_fifo_next
2086#define EGL_NV_stream_fifo_next 1
2087#define EGL_PENDING_FRAME_NV 0x3329
2088#define EGL_STREAM_TIME_PENDING_NV 0x332A
2089#endif /* EGL_NV_stream_fifo_next */
2090
2091#ifndef EGL_NV_stream_fifo_synchronous
2092#define EGL_NV_stream_fifo_synchronous 1
2093#define EGL_STREAM_FIFO_SYNCHRONOUS_NV 0x3336
2094#endif /* EGL_NV_stream_fifo_synchronous */
2095
2096#ifndef EGL_NV_stream_flush
2097#define EGL_NV_stream_flush 1
2098typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMFLUSHNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);
2099#ifdef EGL_EGLEXT_PROTOTYPES
2100EGLAPI EGLBoolean EGLAPIENTRY eglStreamFlushNV (EGLDisplay dpy, EGLStreamKHR stream);
2101#endif
2102#endif /* EGL_NV_stream_flush */
2103
2104#ifndef EGL_NV_stream_frame_limits
2105#define EGL_NV_stream_frame_limits 1
2106#define EGL_PRODUCER_MAX_FRAME_HINT_NV 0x3337
2107#define EGL_CONSUMER_MAX_FRAME_HINT_NV 0x3338
2108#endif /* EGL_NV_stream_frame_limits */
2109
2110#ifndef EGL_NV_stream_metadata
2111#define EGL_NV_stream_metadata 1
2112#define EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250
2113#define EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251
2114#define EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252
2115#define EGL_PRODUCER_METADATA_NV 0x3253
2116#define EGL_CONSUMER_METADATA_NV 0x3254
2117#define EGL_PENDING_METADATA_NV 0x3328
2118#define EGL_METADATA0_SIZE_NV 0x3255
2119#define EGL_METADATA1_SIZE_NV 0x3256
2120#define EGL_METADATA2_SIZE_NV 0x3257
2121#define EGL_METADATA3_SIZE_NV 0x3258
2122#define EGL_METADATA0_TYPE_NV 0x3259
2123#define EGL_METADATA1_TYPE_NV 0x325A
2124#define EGL_METADATA2_TYPE_NV 0x325B
2125#define EGL_METADATA3_TYPE_NV 0x325C
2126typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBNVPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
2127typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data);
2128typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data);
2129#ifdef EGL_EGLEXT_PROTOTYPES
2130EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribNV (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
2131EGLAPI EGLBoolean EGLAPIENTRY eglSetStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data);
2132EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data);
2133#endif
2134#endif /* EGL_NV_stream_metadata */
2135
2136#ifndef EGL_NV_stream_origin
2137#define EGL_NV_stream_origin 1
2138#define EGL_STREAM_FRAME_ORIGIN_X_NV 0x3366
2139#define EGL_STREAM_FRAME_ORIGIN_Y_NV 0x3367
2140#define EGL_STREAM_FRAME_MAJOR_AXIS_NV 0x3368
2141#define EGL_CONSUMER_AUTO_ORIENTATION_NV 0x3369
2142#define EGL_PRODUCER_AUTO_ORIENTATION_NV 0x336A
2143#define EGL_LEFT_NV 0x336B
2144#define EGL_RIGHT_NV 0x336C
2145#define EGL_TOP_NV 0x336D
2146#define EGL_BOTTOM_NV 0x336E
2147#define EGL_X_AXIS_NV 0x336F
2148#define EGL_Y_AXIS_NV 0x3370
2149#endif /* EGL_NV_stream_origin */
2150
2151#ifndef EGL_NV_stream_remote
2152#define EGL_NV_stream_remote 1
2153#define EGL_STREAM_STATE_INITIALIZING_NV 0x3240
2154#define EGL_STREAM_TYPE_NV 0x3241
2155#define EGL_STREAM_PROTOCOL_NV 0x3242
2156#define EGL_STREAM_ENDPOINT_NV 0x3243
2157#define EGL_STREAM_LOCAL_NV 0x3244
2158#define EGL_STREAM_PRODUCER_NV 0x3247
2159#define EGL_STREAM_CONSUMER_NV 0x3248
2160#define EGL_STREAM_PROTOCOL_FD_NV 0x3246
2161#endif /* EGL_NV_stream_remote */
2162
2163#ifndef EGL_NV_stream_reset
2164#define EGL_NV_stream_reset 1
2165#define EGL_SUPPORT_RESET_NV 0x3334
2166#define EGL_SUPPORT_REUSE_NV 0x3335
2167typedef EGLBoolean (EGLAPIENTRYP PFNEGLRESETSTREAMNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);
2168#ifdef EGL_EGLEXT_PROTOTYPES
2169EGLAPI EGLBoolean EGLAPIENTRY eglResetStreamNV (EGLDisplay dpy, EGLStreamKHR stream);
2170#endif
2171#endif /* EGL_NV_stream_reset */
2172
2173#ifndef EGL_NV_stream_socket
2174#define EGL_NV_stream_socket 1
2175#define EGL_STREAM_PROTOCOL_SOCKET_NV 0x324B
2176#define EGL_SOCKET_HANDLE_NV 0x324C
2177#define EGL_SOCKET_TYPE_NV 0x324D
2178#endif /* EGL_NV_stream_socket */
2179
2180#ifndef EGL_NV_stream_socket_inet
2181#define EGL_NV_stream_socket_inet 1
2182#define EGL_SOCKET_TYPE_INET_NV 0x324F
2183#endif /* EGL_NV_stream_socket_inet */
2184
2185#ifndef EGL_NV_stream_socket_unix
2186#define EGL_NV_stream_socket_unix 1
2187#define EGL_SOCKET_TYPE_UNIX_NV 0x324E
2188#endif /* EGL_NV_stream_socket_unix */
2189
2190#ifndef EGL_NV_stream_sync
2191#define EGL_NV_stream_sync 1
2192#define EGL_SYNC_NEW_FRAME_NV 0x321F
2193typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESTREAMSYNCNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
2194#ifdef EGL_EGLEXT_PROTOTYPES
2195EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
2196#endif
2197#endif /* EGL_NV_stream_sync */
2198
2199#ifndef EGL_NV_sync
2200#define EGL_NV_sync 1
2201typedef void *EGLSyncNV;
2202typedef khronos_utime_nanoseconds_t EGLTimeNV;
2203#ifdef KHRONOS_SUPPORT_INT64
2204#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
2205#define EGL_SYNC_STATUS_NV 0x30E7
2206#define EGL_SIGNALED_NV 0x30E8
2207#define EGL_UNSIGNALED_NV 0x30E9
2208#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001
2209#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull
2210#define EGL_ALREADY_SIGNALED_NV 0x30EA
2211#define EGL_TIMEOUT_EXPIRED_NV 0x30EB
2212#define EGL_CONDITION_SATISFIED_NV 0x30EC
2213#define EGL_SYNC_TYPE_NV 0x30ED
2214#define EGL_SYNC_CONDITION_NV 0x30EE
2215#define EGL_SYNC_FENCE_NV 0x30EF
2216#define EGL_NO_SYNC_NV EGL_CAST(EGLSyncNV,0)
2217typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
2218typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync);
2219typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync);
2220typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
2221typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode);
2222typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value);
2223#ifdef EGL_EGLEXT_PROTOTYPES
2224EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
2225EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV (EGLSyncNV sync);
2226EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV (EGLSyncNV sync);
2227EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
2228EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV (EGLSyncNV sync, EGLenum mode);
2229EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value);
2230#endif
2231#endif /* KHRONOS_SUPPORT_INT64 */
2232#endif /* EGL_NV_sync */
2233
2234#ifndef EGL_NV_system_time
2235#define EGL_NV_system_time 1
2236typedef khronos_utime_nanoseconds_t EGLuint64NV;
2237#ifdef KHRONOS_SUPPORT_INT64
2238typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void);
2239typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void);
2240#ifdef EGL_EGLEXT_PROTOTYPES
2241EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV (void);
2242EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void);
2243#endif
2244#endif /* KHRONOS_SUPPORT_INT64 */
2245#endif /* EGL_NV_system_time */
2246
2247#ifndef EGL_NV_triple_buffer
2248#define EGL_NV_triple_buffer 1
2249#define EGL_TRIPLE_BUFFER_NV 0x3230
2250#endif /* EGL_NV_triple_buffer */
2251
2252#ifndef EGL_TIZEN_image_native_buffer
2253#define EGL_TIZEN_image_native_buffer 1
2254#define EGL_NATIVE_BUFFER_TIZEN 0x32A0
2255#endif /* EGL_TIZEN_image_native_buffer */
2256
2257#ifndef EGL_TIZEN_image_native_surface
2258#define EGL_TIZEN_image_native_surface 1
2259#define EGL_NATIVE_SURFACE_TIZEN 0x32A1
2260#endif /* EGL_TIZEN_image_native_surface */
2261
2262#ifndef EGL_WL_bind_wayland_display
2263#define EGL_WL_bind_wayland_display 1
2264#define PFNEGLBINDWAYLANDDISPLAYWL PFNEGLBINDWAYLANDDISPLAYWLPROC
2265#define PFNEGLUNBINDWAYLANDDISPLAYWL PFNEGLUNBINDWAYLANDDISPLAYWLPROC
2266#define PFNEGLQUERYWAYLANDBUFFERWL PFNEGLQUERYWAYLANDBUFFERWLPROC
2267struct wl_display;
2268struct wl_resource;
2269#define EGL_WAYLAND_BUFFER_WL 0x31D5
2270#define EGL_WAYLAND_PLANE_WL 0x31D6
2271#define EGL_TEXTURE_Y_U_V_WL 0x31D7
2272#define EGL_TEXTURE_Y_UV_WL 0x31D8
2273#define EGL_TEXTURE_Y_XUXV_WL 0x31D9
2274#define EGL_TEXTURE_EXTERNAL_WL 0x31DA
2275#define EGL_WAYLAND_Y_INVERTED_WL 0x31DB
2276typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display *display);
2277typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display *display);
2278typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWLPROC) (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
2279#ifdef EGL_EGLEXT_PROTOTYPES
2280EGLAPI EGLBoolean EGLAPIENTRY eglBindWaylandDisplayWL (EGLDisplay dpy, struct wl_display *display);
2281EGLAPI EGLBoolean EGLAPIENTRY eglUnbindWaylandDisplayWL (EGLDisplay dpy, struct wl_display *display);
2282EGLAPI EGLBoolean EGLAPIENTRY eglQueryWaylandBufferWL (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
2283#endif
2284#endif /* EGL_WL_bind_wayland_display */
2285
2286#ifndef EGL_WL_create_wayland_buffer_from_image
2287#define EGL_WL_create_wayland_buffer_from_image 1
2288#define PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC
2289struct wl_buffer;
2290typedef struct wl_buffer *(EGLAPIENTRYP PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC) (EGLDisplay dpy, EGLImageKHR image);
2291#ifdef EGL_EGLEXT_PROTOTYPES
2292EGLAPI struct wl_buffer *EGLAPIENTRY eglCreateWaylandBufferFromImageWL (EGLDisplay dpy, EGLImageKHR image);
2293#endif
2294#endif /* EGL_WL_create_wayland_buffer_from_image */
2295
2296#ifdef __cplusplus
2297}
2298#endif
2299
2300#endif /* __eglext_h_ */
2301
2302#endif /* _MSC_VER */
diff --git a/vendor/SDL2/include/SDL_endian.h b/vendor/SDL2/include/SDL_endian.h new file mode 100644 index 0000000..46c2962 --- /dev/null +++ b/vendor/SDL2/include/SDL_endian.h
@@ -0,0 +1,317 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_endian.h
24 *
25 * Functions for reading and writing endian-specific values
26 */
27
28#ifndef SDL_endian_h_
29#define SDL_endian_h_
30
31#include "SDL_stdinc.h"
32
33#if defined(_MSC_VER) && (_MSC_VER >= 1400)
34/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version,
35 so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */
36#ifdef __clang__
37#ifndef __PRFCHWINTRIN_H
38#define __PRFCHWINTRIN_H
39static __inline__ void __attribute__((__always_inline__, __nodebug__))
40_m_prefetch(void *__P)
41{
42 __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */);
43}
44#endif /* __PRFCHWINTRIN_H */
45#endif /* __clang__ */
46
47#include <intrin.h>
48#endif
49
50/**
51 * \name The two types of endianness
52 */
53/* @{ */
54#define SDL_LIL_ENDIAN 1234
55#define SDL_BIG_ENDIAN 4321
56/* @} */
57
58#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */
59#ifdef __linux__
60#include <endian.h>
61#define SDL_BYTEORDER __BYTE_ORDER
62#elif defined(__OpenBSD__)
63#include <endian.h>
64#define SDL_BYTEORDER BYTE_ORDER
65#elif defined(__FreeBSD__) || defined(__NetBSD__)
66#include <sys/endian.h>
67#define SDL_BYTEORDER BYTE_ORDER
68#else
69#if defined(__hppa__) || \
70 defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \
71 (defined(__MIPS__) && defined(__MIPSEB__)) || \
72 defined(__ppc__) || defined(__POWERPC__) || defined(_M_PPC) || \
73 defined(__sparc__)
74#define SDL_BYTEORDER SDL_BIG_ENDIAN
75#else
76#define SDL_BYTEORDER SDL_LIL_ENDIAN
77#endif
78#endif /* __linux__ */
79#endif /* !SDL_BYTEORDER */
80
81
82#include "begin_code.h"
83/* Set up for C function definitions, even when using C++ */
84#ifdef __cplusplus
85extern "C" {
86#endif
87
88/**
89 * \file SDL_endian.h
90 */
91
92/* various modern compilers may have builtin swap */
93#if defined(__GNUC__) || defined(__clang__)
94# define HAS_BUILTIN_BSWAP16 (_SDL_HAS_BUILTIN(__builtin_bswap16)) || \
95 (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8))
96# define HAS_BUILTIN_BSWAP32 (_SDL_HAS_BUILTIN(__builtin_bswap32)) || \
97 (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
98# define HAS_BUILTIN_BSWAP64 (_SDL_HAS_BUILTIN(__builtin_bswap64)) || \
99 (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
100
101 /* this one is broken */
102# define HAS_BROKEN_BSWAP (__GNUC__ == 2 && __GNUC_MINOR__ <= 95)
103#else
104# define HAS_BUILTIN_BSWAP16 0
105# define HAS_BUILTIN_BSWAP32 0
106# define HAS_BUILTIN_BSWAP64 0
107# define HAS_BROKEN_BSWAP 0
108#endif
109
110#if HAS_BUILTIN_BSWAP16
111#define SDL_Swap16(x) __builtin_bswap16(x)
112#elif defined(_MSC_VER) && (_MSC_VER >= 1400)
113#pragma intrinsic(_byteswap_ushort)
114#define SDL_Swap16(x) _byteswap_ushort(x)
115#elif defined(__i386__) && !HAS_BROKEN_BSWAP
116SDL_FORCE_INLINE Uint16
117SDL_Swap16(Uint16 x)
118{
119 __asm__("xchgb %b0,%h0": "=q"(x):"0"(x));
120 return x;
121}
122#elif defined(__x86_64__)
123SDL_FORCE_INLINE Uint16
124SDL_Swap16(Uint16 x)
125{
126 __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x));
127 return x;
128}
129#elif (defined(__powerpc__) || defined(__ppc__))
130SDL_FORCE_INLINE Uint16
131SDL_Swap16(Uint16 x)
132{
133 int result;
134
135 __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x));
136 return (Uint16)result;
137}
138#elif (defined(__m68k__) && !defined(__mcoldfire__))
139SDL_FORCE_INLINE Uint16
140SDL_Swap16(Uint16 x)
141{
142 __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc");
143 return x;
144}
145#elif defined(__WATCOMC__) && defined(__386__)
146extern __inline Uint16 SDL_Swap16(Uint16);
147#pragma aux SDL_Swap16 = \
148 "xchg al, ah" \
149 parm [ax] \
150 modify [ax];
151#else
152SDL_FORCE_INLINE Uint16
153SDL_Swap16(Uint16 x)
154{
155 return SDL_static_cast(Uint16, ((x << 8) | (x >> 8)));
156}
157#endif
158
159#if HAS_BUILTIN_BSWAP32
160#define SDL_Swap32(x) __builtin_bswap32(x)
161#elif defined(_MSC_VER) && (_MSC_VER >= 1400)
162#pragma intrinsic(_byteswap_ulong)
163#define SDL_Swap32(x) _byteswap_ulong(x)
164#elif defined(__i386__) && !HAS_BROKEN_BSWAP
165SDL_FORCE_INLINE Uint32
166SDL_Swap32(Uint32 x)
167{
168 __asm__("bswap %0": "=r"(x):"0"(x));
169 return x;
170}
171#elif defined(__x86_64__)
172SDL_FORCE_INLINE Uint32
173SDL_Swap32(Uint32 x)
174{
175 __asm__("bswapl %0": "=r"(x):"0"(x));
176 return x;
177}
178#elif (defined(__powerpc__) || defined(__ppc__))
179SDL_FORCE_INLINE Uint32
180SDL_Swap32(Uint32 x)
181{
182 Uint32 result;
183
184 __asm__("rlwimi %0,%2,24,16,23": "=&r"(result): "0" (x>>24), "r"(x));
185 __asm__("rlwimi %0,%2,8,8,15" : "=&r"(result): "0" (result), "r"(x));
186 __asm__("rlwimi %0,%2,24,0,7" : "=&r"(result): "0" (result), "r"(x));
187 return result;
188}
189#elif (defined(__m68k__) && !defined(__mcoldfire__))
190SDL_FORCE_INLINE Uint32
191SDL_Swap32(Uint32 x)
192{
193 __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc");
194 return x;
195}
196#elif defined(__WATCOMC__) && defined(__386__)
197extern __inline Uint32 SDL_Swap32(Uint32);
198#pragma aux SDL_Swap32 = \
199 "bswap eax" \
200 parm [eax] \
201 modify [eax];
202#else
203SDL_FORCE_INLINE Uint32
204SDL_Swap32(Uint32 x)
205{
206 return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) |
207 ((x >> 8) & 0x0000FF00) | (x >> 24)));
208}
209#endif
210
211#if HAS_BUILTIN_BSWAP64
212#define SDL_Swap64(x) __builtin_bswap64(x)
213#elif defined(_MSC_VER) && (_MSC_VER >= 1400)
214#pragma intrinsic(_byteswap_uint64)
215#define SDL_Swap64(x) _byteswap_uint64(x)
216#elif defined(__i386__) && !HAS_BROKEN_BSWAP
217SDL_FORCE_INLINE Uint64
218SDL_Swap64(Uint64 x)
219{
220 union {
221 struct {
222 Uint32 a, b;
223 } s;
224 Uint64 u;
225 } v;
226 v.u = x;
227 __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1"
228 : "=r"(v.s.a), "=r"(v.s.b)
229 : "0" (v.s.a), "1"(v.s.b));
230 return v.u;
231}
232#elif defined(__x86_64__)
233SDL_FORCE_INLINE Uint64
234SDL_Swap64(Uint64 x)
235{
236 __asm__("bswapq %0": "=r"(x):"0"(x));
237 return x;
238}
239#elif defined(__WATCOMC__) && defined(__386__)
240extern __inline Uint64 SDL_Swap64(Uint64);
241#pragma aux SDL_Swap64 = \
242 "bswap eax" \
243 "bswap edx" \
244 "xchg eax,edx" \
245 parm [eax edx] \
246 modify [eax edx];
247#else
248SDL_FORCE_INLINE Uint64
249SDL_Swap64(Uint64 x)
250{
251 Uint32 hi, lo;
252
253 /* Separate into high and low 32-bit values and swap them */
254 lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
255 x >>= 32;
256 hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
257 x = SDL_Swap32(lo);
258 x <<= 32;
259 x |= SDL_Swap32(hi);
260 return (x);
261}
262#endif
263
264
265SDL_FORCE_INLINE float
266SDL_SwapFloat(float x)
267{
268 union {
269 float f;
270 Uint32 ui32;
271 } swapper;
272 swapper.f = x;
273 swapper.ui32 = SDL_Swap32(swapper.ui32);
274 return swapper.f;
275}
276
277/* remove extra macros */
278#undef HAS_BROKEN_BSWAP
279#undef HAS_BUILTIN_BSWAP16
280#undef HAS_BUILTIN_BSWAP32
281#undef HAS_BUILTIN_BSWAP64
282
283/**
284 * \name Swap to native
285 * Byteswap item from the specified endianness to the native endianness.
286 */
287/* @{ */
288#if SDL_BYTEORDER == SDL_LIL_ENDIAN
289#define SDL_SwapLE16(X) (X)
290#define SDL_SwapLE32(X) (X)
291#define SDL_SwapLE64(X) (X)
292#define SDL_SwapFloatLE(X) (X)
293#define SDL_SwapBE16(X) SDL_Swap16(X)
294#define SDL_SwapBE32(X) SDL_Swap32(X)
295#define SDL_SwapBE64(X) SDL_Swap64(X)
296#define SDL_SwapFloatBE(X) SDL_SwapFloat(X)
297#else
298#define SDL_SwapLE16(X) SDL_Swap16(X)
299#define SDL_SwapLE32(X) SDL_Swap32(X)
300#define SDL_SwapLE64(X) SDL_Swap64(X)
301#define SDL_SwapFloatLE(X) SDL_SwapFloat(X)
302#define SDL_SwapBE16(X) (X)
303#define SDL_SwapBE32(X) (X)
304#define SDL_SwapBE64(X) (X)
305#define SDL_SwapFloatBE(X) (X)
306#endif
307/* @} *//* Swap to native */
308
309/* Ends C function definitions when using C++ */
310#ifdef __cplusplus
311}
312#endif
313#include "close_code.h"
314
315#endif /* SDL_endian_h_ */
316
317/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_error.h b/vendor/SDL2/include/SDL_error.h new file mode 100644 index 0000000..5c961e4 --- /dev/null +++ b/vendor/SDL2/include/SDL_error.h
@@ -0,0 +1,163 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_error.h
24 *
25 * Simple error message routines for SDL.
26 */
27
28#ifndef SDL_error_h_
29#define SDL_error_h_
30
31#include "SDL_stdinc.h"
32
33#include "begin_code.h"
34/* Set up for C function definitions, even when using C++ */
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39/* Public functions */
40
41
42/**
43 * Set the SDL error message for the current thread.
44 *
45 * Calling this function will replace any previous error message that was set.
46 *
47 * This function always returns -1, since SDL frequently uses -1 to signify an
48 * failing result, leading to this idiom:
49 *
50 * ```c
51 * if (error_code) {
52 * return SDL_SetError("This operation has failed: %d", error_code);
53 * }
54 * ```
55 *
56 * \param fmt a printf()-style message format string
57 * \param ... additional parameters matching % tokens in the `fmt` string, if
58 * any
59 * \returns always -1.
60 *
61 * \since This function is available since SDL 2.0.0.
62 *
63 * \sa SDL_ClearError
64 * \sa SDL_GetError
65 */
66extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
67
68/**
69 * Retrieve a message about the last error that occurred on the current
70 * thread.
71 *
72 * It is possible for multiple errors to occur before calling SDL_GetError().
73 * Only the last error is returned.
74 *
75 * The message is only applicable when an SDL function has signaled an error.
76 * You must check the return values of SDL function calls to determine when to
77 * appropriately call SDL_GetError(). You should *not* use the results of
78 * SDL_GetError() to decide if an error has occurred! Sometimes SDL will set
79 * an error string even when reporting success.
80 *
81 * SDL will *not* clear the error string for successful API calls. You *must*
82 * check return values for failure cases before you can assume the error
83 * string applies.
84 *
85 * Error strings are set per-thread, so an error set in a different thread
86 * will not interfere with the current thread's operation.
87 *
88 * The returned string is internally allocated and must not be freed by the
89 * application.
90 *
91 * \returns a message with information about the specific error that occurred,
92 * or an empty string if there hasn't been an error message set since
93 * the last call to SDL_ClearError(). The message is only applicable
94 * when an SDL function has signaled an error. You must check the
95 * return values of SDL function calls to determine when to
96 * appropriately call SDL_GetError().
97 *
98 * \since This function is available since SDL 2.0.0.
99 *
100 * \sa SDL_ClearError
101 * \sa SDL_SetError
102 */
103extern DECLSPEC const char *SDLCALL SDL_GetError(void);
104
105/**
106 * Get the last error message that was set for the current thread.
107 *
108 * This allows the caller to copy the error string into a provided buffer, but
109 * otherwise operates exactly the same as SDL_GetError().
110 *
111 * \param errstr A buffer to fill with the last error message that was set for
112 * the current thread
113 * \param maxlen The size of the buffer pointed to by the errstr parameter
114 * \returns the pointer passed in as the `errstr` parameter.
115 *
116 * \since This function is available since SDL 2.0.14.
117 *
118 * \sa SDL_GetError
119 */
120extern DECLSPEC char * SDLCALL SDL_GetErrorMsg(char *errstr, int maxlen);
121
122/**
123 * Clear any previous error message for this thread.
124 *
125 * \since This function is available since SDL 2.0.0.
126 *
127 * \sa SDL_GetError
128 * \sa SDL_SetError
129 */
130extern DECLSPEC void SDLCALL SDL_ClearError(void);
131
132/**
133 * \name Internal error functions
134 *
135 * \internal
136 * Private error reporting function - used internally.
137 */
138/* @{ */
139#define SDL_OutOfMemory() SDL_Error(SDL_ENOMEM)
140#define SDL_Unsupported() SDL_Error(SDL_UNSUPPORTED)
141#define SDL_InvalidParamError(param) SDL_SetError("Parameter '%s' is invalid", (param))
142typedef enum
143{
144 SDL_ENOMEM,
145 SDL_EFREAD,
146 SDL_EFWRITE,
147 SDL_EFSEEK,
148 SDL_UNSUPPORTED,
149 SDL_LASTERROR
150} SDL_errorcode;
151/* SDL_Error() unconditionally returns -1. */
152extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code);
153/* @} *//* Internal error functions */
154
155/* Ends C function definitions when using C++ */
156#ifdef __cplusplus
157}
158#endif
159#include "close_code.h"
160
161#endif /* SDL_error_h_ */
162
163/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_events.h b/vendor/SDL2/include/SDL_events.h new file mode 100644 index 0000000..3722a63 --- /dev/null +++ b/vendor/SDL2/include/SDL_events.h
@@ -0,0 +1,1135 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_events.h
24 *
25 * Include file for SDL event handling.
26 */
27
28#ifndef SDL_events_h_
29#define SDL_events_h_
30
31#include "SDL_stdinc.h"
32#include "SDL_error.h"
33#include "SDL_video.h"
34#include "SDL_keyboard.h"
35#include "SDL_mouse.h"
36#include "SDL_joystick.h"
37#include "SDL_gamecontroller.h"
38#include "SDL_quit.h"
39#include "SDL_gesture.h"
40#include "SDL_touch.h"
41
42#include "begin_code.h"
43/* Set up for C function definitions, even when using C++ */
44#ifdef __cplusplus
45extern "C" {
46#endif
47
48/* General keyboard/mouse state definitions */
49#define SDL_RELEASED 0
50#define SDL_PRESSED 1
51
52/**
53 * The types of events that can be delivered.
54 */
55typedef enum
56{
57 SDL_FIRSTEVENT = 0, /**< Unused (do not remove) */
58
59 /* Application events */
60 SDL_QUIT = 0x100, /**< User-requested quit */
61
62 /* These application events have special meaning on iOS, see README-ios.md for details */
63 SDL_APP_TERMINATING, /**< The application is being terminated by the OS
64 Called on iOS in applicationWillTerminate()
65 Called on Android in onDestroy()
66 */
67 SDL_APP_LOWMEMORY, /**< The application is low on memory, free memory if possible.
68 Called on iOS in applicationDidReceiveMemoryWarning()
69 Called on Android in onLowMemory()
70 */
71 SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background
72 Called on iOS in applicationWillResignActive()
73 Called on Android in onPause()
74 */
75 SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time
76 Called on iOS in applicationDidEnterBackground()
77 Called on Android in onPause()
78 */
79 SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground
80 Called on iOS in applicationWillEnterForeground()
81 Called on Android in onResume()
82 */
83 SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive
84 Called on iOS in applicationDidBecomeActive()
85 Called on Android in onResume()
86 */
87
88 SDL_LOCALECHANGED, /**< The user's locale preferences have changed. */
89
90 /* Display events */
91 SDL_DISPLAYEVENT = 0x150, /**< Display state change */
92
93 /* Window events */
94 SDL_WINDOWEVENT = 0x200, /**< Window state change */
95 SDL_SYSWMEVENT, /**< System specific event */
96
97 /* Keyboard events */
98 SDL_KEYDOWN = 0x300, /**< Key pressed */
99 SDL_KEYUP, /**< Key released */
100 SDL_TEXTEDITING, /**< Keyboard text editing (composition) */
101 SDL_TEXTINPUT, /**< Keyboard text input */
102 SDL_KEYMAPCHANGED, /**< Keymap changed due to a system event such as an
103 input language or keyboard layout change.
104 */
105
106 /* Mouse events */
107 SDL_MOUSEMOTION = 0x400, /**< Mouse moved */
108 SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */
109 SDL_MOUSEBUTTONUP, /**< Mouse button released */
110 SDL_MOUSEWHEEL, /**< Mouse wheel motion */
111
112 /* Joystick events */
113 SDL_JOYAXISMOTION = 0x600, /**< Joystick axis motion */
114 SDL_JOYBALLMOTION, /**< Joystick trackball motion */
115 SDL_JOYHATMOTION, /**< Joystick hat position change */
116 SDL_JOYBUTTONDOWN, /**< Joystick button pressed */
117 SDL_JOYBUTTONUP, /**< Joystick button released */
118 SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */
119 SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */
120
121 /* Game controller events */
122 SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */
123 SDL_CONTROLLERBUTTONDOWN, /**< Game controller button pressed */
124 SDL_CONTROLLERBUTTONUP, /**< Game controller button released */
125 SDL_CONTROLLERDEVICEADDED, /**< A new Game controller has been inserted into the system */
126 SDL_CONTROLLERDEVICEREMOVED, /**< An opened Game controller has been removed */
127 SDL_CONTROLLERDEVICEREMAPPED, /**< The controller mapping was updated */
128 SDL_CONTROLLERTOUCHPADDOWN, /**< Game controller touchpad was touched */
129 SDL_CONTROLLERTOUCHPADMOTION, /**< Game controller touchpad finger was moved */
130 SDL_CONTROLLERTOUCHPADUP, /**< Game controller touchpad finger was lifted */
131 SDL_CONTROLLERSENSORUPDATE, /**< Game controller sensor was updated */
132
133 /* Touch events */
134 SDL_FINGERDOWN = 0x700,
135 SDL_FINGERUP,
136 SDL_FINGERMOTION,
137
138 /* Gesture events */
139 SDL_DOLLARGESTURE = 0x800,
140 SDL_DOLLARRECORD,
141 SDL_MULTIGESTURE,
142
143 /* Clipboard events */
144 SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard changed */
145
146 /* Drag and drop events */
147 SDL_DROPFILE = 0x1000, /**< The system requests a file open */
148 SDL_DROPTEXT, /**< text/plain drag-and-drop event */
149 SDL_DROPBEGIN, /**< A new set of drops is beginning (NULL filename) */
150 SDL_DROPCOMPLETE, /**< Current set of drops is now complete (NULL filename) */
151
152 /* Audio hotplug events */
153 SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */
154 SDL_AUDIODEVICEREMOVED, /**< An audio device has been removed. */
155
156 /* Sensor events */
157 SDL_SENSORUPDATE = 0x1200, /**< A sensor was updated */
158
159 /* Render events */
160 SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */
161 SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */
162
163 /* Internal events */
164 SDL_POLLSENTINEL = 0x7F00, /**< Signals the end of an event poll cycle */
165
166 /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use,
167 * and should be allocated with SDL_RegisterEvents()
168 */
169 SDL_USEREVENT = 0x8000,
170
171 /**
172 * This last event is only for bounding internal arrays
173 */
174 SDL_LASTEVENT = 0xFFFF
175} SDL_EventType;
176
177/**
178 * \brief Fields shared by every event
179 */
180typedef struct SDL_CommonEvent
181{
182 Uint32 type;
183 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
184} SDL_CommonEvent;
185
186/**
187 * \brief Display state change event data (event.display.*)
188 */
189typedef struct SDL_DisplayEvent
190{
191 Uint32 type; /**< ::SDL_DISPLAYEVENT */
192 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
193 Uint32 display; /**< The associated display index */
194 Uint8 event; /**< ::SDL_DisplayEventID */
195 Uint8 padding1;
196 Uint8 padding2;
197 Uint8 padding3;
198 Sint32 data1; /**< event dependent data */
199} SDL_DisplayEvent;
200
201/**
202 * \brief Window state change event data (event.window.*)
203 */
204typedef struct SDL_WindowEvent
205{
206 Uint32 type; /**< ::SDL_WINDOWEVENT */
207 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
208 Uint32 windowID; /**< The associated window */
209 Uint8 event; /**< ::SDL_WindowEventID */
210 Uint8 padding1;
211 Uint8 padding2;
212 Uint8 padding3;
213 Sint32 data1; /**< event dependent data */
214 Sint32 data2; /**< event dependent data */
215} SDL_WindowEvent;
216
217/**
218 * \brief Keyboard button event structure (event.key.*)
219 */
220typedef struct SDL_KeyboardEvent
221{
222 Uint32 type; /**< ::SDL_KEYDOWN or ::SDL_KEYUP */
223 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
224 Uint32 windowID; /**< The window with keyboard focus, if any */
225 Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
226 Uint8 repeat; /**< Non-zero if this is a key repeat */
227 Uint8 padding2;
228 Uint8 padding3;
229 SDL_Keysym keysym; /**< The key that was pressed or released */
230} SDL_KeyboardEvent;
231
232#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32)
233/**
234 * \brief Keyboard text editing event structure (event.edit.*)
235 */
236typedef struct SDL_TextEditingEvent
237{
238 Uint32 type; /**< ::SDL_TEXTEDITING */
239 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
240 Uint32 windowID; /**< The window with keyboard focus, if any */
241 char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; /**< The editing text */
242 Sint32 start; /**< The start cursor of selected editing text */
243 Sint32 length; /**< The length of selected editing text */
244} SDL_TextEditingEvent;
245
246
247#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32)
248/**
249 * \brief Keyboard text input event structure (event.text.*)
250 */
251typedef struct SDL_TextInputEvent
252{
253 Uint32 type; /**< ::SDL_TEXTINPUT */
254 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
255 Uint32 windowID; /**< The window with keyboard focus, if any */
256 char text[SDL_TEXTINPUTEVENT_TEXT_SIZE]; /**< The input text */
257} SDL_TextInputEvent;
258
259/**
260 * \brief Mouse motion event structure (event.motion.*)
261 */
262typedef struct SDL_MouseMotionEvent
263{
264 Uint32 type; /**< ::SDL_MOUSEMOTION */
265 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
266 Uint32 windowID; /**< The window with mouse focus, if any */
267 Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
268 Uint32 state; /**< The current button state */
269 Sint32 x; /**< X coordinate, relative to window */
270 Sint32 y; /**< Y coordinate, relative to window */
271 Sint32 xrel; /**< The relative motion in the X direction */
272 Sint32 yrel; /**< The relative motion in the Y direction */
273} SDL_MouseMotionEvent;
274
275/**
276 * \brief Mouse button event structure (event.button.*)
277 */
278typedef struct SDL_MouseButtonEvent
279{
280 Uint32 type; /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */
281 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
282 Uint32 windowID; /**< The window with mouse focus, if any */
283 Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
284 Uint8 button; /**< The mouse button index */
285 Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
286 Uint8 clicks; /**< 1 for single-click, 2 for double-click, etc. */
287 Uint8 padding1;
288 Sint32 x; /**< X coordinate, relative to window */
289 Sint32 y; /**< Y coordinate, relative to window */
290} SDL_MouseButtonEvent;
291
292/**
293 * \brief Mouse wheel event structure (event.wheel.*)
294 */
295typedef struct SDL_MouseWheelEvent
296{
297 Uint32 type; /**< ::SDL_MOUSEWHEEL */
298 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
299 Uint32 windowID; /**< The window with mouse focus, if any */
300 Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
301 Sint32 x; /**< The amount scrolled horizontally, positive to the right and negative to the left */
302 Sint32 y; /**< The amount scrolled vertically, positive away from the user and negative toward the user */
303 Uint32 direction; /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */
304 float preciseX; /**< The amount scrolled horizontally, positive to the right and negative to the left, with float precision (added in 2.0.18) */
305 float preciseY; /**< The amount scrolled vertically, positive away from the user and negative toward the user, with float precision (added in 2.0.18) */
306} SDL_MouseWheelEvent;
307
308/**
309 * \brief Joystick axis motion event structure (event.jaxis.*)
310 */
311typedef struct SDL_JoyAxisEvent
312{
313 Uint32 type; /**< ::SDL_JOYAXISMOTION */
314 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
315 SDL_JoystickID which; /**< The joystick instance id */
316 Uint8 axis; /**< The joystick axis index */
317 Uint8 padding1;
318 Uint8 padding2;
319 Uint8 padding3;
320 Sint16 value; /**< The axis value (range: -32768 to 32767) */
321 Uint16 padding4;
322} SDL_JoyAxisEvent;
323
324/**
325 * \brief Joystick trackball motion event structure (event.jball.*)
326 */
327typedef struct SDL_JoyBallEvent
328{
329 Uint32 type; /**< ::SDL_JOYBALLMOTION */
330 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
331 SDL_JoystickID which; /**< The joystick instance id */
332 Uint8 ball; /**< The joystick trackball index */
333 Uint8 padding1;
334 Uint8 padding2;
335 Uint8 padding3;
336 Sint16 xrel; /**< The relative motion in the X direction */
337 Sint16 yrel; /**< The relative motion in the Y direction */
338} SDL_JoyBallEvent;
339
340/**
341 * \brief Joystick hat position change event structure (event.jhat.*)
342 */
343typedef struct SDL_JoyHatEvent
344{
345 Uint32 type; /**< ::SDL_JOYHATMOTION */
346 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
347 SDL_JoystickID which; /**< The joystick instance id */
348 Uint8 hat; /**< The joystick hat index */
349 Uint8 value; /**< The hat position value.
350 * \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP
351 * \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT
352 * \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN
353 *
354 * Note that zero means the POV is centered.
355 */
356 Uint8 padding1;
357 Uint8 padding2;
358} SDL_JoyHatEvent;
359
360/**
361 * \brief Joystick button event structure (event.jbutton.*)
362 */
363typedef struct SDL_JoyButtonEvent
364{
365 Uint32 type; /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */
366 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
367 SDL_JoystickID which; /**< The joystick instance id */
368 Uint8 button; /**< The joystick button index */
369 Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
370 Uint8 padding1;
371 Uint8 padding2;
372} SDL_JoyButtonEvent;
373
374/**
375 * \brief Joystick device event structure (event.jdevice.*)
376 */
377typedef struct SDL_JoyDeviceEvent
378{
379 Uint32 type; /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */
380 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
381 Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED event */
382} SDL_JoyDeviceEvent;
383
384
385/**
386 * \brief Game controller axis motion event structure (event.caxis.*)
387 */
388typedef struct SDL_ControllerAxisEvent
389{
390 Uint32 type; /**< ::SDL_CONTROLLERAXISMOTION */
391 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
392 SDL_JoystickID which; /**< The joystick instance id */
393 Uint8 axis; /**< The controller axis (SDL_GameControllerAxis) */
394 Uint8 padding1;
395 Uint8 padding2;
396 Uint8 padding3;
397 Sint16 value; /**< The axis value (range: -32768 to 32767) */
398 Uint16 padding4;
399} SDL_ControllerAxisEvent;
400
401
402/**
403 * \brief Game controller button event structure (event.cbutton.*)
404 */
405typedef struct SDL_ControllerButtonEvent
406{
407 Uint32 type; /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */
408 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
409 SDL_JoystickID which; /**< The joystick instance id */
410 Uint8 button; /**< The controller button (SDL_GameControllerButton) */
411 Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
412 Uint8 padding1;
413 Uint8 padding2;
414} SDL_ControllerButtonEvent;
415
416
417/**
418 * \brief Controller device event structure (event.cdevice.*)
419 */
420typedef struct SDL_ControllerDeviceEvent
421{
422 Uint32 type; /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */
423 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
424 Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */
425} SDL_ControllerDeviceEvent;
426
427/**
428 * \brief Game controller touchpad event structure (event.ctouchpad.*)
429 */
430typedef struct SDL_ControllerTouchpadEvent
431{
432 Uint32 type; /**< ::SDL_CONTROLLERTOUCHPADDOWN or ::SDL_CONTROLLERTOUCHPADMOTION or ::SDL_CONTROLLERTOUCHPADUP */
433 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
434 SDL_JoystickID which; /**< The joystick instance id */
435 Sint32 touchpad; /**< The index of the touchpad */
436 Sint32 finger; /**< The index of the finger on the touchpad */
437 float x; /**< Normalized in the range 0...1 with 0 being on the left */
438 float y; /**< Normalized in the range 0...1 with 0 being at the top */
439 float pressure; /**< Normalized in the range 0...1 */
440} SDL_ControllerTouchpadEvent;
441
442/**
443 * \brief Game controller sensor event structure (event.csensor.*)
444 */
445typedef struct SDL_ControllerSensorEvent
446{
447 Uint32 type; /**< ::SDL_CONTROLLERSENSORUPDATE */
448 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
449 SDL_JoystickID which; /**< The joystick instance id */
450 Sint32 sensor; /**< The type of the sensor, one of the values of ::SDL_SensorType */
451 float data[3]; /**< Up to 3 values from the sensor, as defined in SDL_sensor.h */
452} SDL_ControllerSensorEvent;
453
454/**
455 * \brief Audio device event structure (event.adevice.*)
456 */
457typedef struct SDL_AudioDeviceEvent
458{
459 Uint32 type; /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */
460 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
461 Uint32 which; /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */
462 Uint8 iscapture; /**< zero if an output device, non-zero if a capture device. */
463 Uint8 padding1;
464 Uint8 padding2;
465 Uint8 padding3;
466} SDL_AudioDeviceEvent;
467
468
469/**
470 * \brief Touch finger event structure (event.tfinger.*)
471 */
472typedef struct SDL_TouchFingerEvent
473{
474 Uint32 type; /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */
475 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
476 SDL_TouchID touchId; /**< The touch device id */
477 SDL_FingerID fingerId;
478 float x; /**< Normalized in the range 0...1 */
479 float y; /**< Normalized in the range 0...1 */
480 float dx; /**< Normalized in the range -1...1 */
481 float dy; /**< Normalized in the range -1...1 */
482 float pressure; /**< Normalized in the range 0...1 */
483 Uint32 windowID; /**< The window underneath the finger, if any */
484} SDL_TouchFingerEvent;
485
486
487/**
488 * \brief Multiple Finger Gesture Event (event.mgesture.*)
489 */
490typedef struct SDL_MultiGestureEvent
491{
492 Uint32 type; /**< ::SDL_MULTIGESTURE */
493 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
494 SDL_TouchID touchId; /**< The touch device id */
495 float dTheta;
496 float dDist;
497 float x;
498 float y;
499 Uint16 numFingers;
500 Uint16 padding;
501} SDL_MultiGestureEvent;
502
503
504/**
505 * \brief Dollar Gesture Event (event.dgesture.*)
506 */
507typedef struct SDL_DollarGestureEvent
508{
509 Uint32 type; /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */
510 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
511 SDL_TouchID touchId; /**< The touch device id */
512 SDL_GestureID gestureId;
513 Uint32 numFingers;
514 float error;
515 float x; /**< Normalized center of gesture */
516 float y; /**< Normalized center of gesture */
517} SDL_DollarGestureEvent;
518
519
520/**
521 * \brief An event used to request a file open by the system (event.drop.*)
522 * This event is enabled by default, you can disable it with SDL_EventState().
523 * \note If this event is enabled, you must free the filename in the event.
524 */
525typedef struct SDL_DropEvent
526{
527 Uint32 type; /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */
528 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
529 char *file; /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */
530 Uint32 windowID; /**< The window that was dropped on, if any */
531} SDL_DropEvent;
532
533
534/**
535 * \brief Sensor event structure (event.sensor.*)
536 */
537typedef struct SDL_SensorEvent
538{
539 Uint32 type; /**< ::SDL_SENSORUPDATE */
540 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
541 Sint32 which; /**< The instance ID of the sensor */
542 float data[6]; /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */
543} SDL_SensorEvent;
544
545/**
546 * \brief The "quit requested" event
547 */
548typedef struct SDL_QuitEvent
549{
550 Uint32 type; /**< ::SDL_QUIT */
551 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
552} SDL_QuitEvent;
553
554/**
555 * \brief OS Specific event
556 */
557typedef struct SDL_OSEvent
558{
559 Uint32 type; /**< ::SDL_QUIT */
560 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
561} SDL_OSEvent;
562
563/**
564 * \brief A user-defined event type (event.user.*)
565 */
566typedef struct SDL_UserEvent
567{
568 Uint32 type; /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */
569 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
570 Uint32 windowID; /**< The associated window if any */
571 Sint32 code; /**< User defined event code */
572 void *data1; /**< User defined data pointer */
573 void *data2; /**< User defined data pointer */
574} SDL_UserEvent;
575
576
577struct SDL_SysWMmsg;
578typedef struct SDL_SysWMmsg SDL_SysWMmsg;
579
580/**
581 * \brief A video driver dependent system event (event.syswm.*)
582 * This event is disabled by default, you can enable it with SDL_EventState()
583 *
584 * \note If you want to use this event, you should include SDL_syswm.h.
585 */
586typedef struct SDL_SysWMEvent
587{
588 Uint32 type; /**< ::SDL_SYSWMEVENT */
589 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
590 SDL_SysWMmsg *msg; /**< driver dependent data, defined in SDL_syswm.h */
591} SDL_SysWMEvent;
592
593/**
594 * \brief General event structure
595 */
596typedef union SDL_Event
597{
598 Uint32 type; /**< Event type, shared with all events */
599 SDL_CommonEvent common; /**< Common event data */
600 SDL_DisplayEvent display; /**< Display event data */
601 SDL_WindowEvent window; /**< Window event data */
602 SDL_KeyboardEvent key; /**< Keyboard event data */
603 SDL_TextEditingEvent edit; /**< Text editing event data */
604 SDL_TextInputEvent text; /**< Text input event data */
605 SDL_MouseMotionEvent motion; /**< Mouse motion event data */
606 SDL_MouseButtonEvent button; /**< Mouse button event data */
607 SDL_MouseWheelEvent wheel; /**< Mouse wheel event data */
608 SDL_JoyAxisEvent jaxis; /**< Joystick axis event data */
609 SDL_JoyBallEvent jball; /**< Joystick ball event data */
610 SDL_JoyHatEvent jhat; /**< Joystick hat event data */
611 SDL_JoyButtonEvent jbutton; /**< Joystick button event data */
612 SDL_JoyDeviceEvent jdevice; /**< Joystick device change event data */
613 SDL_ControllerAxisEvent caxis; /**< Game Controller axis event data */
614 SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */
615 SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */
616 SDL_ControllerTouchpadEvent ctouchpad; /**< Game Controller touchpad event data */
617 SDL_ControllerSensorEvent csensor; /**< Game Controller sensor event data */
618 SDL_AudioDeviceEvent adevice; /**< Audio device event data */
619 SDL_SensorEvent sensor; /**< Sensor event data */
620 SDL_QuitEvent quit; /**< Quit request event data */
621 SDL_UserEvent user; /**< Custom event data */
622 SDL_SysWMEvent syswm; /**< System dependent window event data */
623 SDL_TouchFingerEvent tfinger; /**< Touch finger event data */
624 SDL_MultiGestureEvent mgesture; /**< Gesture event data */
625 SDL_DollarGestureEvent dgesture; /**< Gesture event data */
626 SDL_DropEvent drop; /**< Drag and drop event data */
627
628 /* This is necessary for ABI compatibility between Visual C++ and GCC.
629 Visual C++ will respect the push pack pragma and use 52 bytes (size of
630 SDL_TextEditingEvent, the largest structure for 32-bit and 64-bit
631 architectures) for this union, and GCC will use the alignment of the
632 largest datatype within the union, which is 8 bytes on 64-bit
633 architectures.
634
635 So... we'll add padding to force the size to be 56 bytes for both.
636
637 On architectures where pointers are 16 bytes, this needs rounding up to
638 the next multiple of 16, 64, and on architectures where pointers are
639 even larger the size of SDL_UserEvent will dominate as being 3 pointers.
640 */
641 Uint8 padding[sizeof(void *) <= 8 ? 56 : sizeof(void *) == 16 ? 64 : 3 * sizeof(void *)];
642} SDL_Event;
643
644/* Make sure we haven't broken binary compatibility */
645SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == sizeof(((SDL_Event *)NULL)->padding));
646
647
648/* Function prototypes */
649
650/**
651 * Pump the event loop, gathering events from the input devices.
652 *
653 * This function updates the event queue and internal input device state.
654 *
655 * **WARNING**: This should only be run in the thread that initialized the
656 * video subsystem, and for extra safety, you should consider only doing those
657 * things on the main thread in any case.
658 *
659 * SDL_PumpEvents() gathers all the pending input information from devices and
660 * places it in the event queue. Without calls to SDL_PumpEvents() no events
661 * would ever be placed on the queue. Often the need for calls to
662 * SDL_PumpEvents() is hidden from the user since SDL_PollEvent() and
663 * SDL_WaitEvent() implicitly call SDL_PumpEvents(). However, if you are not
664 * polling or waiting for events (e.g. you are filtering them), then you must
665 * call SDL_PumpEvents() to force an event queue update.
666 *
667 * \since This function is available since SDL 2.0.0.
668 *
669 * \sa SDL_PollEvent
670 * \sa SDL_WaitEvent
671 */
672extern DECLSPEC void SDLCALL SDL_PumpEvents(void);
673
674/* @{ */
675typedef enum
676{
677 SDL_ADDEVENT,
678 SDL_PEEKEVENT,
679 SDL_GETEVENT
680} SDL_eventaction;
681
682/**
683 * Check the event queue for messages and optionally return them.
684 *
685 * `action` may be any of the following:
686 *
687 * - `SDL_ADDEVENT`: up to `numevents` events will be added to the back of the
688 * event queue.
689 * - `SDL_PEEKEVENT`: `numevents` events at the front of the event queue,
690 * within the specified minimum and maximum type, will be returned to the
691 * caller and will _not_ be removed from the queue.
692 * - `SDL_GETEVENT`: up to `numevents` events at the front of the event queue,
693 * within the specified minimum and maximum type, will be returned to the
694 * caller and will be removed from the queue.
695 *
696 * You may have to call SDL_PumpEvents() before calling this function.
697 * Otherwise, the events may not be ready to be filtered when you call
698 * SDL_PeepEvents().
699 *
700 * This function is thread-safe.
701 *
702 * \param events destination buffer for the retrieved events
703 * \param numevents if action is SDL_ADDEVENT, the number of events to add
704 * back to the event queue; if action is SDL_PEEKEVENT or
705 * SDL_GETEVENT, the maximum number of events to retrieve
706 * \param action action to take; see [[#action|Remarks]] for details
707 * \param minType minimum value of the event type to be considered;
708 * SDL_FIRSTEVENT is a safe choice
709 * \param maxType maximum value of the event type to be considered;
710 * SDL_LASTEVENT is a safe choice
711 * \returns the number of events actually stored or a negative error code on
712 * failure; call SDL_GetError() for more information.
713 *
714 * \since This function is available since SDL 2.0.0.
715 *
716 * \sa SDL_PollEvent
717 * \sa SDL_PumpEvents
718 * \sa SDL_PushEvent
719 */
720extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents,
721 SDL_eventaction action,
722 Uint32 minType, Uint32 maxType);
723/* @} */
724
725/**
726 * Check for the existence of a certain event type in the event queue.
727 *
728 * If you need to check for a range of event types, use SDL_HasEvents()
729 * instead.
730 *
731 * \param type the type of event to be queried; see SDL_EventType for details
732 * \returns SDL_TRUE if events matching `type` are present, or SDL_FALSE if
733 * events matching `type` are not present.
734 *
735 * \since This function is available since SDL 2.0.0.
736 *
737 * \sa SDL_HasEvents
738 */
739extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type);
740
741
742/**
743 * Check for the existence of certain event types in the event queue.
744 *
745 * If you need to check for a single event type, use SDL_HasEvent() instead.
746 *
747 * \param minType the low end of event type to be queried, inclusive; see
748 * SDL_EventType for details
749 * \param maxType the high end of event type to be queried, inclusive; see
750 * SDL_EventType for details
751 * \returns SDL_TRUE if events with type >= `minType` and <= `maxType` are
752 * present, or SDL_FALSE if not.
753 *
754 * \since This function is available since SDL 2.0.0.
755 *
756 * \sa SDL_HasEvents
757 */
758extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType);
759
760/**
761 * Clear events of a specific type from the event queue.
762 *
763 * This will unconditionally remove any events from the queue that match
764 * `type`. If you need to remove a range of event types, use SDL_FlushEvents()
765 * instead.
766 *
767 * It's also normal to just ignore events you don't care about in your event
768 * loop without calling this function.
769 *
770 * This function only affects currently queued events. If you want to make
771 * sure that all pending OS events are flushed, you can call SDL_PumpEvents()
772 * on the main thread immediately before the flush call.
773 *
774 * \param type the type of event to be cleared; see SDL_EventType for details
775 *
776 * \since This function is available since SDL 2.0.0.
777 *
778 * \sa SDL_FlushEvents
779 */
780extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type);
781
782/**
783 * Clear events of a range of types from the event queue.
784 *
785 * This will unconditionally remove any events from the queue that are in the
786 * range of `minType` to `maxType`, inclusive. If you need to remove a single
787 * event type, use SDL_FlushEvent() instead.
788 *
789 * It's also normal to just ignore events you don't care about in your event
790 * loop without calling this function.
791 *
792 * This function only affects currently queued events. If you want to make
793 * sure that all pending OS events are flushed, you can call SDL_PumpEvents()
794 * on the main thread immediately before the flush call.
795 *
796 * \param minType the low end of event type to be cleared, inclusive; see
797 * SDL_EventType for details
798 * \param maxType the high end of event type to be cleared, inclusive; see
799 * SDL_EventType for details
800 *
801 * \since This function is available since SDL 2.0.0.
802 *
803 * \sa SDL_FlushEvent
804 */
805extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType);
806
807/**
808 * Poll for currently pending events.
809 *
810 * If `event` is not NULL, the next event is removed from the queue and stored
811 * in the SDL_Event structure pointed to by `event`. The 1 returned refers to
812 * this event, immediately stored in the SDL Event structure -- not an event
813 * to follow.
814 *
815 * If `event` is NULL, it simply returns 1 if there is an event in the queue,
816 * but will not remove it from the queue.
817 *
818 * As this function may implicitly call SDL_PumpEvents(), you can only call
819 * this function in the thread that set the video mode.
820 *
821 * SDL_PollEvent() is the favored way of receiving system events since it can
822 * be done from the main loop and does not suspend the main loop while waiting
823 * on an event to be posted.
824 *
825 * The common practice is to fully process the event queue once every frame,
826 * usually as a first step before updating the game's state:
827 *
828 * ```c
829 * while (game_is_still_running) {
830 * SDL_Event event;
831 * while (SDL_PollEvent(&event)) { // poll until all events are handled!
832 * // decide what to do with this event.
833 * }
834 *
835 * // update game state, draw the current frame
836 * }
837 * ```
838 *
839 * \param event the SDL_Event structure to be filled with the next event from
840 * the queue, or NULL
841 * \returns 1 if there is a pending event or 0 if there are none available.
842 *
843 * \since This function is available since SDL 2.0.0.
844 *
845 * \sa SDL_GetEventFilter
846 * \sa SDL_PeepEvents
847 * \sa SDL_PushEvent
848 * \sa SDL_SetEventFilter
849 * \sa SDL_WaitEvent
850 * \sa SDL_WaitEventTimeout
851 */
852extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event);
853
854/**
855 * Wait indefinitely for the next available event.
856 *
857 * If `event` is not NULL, the next event is removed from the queue and stored
858 * in the SDL_Event structure pointed to by `event`.
859 *
860 * As this function may implicitly call SDL_PumpEvents(), you can only call
861 * this function in the thread that initialized the video subsystem.
862 *
863 * \param event the SDL_Event structure to be filled in with the next event
864 * from the queue, or NULL
865 * \returns 1 on success or 0 if there was an error while waiting for events;
866 * call SDL_GetError() for more information.
867 *
868 * \since This function is available since SDL 2.0.0.
869 *
870 * \sa SDL_PollEvent
871 * \sa SDL_PumpEvents
872 * \sa SDL_WaitEventTimeout
873 */
874extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event);
875
876/**
877 * Wait until the specified timeout (in milliseconds) for the next available
878 * event.
879 *
880 * If `event` is not NULL, the next event is removed from the queue and stored
881 * in the SDL_Event structure pointed to by `event`.
882 *
883 * As this function may implicitly call SDL_PumpEvents(), you can only call
884 * this function in the thread that initialized the video subsystem.
885 *
886 * \param event the SDL_Event structure to be filled in with the next event
887 * from the queue, or NULL
888 * \param timeout the maximum number of milliseconds to wait for the next
889 * available event
890 * \returns 1 on success or 0 if there was an error while waiting for events;
891 * call SDL_GetError() for more information. This also returns 0 if
892 * the timeout elapsed without an event arriving.
893 *
894 * \since This function is available since SDL 2.0.0.
895 *
896 * \sa SDL_PollEvent
897 * \sa SDL_PumpEvents
898 * \sa SDL_WaitEvent
899 */
900extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event,
901 int timeout);
902
903/**
904 * Add an event to the event queue.
905 *
906 * The event queue can actually be used as a two way communication channel.
907 * Not only can events be read from the queue, but the user can also push
908 * their own events onto it. `event` is a pointer to the event structure you
909 * wish to push onto the queue. The event is copied into the queue, and the
910 * caller may dispose of the memory pointed to after SDL_PushEvent() returns.
911 *
912 * Note: Pushing device input events onto the queue doesn't modify the state
913 * of the device within SDL.
914 *
915 * This function is thread-safe, and can be called from other threads safely.
916 *
917 * Note: Events pushed onto the queue with SDL_PushEvent() get passed through
918 * the event filter but events added with SDL_PeepEvents() do not.
919 *
920 * For pushing application-specific events, please use SDL_RegisterEvents() to
921 * get an event type that does not conflict with other code that also wants
922 * its own custom event types.
923 *
924 * \param event the SDL_Event to be added to the queue
925 * \returns 1 on success, 0 if the event was filtered, or a negative error
926 * code on failure; call SDL_GetError() for more information. A
927 * common reason for error is the event queue being full.
928 *
929 * \since This function is available since SDL 2.0.0.
930 *
931 * \sa SDL_PeepEvents
932 * \sa SDL_PollEvent
933 * \sa SDL_RegisterEvents
934 */
935extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event);
936
937/**
938 * A function pointer used for callbacks that watch the event queue.
939 *
940 * \param userdata what was passed as `userdata` to SDL_SetEventFilter()
941 * or SDL_AddEventWatch, etc
942 * \param event the event that triggered the callback
943 * \returns 1 to permit event to be added to the queue, and 0 to disallow
944 * it. When used with SDL_AddEventWatch, the return value is ignored.
945 *
946 * \sa SDL_SetEventFilter
947 * \sa SDL_AddEventWatch
948 */
949typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event);
950
951/**
952 * Set up a filter to process all events before they change internal state and
953 * are posted to the internal event queue.
954 *
955 * If the filter function returns 1 when called, then the event will be added
956 * to the internal queue. If it returns 0, then the event will be dropped from
957 * the queue, but the internal state will still be updated. This allows
958 * selective filtering of dynamically arriving events.
959 *
960 * **WARNING**: Be very careful of what you do in the event filter function,
961 * as it may run in a different thread!
962 *
963 * On platforms that support it, if the quit event is generated by an
964 * interrupt signal (e.g. pressing Ctrl-C), it will be delivered to the
965 * application at the next event poll.
966 *
967 * There is one caveat when dealing with the ::SDL_QuitEvent event type. The
968 * event filter is only called when the window manager desires to close the
969 * application window. If the event filter returns 1, then the window will be
970 * closed, otherwise the window will remain open if possible.
971 *
972 * Note: Disabled events never make it to the event filter function; see
973 * SDL_EventState().
974 *
975 * Note: If you just want to inspect events without filtering, you should use
976 * SDL_AddEventWatch() instead.
977 *
978 * Note: Events pushed onto the queue with SDL_PushEvent() get passed through
979 * the event filter, but events pushed onto the queue with SDL_PeepEvents() do
980 * not.
981 *
982 * \param filter An SDL_EventFilter function to call when an event happens
983 * \param userdata a pointer that is passed to `filter`
984 *
985 * \since This function is available since SDL 2.0.0.
986 *
987 * \sa SDL_AddEventWatch
988 * \sa SDL_EventState
989 * \sa SDL_GetEventFilter
990 * \sa SDL_PeepEvents
991 * \sa SDL_PushEvent
992 */
993extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter,
994 void *userdata);
995
996/**
997 * Query the current event filter.
998 *
999 * This function can be used to "chain" filters, by saving the existing filter
1000 * before replacing it with a function that will call that saved filter.
1001 *
1002 * \param filter the current callback function will be stored here
1003 * \param userdata the pointer that is passed to the current event filter will
1004 * be stored here
1005 * \returns SDL_TRUE on success or SDL_FALSE if there is no event filter set.
1006 *
1007 * \since This function is available since SDL 2.0.0.
1008 *
1009 * \sa SDL_SetEventFilter
1010 */
1011extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter,
1012 void **userdata);
1013
1014/**
1015 * Add a callback to be triggered when an event is added to the event queue.
1016 *
1017 * `filter` will be called when an event happens, and its return value is
1018 * ignored.
1019 *
1020 * **WARNING**: Be very careful of what you do in the event filter function,
1021 * as it may run in a different thread!
1022 *
1023 * If the quit event is generated by a signal (e.g. SIGINT), it will bypass
1024 * the internal queue and be delivered to the watch callback immediately, and
1025 * arrive at the next event poll.
1026 *
1027 * Note: the callback is called for events posted by the user through
1028 * SDL_PushEvent(), but not for disabled events, nor for events by a filter
1029 * callback set with SDL_SetEventFilter(), nor for events posted by the user
1030 * through SDL_PeepEvents().
1031 *
1032 * \param filter an SDL_EventFilter function to call when an event happens.
1033 * \param userdata a pointer that is passed to `filter`
1034 *
1035 * \since This function is available since SDL 2.0.0.
1036 *
1037 * \sa SDL_DelEventWatch
1038 * \sa SDL_SetEventFilter
1039 */
1040extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter,
1041 void *userdata);
1042
1043/**
1044 * Remove an event watch callback added with SDL_AddEventWatch().
1045 *
1046 * This function takes the same input as SDL_AddEventWatch() to identify and
1047 * delete the corresponding callback.
1048 *
1049 * \param filter the function originally passed to SDL_AddEventWatch()
1050 * \param userdata the pointer originally passed to SDL_AddEventWatch()
1051 *
1052 * \since This function is available since SDL 2.0.0.
1053 *
1054 * \sa SDL_AddEventWatch
1055 */
1056extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter,
1057 void *userdata);
1058
1059/**
1060 * Run a specific filter function on the current event queue, removing any
1061 * events for which the filter returns 0.
1062 *
1063 * See SDL_SetEventFilter() for more information. Unlike SDL_SetEventFilter(),
1064 * this function does not change the filter permanently, it only uses the
1065 * supplied filter until this function returns.
1066 *
1067 * \param filter the SDL_EventFilter function to call when an event happens
1068 * \param userdata a pointer that is passed to `filter`
1069 *
1070 * \since This function is available since SDL 2.0.0.
1071 *
1072 * \sa SDL_GetEventFilter
1073 * \sa SDL_SetEventFilter
1074 */
1075extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter,
1076 void *userdata);
1077
1078/* @{ */
1079#define SDL_QUERY -1
1080#define SDL_IGNORE 0
1081#define SDL_DISABLE 0
1082#define SDL_ENABLE 1
1083
1084/**
1085 * Set the state of processing events by type.
1086 *
1087 * `state` may be any of the following:
1088 *
1089 * - `SDL_QUERY`: returns the current processing state of the specified event
1090 * - `SDL_IGNORE` (aka `SDL_DISABLE`): the event will automatically be dropped
1091 * from the event queue and will not be filtered
1092 * - `SDL_ENABLE`: the event will be processed normally
1093 *
1094 * \param type the type of event; see SDL_EventType for details
1095 * \param state how to process the event
1096 * \returns `SDL_DISABLE` or `SDL_ENABLE`, representing the processing state
1097 * of the event before this function makes any changes to it.
1098 *
1099 * \since This function is available since SDL 2.0.0.
1100 *
1101 * \sa SDL_GetEventState
1102 */
1103extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state);
1104/* @} */
1105#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY)
1106
1107/**
1108 * Allocate a set of user-defined events, and return the beginning event
1109 * number for that set of events.
1110 *
1111 * Calling this function with `numevents` <= 0 is an error and will return
1112 * (Uint32)-1.
1113 *
1114 * Note, (Uint32)-1 means the maximum unsigned 32-bit integer value (or
1115 * 0xFFFFFFFF), but is clearer to write.
1116 *
1117 * \param numevents the number of events to be allocated
1118 * \returns the beginning event number, or (Uint32)-1 if there are not enough
1119 * user-defined events left.
1120 *
1121 * \since This function is available since SDL 2.0.0.
1122 *
1123 * \sa SDL_PushEvent
1124 */
1125extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents);
1126
1127/* Ends C function definitions when using C++ */
1128#ifdef __cplusplus
1129}
1130#endif
1131#include "close_code.h"
1132
1133#endif /* SDL_events_h_ */
1134
1135/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_filesystem.h b/vendor/SDL2/include/SDL_filesystem.h new file mode 100644 index 0000000..16f02e2 --- /dev/null +++ b/vendor/SDL2/include/SDL_filesystem.h
@@ -0,0 +1,145 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_filesystem.h
24 *
25 * \brief Include file for filesystem SDL API functions
26 */
27
28#ifndef SDL_filesystem_h_
29#define SDL_filesystem_h_
30
31#include "SDL_stdinc.h"
32
33#include "begin_code.h"
34
35/* Set up for C function definitions, even when using C++ */
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40/**
41 * Get the directory where the application was run from.
42 *
43 * This is not necessarily a fast call, so you should call this once near
44 * startup and save the string if you need it.
45 *
46 * **Mac OS X and iOS Specific Functionality**: If the application is in a
47 * ".app" bundle, this function returns the Resource directory (e.g.
48 * MyApp.app/Contents/Resources/). This behaviour can be overridden by adding
49 * a property to the Info.plist file. Adding a string key with the name
50 * SDL_FILESYSTEM_BASE_DIR_TYPE with a supported value will change the
51 * behaviour.
52 *
53 * Supported values for the SDL_FILESYSTEM_BASE_DIR_TYPE property (Given an
54 * application in /Applications/SDLApp/MyApp.app):
55 *
56 * - `resource`: bundle resource directory (the default). For example:
57 * `/Applications/SDLApp/MyApp.app/Contents/Resources`
58 * - `bundle`: the Bundle directory. For example:
59 * `/Applications/SDLApp/MyApp.app/`
60 * - `parent`: the containing directory of the bundle. For example:
61 * `/Applications/SDLApp/`
62 *
63 * The returned path is guaranteed to end with a path separator ('\' on
64 * Windows, '/' on most other platforms).
65 *
66 * The pointer returned is owned by the caller. Please call SDL_free() on the
67 * pointer when done with it.
68 *
69 * \returns an absolute path in UTF-8 encoding to the application data
70 * directory. NULL will be returned on error or when the platform
71 * doesn't implement this functionality, call SDL_GetError() for more
72 * information.
73 *
74 * \since This function is available since SDL 2.0.1.
75 *
76 * \sa SDL_GetPrefPath
77 */
78extern DECLSPEC char *SDLCALL SDL_GetBasePath(void);
79
80/**
81 * Get the user-and-app-specific path where files can be written.
82 *
83 * Get the "pref dir". This is meant to be where users can write personal
84 * files (preferences and save games, etc) that are specific to your
85 * application. This directory is unique per user, per application.
86 *
87 * This function will decide the appropriate location in the native
88 * filesystem, create the directory if necessary, and return a string of the
89 * absolute path to the directory in UTF-8 encoding.
90 *
91 * On Windows, the string might look like:
92 *
93 * `C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\`
94 *
95 * On Linux, the string might look like"
96 *
97 * `/home/bob/.local/share/My Program Name/`
98 *
99 * On Mac OS X, the string might look like:
100 *
101 * `/Users/bob/Library/Application Support/My Program Name/`
102 *
103 * You should assume the path returned by this function is the only safe place
104 * to write files (and that SDL_GetBasePath(), while it might be writable, or
105 * even the parent of the returned path, isn't where you should be writing
106 * things).
107 *
108 * Both the org and app strings may become part of a directory name, so please
109 * follow these rules:
110 *
111 * - Try to use the same org string (_including case-sensitivity_) for all
112 * your applications that use this function.
113 * - Always use a unique app string for each one, and make sure it never
114 * changes for an app once you've decided on it.
115 * - Unicode characters are legal, as long as it's UTF-8 encoded, but...
116 * - ...only use letters, numbers, and spaces. Avoid punctuation like "Game
117 * Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient.
118 *
119 * The returned path is guaranteed to end with a path separator ('\' on
120 * Windows, '/' on most other platforms).
121 *
122 * The pointer returned is owned by the caller. Please call SDL_free() on the
123 * pointer when done with it.
124 *
125 * \param org the name of your organization
126 * \param app the name of your application
127 * \returns a UTF-8 string of the user directory in platform-dependent
128 * notation. NULL if there's a problem (creating directory failed,
129 * etc.).
130 *
131 * \since This function is available since SDL 2.0.1.
132 *
133 * \sa SDL_GetBasePath
134 */
135extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app);
136
137/* Ends C function definitions when using C++ */
138#ifdef __cplusplus
139}
140#endif
141#include "close_code.h"
142
143#endif /* SDL_filesystem_h_ */
144
145/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_gamecontroller.h b/vendor/SDL2/include/SDL_gamecontroller.h new file mode 100644 index 0000000..bdd9b89 --- /dev/null +++ b/vendor/SDL2/include/SDL_gamecontroller.h
@@ -0,0 +1,1001 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_gamecontroller.h
24 *
25 * Include file for SDL game controller event handling
26 */
27
28#ifndef SDL_gamecontroller_h_
29#define SDL_gamecontroller_h_
30
31#include "SDL_stdinc.h"
32#include "SDL_error.h"
33#include "SDL_rwops.h"
34#include "SDL_sensor.h"
35#include "SDL_joystick.h"
36
37#include "begin_code.h"
38/* Set up for C function definitions, even when using C++ */
39#ifdef __cplusplus
40extern "C" {
41#endif
42
43/**
44 * \file SDL_gamecontroller.h
45 *
46 * In order to use these functions, SDL_Init() must have been called
47 * with the ::SDL_INIT_GAMECONTROLLER flag. This causes SDL to scan the system
48 * for game controllers, and load appropriate drivers.
49 *
50 * If you would like to receive controller updates while the application
51 * is in the background, you should set the following hint before calling
52 * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
53 */
54
55/**
56 * The gamecontroller structure used to identify an SDL game controller
57 */
58struct _SDL_GameController;
59typedef struct _SDL_GameController SDL_GameController;
60
61typedef enum
62{
63 SDL_CONTROLLER_TYPE_UNKNOWN = 0,
64 SDL_CONTROLLER_TYPE_XBOX360,
65 SDL_CONTROLLER_TYPE_XBOXONE,
66 SDL_CONTROLLER_TYPE_PS3,
67 SDL_CONTROLLER_TYPE_PS4,
68 SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO,
69 SDL_CONTROLLER_TYPE_VIRTUAL,
70 SDL_CONTROLLER_TYPE_PS5,
71 SDL_CONTROLLER_TYPE_AMAZON_LUNA,
72 SDL_CONTROLLER_TYPE_GOOGLE_STADIA
73} SDL_GameControllerType;
74
75typedef enum
76{
77 SDL_CONTROLLER_BINDTYPE_NONE = 0,
78 SDL_CONTROLLER_BINDTYPE_BUTTON,
79 SDL_CONTROLLER_BINDTYPE_AXIS,
80 SDL_CONTROLLER_BINDTYPE_HAT
81} SDL_GameControllerBindType;
82
83/**
84 * Get the SDL joystick layer binding for this controller button/axis mapping
85 */
86typedef struct SDL_GameControllerButtonBind
87{
88 SDL_GameControllerBindType bindType;
89 union
90 {
91 int button;
92 int axis;
93 struct {
94 int hat;
95 int hat_mask;
96 } hat;
97 } value;
98
99} SDL_GameControllerButtonBind;
100
101
102/**
103 * To count the number of game controllers in the system for the following:
104 *
105 * ```c
106 * int nJoysticks = SDL_NumJoysticks();
107 * int nGameControllers = 0;
108 * for (int i = 0; i < nJoysticks; i++) {
109 * if (SDL_IsGameController(i)) {
110 * nGameControllers++;
111 * }
112 * }
113 * ```
114 *
115 * Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping() you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is:
116 * guid,name,mappings
117 *
118 * Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones.
119 * Under Windows there is a reserved GUID of "xinput" that covers any XInput devices.
120 * The mapping format for joystick is:
121 * bX - a joystick button, index X
122 * hX.Y - hat X with value Y
123 * aX - axis X of the joystick
124 * Buttons can be used as a controller axis and vice versa.
125 *
126 * This string shows an example of a valid mapping for a controller
127 *
128 * ```c
129 * "03000000341a00003608000000000000,PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7",
130 * ```
131 */
132
133/**
134 * Load a set of Game Controller mappings from a seekable SDL data stream.
135 *
136 * You can call this function several times, if needed, to load different
137 * database files.
138 *
139 * If a new mapping is loaded for an already known controller GUID, the later
140 * version will overwrite the one currently loaded.
141 *
142 * Mappings not belonging to the current platform or with no platform field
143 * specified will be ignored (i.e. mappings for Linux will be ignored in
144 * Windows, etc).
145 *
146 * This function will load the text database entirely in memory before
147 * processing it, so take this into consideration if you are in a memory
148 * constrained environment.
149 *
150 * \param rw the data stream for the mappings to be added
151 * \param freerw non-zero to close the stream after being read
152 * \returns the number of mappings added or -1 on error; call SDL_GetError()
153 * for more information.
154 *
155 * \since This function is available since SDL 2.0.2.
156 *
157 * \sa SDL_GameControllerAddMapping
158 * \sa SDL_GameControllerAddMappingsFromFile
159 * \sa SDL_GameControllerMappingForGUID
160 */
161extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw);
162
163/**
164 * Load a set of mappings from a file, filtered by the current SDL_GetPlatform()
165 *
166 * Convenience macro.
167 */
168#define SDL_GameControllerAddMappingsFromFile(file) SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1)
169
170/**
171 * Add support for controllers that SDL is unaware of or to cause an existing
172 * controller to have a different binding.
173 *
174 * The mapping string has the format "GUID,name,mapping", where GUID is the
175 * string value from SDL_JoystickGetGUIDString(), name is the human readable
176 * string for the device and mappings are controller mappings to joystick
177 * ones. Under Windows there is a reserved GUID of "xinput" that covers all
178 * XInput devices. The mapping format for joystick is: {| |bX |a joystick
179 * button, index X |- |hX.Y |hat X with value Y |- |aX |axis X of the joystick
180 * |} Buttons can be used as a controller axes and vice versa.
181 *
182 * This string shows an example of a valid mapping for a controller:
183 *
184 * ```c
185 * "341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7"
186 * ```
187 *
188 * \param mappingString the mapping string
189 * \returns 1 if a new mapping is added, 0 if an existing mapping is updated,
190 * -1 on error; call SDL_GetError() for more information.
191 *
192 * \since This function is available since SDL 2.0.0.
193 *
194 * \sa SDL_GameControllerMapping
195 * \sa SDL_GameControllerMappingForGUID
196 */
197extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString);
198
199/**
200 * Get the number of mappings installed.
201 *
202 * \returns the number of mappings.
203 *
204 * \since This function is available since SDL 2.0.6.
205 */
206extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void);
207
208/**
209 * Get the mapping at a particular index.
210 *
211 * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if
212 * the index is out of range.
213 *
214 * \since This function is available since SDL 2.0.6.
215 */
216extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index);
217
218/**
219 * Get the game controller mapping string for a given GUID.
220 *
221 * The returned string must be freed with SDL_free().
222 *
223 * \param guid a structure containing the GUID for which a mapping is desired
224 * \returns a mapping string or NULL on error; call SDL_GetError() for more
225 * information.
226 *
227 * \since This function is available since SDL 2.0.0.
228 *
229 * \sa SDL_JoystickGetDeviceGUID
230 * \sa SDL_JoystickGetGUID
231 */
232extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid);
233
234/**
235 * Get the current mapping of a Game Controller.
236 *
237 * The returned string must be freed with SDL_free().
238 *
239 * Details about mappings are discussed with SDL_GameControllerAddMapping().
240 *
241 * \param gamecontroller the game controller you want to get the current
242 * mapping for
243 * \returns a string that has the controller's mapping or NULL if no mapping
244 * is available; call SDL_GetError() for more information.
245 *
246 * \since This function is available since SDL 2.0.0.
247 *
248 * \sa SDL_GameControllerAddMapping
249 * \sa SDL_GameControllerMappingForGUID
250 */
251extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController *gamecontroller);
252
253/**
254 * Check if the given joystick is supported by the game controller interface.
255 *
256 * `joystick_index` is the same as the `device_index` passed to
257 * SDL_JoystickOpen().
258 *
259 * \param joystick_index the device_index of a device, up to
260 * SDL_NumJoysticks()
261 * \returns SDL_TRUE if the given joystick is supported by the game controller
262 * interface, SDL_FALSE if it isn't or it's an invalid index.
263 *
264 * \since This function is available since SDL 2.0.0.
265 *
266 * \sa SDL_GameControllerNameForIndex
267 * \sa SDL_GameControllerOpen
268 */
269extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index);
270
271/**
272 * Get the implementation dependent name for the game controller.
273 *
274 * This function can be called before any controllers are opened.
275 *
276 * `joystick_index` is the same as the `device_index` passed to
277 * SDL_JoystickOpen().
278 *
279 * \param joystick_index the device_index of a device, from zero to
280 * SDL_NumJoysticks()-1
281 * \returns the implementation-dependent name for the game controller, or NULL
282 * if there is no name or the index is invalid.
283 *
284 * \since This function is available since SDL 2.0.0.
285 *
286 * \sa SDL_GameControllerName
287 * \sa SDL_GameControllerOpen
288 * \sa SDL_IsGameController
289 */
290extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index);
291
292/**
293 * Get the type of a game controller.
294 *
295 * This can be called before any controllers are opened.
296 *
297 * \param joystick_index the device_index of a device, from zero to
298 * SDL_NumJoysticks()-1
299 * \returns the controller type.
300 *
301 * \since This function is available since SDL 2.0.12.
302 */
303extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerTypeForIndex(int joystick_index);
304
305/**
306 * Get the mapping of a game controller.
307 *
308 * This can be called before any controllers are opened.
309 *
310 * \param joystick_index the device_index of a device, from zero to
311 * SDL_NumJoysticks()-1
312 * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if
313 * no mapping is available.
314 *
315 * \since This function is available since SDL 2.0.9.
316 */
317extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index);
318
319/**
320 * Open a game controller for use.
321 *
322 * `joystick_index` is the same as the `device_index` passed to
323 * SDL_JoystickOpen().
324 *
325 * The index passed as an argument refers to the N'th game controller on the
326 * system. This index is not the value which will identify this controller in
327 * future controller events. The joystick's instance id (SDL_JoystickID) will
328 * be used there instead.
329 *
330 * \param joystick_index the device_index of a device, up to
331 * SDL_NumJoysticks()
332 * \returns a gamecontroller identifier or NULL if an error occurred; call
333 * SDL_GetError() for more information.
334 *
335 * \since This function is available since SDL 2.0.0.
336 *
337 * \sa SDL_GameControllerClose
338 * \sa SDL_GameControllerNameForIndex
339 * \sa SDL_IsGameController
340 */
341extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index);
342
343/**
344 * Get the SDL_GameController associated with an instance id.
345 *
346 * \param joyid the instance id to get the SDL_GameController for
347 * \returns an SDL_GameController on success or NULL on failure; call
348 * SDL_GetError() for more information.
349 *
350 * \since This function is available since SDL 2.0.4.
351 */
352extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid);
353
354/**
355 * Get the SDL_GameController associated with a player index.
356 *
357 * Please note that the player index is _not_ the device index, nor is it the
358 * instance id!
359 *
360 * \param player_index the player index, which is not the device index or the
361 * instance id!
362 * \returns the SDL_GameController associated with a player index.
363 *
364 * \since This function is available since SDL 2.0.12.
365 *
366 * \sa SDL_GameControllerGetPlayerIndex
367 * \sa SDL_GameControllerSetPlayerIndex
368 */
369extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromPlayerIndex(int player_index);
370
371/**
372 * Get the implementation-dependent name for an opened game controller.
373 *
374 * This is the same name as returned by SDL_GameControllerNameForIndex(), but
375 * it takes a controller identifier instead of the (unstable) device index.
376 *
377 * \param gamecontroller a game controller identifier previously returned by
378 * SDL_GameControllerOpen()
379 * \returns the implementation dependent name for the game controller, or NULL
380 * if there is no name or the identifier passed is invalid.
381 *
382 * \since This function is available since SDL 2.0.0.
383 *
384 * \sa SDL_GameControllerNameForIndex
385 * \sa SDL_GameControllerOpen
386 */
387extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller);
388
389/**
390 * Get the type of this currently opened controller
391 *
392 * This is the same name as returned by SDL_GameControllerTypeForIndex(), but
393 * it takes a controller identifier instead of the (unstable) device index.
394 *
395 * \param gamecontroller the game controller object to query.
396 * \returns the controller type.
397 *
398 * \since This function is available since SDL 2.0.12.
399 */
400extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerGetType(SDL_GameController *gamecontroller);
401
402/**
403 * Get the player index of an opened game controller.
404 *
405 * For XInput controllers this returns the XInput user index.
406 *
407 * \param gamecontroller the game controller object to query.
408 * \returns the player index for controller, or -1 if it's not available.
409 *
410 * \since This function is available since SDL 2.0.9.
411 */
412extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller);
413
414/**
415 * Set the player index of an opened game controller.
416 *
417 * \param gamecontroller the game controller object to adjust.
418 * \param player_index Player index to assign to this controller.
419 *
420 * \since This function is available since SDL 2.0.12.
421 */
422extern DECLSPEC void SDLCALL SDL_GameControllerSetPlayerIndex(SDL_GameController *gamecontroller, int player_index);
423
424/**
425 * Get the USB vendor ID of an opened controller, if available.
426 *
427 * If the vendor ID isn't available this function returns 0.
428 *
429 * \param gamecontroller the game controller object to query.
430 * \return the USB vendor ID, or zero if unavailable.
431 *
432 * \since This function is available since SDL 2.0.6.
433 */
434extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController *gamecontroller);
435
436/**
437 * Get the USB product ID of an opened controller, if available.
438 *
439 * If the product ID isn't available this function returns 0.
440 *
441 * \param gamecontroller the game controller object to query.
442 * \return the USB product ID, or zero if unavailable.
443 *
444 * \since This function is available since SDL 2.0.6.
445 */
446extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController *gamecontroller);
447
448/**
449 * Get the product version of an opened controller, if available.
450 *
451 * If the product version isn't available this function returns 0.
452 *
453 * \param gamecontroller the game controller object to query.
454 * \return the USB product version, or zero if unavailable.
455 *
456 * \since This function is available since SDL 2.0.6.
457 */
458extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController *gamecontroller);
459
460/**
461 * Get the serial number of an opened controller, if available.
462 *
463 * Returns the serial number of the controller, or NULL if it is not
464 * available.
465 *
466 * \param gamecontroller the game controller object to query.
467 * \return the serial number, or NULL if unavailable.
468 *
469 * \since This function is available since SDL 2.0.14.
470 */
471extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller);
472
473/**
474 * Check if a controller has been opened and is currently connected.
475 *
476 * \param gamecontroller a game controller identifier previously returned by
477 * SDL_GameControllerOpen()
478 * \returns SDL_TRUE if the controller has been opened and is currently
479 * connected, or SDL_FALSE if not.
480 *
481 * \since This function is available since SDL 2.0.0.
482 *
483 * \sa SDL_GameControllerClose
484 * \sa SDL_GameControllerOpen
485 */
486extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller);
487
488/**
489 * Get the Joystick ID from a Game Controller.
490 *
491 * This function will give you a SDL_Joystick object, which allows you to use
492 * the SDL_Joystick functions with a SDL_GameController object. This would be
493 * useful for getting a joystick's position at any given time, even if it
494 * hasn't moved (moving it would produce an event, which would have the axis'
495 * value).
496 *
497 * The pointer returned is owned by the SDL_GameController. You should not
498 * call SDL_JoystickClose() on it, for example, since doing so will likely
499 * cause SDL to crash.
500 *
501 * \param gamecontroller the game controller object that you want to get a
502 * joystick from
503 * \returns a SDL_Joystick object; call SDL_GetError() for more information.
504 *
505 * \since This function is available since SDL 2.0.0.
506 */
507extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller);
508
509/**
510 * Query or change current state of Game Controller events.
511 *
512 * If controller events are disabled, you must call SDL_GameControllerUpdate()
513 * yourself and check the state of the controller when you want controller
514 * information.
515 *
516 * Any number can be passed to SDL_GameControllerEventState(), but only -1, 0,
517 * and 1 will have any effect. Other numbers will just be returned.
518 *
519 * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`
520 * \returns the same value passed to the function, with exception to -1
521 * (SDL_QUERY), which will return the current state.
522 *
523 * \since This function is available since SDL 2.0.0.
524 *
525 * \sa SDL_JoystickEventState
526 */
527extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state);
528
529/**
530 * Manually pump game controller updates if not using the loop.
531 *
532 * This function is called automatically by the event loop if events are
533 * enabled. Under such circumstances, it will not be necessary to call this
534 * function.
535 *
536 * \since This function is available since SDL 2.0.0.
537 */
538extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void);
539
540
541/**
542 * The list of axes available from a controller
543 *
544 * Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_JOYSTICK_AXIS_MAX,
545 * and are centered within ~8000 of zero, though advanced UI will allow users to set
546 * or autodetect the dead zone, which varies between controllers.
547 *
548 * Trigger axis values range from 0 to SDL_JOYSTICK_AXIS_MAX.
549 */
550typedef enum
551{
552 SDL_CONTROLLER_AXIS_INVALID = -1,
553 SDL_CONTROLLER_AXIS_LEFTX,
554 SDL_CONTROLLER_AXIS_LEFTY,
555 SDL_CONTROLLER_AXIS_RIGHTX,
556 SDL_CONTROLLER_AXIS_RIGHTY,
557 SDL_CONTROLLER_AXIS_TRIGGERLEFT,
558 SDL_CONTROLLER_AXIS_TRIGGERRIGHT,
559 SDL_CONTROLLER_AXIS_MAX
560} SDL_GameControllerAxis;
561
562/**
563 * Convert a string into SDL_GameControllerAxis enum.
564 *
565 * This function is called internally to translate SDL_GameController mapping
566 * strings for the underlying joystick device into the consistent
567 * SDL_GameController mapping. You do not normally need to call this function
568 * unless you are parsing SDL_GameController mappings in your own code.
569 *
570 * Note specially that "righttrigger" and "lefttrigger" map to
571 * `SDL_CONTROLLER_AXIS_TRIGGERRIGHT` and `SDL_CONTROLLER_AXIS_TRIGGERLEFT`,
572 * respectively.
573 *
574 * \param str string representing a SDL_GameController axis
575 * \returns the SDL_GameControllerAxis enum corresponding to the input string,
576 * or `SDL_CONTROLLER_AXIS_INVALID` if no match was found.
577 *
578 * \since This function is available since SDL 2.0.0.
579 *
580 * \sa SDL_GameControllerGetStringForAxis
581 */
582extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *str);
583
584/**
585 * Convert from an SDL_GameControllerAxis enum to a string.
586 *
587 * The caller should not SDL_free() the returned string.
588 *
589 * \param axis an enum value for a given SDL_GameControllerAxis
590 * \returns a string for the given axis, or NULL if an invalid axis is
591 * specified. The string returned is of the format used by
592 * SDL_GameController mapping strings.
593 *
594 * \since This function is available since SDL 2.0.0.
595 *
596 * \sa SDL_GameControllerGetAxisFromString
597 */
598extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis);
599
600/**
601 * Get the SDL joystick layer binding for a controller axis mapping.
602 *
603 * \param gamecontroller a game controller
604 * \param axis an axis enum value (one of the SDL_GameControllerAxis values)
605 * \returns a SDL_GameControllerButtonBind describing the bind. On failure
606 * (like the given Controller axis doesn't exist on the device), its
607 * `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`.
608 *
609 * \since This function is available since SDL 2.0.0.
610 *
611 * \sa SDL_GameControllerGetBindForButton
612 */
613extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
614SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller,
615 SDL_GameControllerAxis axis);
616
617/**
618 * Query whether a game controller has a given axis.
619 *
620 * This merely reports whether the controller's mapping defined this axis, as
621 * that is all the information SDL has about the physical device.
622 *
623 * \param gamecontroller a game controller
624 * \param axis an axis enum value (an SDL_GameControllerAxis value)
625 * \returns SDL_TRUE if the controller has this axis, SDL_FALSE otherwise.
626 *
627 * \since This function is available since SDL 2.0.14.
628 */
629extern DECLSPEC SDL_bool SDLCALL
630SDL_GameControllerHasAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis);
631
632/**
633 * Get the current state of an axis control on a game controller.
634 *
635 * The axis indices start at index 0.
636 *
637 * The state is a value ranging from -32768 to 32767. Triggers, however, range
638 * from 0 to 32767 (they never return a negative value).
639 *
640 * \param gamecontroller a game controller
641 * \param axis an axis index (one of the SDL_GameControllerAxis values)
642 * \returns axis state (including 0) on success or 0 (also) on failure; call
643 * SDL_GetError() for more information.
644 *
645 * \since This function is available since SDL 2.0.0.
646 *
647 * \sa SDL_GameControllerGetButton
648 */
649extern DECLSPEC Sint16 SDLCALL
650SDL_GameControllerGetAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis);
651
652/**
653 * The list of buttons available from a controller
654 */
655typedef enum
656{
657 SDL_CONTROLLER_BUTTON_INVALID = -1,
658 SDL_CONTROLLER_BUTTON_A,
659 SDL_CONTROLLER_BUTTON_B,
660 SDL_CONTROLLER_BUTTON_X,
661 SDL_CONTROLLER_BUTTON_Y,
662 SDL_CONTROLLER_BUTTON_BACK,
663 SDL_CONTROLLER_BUTTON_GUIDE,
664 SDL_CONTROLLER_BUTTON_START,
665 SDL_CONTROLLER_BUTTON_LEFTSTICK,
666 SDL_CONTROLLER_BUTTON_RIGHTSTICK,
667 SDL_CONTROLLER_BUTTON_LEFTSHOULDER,
668 SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,
669 SDL_CONTROLLER_BUTTON_DPAD_UP,
670 SDL_CONTROLLER_BUTTON_DPAD_DOWN,
671 SDL_CONTROLLER_BUTTON_DPAD_LEFT,
672 SDL_CONTROLLER_BUTTON_DPAD_RIGHT,
673 SDL_CONTROLLER_BUTTON_MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button */
674 SDL_CONTROLLER_BUTTON_PADDLE1, /* Xbox Elite paddle P1 */
675 SDL_CONTROLLER_BUTTON_PADDLE2, /* Xbox Elite paddle P3 */
676 SDL_CONTROLLER_BUTTON_PADDLE3, /* Xbox Elite paddle P2 */
677 SDL_CONTROLLER_BUTTON_PADDLE4, /* Xbox Elite paddle P4 */
678 SDL_CONTROLLER_BUTTON_TOUCHPAD, /* PS4/PS5 touchpad button */
679 SDL_CONTROLLER_BUTTON_MAX
680} SDL_GameControllerButton;
681
682/**
683 * Convert a string into an SDL_GameControllerButton enum.
684 *
685 * This function is called internally to translate SDL_GameController mapping
686 * strings for the underlying joystick device into the consistent
687 * SDL_GameController mapping. You do not normally need to call this function
688 * unless you are parsing SDL_GameController mappings in your own code.
689 *
690 * \param str string representing a SDL_GameController axis
691 * \returns the SDL_GameControllerButton enum corresponding to the input
692 * string, or `SDL_CONTROLLER_AXIS_INVALID` if no match was found.
693 *
694 * \since This function is available since SDL 2.0.0.
695 */
696extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *str);
697
698/**
699 * Convert from an SDL_GameControllerButton enum to a string.
700 *
701 * The caller should not SDL_free() the returned string.
702 *
703 * \param button an enum value for a given SDL_GameControllerButton
704 * \returns a string for the given button, or NULL if an invalid axis is
705 * specified. The string returned is of the format used by
706 * SDL_GameController mapping strings.
707 *
708 * \since This function is available since SDL 2.0.0.
709 *
710 * \sa SDL_GameControllerGetButtonFromString
711 */
712extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button);
713
714/**
715 * Get the SDL joystick layer binding for a controller button mapping.
716 *
717 * \param gamecontroller a game controller
718 * \param button an button enum value (an SDL_GameControllerButton value)
719 * \returns a SDL_GameControllerButtonBind describing the bind. On failure
720 * (like the given Controller button doesn't exist on the device),
721 * its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`.
722 *
723 * \since This function is available since SDL 2.0.0.
724 *
725 * \sa SDL_GameControllerGetBindForAxis
726 */
727extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
728SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller,
729 SDL_GameControllerButton button);
730
731/**
732 * Query whether a game controller has a given button.
733 *
734 * This merely reports whether the controller's mapping defined this button,
735 * as that is all the information SDL has about the physical device.
736 *
737 * \param gamecontroller a game controller
738 * \param button a button enum value (an SDL_GameControllerButton value)
739 * \returns SDL_TRUE if the controller has this button, SDL_FALSE otherwise.
740 *
741 * \since This function is available since SDL 2.0.14.
742 */
743extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasButton(SDL_GameController *gamecontroller,
744 SDL_GameControllerButton button);
745
746/**
747 * Get the current state of a button on a game controller.
748 *
749 * \param gamecontroller a game controller
750 * \param button a button index (one of the SDL_GameControllerButton values)
751 * \returns 1 for pressed state or 0 for not pressed state or error; call
752 * SDL_GetError() for more information.
753 *
754 * \since This function is available since SDL 2.0.0.
755 *
756 * \sa SDL_GameControllerGetAxis
757 */
758extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller,
759 SDL_GameControllerButton button);
760
761/**
762 * Get the number of touchpads on a game controller.
763 *
764 * \since This function is available since SDL 2.0.14.
765 */
766extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpads(SDL_GameController *gamecontroller);
767
768/**
769 * Get the number of supported simultaneous fingers on a touchpad on a game
770 * controller.
771 *
772 * \since This function is available since SDL 2.0.14.
773 */
774extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpadFingers(SDL_GameController *gamecontroller, int touchpad);
775
776/**
777 * Get the current state of a finger on a touchpad on a game controller.
778 *
779 * \since This function is available since SDL 2.0.14.
780 */
781extern DECLSPEC int SDLCALL SDL_GameControllerGetTouchpadFinger(SDL_GameController *gamecontroller, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure);
782
783/**
784 * Return whether a game controller has a particular sensor.
785 *
786 * \param gamecontroller The controller to query
787 * \param type The type of sensor to query
788 * \returns SDL_TRUE if the sensor exists, SDL_FALSE otherwise.
789 *
790 * \since This function is available since SDL 2.0.14.
791 */
792extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController *gamecontroller, SDL_SensorType type);
793
794/**
795 * Set whether data reporting for a game controller sensor is enabled.
796 *
797 * \param gamecontroller The controller to update
798 * \param type The type of sensor to enable/disable
799 * \param enabled Whether data reporting should be enabled
800 * \returns 0 or -1 if an error occurred.
801 *
802 * \since This function is available since SDL 2.0.14.
803 */
804extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled);
805
806/**
807 * Query whether sensor data reporting is enabled for a game controller.
808 *
809 * \param gamecontroller The controller to query
810 * \param type The type of sensor to query
811 * \returns SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise.
812 *
813 * \since This function is available since SDL 2.0.14.
814 */
815extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerIsSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type);
816
817/**
818 * Get the data rate (number of events per second) of a game controller
819 * sensor.
820 *
821 * \param gamecontroller The controller to query
822 * \param type The type of sensor to query
823 * \return the data rate, or 0.0f if the data rate is not available.
824 *
825 * \since This function is available since SDL 2.0.16.
826 */
827extern DECLSPEC float SDLCALL SDL_GameControllerGetSensorDataRate(SDL_GameController *gamecontroller, SDL_SensorType type);
828
829/**
830 * Get the current state of a game controller sensor.
831 *
832 * The number of values and interpretation of the data is sensor dependent.
833 * See SDL_sensor.h for the details for each type of sensor.
834 *
835 * \param gamecontroller The controller to query
836 * \param type The type of sensor to query
837 * \param data A pointer filled with the current sensor state
838 * \param num_values The number of values to write to data
839 * \return 0 or -1 if an error occurred.
840 *
841 * \since This function is available since SDL 2.0.14.
842 */
843extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorData(SDL_GameController *gamecontroller, SDL_SensorType type, float *data, int num_values);
844
845/**
846 * Start a rumble effect on a game controller.
847 *
848 * Each call to this function cancels any previous rumble effect, and calling
849 * it with 0 intensity stops any rumbling.
850 *
851 * \param gamecontroller The controller to vibrate
852 * \param low_frequency_rumble The intensity of the low frequency (left)
853 * rumble motor, from 0 to 0xFFFF
854 * \param high_frequency_rumble The intensity of the high frequency (right)
855 * rumble motor, from 0 to 0xFFFF
856 * \param duration_ms The duration of the rumble effect, in milliseconds
857 * \returns 0, or -1 if rumble isn't supported on this controller
858 *
859 * \since This function is available since SDL 2.0.9.
860 *
861 * \sa SDL_GameControllerHasRumble
862 */
863extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms);
864
865/**
866 * Start a rumble effect in the game controller's triggers.
867 *
868 * Each call to this function cancels any previous trigger rumble effect, and
869 * calling it with 0 intensity stops any rumbling.
870 *
871 * Note that this is rumbling of the _triggers_ and not the game controller as
872 * a whole. The first controller to offer this feature was the PlayStation 5's
873 * DualShock 5.
874 *
875 * \param gamecontroller The controller to vibrate
876 * \param left_rumble The intensity of the left trigger rumble motor, from 0
877 * to 0xFFFF
878 * \param right_rumble The intensity of the right trigger rumble motor, from 0
879 * to 0xFFFF
880 * \param duration_ms The duration of the rumble effect, in milliseconds
881 * \returns 0, or -1 if trigger rumble isn't supported on this controller
882 *
883 * \since This function is available since SDL 2.0.14.
884 *
885 * \sa SDL_GameControllerHasRumbleTriggers
886 */
887extern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms);
888
889/**
890 * Query whether a game controller has an LED.
891 *
892 * \param gamecontroller The controller to query
893 * \returns SDL_TRUE, or SDL_FALSE if this controller does not have a
894 * modifiable LED
895 *
896 * \since This function is available since SDL 2.0.14.
897 */
898extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasLED(SDL_GameController *gamecontroller);
899
900/**
901 * Query whether a game controller has rumble support.
902 *
903 * \param gamecontroller The controller to query
904 * \returns SDL_TRUE, or SDL_FALSE if this controller does not have rumble
905 * support
906 *
907 * \since This function is available since SDL 2.0.18.
908 *
909 * \sa SDL_GameControllerRumble
910 */
911extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumble(SDL_GameController *gamecontroller);
912
913/**
914 * Query whether a game controller has rumble support on triggers.
915 *
916 * \param gamecontroller The controller to query
917 * \returns SDL_TRUE, or SDL_FALSE if this controller does not have trigger
918 * rumble support
919 *
920 * \since This function is available since SDL 2.0.18.
921 *
922 * \sa SDL_GameControllerRumbleTriggers
923 */
924extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumbleTriggers(SDL_GameController *gamecontroller);
925
926/**
927 * Update a game controller's LED color.
928 *
929 * \param gamecontroller The controller to update
930 * \param red The intensity of the red LED
931 * \param green The intensity of the green LED
932 * \param blue The intensity of the blue LED
933 * \returns 0, or -1 if this controller does not have a modifiable LED
934 *
935 * \since This function is available since SDL 2.0.14.
936 */
937extern DECLSPEC int SDLCALL SDL_GameControllerSetLED(SDL_GameController *gamecontroller, Uint8 red, Uint8 green, Uint8 blue);
938
939/**
940 * Send a controller specific effect packet
941 *
942 * \param gamecontroller The controller to affect
943 * \param data The data to send to the controller
944 * \param size The size of the data to send to the controller
945 * \returns 0, or -1 if this controller or driver doesn't support effect
946 * packets
947 *
948 * \since This function is available since SDL 2.0.16.
949 */
950extern DECLSPEC int SDLCALL SDL_GameControllerSendEffect(SDL_GameController *gamecontroller, const void *data, int size);
951
952/**
953 * Close a game controller previously opened with SDL_GameControllerOpen().
954 *
955 * \param gamecontroller a game controller identifier previously returned by
956 * SDL_GameControllerOpen()
957 *
958 * \since This function is available since SDL 2.0.0.
959 *
960 * \sa SDL_GameControllerOpen
961 */
962extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller);
963
964/**
965 * Return the sfSymbolsName for a given button on a game controller on Apple
966 * platforms.
967 *
968 * \param gamecontroller the controller to query
969 * \param button a button on the game controller
970 * \returns the sfSymbolsName or NULL if the name can't be found
971 *
972 * \since This function is available since SDL 2.0.18.
973 *
974 * \sa SDL_GameControllerGetAppleSFSymbolsNameForAxis
975 */
976extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForButton(SDL_GameController *gamecontroller, SDL_GameControllerButton button);
977
978/**
979 * Return the sfSymbolsName for a given axis on a game controller on Apple
980 * platforms.
981 *
982 * \param gamecontroller the controller to query
983 * \param axis an axis on the game controller
984 * \returns the sfSymbolsName or NULL if the name can't be found
985 *
986 * \since This function is available since SDL 2.0.18.
987 *
988 * \sa SDL_GameControllerGetAppleSFSymbolsNameForButton
989 */
990extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis);
991
992
993/* Ends C function definitions when using C++ */
994#ifdef __cplusplus
995}
996#endif
997#include "close_code.h"
998
999#endif /* SDL_gamecontroller_h_ */
1000
1001/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_gesture.h b/vendor/SDL2/include/SDL_gesture.h new file mode 100644 index 0000000..e2caea2 --- /dev/null +++ b/vendor/SDL2/include/SDL_gesture.h
@@ -0,0 +1,117 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_gesture.h
24 *
25 * Include file for SDL gesture event handling.
26 */
27
28#ifndef SDL_gesture_h_
29#define SDL_gesture_h_
30
31#include "SDL_stdinc.h"
32#include "SDL_error.h"
33#include "SDL_video.h"
34
35#include "SDL_touch.h"
36
37
38#include "begin_code.h"
39/* Set up for C function definitions, even when using C++ */
40#ifdef __cplusplus
41extern "C" {
42#endif
43
44typedef Sint64 SDL_GestureID;
45
46/* Function prototypes */
47
48/**
49 * Begin recording a gesture on a specified touch device or all touch devices.
50 *
51 * If the parameter `touchId` is -1 (i.e., all devices), this function will
52 * always return 1, regardless of whether there actually are any devices.
53 *
54 * \param touchId the touch device id, or -1 for all touch devices
55 * \returns 1 on success or 0 if the specified device could not be found.
56 *
57 * \since This function is available since SDL 2.0.0.
58 *
59 * \sa SDL_GetTouchDevice
60 */
61extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId);
62
63
64/**
65 * Save all currently loaded Dollar Gesture templates.
66 *
67 * \param dst a SDL_RWops to save to
68 * \returns the number of saved templates on success or 0 on failure; call
69 * SDL_GetError() for more information.
70 *
71 * \since This function is available since SDL 2.0.0.
72 *
73 * \sa SDL_LoadDollarTemplates
74 * \sa SDL_SaveDollarTemplate
75 */
76extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst);
77
78/**
79 * Save a currently loaded Dollar Gesture template.
80 *
81 * \param gestureId a gesture id
82 * \param dst a SDL_RWops to save to
83 * \returns 1 on success or 0 on failure; call SDL_GetError() for more
84 * information.
85 *
86 * \since This function is available since SDL 2.0.0.
87 *
88 * \sa SDL_LoadDollarTemplates
89 * \sa SDL_SaveAllDollarTemplates
90 */
91extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst);
92
93
94/**
95 * Load Dollar Gesture templates from a file.
96 *
97 * \param touchId a touch id
98 * \param src a SDL_RWops to load from
99 * \returns the number of loaded templates on success or a negative error code
100 * (or 0) on failure; call SDL_GetError() for more information.
101 *
102 * \since This function is available since SDL 2.0.0.
103 *
104 * \sa SDL_SaveAllDollarTemplates
105 * \sa SDL_SaveDollarTemplate
106 */
107extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src);
108
109/* Ends C function definitions when using C++ */
110#ifdef __cplusplus
111}
112#endif
113#include "close_code.h"
114
115#endif /* SDL_gesture_h_ */
116
117/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_haptic.h b/vendor/SDL2/include/SDL_haptic.h new file mode 100644 index 0000000..f240ae9 --- /dev/null +++ b/vendor/SDL2/include/SDL_haptic.h
@@ -0,0 +1,1341 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_haptic.h
24 *
25 * \brief The SDL haptic subsystem allows you to control haptic (force feedback)
26 * devices.
27 *
28 * The basic usage is as follows:
29 * - Initialize the subsystem (::SDL_INIT_HAPTIC).
30 * - Open a haptic device.
31 * - SDL_HapticOpen() to open from index.
32 * - SDL_HapticOpenFromJoystick() to open from an existing joystick.
33 * - Create an effect (::SDL_HapticEffect).
34 * - Upload the effect with SDL_HapticNewEffect().
35 * - Run the effect with SDL_HapticRunEffect().
36 * - (optional) Free the effect with SDL_HapticDestroyEffect().
37 * - Close the haptic device with SDL_HapticClose().
38 *
39 * \par Simple rumble example:
40 * \code
41 * SDL_Haptic *haptic;
42 *
43 * // Open the device
44 * haptic = SDL_HapticOpen( 0 );
45 * if (haptic == NULL)
46 * return -1;
47 *
48 * // Initialize simple rumble
49 * if (SDL_HapticRumbleInit( haptic ) != 0)
50 * return -1;
51 *
52 * // Play effect at 50% strength for 2 seconds
53 * if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0)
54 * return -1;
55 * SDL_Delay( 2000 );
56 *
57 * // Clean up
58 * SDL_HapticClose( haptic );
59 * \endcode
60 *
61 * \par Complete example:
62 * \code
63 * int test_haptic( SDL_Joystick * joystick ) {
64 * SDL_Haptic *haptic;
65 * SDL_HapticEffect effect;
66 * int effect_id;
67 *
68 * // Open the device
69 * haptic = SDL_HapticOpenFromJoystick( joystick );
70 * if (haptic == NULL) return -1; // Most likely joystick isn't haptic
71 *
72 * // See if it can do sine waves
73 * if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) {
74 * SDL_HapticClose(haptic); // No sine effect
75 * return -1;
76 * }
77 *
78 * // Create the effect
79 * SDL_memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default
80 * effect.type = SDL_HAPTIC_SINE;
81 * effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates
82 * effect.periodic.direction.dir[0] = 18000; // Force comes from south
83 * effect.periodic.period = 1000; // 1000 ms
84 * effect.periodic.magnitude = 20000; // 20000/32767 strength
85 * effect.periodic.length = 5000; // 5 seconds long
86 * effect.periodic.attack_length = 1000; // Takes 1 second to get max strength
87 * effect.periodic.fade_length = 1000; // Takes 1 second to fade away
88 *
89 * // Upload the effect
90 * effect_id = SDL_HapticNewEffect( haptic, &effect );
91 *
92 * // Test the effect
93 * SDL_HapticRunEffect( haptic, effect_id, 1 );
94 * SDL_Delay( 5000); // Wait for the effect to finish
95 *
96 * // We destroy the effect, although closing the device also does this
97 * SDL_HapticDestroyEffect( haptic, effect_id );
98 *
99 * // Close the device
100 * SDL_HapticClose(haptic);
101 *
102 * return 0; // Success
103 * }
104 * \endcode
105 */
106
107#ifndef SDL_haptic_h_
108#define SDL_haptic_h_
109
110#include "SDL_stdinc.h"
111#include "SDL_error.h"
112#include "SDL_joystick.h"
113
114#include "begin_code.h"
115/* Set up for C function definitions, even when using C++ */
116#ifdef __cplusplus
117extern "C" {
118#endif /* __cplusplus */
119
120/* FIXME: For SDL 2.1, adjust all the magnitude variables to be Uint16 (0xFFFF).
121 *
122 * At the moment the magnitude variables are mixed between signed/unsigned, and
123 * it is also not made clear that ALL of those variables expect a max of 0x7FFF.
124 *
125 * Some platforms may have higher precision than that (Linux FF, Windows XInput)
126 * so we should fix the inconsistency in favor of higher possible precision,
127 * adjusting for platforms that use different scales.
128 * -flibit
129 */
130
131/**
132 * \typedef SDL_Haptic
133 *
134 * \brief The haptic structure used to identify an SDL haptic.
135 *
136 * \sa SDL_HapticOpen
137 * \sa SDL_HapticOpenFromJoystick
138 * \sa SDL_HapticClose
139 */
140struct _SDL_Haptic;
141typedef struct _SDL_Haptic SDL_Haptic;
142
143
144/**
145 * \name Haptic features
146 *
147 * Different haptic features a device can have.
148 */
149/* @{ */
150
151/**
152 * \name Haptic effects
153 */
154/* @{ */
155
156/**
157 * \brief Constant effect supported.
158 *
159 * Constant haptic effect.
160 *
161 * \sa SDL_HapticCondition
162 */
163#define SDL_HAPTIC_CONSTANT (1u<<0)
164
165/**
166 * \brief Sine wave effect supported.
167 *
168 * Periodic haptic effect that simulates sine waves.
169 *
170 * \sa SDL_HapticPeriodic
171 */
172#define SDL_HAPTIC_SINE (1u<<1)
173
174/**
175 * \brief Left/Right effect supported.
176 *
177 * Haptic effect for direct control over high/low frequency motors.
178 *
179 * \sa SDL_HapticLeftRight
180 * \warning this value was SDL_HAPTIC_SQUARE right before 2.0.0 shipped. Sorry,
181 * we ran out of bits, and this is important for XInput devices.
182 */
183#define SDL_HAPTIC_LEFTRIGHT (1u<<2)
184
185/* !!! FIXME: put this back when we have more bits in 2.1 */
186/* #define SDL_HAPTIC_SQUARE (1<<2) */
187
188/**
189 * \brief Triangle wave effect supported.
190 *
191 * Periodic haptic effect that simulates triangular waves.
192 *
193 * \sa SDL_HapticPeriodic
194 */
195#define SDL_HAPTIC_TRIANGLE (1u<<3)
196
197/**
198 * \brief Sawtoothup wave effect supported.
199 *
200 * Periodic haptic effect that simulates saw tooth up waves.
201 *
202 * \sa SDL_HapticPeriodic
203 */
204#define SDL_HAPTIC_SAWTOOTHUP (1u<<4)
205
206/**
207 * \brief Sawtoothdown wave effect supported.
208 *
209 * Periodic haptic effect that simulates saw tooth down waves.
210 *
211 * \sa SDL_HapticPeriodic
212 */
213#define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5)
214
215/**
216 * \brief Ramp effect supported.
217 *
218 * Ramp haptic effect.
219 *
220 * \sa SDL_HapticRamp
221 */
222#define SDL_HAPTIC_RAMP (1u<<6)
223
224/**
225 * \brief Spring effect supported - uses axes position.
226 *
227 * Condition haptic effect that simulates a spring. Effect is based on the
228 * axes position.
229 *
230 * \sa SDL_HapticCondition
231 */
232#define SDL_HAPTIC_SPRING (1u<<7)
233
234/**
235 * \brief Damper effect supported - uses axes velocity.
236 *
237 * Condition haptic effect that simulates dampening. Effect is based on the
238 * axes velocity.
239 *
240 * \sa SDL_HapticCondition
241 */
242#define SDL_HAPTIC_DAMPER (1u<<8)
243
244/**
245 * \brief Inertia effect supported - uses axes acceleration.
246 *
247 * Condition haptic effect that simulates inertia. Effect is based on the axes
248 * acceleration.
249 *
250 * \sa SDL_HapticCondition
251 */
252#define SDL_HAPTIC_INERTIA (1u<<9)
253
254/**
255 * \brief Friction effect supported - uses axes movement.
256 *
257 * Condition haptic effect that simulates friction. Effect is based on the
258 * axes movement.
259 *
260 * \sa SDL_HapticCondition
261 */
262#define SDL_HAPTIC_FRICTION (1u<<10)
263
264/**
265 * \brief Custom effect is supported.
266 *
267 * User defined custom haptic effect.
268 */
269#define SDL_HAPTIC_CUSTOM (1u<<11)
270
271/* @} *//* Haptic effects */
272
273/* These last few are features the device has, not effects */
274
275/**
276 * \brief Device can set global gain.
277 *
278 * Device supports setting the global gain.
279 *
280 * \sa SDL_HapticSetGain
281 */
282#define SDL_HAPTIC_GAIN (1u<<12)
283
284/**
285 * \brief Device can set autocenter.
286 *
287 * Device supports setting autocenter.
288 *
289 * \sa SDL_HapticSetAutocenter
290 */
291#define SDL_HAPTIC_AUTOCENTER (1u<<13)
292
293/**
294 * \brief Device can be queried for effect status.
295 *
296 * Device supports querying effect status.
297 *
298 * \sa SDL_HapticGetEffectStatus
299 */
300#define SDL_HAPTIC_STATUS (1u<<14)
301
302/**
303 * \brief Device can be paused.
304 *
305 * Devices supports being paused.
306 *
307 * \sa SDL_HapticPause
308 * \sa SDL_HapticUnpause
309 */
310#define SDL_HAPTIC_PAUSE (1u<<15)
311
312
313/**
314 * \name Direction encodings
315 */
316/* @{ */
317
318/**
319 * \brief Uses polar coordinates for the direction.
320 *
321 * \sa SDL_HapticDirection
322 */
323#define SDL_HAPTIC_POLAR 0
324
325/**
326 * \brief Uses cartesian coordinates for the direction.
327 *
328 * \sa SDL_HapticDirection
329 */
330#define SDL_HAPTIC_CARTESIAN 1
331
332/**
333 * \brief Uses spherical coordinates for the direction.
334 *
335 * \sa SDL_HapticDirection
336 */
337#define SDL_HAPTIC_SPHERICAL 2
338
339/**
340 * \brief Use this value to play an effect on the steering wheel axis. This
341 * provides better compatibility across platforms and devices as SDL will guess
342 * the correct axis.
343 * \sa SDL_HapticDirection
344 */
345#define SDL_HAPTIC_STEERING_AXIS 3
346
347/* @} *//* Direction encodings */
348
349/* @} *//* Haptic features */
350
351/*
352 * Misc defines.
353 */
354
355/**
356 * \brief Used to play a device an infinite number of times.
357 *
358 * \sa SDL_HapticRunEffect
359 */
360#define SDL_HAPTIC_INFINITY 4294967295U
361
362
363/**
364 * \brief Structure that represents a haptic direction.
365 *
366 * This is the direction where the force comes from,
367 * instead of the direction in which the force is exerted.
368 *
369 * Directions can be specified by:
370 * - ::SDL_HAPTIC_POLAR : Specified by polar coordinates.
371 * - ::SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates.
372 * - ::SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates.
373 *
374 * Cardinal directions of the haptic device are relative to the positioning
375 * of the device. North is considered to be away from the user.
376 *
377 * The following diagram represents the cardinal directions:
378 * \verbatim
379 .--.
380 |__| .-------.
381 |=.| |.-----.|
382 |--| || ||
383 | | |'-----'|
384 |__|~')_____('
385 [ COMPUTER ]
386
387
388 North (0,-1)
389 ^
390 |
391 |
392 (-1,0) West <----[ HAPTIC ]----> East (1,0)
393 |
394 |
395 v
396 South (0,1)
397
398
399 [ USER ]
400 \|||/
401 (o o)
402 ---ooO-(_)-Ooo---
403 \endverbatim
404 *
405 * If type is ::SDL_HAPTIC_POLAR, direction is encoded by hundredths of a
406 * degree starting north and turning clockwise. ::SDL_HAPTIC_POLAR only uses
407 * the first \c dir parameter. The cardinal directions would be:
408 * - North: 0 (0 degrees)
409 * - East: 9000 (90 degrees)
410 * - South: 18000 (180 degrees)
411 * - West: 27000 (270 degrees)
412 *
413 * If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions
414 * (X axis, Y axis and Z axis (with 3 axes)). ::SDL_HAPTIC_CARTESIAN uses
415 * the first three \c dir parameters. The cardinal directions would be:
416 * - North: 0,-1, 0
417 * - East: 1, 0, 0
418 * - South: 0, 1, 0
419 * - West: -1, 0, 0
420 *
421 * The Z axis represents the height of the effect if supported, otherwise
422 * it's unused. In cartesian encoding (1, 2) would be the same as (2, 4), you
423 * can use any multiple you want, only the direction matters.
424 *
425 * If type is ::SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations.
426 * The first two \c dir parameters are used. The \c dir parameters are as
427 * follows (all values are in hundredths of degrees):
428 * - Degrees from (1, 0) rotated towards (0, 1).
429 * - Degrees towards (0, 0, 1) (device needs at least 3 axes).
430 *
431 *
432 * Example of force coming from the south with all encodings (force coming
433 * from the south means the user will have to pull the stick to counteract):
434 * \code
435 * SDL_HapticDirection direction;
436 *
437 * // Cartesian directions
438 * direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding.
439 * direction.dir[0] = 0; // X position
440 * direction.dir[1] = 1; // Y position
441 * // Assuming the device has 2 axes, we don't need to specify third parameter.
442 *
443 * // Polar directions
444 * direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding.
445 * direction.dir[0] = 18000; // Polar only uses first parameter
446 *
447 * // Spherical coordinates
448 * direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding
449 * direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters.
450 * \endcode
451 *
452 * \sa SDL_HAPTIC_POLAR
453 * \sa SDL_HAPTIC_CARTESIAN
454 * \sa SDL_HAPTIC_SPHERICAL
455 * \sa SDL_HAPTIC_STEERING_AXIS
456 * \sa SDL_HapticEffect
457 * \sa SDL_HapticNumAxes
458 */
459typedef struct SDL_HapticDirection
460{
461 Uint8 type; /**< The type of encoding. */
462 Sint32 dir[3]; /**< The encoded direction. */
463} SDL_HapticDirection;
464
465
466/**
467 * \brief A structure containing a template for a Constant effect.
468 *
469 * This struct is exclusively for the ::SDL_HAPTIC_CONSTANT effect.
470 *
471 * A constant effect applies a constant force in the specified direction
472 * to the joystick.
473 *
474 * \sa SDL_HAPTIC_CONSTANT
475 * \sa SDL_HapticEffect
476 */
477typedef struct SDL_HapticConstant
478{
479 /* Header */
480 Uint16 type; /**< ::SDL_HAPTIC_CONSTANT */
481 SDL_HapticDirection direction; /**< Direction of the effect. */
482
483 /* Replay */
484 Uint32 length; /**< Duration of the effect. */
485 Uint16 delay; /**< Delay before starting the effect. */
486
487 /* Trigger */
488 Uint16 button; /**< Button that triggers the effect. */
489 Uint16 interval; /**< How soon it can be triggered again after button. */
490
491 /* Constant */
492 Sint16 level; /**< Strength of the constant effect. */
493
494 /* Envelope */
495 Uint16 attack_length; /**< Duration of the attack. */
496 Uint16 attack_level; /**< Level at the start of the attack. */
497 Uint16 fade_length; /**< Duration of the fade. */
498 Uint16 fade_level; /**< Level at the end of the fade. */
499} SDL_HapticConstant;
500
501/**
502 * \brief A structure containing a template for a Periodic effect.
503 *
504 * The struct handles the following effects:
505 * - ::SDL_HAPTIC_SINE
506 * - ::SDL_HAPTIC_LEFTRIGHT
507 * - ::SDL_HAPTIC_TRIANGLE
508 * - ::SDL_HAPTIC_SAWTOOTHUP
509 * - ::SDL_HAPTIC_SAWTOOTHDOWN
510 *
511 * A periodic effect consists in a wave-shaped effect that repeats itself
512 * over time. The type determines the shape of the wave and the parameters
513 * determine the dimensions of the wave.
514 *
515 * Phase is given by hundredth of a degree meaning that giving the phase a value
516 * of 9000 will displace it 25% of its period. Here are sample values:
517 * - 0: No phase displacement.
518 * - 9000: Displaced 25% of its period.
519 * - 18000: Displaced 50% of its period.
520 * - 27000: Displaced 75% of its period.
521 * - 36000: Displaced 100% of its period, same as 0, but 0 is preferred.
522 *
523 * Examples:
524 * \verbatim
525 SDL_HAPTIC_SINE
526 __ __ __ __
527 / \ / \ / \ /
528 / \__/ \__/ \__/
529
530 SDL_HAPTIC_SQUARE
531 __ __ __ __ __
532 | | | | | | | | | |
533 | |__| |__| |__| |__| |
534
535 SDL_HAPTIC_TRIANGLE
536 /\ /\ /\ /\ /\
537 / \ / \ / \ / \ /
538 / \/ \/ \/ \/
539
540 SDL_HAPTIC_SAWTOOTHUP
541 /| /| /| /| /| /| /|
542 / | / | / | / | / | / | / |
543 / |/ |/ |/ |/ |/ |/ |
544
545 SDL_HAPTIC_SAWTOOTHDOWN
546 \ |\ |\ |\ |\ |\ |\ |
547 \ | \ | \ | \ | \ | \ | \ |
548 \| \| \| \| \| \| \|
549 \endverbatim
550 *
551 * \sa SDL_HAPTIC_SINE
552 * \sa SDL_HAPTIC_LEFTRIGHT
553 * \sa SDL_HAPTIC_TRIANGLE
554 * \sa SDL_HAPTIC_SAWTOOTHUP
555 * \sa SDL_HAPTIC_SAWTOOTHDOWN
556 * \sa SDL_HapticEffect
557 */
558typedef struct SDL_HapticPeriodic
559{
560 /* Header */
561 Uint16 type; /**< ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT,
562 ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or
563 ::SDL_HAPTIC_SAWTOOTHDOWN */
564 SDL_HapticDirection direction; /**< Direction of the effect. */
565
566 /* Replay */
567 Uint32 length; /**< Duration of the effect. */
568 Uint16 delay; /**< Delay before starting the effect. */
569
570 /* Trigger */
571 Uint16 button; /**< Button that triggers the effect. */
572 Uint16 interval; /**< How soon it can be triggered again after button. */
573
574 /* Periodic */
575 Uint16 period; /**< Period of the wave. */
576 Sint16 magnitude; /**< Peak value; if negative, equivalent to 180 degrees extra phase shift. */
577 Sint16 offset; /**< Mean value of the wave. */
578 Uint16 phase; /**< Positive phase shift given by hundredth of a degree. */
579
580 /* Envelope */
581 Uint16 attack_length; /**< Duration of the attack. */
582 Uint16 attack_level; /**< Level at the start of the attack. */
583 Uint16 fade_length; /**< Duration of the fade. */
584 Uint16 fade_level; /**< Level at the end of the fade. */
585} SDL_HapticPeriodic;
586
587/**
588 * \brief A structure containing a template for a Condition effect.
589 *
590 * The struct handles the following effects:
591 * - ::SDL_HAPTIC_SPRING: Effect based on axes position.
592 * - ::SDL_HAPTIC_DAMPER: Effect based on axes velocity.
593 * - ::SDL_HAPTIC_INERTIA: Effect based on axes acceleration.
594 * - ::SDL_HAPTIC_FRICTION: Effect based on axes movement.
595 *
596 * Direction is handled by condition internals instead of a direction member.
597 * The condition effect specific members have three parameters. The first
598 * refers to the X axis, the second refers to the Y axis and the third
599 * refers to the Z axis. The right terms refer to the positive side of the
600 * axis and the left terms refer to the negative side of the axis. Please
601 * refer to the ::SDL_HapticDirection diagram for which side is positive and
602 * which is negative.
603 *
604 * \sa SDL_HapticDirection
605 * \sa SDL_HAPTIC_SPRING
606 * \sa SDL_HAPTIC_DAMPER
607 * \sa SDL_HAPTIC_INERTIA
608 * \sa SDL_HAPTIC_FRICTION
609 * \sa SDL_HapticEffect
610 */
611typedef struct SDL_HapticCondition
612{
613 /* Header */
614 Uint16 type; /**< ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER,
615 ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION */
616 SDL_HapticDirection direction; /**< Direction of the effect - Not used ATM. */
617
618 /* Replay */
619 Uint32 length; /**< Duration of the effect. */
620 Uint16 delay; /**< Delay before starting the effect. */
621
622 /* Trigger */
623 Uint16 button; /**< Button that triggers the effect. */
624 Uint16 interval; /**< How soon it can be triggered again after button. */
625
626 /* Condition */
627 Uint16 right_sat[3]; /**< Level when joystick is to the positive side; max 0xFFFF. */
628 Uint16 left_sat[3]; /**< Level when joystick is to the negative side; max 0xFFFF. */
629 Sint16 right_coeff[3]; /**< How fast to increase the force towards the positive side. */
630 Sint16 left_coeff[3]; /**< How fast to increase the force towards the negative side. */
631 Uint16 deadband[3]; /**< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. */
632 Sint16 center[3]; /**< Position of the dead zone. */
633} SDL_HapticCondition;
634
635/**
636 * \brief A structure containing a template for a Ramp effect.
637 *
638 * This struct is exclusively for the ::SDL_HAPTIC_RAMP effect.
639 *
640 * The ramp effect starts at start strength and ends at end strength.
641 * It augments in linear fashion. If you use attack and fade with a ramp
642 * the effects get added to the ramp effect making the effect become
643 * quadratic instead of linear.
644 *
645 * \sa SDL_HAPTIC_RAMP
646 * \sa SDL_HapticEffect
647 */
648typedef struct SDL_HapticRamp
649{
650 /* Header */
651 Uint16 type; /**< ::SDL_HAPTIC_RAMP */
652 SDL_HapticDirection direction; /**< Direction of the effect. */
653
654 /* Replay */
655 Uint32 length; /**< Duration of the effect. */
656 Uint16 delay; /**< Delay before starting the effect. */
657
658 /* Trigger */
659 Uint16 button; /**< Button that triggers the effect. */
660 Uint16 interval; /**< How soon it can be triggered again after button. */
661
662 /* Ramp */
663 Sint16 start; /**< Beginning strength level. */
664 Sint16 end; /**< Ending strength level. */
665
666 /* Envelope */
667 Uint16 attack_length; /**< Duration of the attack. */
668 Uint16 attack_level; /**< Level at the start of the attack. */
669 Uint16 fade_length; /**< Duration of the fade. */
670 Uint16 fade_level; /**< Level at the end of the fade. */
671} SDL_HapticRamp;
672
673/**
674 * \brief A structure containing a template for a Left/Right effect.
675 *
676 * This struct is exclusively for the ::SDL_HAPTIC_LEFTRIGHT effect.
677 *
678 * The Left/Right effect is used to explicitly control the large and small
679 * motors, commonly found in modern game controllers. The small (right) motor
680 * is high frequency, and the large (left) motor is low frequency.
681 *
682 * \sa SDL_HAPTIC_LEFTRIGHT
683 * \sa SDL_HapticEffect
684 */
685typedef struct SDL_HapticLeftRight
686{
687 /* Header */
688 Uint16 type; /**< ::SDL_HAPTIC_LEFTRIGHT */
689
690 /* Replay */
691 Uint32 length; /**< Duration of the effect in milliseconds. */
692
693 /* Rumble */
694 Uint16 large_magnitude; /**< Control of the large controller motor. */
695 Uint16 small_magnitude; /**< Control of the small controller motor. */
696} SDL_HapticLeftRight;
697
698/**
699 * \brief A structure containing a template for the ::SDL_HAPTIC_CUSTOM effect.
700 *
701 * This struct is exclusively for the ::SDL_HAPTIC_CUSTOM effect.
702 *
703 * A custom force feedback effect is much like a periodic effect, where the
704 * application can define its exact shape. You will have to allocate the
705 * data yourself. Data should consist of channels * samples Uint16 samples.
706 *
707 * If channels is one, the effect is rotated using the defined direction.
708 * Otherwise it uses the samples in data for the different axes.
709 *
710 * \sa SDL_HAPTIC_CUSTOM
711 * \sa SDL_HapticEffect
712 */
713typedef struct SDL_HapticCustom
714{
715 /* Header */
716 Uint16 type; /**< ::SDL_HAPTIC_CUSTOM */
717 SDL_HapticDirection direction; /**< Direction of the effect. */
718
719 /* Replay */
720 Uint32 length; /**< Duration of the effect. */
721 Uint16 delay; /**< Delay before starting the effect. */
722
723 /* Trigger */
724 Uint16 button; /**< Button that triggers the effect. */
725 Uint16 interval; /**< How soon it can be triggered again after button. */
726
727 /* Custom */
728 Uint8 channels; /**< Axes to use, minimum of one. */
729 Uint16 period; /**< Sample periods. */
730 Uint16 samples; /**< Amount of samples. */
731 Uint16 *data; /**< Should contain channels*samples items. */
732
733 /* Envelope */
734 Uint16 attack_length; /**< Duration of the attack. */
735 Uint16 attack_level; /**< Level at the start of the attack. */
736 Uint16 fade_length; /**< Duration of the fade. */
737 Uint16 fade_level; /**< Level at the end of the fade. */
738} SDL_HapticCustom;
739
740/**
741 * \brief The generic template for any haptic effect.
742 *
743 * All values max at 32767 (0x7FFF). Signed values also can be negative.
744 * Time values unless specified otherwise are in milliseconds.
745 *
746 * You can also pass ::SDL_HAPTIC_INFINITY to length instead of a 0-32767
747 * value. Neither delay, interval, attack_length nor fade_length support
748 * ::SDL_HAPTIC_INFINITY. Fade will also not be used since effect never ends.
749 *
750 * Additionally, the ::SDL_HAPTIC_RAMP effect does not support a duration of
751 * ::SDL_HAPTIC_INFINITY.
752 *
753 * Button triggers may not be supported on all devices, it is advised to not
754 * use them if possible. Buttons start at index 1 instead of index 0 like
755 * the joystick.
756 *
757 * If both attack_length and fade_level are 0, the envelope is not used,
758 * otherwise both values are used.
759 *
760 * Common parts:
761 * \code
762 * // Replay - All effects have this
763 * Uint32 length; // Duration of effect (ms).
764 * Uint16 delay; // Delay before starting effect.
765 *
766 * // Trigger - All effects have this
767 * Uint16 button; // Button that triggers effect.
768 * Uint16 interval; // How soon before effect can be triggered again.
769 *
770 * // Envelope - All effects except condition effects have this
771 * Uint16 attack_length; // Duration of the attack (ms).
772 * Uint16 attack_level; // Level at the start of the attack.
773 * Uint16 fade_length; // Duration of the fade out (ms).
774 * Uint16 fade_level; // Level at the end of the fade.
775 * \endcode
776 *
777 *
778 * Here we have an example of a constant effect evolution in time:
779 * \verbatim
780 Strength
781 ^
782 |
783 | effect level --> _________________
784 | / \
785 | / \
786 | / \
787 | / \
788 | attack_level --> | \
789 | | | <--- fade_level
790 |
791 +--------------------------------------------------> Time
792 [--] [---]
793 attack_length fade_length
794
795 [------------------][-----------------------]
796 delay length
797 \endverbatim
798 *
799 * Note either the attack_level or the fade_level may be above the actual
800 * effect level.
801 *
802 * \sa SDL_HapticConstant
803 * \sa SDL_HapticPeriodic
804 * \sa SDL_HapticCondition
805 * \sa SDL_HapticRamp
806 * \sa SDL_HapticLeftRight
807 * \sa SDL_HapticCustom
808 */
809typedef union SDL_HapticEffect
810{
811 /* Common for all force feedback effects */
812 Uint16 type; /**< Effect type. */
813 SDL_HapticConstant constant; /**< Constant effect. */
814 SDL_HapticPeriodic periodic; /**< Periodic effect. */
815 SDL_HapticCondition condition; /**< Condition effect. */
816 SDL_HapticRamp ramp; /**< Ramp effect. */
817 SDL_HapticLeftRight leftright; /**< Left/Right effect. */
818 SDL_HapticCustom custom; /**< Custom effect. */
819} SDL_HapticEffect;
820
821
822/* Function prototypes */
823
824/**
825 * Count the number of haptic devices attached to the system.
826 *
827 * \returns the number of haptic devices detected on the system or a negative
828 * error code on failure; call SDL_GetError() for more information.
829 *
830 * \since This function is available since SDL 2.0.0.
831 *
832 * \sa SDL_HapticName
833 */
834extern DECLSPEC int SDLCALL SDL_NumHaptics(void);
835
836/**
837 * Get the implementation dependent name of a haptic device.
838 *
839 * This can be called before any joysticks are opened. If no name can be
840 * found, this function returns NULL.
841 *
842 * \param device_index index of the device to query.
843 * \returns the name of the device or NULL on failure; call SDL_GetError() for
844 * more information.
845 *
846 * \since This function is available since SDL 2.0.0.
847 *
848 * \sa SDL_NumHaptics
849 */
850extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index);
851
852/**
853 * Open a haptic device for use.
854 *
855 * The index passed as an argument refers to the N'th haptic device on this
856 * system.
857 *
858 * When opening a haptic device, its gain will be set to maximum and
859 * autocenter will be disabled. To modify these values use SDL_HapticSetGain()
860 * and SDL_HapticSetAutocenter().
861 *
862 * \param device_index index of the device to open
863 * \returns the device identifier or NULL on failure; call SDL_GetError() for
864 * more information.
865 *
866 * \since This function is available since SDL 2.0.0.
867 *
868 * \sa SDL_HapticClose
869 * \sa SDL_HapticIndex
870 * \sa SDL_HapticOpenFromJoystick
871 * \sa SDL_HapticOpenFromMouse
872 * \sa SDL_HapticPause
873 * \sa SDL_HapticSetAutocenter
874 * \sa SDL_HapticSetGain
875 * \sa SDL_HapticStopAll
876 */
877extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index);
878
879/**
880 * Check if the haptic device at the designated index has been opened.
881 *
882 * \param device_index the index of the device to query
883 * \returns 1 if it has been opened, 0 if it hasn't or on failure; call
884 * SDL_GetError() for more information.
885 *
886 * \since This function is available since SDL 2.0.0.
887 *
888 * \sa SDL_HapticIndex
889 * \sa SDL_HapticOpen
890 */
891extern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index);
892
893/**
894 * Get the index of a haptic device.
895 *
896 * \param haptic the SDL_Haptic device to query
897 * \returns the index of the specified haptic device or a negative error code
898 * on failure; call SDL_GetError() for more information.
899 *
900 * \since This function is available since SDL 2.0.0.
901 *
902 * \sa SDL_HapticOpen
903 * \sa SDL_HapticOpened
904 */
905extern DECLSPEC int SDLCALL SDL_HapticIndex(SDL_Haptic * haptic);
906
907/**
908 * Query whether or not the current mouse has haptic capabilities.
909 *
910 * \returns SDL_TRUE if the mouse is haptic or SDL_FALSE if it isn't.
911 *
912 * \since This function is available since SDL 2.0.0.
913 *
914 * \sa SDL_HapticOpenFromMouse
915 */
916extern DECLSPEC int SDLCALL SDL_MouseIsHaptic(void);
917
918/**
919 * Try to open a haptic device from the current mouse.
920 *
921 * \returns the haptic device identifier or NULL on failure; call
922 * SDL_GetError() for more information.
923 *
924 * \since This function is available since SDL 2.0.0.
925 *
926 * \sa SDL_HapticOpen
927 * \sa SDL_MouseIsHaptic
928 */
929extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void);
930
931/**
932 * Query if a joystick has haptic features.
933 *
934 * \param joystick the SDL_Joystick to test for haptic capabilities
935 * \returns SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't, or a
936 * negative error code on failure; call SDL_GetError() for more
937 * information.
938 *
939 * \since This function is available since SDL 2.0.0.
940 *
941 * \sa SDL_HapticOpenFromJoystick
942 */
943extern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick);
944
945/**
946 * Open a haptic device for use from a joystick device.
947 *
948 * You must still close the haptic device separately. It will not be closed
949 * with the joystick.
950 *
951 * When opened from a joystick you should first close the haptic device before
952 * closing the joystick device. If not, on some implementations the haptic
953 * device will also get unallocated and you'll be unable to use force feedback
954 * on that device.
955 *
956 * \param joystick the SDL_Joystick to create a haptic device from
957 * \returns a valid haptic device identifier on success or NULL on failure;
958 * call SDL_GetError() for more information.
959 *
960 * \since This function is available since SDL 2.0.0.
961 *
962 * \sa SDL_HapticClose
963 * \sa SDL_HapticOpen
964 * \sa SDL_JoystickIsHaptic
965 */
966extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick *
967 joystick);
968
969/**
970 * Close a haptic device previously opened with SDL_HapticOpen().
971 *
972 * \param haptic the SDL_Haptic device to close
973 *
974 * \since This function is available since SDL 2.0.0.
975 *
976 * \sa SDL_HapticOpen
977 */
978extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic);
979
980/**
981 * Get the number of effects a haptic device can store.
982 *
983 * On some platforms this isn't fully supported, and therefore is an
984 * approximation. Always check to see if your created effect was actually
985 * created and do not rely solely on SDL_HapticNumEffects().
986 *
987 * \param haptic the SDL_Haptic device to query
988 * \returns the number of effects the haptic device can store or a negative
989 * error code on failure; call SDL_GetError() for more information.
990 *
991 * \since This function is available since SDL 2.0.0.
992 *
993 * \sa SDL_HapticNumEffectsPlaying
994 * \sa SDL_HapticQuery
995 */
996extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic);
997
998/**
999 * Get the number of effects a haptic device can play at the same time.
1000 *
1001 * This is not supported on all platforms, but will always return a value.
1002 *
1003 * \param haptic the SDL_Haptic device to query maximum playing effects
1004 * \returns the number of effects the haptic device can play at the same time
1005 * or a negative error code on failure; call SDL_GetError() for more
1006 * information.
1007 *
1008 * \since This function is available since SDL 2.0.0.
1009 *
1010 * \sa SDL_HapticNumEffects
1011 * \sa SDL_HapticQuery
1012 */
1013extern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic);
1014
1015/**
1016 * Get the haptic device's supported features in bitwise manner.
1017 *
1018 * \param haptic the SDL_Haptic device to query
1019 * \returns a list of supported haptic features in bitwise manner (OR'd), or 0
1020 * on failure; call SDL_GetError() for more information.
1021 *
1022 * \since This function is available since SDL 2.0.0.
1023 *
1024 * \sa SDL_HapticEffectSupported
1025 * \sa SDL_HapticNumEffects
1026 */
1027extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic);
1028
1029
1030/**
1031 * Get the number of haptic axes the device has.
1032 *
1033 * The number of haptic axes might be useful if working with the
1034 * SDL_HapticDirection effect.
1035 *
1036 * \param haptic the SDL_Haptic device to query
1037 * \returns the number of axes on success or a negative error code on failure;
1038 * call SDL_GetError() for more information.
1039 *
1040 * \since This function is available since SDL 2.0.0.
1041 */
1042extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic);
1043
1044/**
1045 * Check to see if an effect is supported by a haptic device.
1046 *
1047 * \param haptic the SDL_Haptic device to query
1048 * \param effect the desired effect to query
1049 * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a
1050 * negative error code on failure; call SDL_GetError() for more
1051 * information.
1052 *
1053 * \since This function is available since SDL 2.0.0.
1054 *
1055 * \sa SDL_HapticNewEffect
1056 * \sa SDL_HapticQuery
1057 */
1058extern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic,
1059 SDL_HapticEffect *
1060 effect);
1061
1062/**
1063 * Create a new haptic effect on a specified device.
1064 *
1065 * \param haptic an SDL_Haptic device to create the effect on
1066 * \param effect an SDL_HapticEffect structure containing the properties of
1067 * the effect to create
1068 * \returns the ID of the effect on success or a negative error code on
1069 * failure; call SDL_GetError() for more information.
1070 *
1071 * \since This function is available since SDL 2.0.0.
1072 *
1073 * \sa SDL_HapticDestroyEffect
1074 * \sa SDL_HapticRunEffect
1075 * \sa SDL_HapticUpdateEffect
1076 */
1077extern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic,
1078 SDL_HapticEffect * effect);
1079
1080/**
1081 * Update the properties of an effect.
1082 *
1083 * Can be used dynamically, although behavior when dynamically changing
1084 * direction may be strange. Specifically the effect may re-upload itself and
1085 * start playing from the start. You also cannot change the type either when
1086 * running SDL_HapticUpdateEffect().
1087 *
1088 * \param haptic the SDL_Haptic device that has the effect
1089 * \param effect the identifier of the effect to update
1090 * \param data an SDL_HapticEffect structure containing the new effect
1091 * properties to use
1092 * \returns 0 on success or a negative error code on failure; call
1093 * SDL_GetError() for more information.
1094 *
1095 * \since This function is available since SDL 2.0.0.
1096 *
1097 * \sa SDL_HapticDestroyEffect
1098 * \sa SDL_HapticNewEffect
1099 * \sa SDL_HapticRunEffect
1100 */
1101extern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic,
1102 int effect,
1103 SDL_HapticEffect * data);
1104
1105/**
1106 * Run the haptic effect on its associated haptic device.
1107 *
1108 * To repeat the effect over and over indefinitely, set `iterations` to
1109 * `SDL_HAPTIC_INFINITY`. (Repeats the envelope - attack and fade.) To make
1110 * one instance of the effect last indefinitely (so the effect does not fade),
1111 * set the effect's `length` in its structure/union to `SDL_HAPTIC_INFINITY`
1112 * instead.
1113 *
1114 * \param haptic the SDL_Haptic device to run the effect on
1115 * \param effect the ID of the haptic effect to run
1116 * \param iterations the number of iterations to run the effect; use
1117 * `SDL_HAPTIC_INFINITY` to repeat forever
1118 * \returns 0 on success or a negative error code on failure; call
1119 * SDL_GetError() for more information.
1120 *
1121 * \since This function is available since SDL 2.0.0.
1122 *
1123 * \sa SDL_HapticDestroyEffect
1124 * \sa SDL_HapticGetEffectStatus
1125 * \sa SDL_HapticStopEffect
1126 */
1127extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic,
1128 int effect,
1129 Uint32 iterations);
1130
1131/**
1132 * Stop the haptic effect on its associated haptic device.
1133 *
1134 * *
1135 *
1136 * \param haptic the SDL_Haptic device to stop the effect on
1137 * \param effect the ID of the haptic effect to stop
1138 * \returns 0 on success or a negative error code on failure; call
1139 * SDL_GetError() for more information.
1140 *
1141 * \since This function is available since SDL 2.0.0.
1142 *
1143 * \sa SDL_HapticDestroyEffect
1144 * \sa SDL_HapticRunEffect
1145 */
1146extern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic,
1147 int effect);
1148
1149/**
1150 * Destroy a haptic effect on the device.
1151 *
1152 * This will stop the effect if it's running. Effects are automatically
1153 * destroyed when the device is closed.
1154 *
1155 * \param haptic the SDL_Haptic device to destroy the effect on
1156 * \param effect the ID of the haptic effect to destroy
1157 *
1158 * \since This function is available since SDL 2.0.0.
1159 *
1160 * \sa SDL_HapticNewEffect
1161 */
1162extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic,
1163 int effect);
1164
1165/**
1166 * Get the status of the current effect on the specified haptic device.
1167 *
1168 * Device must support the SDL_HAPTIC_STATUS feature.
1169 *
1170 * \param haptic the SDL_Haptic device to query for the effect status on
1171 * \param effect the ID of the haptic effect to query its status
1172 * \returns 0 if it isn't playing, 1 if it is playing, or a negative error
1173 * code on failure; call SDL_GetError() for more information.
1174 *
1175 * \since This function is available since SDL 2.0.0.
1176 *
1177 * \sa SDL_HapticRunEffect
1178 * \sa SDL_HapticStopEffect
1179 */
1180extern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic,
1181 int effect);
1182
1183/**
1184 * Set the global gain of the specified haptic device.
1185 *
1186 * Device must support the SDL_HAPTIC_GAIN feature.
1187 *
1188 * The user may specify the maximum gain by setting the environment variable
1189 * `SDL_HAPTIC_GAIN_MAX` which should be between 0 and 100. All calls to
1190 * SDL_HapticSetGain() will scale linearly using `SDL_HAPTIC_GAIN_MAX` as the
1191 * maximum.
1192 *
1193 * \param haptic the SDL_Haptic device to set the gain on
1194 * \param gain value to set the gain to, should be between 0 and 100 (0 - 100)
1195 * \returns 0 on success or a negative error code on failure; call
1196 * SDL_GetError() for more information.
1197 *
1198 * \since This function is available since SDL 2.0.0.
1199 *
1200 * \sa SDL_HapticQuery
1201 */
1202extern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain);
1203
1204/**
1205 * Set the global autocenter of the device.
1206 *
1207 * Autocenter should be between 0 and 100. Setting it to 0 will disable
1208 * autocentering.
1209 *
1210 * Device must support the SDL_HAPTIC_AUTOCENTER feature.
1211 *
1212 * \param haptic the SDL_Haptic device to set autocentering on
1213 * \param autocenter value to set autocenter to (0-100)
1214 * \returns 0 on success or a negative error code on failure; call
1215 * SDL_GetError() for more information.
1216 *
1217 * \since This function is available since SDL 2.0.0.
1218 *
1219 * \sa SDL_HapticQuery
1220 */
1221extern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic,
1222 int autocenter);
1223
1224/**
1225 * Pause a haptic device.
1226 *
1227 * Device must support the `SDL_HAPTIC_PAUSE` feature. Call
1228 * SDL_HapticUnpause() to resume playback.
1229 *
1230 * Do not modify the effects nor add new ones while the device is paused. That
1231 * can cause all sorts of weird errors.
1232 *
1233 * \param haptic the SDL_Haptic device to pause
1234 * \returns 0 on success or a negative error code on failure; call
1235 * SDL_GetError() for more information.
1236 *
1237 * \since This function is available since SDL 2.0.0.
1238 *
1239 * \sa SDL_HapticUnpause
1240 */
1241extern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic);
1242
1243/**
1244 * Unpause a haptic device.
1245 *
1246 * Call to unpause after SDL_HapticPause().
1247 *
1248 * \param haptic the SDL_Haptic device to unpause
1249 * \returns 0 on success or a negative error code on failure; call
1250 * SDL_GetError() for more information.
1251 *
1252 * \since This function is available since SDL 2.0.0.
1253 *
1254 * \sa SDL_HapticPause
1255 */
1256extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic);
1257
1258/**
1259 * Stop all the currently playing effects on a haptic device.
1260 *
1261 * \param haptic the SDL_Haptic device to stop
1262 * \returns 0 on success or a negative error code on failure; call
1263 * SDL_GetError() for more information.
1264 *
1265 * \since This function is available since SDL 2.0.0.
1266 */
1267extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic);
1268
1269/**
1270 * Check whether rumble is supported on a haptic device.
1271 *
1272 * \param haptic haptic device to check for rumble support
1273 * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a
1274 * negative error code on failure; call SDL_GetError() for more
1275 * information.
1276 *
1277 * \since This function is available since SDL 2.0.0.
1278 *
1279 * \sa SDL_HapticRumbleInit
1280 * \sa SDL_HapticRumblePlay
1281 * \sa SDL_HapticRumbleStop
1282 */
1283extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic);
1284
1285/**
1286 * Initialize a haptic device for simple rumble playback.
1287 *
1288 * \param haptic the haptic device to initialize for simple rumble playback
1289 * \returns 0 on success or a negative error code on failure; call
1290 * SDL_GetError() for more information.
1291 *
1292 * \since This function is available since SDL 2.0.0.
1293 *
1294 * \sa SDL_HapticOpen
1295 * \sa SDL_HapticRumblePlay
1296 * \sa SDL_HapticRumbleStop
1297 * \sa SDL_HapticRumbleSupported
1298 */
1299extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic);
1300
1301/**
1302 * Run a simple rumble effect on a haptic device.
1303 *
1304 * \param haptic the haptic device to play the rumble effect on
1305 * \param strength strength of the rumble to play as a 0-1 float value
1306 * \param length length of the rumble to play in milliseconds
1307 * \returns 0 on success or a negative error code on failure; call
1308 * SDL_GetError() for more information.
1309 *
1310 * \since This function is available since SDL 2.0.0.
1311 *
1312 * \sa SDL_HapticRumbleInit
1313 * \sa SDL_HapticRumbleStop
1314 * \sa SDL_HapticRumbleSupported
1315 */
1316extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length );
1317
1318/**
1319 * Stop the simple rumble on a haptic device.
1320 *
1321 * \param haptic the haptic device to stop the rumble effect on
1322 * \returns 0 on success or a negative error code on failure; call
1323 * SDL_GetError() for more information.
1324 *
1325 * \since This function is available since SDL 2.0.0.
1326 *
1327 * \sa SDL_HapticRumbleInit
1328 * \sa SDL_HapticRumblePlay
1329 * \sa SDL_HapticRumbleSupported
1330 */
1331extern DECLSPEC int SDLCALL SDL_HapticRumbleStop(SDL_Haptic * haptic);
1332
1333/* Ends C function definitions when using C++ */
1334#ifdef __cplusplus
1335}
1336#endif
1337#include "close_code.h"
1338
1339#endif /* SDL_haptic_h_ */
1340
1341/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_hidapi.h b/vendor/SDL2/include/SDL_hidapi.h new file mode 100644 index 0000000..354af5c --- /dev/null +++ b/vendor/SDL2/include/SDL_hidapi.h
@@ -0,0 +1,451 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_hidapi.h
24 *
25 * Header file for SDL HIDAPI functions.
26 *
27 * This is an adaptation of the original HIDAPI interface by Alan Ott,
28 * and includes source code licensed under the following BSD license:
29 *
30 Copyright (c) 2010, Alan Ott, Signal 11 Software
31 All rights reserved.
32
33 Redistribution and use in source and binary forms, with or without
34 modification, are permitted provided that the following conditions are met:
35
36 * Redistributions of source code must retain the above copyright notice,
37 this list of conditions and the following disclaimer.
38 * Redistributions in binary form must reproduce the above copyright
39 notice, this list of conditions and the following disclaimer in the
40 documentation and/or other materials provided with the distribution.
41 * Neither the name of Signal 11 Software nor the names of its
42 contributors may be used to endorse or promote products derived from
43 this software without specific prior written permission.
44
45 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
46 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
47 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
48 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
49 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
50 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
51 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
52 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
53 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
54 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
55 POSSIBILITY OF SUCH DAMAGE.
56 *
57 * If you would like a version of SDL without this code, you can build SDL
58 * with SDL_HIDAPI_DISABLED defined to 1. You might want to do this for example
59 * on iOS or tvOS to avoid a dependency on the CoreBluetooth framework.
60 */
61
62#ifndef SDL_hidapi_h_
63#define SDL_hidapi_h_
64
65#include "SDL_stdinc.h"
66
67#include "begin_code.h"
68/* Set up for C function definitions, even when using C++ */
69#ifdef __cplusplus
70extern "C" {
71#endif
72
73/**
74 * \brief A handle representing an open HID device
75 */
76struct SDL_hid_device_;
77typedef struct SDL_hid_device_ SDL_hid_device; /**< opaque hidapi structure */
78
79/** hidapi info structure */
80/**
81 * \brief Information about a connected HID device
82 */
83typedef struct SDL_hid_device_info
84{
85 /** Platform-specific device path */
86 char *path;
87 /** Device Vendor ID */
88 unsigned short vendor_id;
89 /** Device Product ID */
90 unsigned short product_id;
91 /** Serial Number */
92 wchar_t *serial_number;
93 /** Device Release Number in binary-coded decimal,
94 also known as Device Version Number */
95 unsigned short release_number;
96 /** Manufacturer String */
97 wchar_t *manufacturer_string;
98 /** Product string */
99 wchar_t *product_string;
100 /** Usage Page for this Device/Interface
101 (Windows/Mac only). */
102 unsigned short usage_page;
103 /** Usage for this Device/Interface
104 (Windows/Mac only).*/
105 unsigned short usage;
106 /** The USB interface which this logical device
107 represents.
108
109 * Valid on both Linux implementations in all cases.
110 * Valid on the Windows implementation only if the device
111 contains more than one interface. */
112 int interface_number;
113
114 /** Additional information about the USB interface.
115 Valid on libusb and Android implementations. */
116 int interface_class;
117 int interface_subclass;
118 int interface_protocol;
119
120 /** Pointer to the next device */
121 struct SDL_hid_device_info *next;
122} SDL_hid_device_info;
123
124
125/**
126 * Initialize the HIDAPI library.
127 *
128 * This function initializes the HIDAPI library. Calling it is not strictly
129 * necessary, as it will be called automatically by SDL_hid_enumerate() and
130 * any of the SDL_hid_open_*() functions if it is needed. This function should
131 * be called at the beginning of execution however, if there is a chance of
132 * HIDAPI handles being opened by different threads simultaneously.
133 *
134 * Each call to this function should have a matching call to SDL_hid_exit()
135 *
136 * \returns 0 on success and -1 on error.
137 *
138 * \since This function is available since SDL 2.0.18.
139 *
140 * \sa SDL_hid_exit
141 */
142extern DECLSPEC int SDLCALL SDL_hid_init(void);
143
144/**
145 * Finalize the HIDAPI library.
146 *
147 * This function frees all of the static data associated with HIDAPI. It
148 * should be called at the end of execution to avoid memory leaks.
149 *
150 * \returns 0 on success and -1 on error.
151 *
152 * \since This function is available since SDL 2.0.18.
153 *
154 * \sa SDL_hid_init
155 */
156extern DECLSPEC int SDLCALL SDL_hid_exit(void);
157
158/**
159 * Check to see if devices may have been added or removed.
160 *
161 * Enumerating the HID devices is an expensive operation, so you can call this
162 * to see if there have been any system device changes since the last call to
163 * this function. A change in the counter returned doesn't necessarily mean
164 * that anything has changed, but you can call SDL_hid_enumerate() to get an
165 * updated device list.
166 *
167 * Calling this function for the first time may cause a thread or other system
168 * resource to be allocated to track device change notifications.
169 *
170 * \returns a change counter that is incremented with each potential device
171 * change, or 0 if device change detection isn't available.
172 *
173 * \since This function is available since SDL 2.0.18.
174 *
175 * \sa SDL_hid_enumerate
176 */
177extern DECLSPEC Uint32 SDLCALL SDL_hid_device_change_count(void);
178
179/**
180 * Enumerate the HID Devices.
181 *
182 * This function returns a linked list of all the HID devices attached to the
183 * system which match vendor_id and product_id. If `vendor_id` is set to 0
184 * then any vendor matches. If `product_id` is set to 0 then any product
185 * matches. If `vendor_id` and `product_id` are both set to 0, then all HID
186 * devices will be returned.
187 *
188 * \param vendor_id The Vendor ID (VID) of the types of device to open.
189 * \param product_id The Product ID (PID) of the types of device to open.
190 * \returns a pointer to a linked list of type SDL_hid_device_info, containing
191 * information about the HID devices attached to the system, or NULL
192 * in the case of failure. Free this linked list by calling
193 * SDL_hid_free_enumeration().
194 *
195 * \since This function is available since SDL 2.0.18.
196 *
197 * \sa SDL_hid_device_change_count
198 */
199extern DECLSPEC SDL_hid_device_info * SDLCALL SDL_hid_enumerate(unsigned short vendor_id, unsigned short product_id);
200
201/**
202 * Free an enumeration Linked List
203 *
204 * This function frees a linked list created by SDL_hid_enumerate().
205 *
206 * \param devs Pointer to a list of struct_device returned from
207 * SDL_hid_enumerate().
208 *
209 * \since This function is available since SDL 2.0.18.
210 */
211extern DECLSPEC void SDLCALL SDL_hid_free_enumeration(SDL_hid_device_info *devs);
212
213/**
214 * Open a HID device using a Vendor ID (VID), Product ID (PID) and optionally
215 * a serial number.
216 *
217 * If `serial_number` is NULL, the first device with the specified VID and PID
218 * is opened.
219 *
220 * \param vendor_id The Vendor ID (VID) of the device to open.
221 * \param product_id The Product ID (PID) of the device to open.
222 * \param serial_number The Serial Number of the device to open (Optionally
223 * NULL).
224 * \returns a pointer to a SDL_hid_device object on success or NULL on
225 * failure.
226 *
227 * \since This function is available since SDL 2.0.18.
228 */
229extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open(unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number);
230
231/**
232 * Open a HID device by its path name.
233 *
234 * The path name be determined by calling SDL_hid_enumerate(), or a
235 * platform-specific path name can be used (eg: /dev/hidraw0 on Linux).
236 *
237 * \param path The path name of the device to open
238 * \returns a pointer to a SDL_hid_device object on success or NULL on
239 * failure.
240 *
241 * \since This function is available since SDL 2.0.18.
242 */
243extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open_path(const char *path, int bExclusive /* = false */);
244
245/**
246 * Write an Output report to a HID device.
247 *
248 * The first byte of `data` must contain the Report ID. For devices which only
249 * support a single report, this must be set to 0x0. The remaining bytes
250 * contain the report data. Since the Report ID is mandatory, calls to
251 * SDL_hid_write() will always contain one more byte than the report contains.
252 * For example, if a hid report is 16 bytes long, 17 bytes must be passed to
253 * SDL_hid_write(), the Report ID (or 0x0, for devices with a single report),
254 * followed by the report data (16 bytes). In this example, the length passed
255 * in would be 17.
256 *
257 * SDL_hid_write() will send the data on the first OUT endpoint, if one
258 * exists. If it does not, it will send the data through the Control Endpoint
259 * (Endpoint 0).
260 *
261 * \param dev A device handle returned from SDL_hid_open().
262 * \param data The data to send, including the report number as the first
263 * byte.
264 * \param length The length in bytes of the data to send.
265 * \returns the actual number of bytes written and -1 on error.
266 *
267 * \since This function is available since SDL 2.0.18.
268 */
269extern DECLSPEC int SDLCALL SDL_hid_write(SDL_hid_device *dev, const unsigned char *data, size_t length);
270
271/**
272 * Read an Input report from a HID device with timeout.
273 *
274 * Input reports are returned to the host through the INTERRUPT IN endpoint.
275 * The first byte will contain the Report number if the device uses numbered
276 * reports.
277 *
278 * \param dev A device handle returned from SDL_hid_open().
279 * \param data A buffer to put the read data into.
280 * \param length The number of bytes to read. For devices with multiple
281 * reports, make sure to read an extra byte for the report
282 * number.
283 * \param milliseconds timeout in milliseconds or -1 for blocking wait.
284 * \returns the actual number of bytes read and -1 on error. If no packet was
285 * available to be read within the timeout period, this function
286 * returns 0.
287 *
288 * \since This function is available since SDL 2.0.18.
289 */
290extern DECLSPEC int SDLCALL SDL_hid_read_timeout(SDL_hid_device *dev, unsigned char *data, size_t length, int milliseconds);
291
292/**
293 * Read an Input report from a HID device.
294 *
295 * Input reports are returned to the host through the INTERRUPT IN endpoint.
296 * The first byte will contain the Report number if the device uses numbered
297 * reports.
298 *
299 * \param dev A device handle returned from SDL_hid_open().
300 * \param data A buffer to put the read data into.
301 * \param length The number of bytes to read. For devices with multiple
302 * reports, make sure to read an extra byte for the report
303 * number.
304 * \returns the actual number of bytes read and -1 on error. If no packet was
305 * available to be read and the handle is in non-blocking mode, this
306 * function returns 0.
307 *
308 * \since This function is available since SDL 2.0.18.
309 */
310extern DECLSPEC int SDLCALL SDL_hid_read(SDL_hid_device *dev, unsigned char *data, size_t length);
311
312/**
313 * Set the device handle to be non-blocking.
314 *
315 * In non-blocking mode calls to SDL_hid_read() will return immediately with a
316 * value of 0 if there is no data to be read. In blocking mode, SDL_hid_read()
317 * will wait (block) until there is data to read before returning.
318 *
319 * Nonblocking can be turned on and off at any time.
320 *
321 * \param dev A device handle returned from SDL_hid_open().
322 * \param nonblock enable or not the nonblocking reads - 1 to enable
323 * nonblocking - 0 to disable nonblocking.
324 * \returns 0 on success and -1 on error.
325 *
326 * \since This function is available since SDL 2.0.18.
327 */
328extern DECLSPEC int SDLCALL SDL_hid_set_nonblocking(SDL_hid_device *dev, int nonblock);
329
330/**
331 * Send a Feature report to the device.
332 *
333 * Feature reports are sent over the Control endpoint as a Set_Report
334 * transfer. The first byte of `data` must contain the Report ID. For devices
335 * which only support a single report, this must be set to 0x0. The remaining
336 * bytes contain the report data. Since the Report ID is mandatory, calls to
337 * SDL_hid_send_feature_report() will always contain one more byte than the
338 * report contains. For example, if a hid report is 16 bytes long, 17 bytes
339 * must be passed to SDL_hid_send_feature_report(): the Report ID (or 0x0, for
340 * devices which do not use numbered reports), followed by the report data (16
341 * bytes). In this example, the length passed in would be 17.
342 *
343 * \param dev A device handle returned from SDL_hid_open().
344 * \param data The data to send, including the report number as the first
345 * byte.
346 * \param length The length in bytes of the data to send, including the report
347 * number.
348 * \returns the actual number of bytes written and -1 on error.
349 *
350 * \since This function is available since SDL 2.0.18.
351 */
352extern DECLSPEC int SDLCALL SDL_hid_send_feature_report(SDL_hid_device *dev, const unsigned char *data, size_t length);
353
354/**
355 * Get a feature report from a HID device.
356 *
357 * Set the first byte of `data` to the Report ID of the report to be read.
358 * Make sure to allow space for this extra byte in `data`. Upon return, the
359 * first byte will still contain the Report ID, and the report data will start
360 * in data[1].
361 *
362 * \param dev A device handle returned from SDL_hid_open().
363 * \param data A buffer to put the read data into, including the Report ID.
364 * Set the first byte of `data` to the Report ID of the report to
365 * be read, or set it to zero if your device does not use numbered
366 * reports.
367 * \param length The number of bytes to read, including an extra byte for the
368 * report ID. The buffer can be longer than the actual report.
369 * \returns the number of bytes read plus one for the report ID (which is
370 * still in the first byte), or -1 on error.
371 *
372 * \since This function is available since SDL 2.0.18.
373 */
374extern DECLSPEC int SDLCALL SDL_hid_get_feature_report(SDL_hid_device *dev, unsigned char *data, size_t length);
375
376/**
377 * Close a HID device.
378 *
379 * \param dev A device handle returned from SDL_hid_open().
380 *
381 * \since This function is available since SDL 2.0.18.
382 */
383extern DECLSPEC void SDLCALL SDL_hid_close(SDL_hid_device *dev);
384
385/**
386 * Get The Manufacturer String from a HID device.
387 *
388 * \param dev A device handle returned from SDL_hid_open().
389 * \param string A wide string buffer to put the data into.
390 * \param maxlen The length of the buffer in multiples of wchar_t.
391 * \returns 0 on success and -1 on error.
392 *
393 * \since This function is available since SDL 2.0.18.
394 */
395extern DECLSPEC int SDLCALL SDL_hid_get_manufacturer_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen);
396
397/**
398 * Get The Product String from a HID device.
399 *
400 * \param dev A device handle returned from SDL_hid_open().
401 * \param string A wide string buffer to put the data into.
402 * \param maxlen The length of the buffer in multiples of wchar_t.
403 * \returns 0 on success and -1 on error.
404 *
405 * \since This function is available since SDL 2.0.18.
406 */
407extern DECLSPEC int SDLCALL SDL_hid_get_product_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen);
408
409/**
410 * Get The Serial Number String from a HID device.
411 *
412 * \param dev A device handle returned from SDL_hid_open().
413 * \param string A wide string buffer to put the data into.
414 * \param maxlen The length of the buffer in multiples of wchar_t.
415 * \returns 0 on success and -1 on error.
416 *
417 * \since This function is available since SDL 2.0.18.
418 */
419extern DECLSPEC int SDLCALL SDL_hid_get_serial_number_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen);
420
421/**
422 * Get a string from a HID device, based on its string index.
423 *
424 * \param dev A device handle returned from SDL_hid_open().
425 * \param string_index The index of the string to get.
426 * \param string A wide string buffer to put the data into.
427 * \param maxlen The length of the buffer in multiples of wchar_t.
428 * \returns 0 on success and -1 on error.
429 *
430 * \since This function is available since SDL 2.0.18.
431 */
432extern DECLSPEC int SDLCALL SDL_hid_get_indexed_string(SDL_hid_device *dev, int string_index, wchar_t *string, size_t maxlen);
433
434/**
435 * Start or stop a BLE scan on iOS and tvOS to pair Steam Controllers
436 *
437 * \param active SDL_TRUE to start the scan, SDL_FALSE to stop the scan
438 *
439 * \since This function is available since SDL 2.0.18.
440 */
441extern DECLSPEC void SDLCALL SDL_hid_ble_scan(SDL_bool active);
442
443/* Ends C function definitions when using C++ */
444#ifdef __cplusplus
445}
446#endif
447#include "close_code.h"
448
449#endif /* SDL_hidapi_h_ */
450
451/* vi: set sts=4 ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_hints.h b/vendor/SDL2/include/SDL_hints.h new file mode 100644 index 0000000..1185f42 --- /dev/null +++ b/vendor/SDL2/include/SDL_hints.h
@@ -0,0 +1,1967 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_hints.h
24 *
25 * Official documentation for SDL configuration variables
26 *
27 * This file contains functions to set and get configuration hints,
28 * as well as listing each of them alphabetically.
29 *
30 * The convention for naming hints is SDL_HINT_X, where "SDL_X" is
31 * the environment variable that can be used to override the default.
32 *
33 * In general these hints are just that - they may or may not be
34 * supported or applicable on any given platform, but they provide
35 * a way for an application or user to give the library a hint as
36 * to how they would like the library to work.
37 */
38
39#ifndef SDL_hints_h_
40#define SDL_hints_h_
41
42#include "SDL_stdinc.h"
43
44#include "begin_code.h"
45/* Set up for C function definitions, even when using C++ */
46#ifdef __cplusplus
47extern "C" {
48#endif
49
50/**
51 * \brief A variable controlling whether the Android / iOS built-in
52 * accelerometer should be listed as a joystick device.
53 *
54 * This variable can be set to the following values:
55 * "0" - The accelerometer is not listed as a joystick
56 * "1" - The accelerometer is available as a 3 axis joystick (the default).
57 */
58#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK"
59
60/**
61 * \brief Specify the behavior of Alt+Tab while the keyboard is grabbed.
62 *
63 * By default, SDL emulates Alt+Tab functionality while the keyboard is grabbed
64 * and your window is full-screen. This prevents the user from getting stuck in
65 * your application if you've enabled keyboard grab.
66 *
67 * The variable can be set to the following values:
68 * "0" - SDL will not handle Alt+Tab. Your application is responsible
69 for handling Alt+Tab while the keyboard is grabbed.
70 * "1" - SDL will minimize your window when Alt+Tab is pressed (default)
71*/
72#define SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED "SDL_ALLOW_ALT_TAB_WHILE_GRABBED"
73
74/**
75 * \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it.
76 * This is a debugging aid for developers and not expected to be used by end users. The default is "1"
77 *
78 * This variable can be set to the following values:
79 * "0" - don't allow topmost
80 * "1" - allow topmost
81 */
82#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST"
83
84/**
85 * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc.
86 *
87 * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION.
88 *
89 * If both hints were set then SDL_RWFromFile() will look into expansion files
90 * after a given relative path was not found in the internal storage and assets.
91 *
92 * By default this hint is not set and the APK expansion files are not searched.
93 */
94#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION"
95
96/**
97 * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc.
98 *
99 * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION.
100 *
101 * If both hints were set then SDL_RWFromFile() will look into expansion files
102 * after a given relative path was not found in the internal storage and assets.
103 *
104 * By default this hint is not set and the APK expansion files are not searched.
105 */
106#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION"
107
108/**
109 * \brief A variable to control whether the event loop will block itself when the app is paused.
110 *
111 * The variable can be set to the following values:
112 * "0" - Non blocking.
113 * "1" - Blocking. (default)
114 *
115 * The value should be set before SDL is initialized.
116 */
117#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE"
118
119/**
120 * \brief A variable to control whether SDL will pause audio in background
121 * (Requires SDL_ANDROID_BLOCK_ON_PAUSE as "Non blocking")
122 *
123 * The variable can be set to the following values:
124 * "0" - Non paused.
125 * "1" - Paused. (default)
126 *
127 * The value should be set before SDL is initialized.
128 */
129#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO"
130
131/**
132 * \brief A variable to control whether we trap the Android back button to handle it manually.
133 * This is necessary for the right mouse button to work on some Android devices, or
134 * to be able to trap the back button for use in your code reliably. If set to true,
135 * the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of
136 * SDL_SCANCODE_AC_BACK.
137 *
138 * The variable can be set to the following values:
139 * "0" - Back button will be handled as usual for system. (default)
140 * "1" - Back button will be trapped, allowing you to handle the key press
141 * manually. (This will also let right mouse click work on systems
142 * where the right mouse button functions as back.)
143 *
144 * The value of this hint is used at runtime, so it can be changed at any time.
145 */
146#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON"
147
148/**
149 * \brief Specify an application name.
150 *
151 * This hint lets you specify the application name sent to the OS when
152 * required. For example, this will often appear in volume control applets for
153 * audio streams, and in lists of applications which are inhibiting the
154 * screensaver. You should use a string that describes your program ("My Game
155 * 2: The Revenge")
156 *
157 * Setting this to "" or leaving it unset will have SDL use a reasonable
158 * default: probably the application's name or "SDL Application" if SDL
159 * doesn't have any better information.
160 *
161 * Note that, for audio streams, this can be overridden with
162 * SDL_HINT_AUDIO_DEVICE_APP_NAME.
163 *
164 * On targets where this is not supported, this hint does nothing.
165 */
166#define SDL_HINT_APP_NAME "SDL_APP_NAME"
167
168/**
169 * \brief A variable controlling whether controllers used with the Apple TV
170 * generate UI events.
171 *
172 * When UI events are generated by controller input, the app will be
173 * backgrounded when the Apple TV remote's menu button is pressed, and when the
174 * pause or B buttons on gamepads are pressed.
175 *
176 * More information about properly making use of controllers for the Apple TV
177 * can be found here:
178 * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/
179 *
180 * This variable can be set to the following values:
181 * "0" - Controller input does not generate UI events (the default).
182 * "1" - Controller input generates UI events.
183 */
184#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS"
185
186/**
187 * \brief A variable controlling whether the Apple TV remote's joystick axes
188 * will automatically match the rotation of the remote.
189 *
190 * This variable can be set to the following values:
191 * "0" - Remote orientation does not affect joystick axes (the default).
192 * "1" - Joystick axes are based on the orientation of the remote.
193 */
194#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION"
195
196/**
197 * \brief A variable controlling the audio category on iOS and Mac OS X
198 *
199 * This variable can be set to the following values:
200 *
201 * "ambient" - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default)
202 * "playback" - Use the AVAudioSessionCategoryPlayback category
203 *
204 * For more information, see Apple's documentation:
205 * https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html
206 */
207#define SDL_HINT_AUDIO_CATEGORY "SDL_AUDIO_CATEGORY"
208
209/**
210 * \brief Specify an application name for an audio device.
211 *
212 * Some audio backends (such as PulseAudio) allow you to describe your audio
213 * stream. Among other things, this description might show up in a system
214 * control panel that lets the user adjust the volume on specific audio
215 * streams instead of using one giant master volume slider.
216 *
217 * This hints lets you transmit that information to the OS. The contents of
218 * this hint are used while opening an audio device. You should use a string
219 * that describes your program ("My Game 2: The Revenge")
220 *
221 * Setting this to "" or leaving it unset will have SDL use a reasonable
222 * default: this will be the name set with SDL_HINT_APP_NAME, if that hint is
223 * set. Otherwise, it'll probably the application's name or "SDL Application"
224 * if SDL doesn't have any better information.
225 *
226 * On targets where this is not supported, this hint does nothing.
227 */
228#define SDL_HINT_AUDIO_DEVICE_APP_NAME "SDL_AUDIO_DEVICE_APP_NAME"
229
230/**
231 * \brief Specify an application name for an audio device.
232 *
233 * Some audio backends (such as PulseAudio) allow you to describe your audio
234 * stream. Among other things, this description might show up in a system
235 * control panel that lets the user adjust the volume on specific audio
236 * streams instead of using one giant master volume slider.
237 *
238 * This hints lets you transmit that information to the OS. The contents of
239 * this hint are used while opening an audio device. You should use a string
240 * that describes your what your program is playing ("audio stream" is
241 * probably sufficient in many cases, but this could be useful for something
242 * like "team chat" if you have a headset playing VoIP audio separately).
243 *
244 * Setting this to "" or leaving it unset will have SDL use a reasonable
245 * default: "audio stream" or something similar.
246 *
247 * On targets where this is not supported, this hint does nothing.
248 */
249#define SDL_HINT_AUDIO_DEVICE_STREAM_NAME "SDL_AUDIO_DEVICE_STREAM_NAME"
250
251/**
252 * \brief Specify an application role for an audio device.
253 *
254 * Some audio backends (such as Pipewire) allow you to describe the role of
255 * your audio stream. Among other things, this description might show up in
256 * a system control panel or software for displaying and manipulating media
257 * playback/capture graphs.
258 *
259 * This hints lets you transmit that information to the OS. The contents of
260 * this hint are used while opening an audio device. You should use a string
261 * that describes your what your program is playing (Game, Music, Movie,
262 * etc...).
263 *
264 * Setting this to "" or leaving it unset will have SDL use a reasonable
265 * default: "Game" or something similar.
266 *
267 * On targets where this is not supported, this hint does nothing.
268 */
269#define SDL_HINT_AUDIO_DEVICE_STREAM_ROLE "SDL_AUDIO_DEVICE_STREAM_ROLE"
270
271/**
272 * \brief A variable controlling speed/quality tradeoff of audio resampling.
273 *
274 * If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ )
275 * to handle audio resampling. There are different resampling modes available
276 * that produce different levels of quality, using more CPU.
277 *
278 * If this hint isn't specified to a valid setting, or libsamplerate isn't
279 * available, SDL will use the default, internal resampling algorithm.
280 *
281 * Note that this is currently only applicable to resampling audio that is
282 * being written to a device for playback or audio being read from a device
283 * for capture. SDL_AudioCVT always uses the default resampler (although this
284 * might change for SDL 2.1).
285 *
286 * This hint is currently only checked at audio subsystem initialization.
287 *
288 * This variable can be set to the following values:
289 *
290 * "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast)
291 * "1" or "fast" - Use fast, slightly higher quality resampling, if available
292 * "2" or "medium" - Use medium quality resampling, if available
293 * "3" or "best" - Use high quality resampling, if available
294 */
295#define SDL_HINT_AUDIO_RESAMPLING_MODE "SDL_AUDIO_RESAMPLING_MODE"
296
297/**
298 * \brief A variable controlling whether SDL updates joystick state when getting input events
299 *
300 * This variable can be set to the following values:
301 *
302 * "0" - You'll call SDL_JoystickUpdate() manually
303 * "1" - SDL will automatically call SDL_JoystickUpdate() (default)
304 *
305 * This hint can be toggled on and off at runtime.
306 */
307#define SDL_HINT_AUTO_UPDATE_JOYSTICKS "SDL_AUTO_UPDATE_JOYSTICKS"
308
309/**
310 * \brief A variable controlling whether SDL updates sensor state when getting input events
311 *
312 * This variable can be set to the following values:
313 *
314 * "0" - You'll call SDL_SensorUpdate() manually
315 * "1" - SDL will automatically call SDL_SensorUpdate() (default)
316 *
317 * This hint can be toggled on and off at runtime.
318 */
319#define SDL_HINT_AUTO_UPDATE_SENSORS "SDL_AUTO_UPDATE_SENSORS"
320
321/**
322 * \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs.
323 *
324 * The bitmap header version 4 is required for proper alpha channel support and
325 * SDL will use it when required. Should this not be desired, this hint can
326 * force the use of the 40 byte header version which is supported everywhere.
327 *
328 * The variable can be set to the following values:
329 * "0" - Surfaces with a colorkey or an alpha channel are saved to a
330 * 32-bit BMP file with an alpha mask. SDL will use the bitmap
331 * header version 4 and set the alpha mask accordingly.
332 * "1" - Surfaces with a colorkey or an alpha channel are saved to a
333 * 32-bit BMP file without an alpha mask. The alpha channel data
334 * will be in the file, but applications are going to ignore it.
335 *
336 * The default value is "0".
337 */
338#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT"
339
340/**
341 * \brief Override for SDL_GetDisplayUsableBounds()
342 *
343 * If set, this hint will override the expected results for
344 * SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want
345 * to do this, but this allows an embedded system to request that some of the
346 * screen be reserved for other uses when paired with a well-behaved
347 * application.
348 *
349 * The contents of this hint must be 4 comma-separated integers, the first
350 * is the bounds x, then y, width and height, in that order.
351 */
352#define SDL_HINT_DISPLAY_USABLE_BOUNDS "SDL_DISPLAY_USABLE_BOUNDS"
353
354/**
355 * \brief Disable giving back control to the browser automatically
356 * when running with asyncify
357 *
358 * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations
359 * such as refreshing the screen or polling events.
360 *
361 * This hint only applies to the emscripten platform
362 *
363 * The variable can be set to the following values:
364 * "0" - Disable emscripten_sleep calls (if you give back browser control manually or use asyncify for other purposes)
365 * "1" - Enable emscripten_sleep calls (the default)
366 */
367#define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY"
368
369/**
370 * \brief override the binding element for keyboard inputs for Emscripten builds
371 *
372 * This hint only applies to the emscripten platform
373 *
374 * The variable can be one of
375 * "#window" - The javascript window object (this is the default)
376 * "#document" - The javascript document object
377 * "#screen" - the javascript window.screen object
378 * "#canvas" - the WebGL canvas element
379 * any other string without a leading # sign applies to the element on the page with that ID.
380 */
381#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT"
382
383/**
384 * \brief A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs
385 *
386 * The variable can be set to the following values:
387 * "0" - Do not scan for Steam Controllers
388 * "1" - Scan for Steam Controllers (the default)
389 *
390 * The default value is "1". This hint must be set before initializing the joystick subsystem.
391 */
392#define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS"
393
394/**
395 * \brief A variable controlling whether SDL logs all events pushed onto its internal queue.
396 *
397 * This variable can be set to the following values:
398 *
399 * "0" - Don't log any events (default)
400 * "1" - Log all events except mouse and finger motion, which are pretty spammy.
401 * "2" - Log all events.
402 *
403 * This is generally meant to be used to debug SDL itself, but can be useful
404 * for application developers that need better visibility into what is going
405 * on in the event queue. Logged events are sent through SDL_Log(), which
406 * means by default they appear on stdout on most platforms or maybe
407 * OutputDebugString() on Windows, and can be funneled by the app with
408 * SDL_LogSetOutputFunction(), etc.
409 *
410 * This hint can be toggled on and off at runtime, if you only need to log
411 * events for a small subset of program execution.
412 */
413#define SDL_HINT_EVENT_LOGGING "SDL_EVENT_LOGGING"
414
415/**
416 * \brief A variable controlling how 3D acceleration is used to accelerate the SDL screen surface.
417 *
418 * SDL can try to accelerate the SDL screen surface by using streaming
419 * textures with a 3D rendering engine. This variable controls whether and
420 * how this is done.
421 *
422 * This variable can be set to the following values:
423 * "0" - Disable 3D acceleration
424 * "1" - Enable 3D acceleration, using the default renderer.
425 * "X" - Enable 3D acceleration, using X where X is one of the valid rendering drivers. (e.g. "direct3d", "opengl", etc.)
426 *
427 * By default SDL tries to make a best guess for each platform whether
428 * to use acceleration or not.
429 */
430#define SDL_HINT_FRAMEBUFFER_ACCELERATION "SDL_FRAMEBUFFER_ACCELERATION"
431
432/**
433 * \brief A variable that lets you manually hint extra gamecontroller db entries.
434 *
435 * The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h
436 *
437 * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
438 * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
439 */
440#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG"
441
442/**
443 * \brief A variable that lets you provide a file with extra gamecontroller db entries.
444 *
445 * The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h
446 *
447 * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
448 * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
449 */
450#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE"
451
452/**
453 * \brief A variable that overrides the automatic controller type detection
454 *
455 * The variable should be comma separated entries, in the form: VID/PID=type
456 *
457 * The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd
458 *
459 * The type should be one of:
460 * Xbox360
461 * XboxOne
462 * PS3
463 * PS4
464 * PS5
465 * SwitchPro
466 *
467 * This hint affects what driver is used, and must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
468 */
469#define SDL_HINT_GAMECONTROLLERTYPE "SDL_GAMECONTROLLERTYPE"
470
471/**
472 * \brief A variable containing a list of devices to skip when scanning for game controllers.
473 *
474 * The format of the string is a comma separated list of USB VID/PID pairs
475 * in hexadecimal form, e.g.
476 *
477 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
478 *
479 * The variable can also take the form of @file, in which case the named
480 * file will be loaded and interpreted as the value of the variable.
481 */
482#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES"
483
484/**
485 * \brief If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable.
486 *
487 * The format of the string is a comma separated list of USB VID/PID pairs
488 * in hexadecimal form, e.g.
489 *
490 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
491 *
492 * The variable can also take the form of @file, in which case the named
493 * file will be loaded and interpreted as the value of the variable.
494 */
495#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT"
496
497/**
498 * \brief If set, game controller face buttons report their values according to their labels instead of their positional layout.
499 *
500 * For example, on Nintendo Switch controllers, normally you'd get:
501 *
502 * (Y)
503 * (X) (B)
504 * (A)
505 *
506 * but if this hint is set, you'll get:
507 *
508 * (X)
509 * (Y) (A)
510 * (B)
511 *
512 * The variable can be set to the following values:
513 * "0" - Report the face buttons by position, as though they were on an Xbox controller.
514 * "1" - Report the face buttons by label instead of position
515 *
516 * The default value is "1". This hint may be set at any time.
517 */
518#define SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS "SDL_GAMECONTROLLER_USE_BUTTON_LABELS"
519
520/**
521 * \brief A variable controlling whether grabbing input grabs the keyboard
522 *
523 * This variable can be set to the following values:
524 * "0" - Grab will affect only the mouse
525 * "1" - Grab will affect mouse and keyboard
526 *
527 * By default SDL will not grab the keyboard so system shortcuts still work.
528 */
529#define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD"
530
531/**
532 * \brief A variable controlling whether the idle timer is disabled on iOS.
533 *
534 * When an iOS app does not receive touches for some time, the screen is
535 * dimmed automatically. For games where the accelerometer is the only input
536 * this is problematic. This functionality can be disabled by setting this
537 * hint.
538 *
539 * As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver()
540 * accomplish the same thing on iOS. They should be preferred over this hint.
541 *
542 * This variable can be set to the following values:
543 * "0" - Enable idle timer
544 * "1" - Disable idle timer
545 */
546#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED"
547
548/**
549 * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events.
550 *
551 * The variable can be set to the following values:
552 * "0" - SDL_TEXTEDITING events are sent, and it is the application's
553 * responsibility to render the text from these events and
554 * differentiate it somehow from committed text. (default)
555 * "1" - If supported by the IME then SDL_TEXTEDITING events are not sent,
556 * and text that is being composed will be rendered in its own UI.
557 */
558#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING"
559
560/**
561 * \brief A variable to control whether certain IMEs should show native UI components (such as the Candidate List) instead of suppressing them.
562 *
563 * The variable can be set to the following values:
564 * "0" - Native UI components are not display. (default)
565 * "1" - Native UI components are displayed.
566 */
567#define SDL_HINT_IME_SHOW_UI "SDL_IME_SHOW_UI"
568
569/**
570 * \brief A variable controlling whether the home indicator bar on iPhone X
571 * should be hidden.
572 *
573 * This variable can be set to the following values:
574 * "0" - The indicator bar is not hidden (default for windowed applications)
575 * "1" - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications)
576 * "2" - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the "home" action (default for fullscreen applications)
577 */
578#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR"
579
580/**
581 * \brief A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background.
582 *
583 * The variable can be set to the following values:
584 * "0" - Disable joystick & gamecontroller input events when the
585 * application is in the background.
586 * "1" - Enable joystick & gamecontroller input events when the
587 * application is in the background.
588 *
589 * The default value is "0". This hint may be set at any time.
590 */
591#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS"
592
593/**
594 * \brief A variable controlling whether the HIDAPI joystick drivers should be used.
595 *
596 * This variable can be set to the following values:
597 * "0" - HIDAPI drivers are not used
598 * "1" - HIDAPI drivers are used (the default)
599 *
600 * This variable is the default for all drivers, but can be overridden by the hints for specific drivers below.
601 */
602#define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI"
603
604/**
605 * \brief A variable controlling whether the HIDAPI driver for Nintendo GameCube controllers should be used.
606 *
607 * This variable can be set to the following values:
608 * "0" - HIDAPI driver is not used
609 * "1" - HIDAPI driver is used
610 *
611 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
612 */
613#define SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE "SDL_JOYSTICK_HIDAPI_GAMECUBE"
614
615 /**
616 * \brief A variable controlling whether Switch Joy-Cons should be treated the same as Switch Pro Controllers when using the HIDAPI driver.
617 *
618 * This variable can be set to the following values:
619 * "0" - basic Joy-Con support with no analog input (the default)
620 * "1" - Joy-Cons treated as half full Pro Controllers with analog inputs and sensors
621 *
622 * This does not combine Joy-Cons into a single controller. That's up to the user.
623 */
624#define SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS "SDL_JOYSTICK_HIDAPI_JOY_CONS"
625
626 /**
627 * \brief A variable controlling whether the HIDAPI driver for Amazon Luna controllers connected via Bluetooth should be used.
628 *
629 * This variable can be set to the following values:
630 * "0" - HIDAPI driver is not used
631 * "1" - HIDAPI driver is used
632 *
633 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
634 */
635#define SDL_HINT_JOYSTICK_HIDAPI_LUNA "SDL_JOYSTICK_HIDAPI_LUNA"
636
637/**
638 * \brief A variable controlling whether the HIDAPI driver for PS4 controllers should be used.
639 *
640 * This variable can be set to the following values:
641 * "0" - HIDAPI driver is not used
642 * "1" - HIDAPI driver is used
643 *
644 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
645 */
646#define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4"
647
648/**
649 * \brief A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver.
650 *
651 * This variable can be set to the following values:
652 * "0" - extended reports are not enabled (the default)
653 * "1" - extended reports
654 *
655 * Extended input reports allow rumble on Bluetooth PS4 controllers, but
656 * break DirectInput handling for applications that don't use SDL.
657 *
658 * Once extended reports are enabled, they can not be disabled without
659 * power cycling the controller.
660 *
661 * For compatibility with applications written for versions of SDL prior
662 * to the introduction of PS5 controller support, this value will also
663 * control the state of extended reports on PS5 controllers when the
664 * SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE hint is not explicitly set.
665 */
666#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE"
667
668/**
669 * \brief A variable controlling whether the HIDAPI driver for PS5 controllers should be used.
670 *
671 * This variable can be set to the following values:
672 * "0" - HIDAPI driver is not used
673 * "1" - HIDAPI driver is used
674 *
675 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
676 */
677#define SDL_HINT_JOYSTICK_HIDAPI_PS5 "SDL_JOYSTICK_HIDAPI_PS5"
678
679/**
680 * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a PS5 controller.
681 *
682 * This variable can be set to the following values:
683 * "0" - player LEDs are not enabled
684 * "1" - player LEDs are enabled (the default)
685 */
686#define SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED "SDL_JOYSTICK_HIDAPI_PS5_PLAYER_LED"
687
688/**
689 * \brief A variable controlling whether extended input reports should be used for PS5 controllers when using the HIDAPI driver.
690 *
691 * This variable can be set to the following values:
692 * "0" - extended reports are not enabled (the default)
693 * "1" - extended reports
694 *
695 * Extended input reports allow rumble on Bluetooth PS5 controllers, but
696 * break DirectInput handling for applications that don't use SDL.
697 *
698 * Once extended reports are enabled, they can not be disabled without
699 * power cycling the controller.
700 *
701 * For compatibility with applications written for versions of SDL prior
702 * to the introduction of PS5 controller support, this value defaults to
703 * the value of SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE.
704 */
705#define SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE "SDL_JOYSTICK_HIDAPI_PS5_RUMBLE"
706
707/**
708 * \brief A variable controlling whether the HIDAPI driver for Google Stadia controllers should be used.
709 *
710 * This variable can be set to the following values:
711 * "0" - HIDAPI driver is not used
712 * "1" - HIDAPI driver is used
713 *
714 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
715 */
716#define SDL_HINT_JOYSTICK_HIDAPI_STADIA "SDL_JOYSTICK_HIDAPI_STADIA"
717
718/**
719 * \brief A variable controlling whether the HIDAPI driver for Steam Controllers should be used.
720 *
721 * This variable can be set to the following values:
722 * "0" - HIDAPI driver is not used
723 * "1" - HIDAPI driver is used for Steam Controllers, which requires Bluetooth access
724 * and may prompt the user for permission on iOS and Android.
725 *
726 * The default is "0"
727 */
728#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM"
729
730/**
731 * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used.
732 *
733 * This variable can be set to the following values:
734 * "0" - HIDAPI driver is not used
735 * "1" - HIDAPI driver is used
736 *
737 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
738 */
739#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH"
740
741/**
742 * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch controller is opened
743 *
744 * This variable can be set to the following values:
745 * "0" - home button LED is turned off
746 * "1" - home button LED is turned on
747 *
748 * By default the Home button LED state is not changed.
749 */
750#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED "SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED"
751
752/**
753 * \brief A variable controlling whether the HIDAPI driver for XBox controllers should be used.
754 *
755 * This variable can be set to the following values:
756 * "0" - HIDAPI driver is not used
757 * "1" - HIDAPI driver is used
758 *
759 * The default is "0" on Windows, otherwise the value of SDL_HINT_JOYSTICK_HIDAPI
760 */
761#define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX"
762
763 /**
764 * \brief A variable controlling whether the RAWINPUT joystick drivers should be used for better handling XInput-capable devices.
765 *
766 * This variable can be set to the following values:
767 * "0" - RAWINPUT drivers are not used
768 * "1" - RAWINPUT drivers are used (the default)
769 *
770 */
771#define SDL_HINT_JOYSTICK_RAWINPUT "SDL_JOYSTICK_RAWINPUT"
772
773 /**
774 * \brief A variable controlling whether the RAWINPUT driver should pull correlated data from XInput.
775 *
776 * This variable can be set to the following values:
777 * "0" - RAWINPUT driver will only use data from raw input APIs
778 * "1" - RAWINPUT driver will also pull data from XInput, providing
779 * better trigger axes, guide button presses, and rumble support
780 * for Xbox controllers
781 *
782 * The default is "1". This hint applies to any joysticks opened after setting the hint.
783 */
784#define SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT "SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT"
785
786 /**
787 * \brief A variable controlling whether a separate thread should be used
788 * for handling joystick detection and raw input messages on Windows
789 *
790 * This variable can be set to the following values:
791 * "0" - A separate thread is not used (the default)
792 * "1" - A separate thread is used for handling raw input messages
793 *
794 */
795#define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD"
796
797/**
798 * \brief Determines whether SDL enforces that DRM master is required in order
799 * to initialize the KMSDRM video backend.
800 *
801 * The DRM subsystem has a concept of a "DRM master" which is a DRM client that
802 * has the ability to set planes, set cursor, etc. When SDL is DRM master, it
803 * can draw to the screen using the SDL rendering APIs. Without DRM master, SDL
804 * is still able to process input and query attributes of attached displays,
805 * but it cannot change display state or draw to the screen directly.
806 *
807 * In some cases, it can be useful to have the KMSDRM backend even if it cannot
808 * be used for rendering. An app may want to use SDL for input processing while
809 * using another rendering API (such as an MMAL overlay on Raspberry Pi) or
810 * using its own code to render to DRM overlays that SDL doesn't support.
811 *
812 * This hint must be set before initializing the video subsystem.
813 *
814 * This variable can be set to the following values:
815 * "0" - SDL will allow usage of the KMSDRM backend without DRM master
816 * "1" - SDL Will require DRM master to use the KMSDRM backend (default)
817 */
818#define SDL_HINT_KMSDRM_REQUIRE_DRM_MASTER "SDL_KMSDRM_REQUIRE_DRM_MASTER"
819
820 /**
821 * \brief A comma separated list of devices to open as joysticks
822 *
823 * This variable is currently only used by the Linux joystick driver.
824 */
825#define SDL_HINT_JOYSTICK_DEVICE "SDL_JOYSTICK_DEVICE"
826
827 /**
828 * \brief A variable controlling whether to use the classic /dev/input/js* joystick interface or the newer /dev/input/event* joystick interface on Linux
829 *
830 * This variable can be set to the following values:
831 * "0" - Use /dev/input/event*
832 * "1" - Use /dev/input/js*
833 *
834 * By default the /dev/input/event* interfaces are used
835 */
836#define SDL_HINT_LINUX_JOYSTICK_CLASSIC "SDL_LINUX_JOYSTICK_CLASSIC"
837
838 /**
839 * \brief A variable controlling whether joysticks on Linux adhere to their HID-defined deadzones or return unfiltered values.
840 *
841 * This variable can be set to the following values:
842 * "0" - Return unfiltered joystick axis values (the default)
843 * "1" - Return axis values with deadzones taken into account
844 */
845#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES"
846
847/**
848* \brief When set don't force the SDL app to become a foreground process
849*
850* This hint only applies to Mac OS X.
851*
852*/
853#define SDL_HINT_MAC_BACKGROUND_APP "SDL_MAC_BACKGROUND_APP"
854
855/**
856 * \brief A variable that determines whether ctrl+click should generate a right-click event on Mac
857 *
858 * If present, holding ctrl while left clicking will generate a right click
859 * event when on Mac.
860 */
861#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK"
862
863/**
864 * \brief A variable setting the double click radius, in pixels.
865 */
866#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS "SDL_MOUSE_DOUBLE_CLICK_RADIUS"
867
868/**
869 * \brief A variable setting the double click time, in milliseconds.
870 */
871#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME "SDL_MOUSE_DOUBLE_CLICK_TIME"
872
873/**
874 * \brief Allow mouse click events when clicking to focus an SDL window
875 *
876 * This variable can be set to the following values:
877 * "0" - Ignore mouse clicks that activate a window
878 * "1" - Generate events for mouse clicks that activate a window
879 *
880 * By default SDL will ignore mouse clicks that activate a window
881 */
882#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH"
883
884/**
885 * \brief A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode
886 */
887#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE "SDL_MOUSE_NORMAL_SPEED_SCALE"
888
889/**
890 * \brief A variable controlling whether relative mouse mode is implemented using mouse warping
891 *
892 * This variable can be set to the following values:
893 * "0" - Relative mouse mode uses raw input
894 * "1" - Relative mouse mode uses mouse warping
895 *
896 * By default SDL will use raw input for relative mouse mode
897 */
898#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP"
899
900/**
901 * \brief A variable controlling whether relative mouse motion is affected by renderer scaling
902 *
903 * This variable can be set to the following values:
904 * "0" - Relative motion is unaffected by DPI or renderer's logical size
905 * "1" - Relative motion is scaled according to DPI scaling and logical size
906 *
907 * By default relative mouse deltas are affected by DPI and renderer scaling
908 */
909#define SDL_HINT_MOUSE_RELATIVE_SCALING "SDL_MOUSE_RELATIVE_SCALING"
910
911/**
912 * \brief A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode
913 */
914#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE "SDL_MOUSE_RELATIVE_SPEED_SCALE"
915
916/**
917 * \brief A variable controlling whether mouse events should generate synthetic touch events
918 *
919 * This variable can be set to the following values:
920 * "0" - Mouse events will not generate touch events (default for desktop platforms)
921 * "1" - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS)
922 */
923#define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS"
924
925/**
926 * \brief Tell SDL not to catch the SIGINT or SIGTERM signals.
927 *
928 * This hint only applies to Unix-like platforms, and should set before
929 * any calls to SDL_Init()
930 *
931 * The variable can be set to the following values:
932 * "0" - SDL will install a SIGINT and SIGTERM handler, and when it
933 * catches a signal, convert it into an SDL_QUIT event.
934 * "1" - SDL will not install a signal handler at all.
935 */
936#define SDL_HINT_NO_SIGNAL_HANDLERS "SDL_NO_SIGNAL_HANDLERS"
937
938/**
939 * \brief A variable controlling what driver to use for OpenGL ES contexts.
940 *
941 * On some platforms, currently Windows and X11, OpenGL drivers may support
942 * creating contexts with an OpenGL ES profile. By default SDL uses these
943 * profiles, when available, otherwise it attempts to load an OpenGL ES
944 * library, e.g. that provided by the ANGLE project. This variable controls
945 * whether SDL follows this default behaviour or will always load an
946 * OpenGL ES library.
947 *
948 * Circumstances where this is useful include
949 * - Testing an app with a particular OpenGL ES implementation, e.g ANGLE,
950 * or emulator, e.g. those from ARM, Imagination or Qualcomm.
951 * - Resolving OpenGL ES function addresses at link time by linking with
952 * the OpenGL ES library instead of querying them at run time with
953 * SDL_GL_GetProcAddress().
954 *
955 * Caution: for an application to work with the default behaviour across
956 * different OpenGL drivers it must query the OpenGL ES function
957 * addresses at run time using SDL_GL_GetProcAddress().
958 *
959 * This variable is ignored on most platforms because OpenGL ES is native
960 * or not supported.
961 *
962 * This variable can be set to the following values:
963 * "0" - Use ES profile of OpenGL, if available. (Default when not set.)
964 * "1" - Load OpenGL ES library using the default library names.
965 *
966 */
967#define SDL_HINT_OPENGL_ES_DRIVER "SDL_OPENGL_ES_DRIVER"
968
969/**
970 * \brief A variable controlling which orientations are allowed on iOS/Android.
971 *
972 * In some circumstances it is necessary to be able to explicitly control
973 * which UI orientations are allowed.
974 *
975 * This variable is a space delimited list of the following values:
976 * "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown"
977 */
978#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS"
979
980/**
981 * \brief A variable controlling the use of a sentinel event when polling the event queue
982 *
983 * This variable can be set to the following values:
984 * "0" - Disable poll sentinels
985 * "1" - Enable poll sentinels
986 *
987 * When polling for events, SDL_PumpEvents is used to gather new events from devices.
988 * If a device keeps producing new events between calls to SDL_PumpEvents, a poll loop will
989 * become stuck until the new events stop.
990 * This is most noticable when moving a high frequency mouse.
991 *
992 * By default, poll sentinels are enabled.
993 */
994#define SDL_HINT_POLL_SENTINEL "SDL_POLL_SENTINEL"
995
996/**
997 * \brief Override for SDL_GetPreferredLocales()
998 *
999 * If set, this will be favored over anything the OS might report for the
1000 * user's preferred locales. Changing this hint at runtime will not generate
1001 * a SDL_LOCALECHANGED event (but if you can change the hint, you can push
1002 * your own event, if you want).
1003 *
1004 * The format of this hint is a comma-separated list of language and locale,
1005 * combined with an underscore, as is a common format: "en_GB". Locale is
1006 * optional: "en". So you might have a list like this: "en_GB,jp,es_PT"
1007 */
1008#define SDL_HINT_PREFERRED_LOCALES "SDL_PREFERRED_LOCALES"
1009
1010/**
1011 * \brief A variable describing the content orientation on QtWayland-based platforms.
1012 *
1013 * On QtWayland platforms, windows are rotated client-side to allow for custom
1014 * transitions. In order to correctly position overlays (e.g. volume bar) and
1015 * gestures (e.g. events view, close/minimize gestures), the system needs to
1016 * know in which orientation the application is currently drawing its contents.
1017 *
1018 * This does not cause the window to be rotated or resized, the application
1019 * needs to take care of drawing the content in the right orientation (the
1020 * framebuffer is always in portrait mode).
1021 *
1022 * This variable can be one of the following values:
1023 * "primary" (default), "portrait", "landscape", "inverted-portrait", "inverted-landscape"
1024 */
1025#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION"
1026
1027/**
1028 * \brief Flags to set on QtWayland windows to integrate with the native window manager.
1029 *
1030 * On QtWayland platforms, this hint controls the flags to set on the windows.
1031 * For example, on Sailfish OS "OverridesSystemGestures" disables swipe gestures.
1032 *
1033 * This variable is a space-separated list of the following values (empty = no flags):
1034 * "OverridesSystemGestures", "StaysOnTop", "BypassWindowManager"
1035 */
1036#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS"
1037
1038/**
1039 * \brief A variable controlling whether the 2D render API is compatible or efficient.
1040 *
1041 * This variable can be set to the following values:
1042 *
1043 * "0" - Don't use batching to make rendering more efficient.
1044 * "1" - Use batching, but might cause problems if app makes its own direct OpenGL calls.
1045 *
1046 * Up to SDL 2.0.9, the render API would draw immediately when requested. Now
1047 * it batches up draw requests and sends them all to the GPU only when forced
1048 * to (during SDL_RenderPresent, when changing render targets, by updating a
1049 * texture that the batch needs, etc). This is significantly more efficient,
1050 * but it can cause problems for apps that expect to render on top of the
1051 * render API's output. As such, SDL will disable batching if a specific
1052 * render backend is requested (since this might indicate that the app is
1053 * planning to use the underlying graphics API directly). This hint can
1054 * be used to explicitly request batching in this instance. It is a contract
1055 * that you will either never use the underlying graphics API directly, or
1056 * if you do, you will call SDL_RenderFlush() before you do so any current
1057 * batch goes to the GPU before your work begins. Not following this contract
1058 * will result in undefined behavior.
1059 */
1060#define SDL_HINT_RENDER_BATCHING "SDL_RENDER_BATCHING"
1061
1062/**
1063 * \brief A variable controlling how the 2D render API renders lines
1064 *
1065 * This variable can be set to the following values:
1066 * "0" - Use the default line drawing method (Bresenham's line algorithm as of SDL 2.0.20)
1067 * "1" - Use the driver point API using Bresenham's line algorithm (correct, draws many points)
1068 * "2" - Use the driver line API (occasionally misses line endpoints based on hardware driver quirks, was the default before 2.0.20)
1069 * "3" - Use the driver geometry API (correct, draws thicker diagonal lines)
1070 *
1071 * This variable should be set when the renderer is created.
1072 */
1073#define SDL_HINT_RENDER_LINE_METHOD "SDL_RENDER_LINE_METHOD"
1074
1075/**
1076 * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer.
1077 *
1078 * This variable does not have any effect on the Direct3D 9 based renderer.
1079 *
1080 * This variable can be set to the following values:
1081 * "0" - Disable Debug Layer use
1082 * "1" - Enable Debug Layer use
1083 *
1084 * By default, SDL does not use Direct3D Debug Layer.
1085 */
1086#define SDL_HINT_RENDER_DIRECT3D11_DEBUG "SDL_RENDER_DIRECT3D11_DEBUG"
1087
1088/**
1089 * \brief A variable controlling whether the Direct3D device is initialized for thread-safe operations.
1090 *
1091 * This variable can be set to the following values:
1092 * "0" - Thread-safety is not enabled (faster)
1093 * "1" - Thread-safety is enabled
1094 *
1095 * By default the Direct3D device is created with thread-safety disabled.
1096 */
1097#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE"
1098
1099/**
1100 * \brief A variable specifying which render driver to use.
1101 *
1102 * If the application doesn't pick a specific renderer to use, this variable
1103 * specifies the name of the preferred renderer. If the preferred renderer
1104 * can't be initialized, the normal default renderer is used.
1105 *
1106 * This variable is case insensitive and can be set to the following values:
1107 * "direct3d"
1108 * "opengl"
1109 * "opengles2"
1110 * "opengles"
1111 * "metal"
1112 * "software"
1113 *
1114 * The default varies by platform, but it's the first one in the list that
1115 * is available on the current platform.
1116 */
1117#define SDL_HINT_RENDER_DRIVER "SDL_RENDER_DRIVER"
1118
1119/**
1120 * \brief A variable controlling the scaling policy for SDL_RenderSetLogicalSize.
1121 *
1122 * This variable can be set to the following values:
1123 * "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen
1124 * "1" or "overscan" - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen
1125 *
1126 * By default letterbox is used
1127 */
1128#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE "SDL_RENDER_LOGICAL_SIZE_MODE"
1129
1130/**
1131 * \brief A variable controlling whether the OpenGL render driver uses shaders if they are available.
1132 *
1133 * This variable can be set to the following values:
1134 * "0" - Disable shaders
1135 * "1" - Enable shaders
1136 *
1137 * By default shaders are used if OpenGL supports them.
1138 */
1139#define SDL_HINT_RENDER_OPENGL_SHADERS "SDL_RENDER_OPENGL_SHADERS"
1140
1141/**
1142 * \brief A variable controlling the scaling quality
1143 *
1144 * This variable can be set to the following values:
1145 * "0" or "nearest" - Nearest pixel sampling
1146 * "1" or "linear" - Linear filtering (supported by OpenGL and Direct3D)
1147 * "2" or "best" - Currently this is the same as "linear"
1148 *
1149 * By default nearest pixel sampling is used
1150 */
1151#define SDL_HINT_RENDER_SCALE_QUALITY "SDL_RENDER_SCALE_QUALITY"
1152
1153/**
1154 * \brief A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing.
1155 *
1156 * This variable can be set to the following values:
1157 * "0" - Disable vsync
1158 * "1" - Enable vsync
1159 *
1160 * By default SDL does not sync screen surface updates with vertical refresh.
1161 */
1162#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC"
1163
1164 /**
1165 * \brief A variable to control whether the return key on the soft keyboard
1166 * should hide the soft keyboard on Android and iOS.
1167 *
1168 * The variable can be set to the following values:
1169 * "0" - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default)
1170 * "1" - The return key will hide the keyboard.
1171 *
1172 * The value of this hint is used at runtime, so it can be changed at any time.
1173 */
1174#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME"
1175
1176/**
1177 * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI
1178 *
1179 * Also known as Z-order. The variable can take a negative or positive value.
1180 * The default is 10000.
1181 */
1182#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER"
1183
1184/**
1185 * \brief Specify an "activity name" for screensaver inhibition.
1186 *
1187 * Some platforms, notably Linux desktops, list the applications which are
1188 * inhibiting the screensaver or other power-saving features.
1189 *
1190 * This hint lets you specify the "activity name" sent to the OS when
1191 * SDL_DisableScreenSaver() is used (or the screensaver is automatically
1192 * disabled). The contents of this hint are used when the screensaver is
1193 * disabled. You should use a string that describes what your program is doing
1194 * (and, therefore, why the screensaver is disabled). For example, "Playing a
1195 * game" or "Watching a video".
1196 *
1197 * Setting this to "" or leaving it unset will have SDL use a reasonable
1198 * default: "Playing a game" or something similar.
1199 *
1200 * On targets where this is not supported, this hint does nothing.
1201 */
1202#define SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME "SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME"
1203
1204/**
1205 * \brief Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as realtime.
1206 *
1207 * On some platforms, like Linux, a realtime priority thread may be subject to restrictions
1208 * that require special handling by the application. This hint exists to let SDL know that
1209 * the app is prepared to handle said restrictions.
1210 *
1211 * On Linux, SDL will apply the following configuration to any thread that becomes realtime:
1212 * * The SCHED_RESET_ON_FORK bit will be set on the scheduling policy,
1213 * * An RLIMIT_RTTIME budget will be configured to the rtkit specified limit.
1214 * * Exceeding this limit will result in the kernel sending SIGKILL to the app,
1215 * * Refer to the man pages for more information.
1216 *
1217 * This variable can be set to the following values:
1218 * "0" - default platform specific behaviour
1219 * "1" - Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling policy
1220 */
1221#define SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL"
1222
1223/**
1224* \brief A string specifying additional information to use with SDL_SetThreadPriority.
1225*
1226* By default SDL_SetThreadPriority will make appropriate system changes in order to
1227* apply a thread priority. For example on systems using pthreads the scheduler policy
1228* is changed automatically to a policy that works well with a given priority.
1229* Code which has specific requirements can override SDL's default behavior with this hint.
1230*
1231* pthread hint values are "current", "other", "fifo" and "rr".
1232* Currently no other platform hint values are defined but may be in the future.
1233*
1234* \note On Linux, the kernel may send SIGKILL to realtime tasks which exceed the distro
1235* configured execution budget for rtkit. This budget can be queried through RLIMIT_RTTIME
1236* after calling SDL_SetThreadPriority().
1237*/
1238#define SDL_HINT_THREAD_PRIORITY_POLICY "SDL_THREAD_PRIORITY_POLICY"
1239
1240/**
1241* \brief A string specifying SDL's threads stack size in bytes or "0" for the backend's default size
1242*
1243* Use this hint in case you need to set SDL's threads stack size to other than the default.
1244* This is specially useful if you build SDL against a non glibc libc library (such as musl) which
1245* provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses).
1246* Support for this hint is currently available only in the pthread, Windows, and PSP backend.
1247*
1248* Instead of this hint, in 2.0.9 and later, you can use
1249* SDL_CreateThreadWithStackSize(). This hint only works with the classic
1250* SDL_CreateThread().
1251*/
1252#define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE"
1253
1254/**
1255 * \brief A variable that controls the timer resolution, in milliseconds.
1256 *
1257 * The higher resolution the timer, the more frequently the CPU services
1258 * timer interrupts, and the more precise delays are, but this takes up
1259 * power and CPU time. This hint is only used on Windows.
1260 *
1261 * See this blog post for more information:
1262 * http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/
1263 *
1264 * If this variable is set to "0", the system timer resolution is not set.
1265 *
1266 * The default value is "1". This hint may be set at any time.
1267 */
1268#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION"
1269
1270/**
1271 * \brief A variable controlling whether touch events should generate synthetic mouse events
1272 *
1273 * This variable can be set to the following values:
1274 * "0" - Touch events will not generate mouse events
1275 * "1" - Touch events will generate mouse events
1276 *
1277 * By default SDL will generate mouse events for touch events
1278 */
1279#define SDL_HINT_TOUCH_MOUSE_EVENTS "SDL_TOUCH_MOUSE_EVENTS"
1280
1281/**
1282 * \brief A variable controlling whether the Android / tvOS remotes
1283 * should be listed as joystick devices, instead of sending keyboard events.
1284 *
1285 * This variable can be set to the following values:
1286 * "0" - Remotes send enter/escape/arrow key events
1287 * "1" - Remotes are available as 2 axis, 2 button joysticks (the default).
1288 */
1289#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK"
1290
1291/**
1292 * \brief A variable controlling whether the screensaver is enabled.
1293 *
1294 * This variable can be set to the following values:
1295 * "0" - Disable screensaver
1296 * "1" - Enable screensaver
1297 *
1298 * By default SDL will disable the screensaver.
1299 */
1300#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER"
1301
1302/**
1303 * \brief Tell the video driver that we only want a double buffer.
1304 *
1305 * By default, most lowlevel 2D APIs will use a triple buffer scheme that
1306 * wastes no CPU time on waiting for vsync after issuing a flip, but
1307 * introduces a frame of latency. On the other hand, using a double buffer
1308 * scheme instead is recommended for cases where low latency is an important
1309 * factor because we save a whole frame of latency.
1310 * We do so by waiting for vsync immediately after issuing a flip, usually just
1311 * after eglSwapBuffers call in the backend's *_SwapWindow function.
1312 *
1313 * Since it's driver-specific, it's only supported where possible and
1314 * implemented. Currently supported the following drivers:
1315 *
1316 * - KMSDRM (kmsdrm)
1317 * - Raspberry Pi (raspberrypi)
1318 */
1319#define SDL_HINT_VIDEO_DOUBLE_BUFFER "SDL_VIDEO_DOUBLE_BUFFER"
1320
1321/**
1322 * \brief A variable controlling whether the EGL window is allowed to be
1323 * composited as transparent, rather than opaque.
1324 *
1325 * Most window systems will always render windows opaque, even if the surface
1326 * format has an alpha channel. This is not always true, however, so by default
1327 * SDL will try to enforce opaque composition. To override this behavior, you
1328 * can set this hint to "1".
1329 */
1330#define SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY "SDL_VIDEO_EGL_ALLOW_TRANSPARENCY"
1331
1332/**
1333 * \brief A variable controlling whether the graphics context is externally managed.
1334 *
1335 * This variable can be set to the following values:
1336 * "0" - SDL will manage graphics contexts that are attached to windows.
1337 * "1" - Disable graphics context management on windows.
1338 *
1339 * By default SDL will manage OpenGL contexts in certain situations. For example, on Android the
1340 * context will be automatically saved and restored when pausing the application. Additionally, some
1341 * platforms will assume usage of OpenGL if Vulkan isn't used. Setting this to "1" will prevent this
1342 * behavior, which is desireable when the application manages the graphics context, such as
1343 * an externally managed OpenGL context or attaching a Vulkan surface to the window.
1344 */
1345#define SDL_HINT_VIDEO_EXTERNAL_CONTEXT "SDL_VIDEO_EXTERNAL_CONTEXT"
1346
1347/**
1348 * \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS)
1349 */
1350#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED"
1351
1352/**
1353 * \brief A variable that dictates policy for fullscreen Spaces on Mac OS X.
1354 *
1355 * This hint only applies to Mac OS X.
1356 *
1357 * The variable can be set to the following values:
1358 * "0" - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and
1359 * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen"
1360 * button on their titlebars).
1361 * "1" - Enable Spaces support (FULLSCREEN_DESKTOP will use them and
1362 * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen"
1363 * button on their titlebars).
1364 *
1365 * The default value is "1". Spaces are disabled regardless of this hint if
1366 * the OS isn't at least Mac OS X Lion (10.7). This hint must be set before
1367 * any windows are created.
1368 */
1369#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES "SDL_VIDEO_MAC_FULLSCREEN_SPACES"
1370
1371/**
1372 * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to false.
1373 * \warning Before SDL 2.0.14, this defaulted to true! In 2.0.14, we're
1374 * seeing if "true" causes more problems than it solves in modern times.
1375 *
1376 */
1377#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS"
1378
1379/**
1380 * \brief A variable controlling whether the libdecor Wayland backend is allowed to be used.
1381 *
1382 * This variable can be set to the following values:
1383 * "0" - libdecor use is disabled.
1384 * "1" - libdecor use is enabled (default).
1385 *
1386 * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable.
1387 */
1388#define SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR "SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR"
1389
1390/**
1391* \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p").
1392*
1393* If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has
1394* SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly
1395* created SDL_Window:
1396*
1397* 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is
1398* needed for example when sharing an OpenGL context across multiple windows.
1399*
1400* 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for
1401* OpenGL rendering.
1402*
1403* This variable can be set to the following values:
1404* The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should
1405* share a pixel format with.
1406*/
1407#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT"
1408
1409/**
1410* \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries
1411*
1412* SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It
1413* can use two different sets of binaries, those compiled by the user from source
1414* or those provided by the Chrome browser. In the later case, these binaries require
1415* that SDL loads a DLL providing the shader compiler.
1416*
1417* This variable can be set to the following values:
1418* "d3dcompiler_46.dll" - default, best for Vista or later.
1419* "d3dcompiler_43.dll" - for XP support.
1420* "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries.
1421*
1422*/
1423#define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER"
1424
1425/**
1426 * \brief A variable controlling whether X11 should use GLX or EGL by default
1427 *
1428 * This variable can be set to the following values:
1429 * "0" - Use GLX
1430 * "1" - Use EGL
1431 *
1432 * By default SDL will use GLX when both are present.
1433 */
1434#define SDL_HINT_VIDEO_X11_FORCE_EGL "SDL_VIDEO_X11_FORCE_EGL"
1435
1436/**
1437 * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used.
1438 *
1439 * This variable can be set to the following values:
1440 * "0" - Disable _NET_WM_BYPASS_COMPOSITOR
1441 * "1" - Enable _NET_WM_BYPASS_COMPOSITOR
1442 *
1443 * By default SDL will use _NET_WM_BYPASS_COMPOSITOR
1444 *
1445 */
1446#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR"
1447
1448/**
1449 * \brief A variable controlling whether the X11 _NET_WM_PING protocol should be supported.
1450 *
1451 * This variable can be set to the following values:
1452 * "0" - Disable _NET_WM_PING
1453 * "1" - Enable _NET_WM_PING
1454 *
1455 * By default SDL will use _NET_WM_PING, but for applications that know they
1456 * will not always be able to respond to ping requests in a timely manner they can
1457 * turn it off to avoid the window manager thinking the app is hung.
1458 * The hint is checked in CreateWindow.
1459 */
1460#define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING"
1461
1462/**
1463 * \brief A variable forcing the visual ID chosen for new X11 windows
1464 *
1465 */
1466#define SDL_HINT_VIDEO_X11_WINDOW_VISUALID "SDL_VIDEO_X11_WINDOW_VISUALID"
1467
1468/**
1469 * \brief A variable controlling whether the X11 Xinerama extension should be used.
1470 *
1471 * This variable can be set to the following values:
1472 * "0" - Disable Xinerama
1473 * "1" - Enable Xinerama
1474 *
1475 * By default SDL will use Xinerama if it is available.
1476 */
1477#define SDL_HINT_VIDEO_X11_XINERAMA "SDL_VIDEO_X11_XINERAMA"
1478
1479/**
1480 * \brief A variable controlling whether the X11 XRandR extension should be used.
1481 *
1482 * This variable can be set to the following values:
1483 * "0" - Disable XRandR
1484 * "1" - Enable XRandR
1485 *
1486 * By default SDL will not use XRandR because of window manager issues.
1487 */
1488#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR"
1489
1490/**
1491 * \brief A variable controlling whether the X11 VidMode extension should be used.
1492 *
1493 * This variable can be set to the following values:
1494 * "0" - Disable XVidMode
1495 * "1" - Enable XVidMode
1496 *
1497 * By default SDL will use XVidMode if it is available.
1498 */
1499#define SDL_HINT_VIDEO_X11_XVIDMODE "SDL_VIDEO_X11_XVIDMODE"
1500
1501/**
1502 * \brief Controls how the fact chunk affects the loading of a WAVE file.
1503 *
1504 * The fact chunk stores information about the number of samples of a WAVE
1505 * file. The Standards Update from Microsoft notes that this value can be used
1506 * to 'determine the length of the data in seconds'. This is especially useful
1507 * for compressed formats (for which this is a mandatory chunk) if they produce
1508 * multiple sample frames per block and truncating the block is not allowed.
1509 * The fact chunk can exactly specify how many sample frames there should be
1510 * in this case.
1511 *
1512 * Unfortunately, most application seem to ignore the fact chunk and so SDL
1513 * ignores it by default as well.
1514 *
1515 * This variable can be set to the following values:
1516 *
1517 * "truncate" - Use the number of samples to truncate the wave data if
1518 * the fact chunk is present and valid
1519 * "strict" - Like "truncate", but raise an error if the fact chunk
1520 * is invalid, not present for non-PCM formats, or if the
1521 * data chunk doesn't have that many samples
1522 * "ignorezero" - Like "truncate", but ignore fact chunk if the number of
1523 * samples is zero
1524 * "ignore" - Ignore fact chunk entirely (default)
1525 */
1526#define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK"
1527
1528/**
1529 * \brief Controls how the size of the RIFF chunk affects the loading of a WAVE file.
1530 *
1531 * The size of the RIFF chunk (which includes all the sub-chunks of the WAVE
1532 * file) is not always reliable. In case the size is wrong, it's possible to
1533 * just ignore it and step through the chunks until a fixed limit is reached.
1534 *
1535 * Note that files that have trailing data unrelated to the WAVE file or
1536 * corrupt files may slow down the loading process without a reliable boundary.
1537 * By default, SDL stops after 10000 chunks to prevent wasting time. Use the
1538 * environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value.
1539 *
1540 * This variable can be set to the following values:
1541 *
1542 * "force" - Always use the RIFF chunk size as a boundary for the chunk search
1543 * "ignorezero" - Like "force", but a zero size searches up to 4 GiB (default)
1544 * "ignore" - Ignore the RIFF chunk size and always search up to 4 GiB
1545 * "maximum" - Search for chunks until the end of file (not recommended)
1546 */
1547#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE "SDL_WAVE_RIFF_CHUNK_SIZE"
1548
1549/**
1550 * \brief Controls how a truncated WAVE file is handled.
1551 *
1552 * A WAVE file is considered truncated if any of the chunks are incomplete or
1553 * the data chunk size is not a multiple of the block size. By default, SDL
1554 * decodes until the first incomplete block, as most applications seem to do.
1555 *
1556 * This variable can be set to the following values:
1557 *
1558 * "verystrict" - Raise an error if the file is truncated
1559 * "strict" - Like "verystrict", but the size of the RIFF chunk is ignored
1560 * "dropframe" - Decode until the first incomplete sample frame
1561 * "dropblock" - Decode until the first incomplete block (default)
1562 */
1563#define SDL_HINT_WAVE_TRUNCATION "SDL_WAVE_TRUNCATION"
1564
1565/**
1566 * \brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception.
1567 * The 0x406D1388 Exception is a trick used to inform Visual Studio of a
1568 * thread's name, but it tends to cause problems with other debuggers,
1569 * and the .NET runtime. Note that SDL 2.0.6 and later will still use
1570 * the (safer) SetThreadDescription API, introduced in the Windows 10
1571 * Creators Update, if available.
1572 *
1573 * The variable can be set to the following values:
1574 * "0" - SDL will raise the 0x406D1388 Exception to name threads.
1575 * This is the default behavior of SDL <= 2.0.4.
1576 * "1" - SDL will not raise this exception, and threads will be unnamed. (default)
1577 * This is necessary with .NET languages or debuggers that aren't Visual Studio.
1578 */
1579#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING"
1580
1581/**
1582 * \brief A variable controlling whether the windows message loop is processed by SDL
1583 *
1584 * This variable can be set to the following values:
1585 * "0" - The window message loop is not run
1586 * "1" - The window message loop is processed in SDL_PumpEvents()
1587 *
1588 * By default SDL will process the windows message loop
1589 */
1590#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP"
1591
1592/**
1593 * \brief Force SDL to use Critical Sections for mutexes on Windows.
1594 * On Windows 7 and newer, Slim Reader/Writer Locks are available.
1595 * They offer better performance, allocate no kernel ressources and
1596 * use less memory. SDL will fall back to Critical Sections on older
1597 * OS versions or if forced to by this hint.
1598 *
1599 * This variable can be set to the following values:
1600 * "0" - Use SRW Locks when available. If not, fall back to Critical Sections. (default)
1601 * "1" - Force the use of Critical Sections in all cases.
1602 *
1603 */
1604#define SDL_HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS "SDL_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS"
1605
1606/**
1607 * \brief Force SDL to use Kernel Semaphores on Windows.
1608 * Kernel Semaphores are inter-process and require a context
1609 * switch on every interaction. On Windows 8 and newer, the
1610 * WaitOnAddress API is available. Using that and atomics to
1611 * implement semaphores increases performance.
1612 * SDL will fall back to Kernel Objects on older OS versions
1613 * or if forced to by this hint.
1614 *
1615 * This variable can be set to the following values:
1616 * "0" - Use Atomics and WaitOnAddress API when available. If not, fall back to Kernel Objects. (default)
1617 * "1" - Force the use of Kernel Objects in all cases.
1618 *
1619 */
1620#define SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL "SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL"
1621
1622/**
1623 * \brief A variable to specify custom icon resource id from RC file on Windows platform
1624 */
1625#define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON"
1626#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL"
1627
1628/**
1629 * \brief Tell SDL not to generate window-close events for Alt+F4 on Windows.
1630 *
1631 * The variable can be set to the following values:
1632 * "0" - SDL will generate a window-close event when it sees Alt+F4.
1633 * "1" - SDL will only do normal key handling for Alt+F4.
1634 */
1635#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4"
1636
1637/**
1638 * \brief Use the D3D9Ex API introduced in Windows Vista, instead of normal D3D9.
1639 * Direct3D 9Ex contains changes to state management that can eliminate device
1640 * loss errors during scenarios like Alt+Tab or UAC prompts. D3D9Ex may require
1641 * some changes to your application to cope with the new behavior, so this
1642 * is disabled by default.
1643 *
1644 * This hint must be set before initializing the video subsystem.
1645 *
1646 * For more information on Direct3D 9Ex, see:
1647 * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/graphics-apis-in-windows-vista#direct3d-9ex
1648 * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/direct3d-9ex-improvements
1649 *
1650 * This variable can be set to the following values:
1651 * "0" - Use the original Direct3D 9 API (default)
1652 * "1" - Use the Direct3D 9Ex API on Vista and later (and fall back if D3D9Ex is unavailable)
1653 *
1654 */
1655#define SDL_HINT_WINDOWS_USE_D3D9EX "SDL_WINDOWS_USE_D3D9EX"
1656
1657/**
1658 * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden
1659 *
1660 * This variable can be set to the following values:
1661 * "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc)
1662 * "1" - The window frame is interactive when the cursor is hidden
1663 *
1664 * By default SDL will allow interaction with the window frame when the cursor is hidden
1665 */
1666#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN"
1667
1668/**
1669* \brief A variable controlling whether the window is activated when the SDL_ShowWindow function is called
1670*
1671* This variable can be set to the following values:
1672* "0" - The window is activated when the SDL_ShowWindow function is called
1673* "1" - The window is not activated when the SDL_ShowWindow function is called
1674*
1675* By default SDL will activate the window when the SDL_ShowWindow function is called
1676*/
1677#define SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN "SDL_WINDOW_NO_ACTIVATION_WHEN_SHOWN"
1678
1679/** \brief Allows back-button-press events on Windows Phone to be marked as handled
1680 *
1681 * Windows Phone devices typically feature a Back button. When pressed,
1682 * the OS will emit back-button-press events, which apps are expected to
1683 * handle in an appropriate manner. If apps do not explicitly mark these
1684 * events as 'Handled', then the OS will invoke its default behavior for
1685 * unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to
1686 * terminate the app (and attempt to switch to the previous app, or to the
1687 * device's home screen).
1688 *
1689 * Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL
1690 * to mark back-button-press events as Handled, if and when one is sent to
1691 * the app.
1692 *
1693 * Internally, Windows Phone sends back button events as parameters to
1694 * special back-button-press callback functions. Apps that need to respond
1695 * to back-button-press events are expected to register one or more
1696 * callback functions for such, shortly after being launched (during the
1697 * app's initialization phase). After the back button is pressed, the OS
1698 * will invoke these callbacks. If the app's callback(s) do not explicitly
1699 * mark the event as handled by the time they return, or if the app never
1700 * registers one of these callback, the OS will consider the event
1701 * un-handled, and it will apply its default back button behavior (terminate
1702 * the app).
1703 *
1704 * SDL registers its own back-button-press callback with the Windows Phone
1705 * OS. This callback will emit a pair of SDL key-press events (SDL_KEYDOWN
1706 * and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which
1707 * it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON.
1708 * If the hint's value is set to "1", the back button event's Handled
1709 * property will get set to 'true'. If the hint's value is set to something
1710 * else, or if it is unset, SDL will leave the event's Handled property
1711 * alone. (By default, the OS sets this property to 'false', to note.)
1712 *
1713 * SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a
1714 * back button is pressed, or can set it in direct-response to a back button
1715 * being pressed.
1716 *
1717 * In order to get notified when a back button is pressed, SDL apps should
1718 * register a callback function with SDL_AddEventWatch(), and have it listen
1719 * for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK.
1720 * (Alternatively, SDL_KEYUP events can be listened-for. Listening for
1721 * either event type is suitable.) Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON
1722 * set by such a callback, will be applied to the OS' current
1723 * back-button-press event.
1724 *
1725 * More details on back button behavior in Windows Phone apps can be found
1726 * at the following page, on Microsoft's developer site:
1727 * http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx
1728 */
1729#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON"
1730
1731/** \brief Label text for a WinRT app's privacy policy link
1732 *
1733 * Network-enabled WinRT apps must include a privacy policy. On Windows 8, 8.1, and RT,
1734 * Microsoft mandates that this policy be available via the Windows Settings charm.
1735 * SDL provides code to add a link there, with its label text being set via the
1736 * optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
1737 *
1738 * Please note that a privacy policy's contents are not set via this hint. A separate
1739 * hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the
1740 * policy.
1741 *
1742 * The contents of this hint should be encoded as a UTF8 string.
1743 *
1744 * The default value is "Privacy Policy". This hint should only be set during app
1745 * initialization, preferably before any calls to SDL_Init().
1746 *
1747 * For additional information on linking to a privacy policy, see the documentation for
1748 * SDL_HINT_WINRT_PRIVACY_POLICY_URL.
1749 */
1750#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL"
1751
1752/**
1753 * \brief A URL to a WinRT app's privacy policy
1754 *
1755 * All network-enabled WinRT apps must make a privacy policy available to its
1756 * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be
1757 * be available in the Windows Settings charm, as accessed from within the app.
1758 * SDL provides code to add a URL-based link there, which can point to the app's
1759 * privacy policy.
1760 *
1761 * To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL
1762 * before calling any SDL_Init() functions. The contents of the hint should
1763 * be a valid URL. For example, "http://www.example.com".
1764 *
1765 * The default value is "", which will prevent SDL from adding a privacy policy
1766 * link to the Settings charm. This hint should only be set during app init.
1767 *
1768 * The label text of an app's "Privacy Policy" link may be customized via another
1769 * hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
1770 *
1771 * Please note that on Windows Phone, Microsoft does not provide standard UI
1772 * for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL
1773 * will not get used on that platform. Network-enabled phone apps should display
1774 * their privacy policy through some other, in-app means.
1775 */
1776#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL"
1777
1778/**
1779 * \brief Mark X11 windows as override-redirect.
1780 *
1781 * If set, this _might_ increase framerate at the expense of the desktop
1782 * not working as expected. Override-redirect windows aren't noticed by the
1783 * window manager at all.
1784 *
1785 * You should probably only use this for fullscreen windows, and you probably
1786 * shouldn't even use it for that. But it's here if you want to try!
1787 */
1788#define SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT "SDL_X11_FORCE_OVERRIDE_REDIRECT"
1789
1790/**
1791 * \brief A variable that lets you disable the detection and use of Xinput gamepad devices
1792 *
1793 * The variable can be set to the following values:
1794 * "0" - Disable XInput detection (only uses direct input)
1795 * "1" - Enable XInput detection (the default)
1796 */
1797#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED"
1798
1799/**
1800 * \brief A variable that causes SDL to use the old axis and button mapping for XInput devices.
1801 *
1802 * This hint is for backwards compatibility only and will be removed in SDL 2.1
1803 *
1804 * The default value is "0". This hint must be set before SDL_Init()
1805 */
1806#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING"
1807
1808/**
1809 * \brief A variable that causes SDL to not ignore audio "monitors"
1810 *
1811 * This is currently only used for PulseAudio and ignored elsewhere.
1812 *
1813 * By default, SDL ignores audio devices that aren't associated with physical
1814 * hardware. Changing this hint to "1" will expose anything SDL sees that
1815 * appears to be an audio source or sink. This will add "devices" to the list
1816 * that the user probably doesn't want or need, but it can be useful in
1817 * scenarios where you want to hook up SDL to some sort of virtual device,
1818 * etc.
1819 *
1820 * The default value is "0". This hint must be set before SDL_Init().
1821 *
1822 * This hint is available since SDL 2.0.16. Before then, virtual devices are
1823 * always ignored.
1824 */
1825#define SDL_HINT_AUDIO_INCLUDE_MONITORS "SDL_AUDIO_INCLUDE_MONITORS"
1826
1827
1828/**
1829 * \brief An enumeration of hint priorities
1830 */
1831typedef enum
1832{
1833 SDL_HINT_DEFAULT,
1834 SDL_HINT_NORMAL,
1835 SDL_HINT_OVERRIDE
1836} SDL_HintPriority;
1837
1838
1839/**
1840 * Set a hint with a specific priority.
1841 *
1842 * The priority controls the behavior when setting a hint that already has a
1843 * value. Hints will replace existing hints of their priority and lower.
1844 * Environment variables are considered to have override priority.
1845 *
1846 * \param name the hint to set
1847 * \param value the value of the hint variable
1848 * \param priority the SDL_HintPriority level for the hint
1849 * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise.
1850 *
1851 * \since This function is available since SDL 2.0.0.
1852 *
1853 * \sa SDL_GetHint
1854 * \sa SDL_SetHint
1855 */
1856extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name,
1857 const char *value,
1858 SDL_HintPriority priority);
1859
1860/**
1861 * Set a hint with normal priority.
1862 *
1863 * Hints will not be set if there is an existing override hint or environment
1864 * variable that takes precedence. You can use SDL_SetHintWithPriority() to
1865 * set the hint with override priority instead.
1866 *
1867 * \param name the hint to set
1868 * \param value the value of the hint variable
1869 * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise.
1870 *
1871 * \since This function is available since SDL 2.0.0.
1872 *
1873 * \sa SDL_GetHint
1874 * \sa SDL_SetHintWithPriority
1875 */
1876extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name,
1877 const char *value);
1878
1879/**
1880 * Get the value of a hint.
1881 *
1882 * \param name the hint to query
1883 * \returns the string value of a hint or NULL if the hint isn't set.
1884 *
1885 * \since This function is available since SDL 2.0.0.
1886 *
1887 * \sa SDL_SetHint
1888 * \sa SDL_SetHintWithPriority
1889 */
1890extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name);
1891
1892/**
1893 * Get the boolean value of a hint variable.
1894 *
1895 * \param name the name of the hint to get the boolean value from
1896 * \param default_value the value to return if the hint does not exist
1897 * \returns the boolean value of a hint or the provided default value if the
1898 * hint does not exist.
1899 *
1900 * \since This function is available since SDL 2.0.5.
1901 *
1902 * \sa SDL_GetHint
1903 * \sa SDL_SetHint
1904 */
1905extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value);
1906
1907/**
1908 * Type definition of the hint callback function.
1909 *
1910 * \param userdata what was passed as `userdata` to SDL_AddHintCallback()
1911 * \param name what was passed as `name` to SDL_AddHintCallback()
1912 * \param oldValue the previous hint value
1913 * \param newValue the new value hint is to be set to
1914 */
1915typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue);
1916
1917/**
1918 * Add a function to watch a particular hint.
1919 *
1920 * \param name the hint to watch
1921 * \param callback An SDL_HintCallback function that will be called when the
1922 * hint value changes
1923 * \param userdata a pointer to pass to the callback function
1924 *
1925 * \since This function is available since SDL 2.0.0.
1926 *
1927 * \sa SDL_DelHintCallback
1928 */
1929extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name,
1930 SDL_HintCallback callback,
1931 void *userdata);
1932
1933/**
1934 * Remove a function watching a particular hint.
1935 *
1936 * \param name the hint being watched
1937 * \param callback An SDL_HintCallback function that will be called when the
1938 * hint value changes
1939 * \param userdata a pointer being passed to the callback function
1940 *
1941 * \since This function is available since SDL 2.0.0.
1942 *
1943 * \sa SDL_AddHintCallback
1944 */
1945extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name,
1946 SDL_HintCallback callback,
1947 void *userdata);
1948
1949/**
1950 * Clear all hints.
1951 *
1952 * This function is automatically called during SDL_Quit().
1953 *
1954 * \since This function is available since SDL 2.0.0.
1955 */
1956extern DECLSPEC void SDLCALL SDL_ClearHints(void);
1957
1958
1959/* Ends C function definitions when using C++ */
1960#ifdef __cplusplus
1961}
1962#endif
1963#include "close_code.h"
1964
1965#endif /* SDL_hints_h_ */
1966
1967/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_joystick.h b/vendor/SDL2/include/SDL_joystick.h new file mode 100644 index 0000000..e80c005 --- /dev/null +++ b/vendor/SDL2/include/SDL_joystick.h
@@ -0,0 +1,946 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_joystick.h
24 *
25 * Include file for SDL joystick event handling
26 *
27 * The term "device_index" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks(), with the exact joystick
28 * behind a device_index changing as joysticks are plugged and unplugged.
29 *
30 * The term "instance_id" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted
31 * then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in.
32 *
33 * The term "player_index" is the number assigned to a player on a specific
34 * controller. For XInput controllers this returns the XInput user index.
35 * Many joysticks will not be able to supply this information.
36 *
37 * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of
38 * the device (a X360 wired controller for example). This identifier is platform dependent.
39 */
40
41#ifndef SDL_joystick_h_
42#define SDL_joystick_h_
43
44#include "SDL_stdinc.h"
45#include "SDL_error.h"
46
47#include "begin_code.h"
48/* Set up for C function definitions, even when using C++ */
49#ifdef __cplusplus
50extern "C" {
51#endif
52
53/**
54 * \file SDL_joystick.h
55 *
56 * In order to use these functions, SDL_Init() must have been called
57 * with the ::SDL_INIT_JOYSTICK flag. This causes SDL to scan the system
58 * for joysticks, and load appropriate drivers.
59 *
60 * If you would like to receive joystick updates while the application
61 * is in the background, you should set the following hint before calling
62 * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
63 */
64
65/**
66 * The joystick structure used to identify an SDL joystick
67 */
68struct _SDL_Joystick;
69typedef struct _SDL_Joystick SDL_Joystick;
70
71/* A structure that encodes the stable unique id for a joystick device */
72typedef struct {
73 Uint8 data[16];
74} SDL_JoystickGUID;
75
76/**
77 * This is a unique ID for a joystick for the time it is connected to the system,
78 * and is never reused for the lifetime of the application. If the joystick is
79 * disconnected and reconnected, it will get a new ID.
80 *
81 * The ID value starts at 0 and increments from there. The value -1 is an invalid ID.
82 */
83typedef Sint32 SDL_JoystickID;
84
85typedef enum
86{
87 SDL_JOYSTICK_TYPE_UNKNOWN,
88 SDL_JOYSTICK_TYPE_GAMECONTROLLER,
89 SDL_JOYSTICK_TYPE_WHEEL,
90 SDL_JOYSTICK_TYPE_ARCADE_STICK,
91 SDL_JOYSTICK_TYPE_FLIGHT_STICK,
92 SDL_JOYSTICK_TYPE_DANCE_PAD,
93 SDL_JOYSTICK_TYPE_GUITAR,
94 SDL_JOYSTICK_TYPE_DRUM_KIT,
95 SDL_JOYSTICK_TYPE_ARCADE_PAD,
96 SDL_JOYSTICK_TYPE_THROTTLE
97} SDL_JoystickType;
98
99typedef enum
100{
101 SDL_JOYSTICK_POWER_UNKNOWN = -1,
102 SDL_JOYSTICK_POWER_EMPTY, /* <= 5% */
103 SDL_JOYSTICK_POWER_LOW, /* <= 20% */
104 SDL_JOYSTICK_POWER_MEDIUM, /* <= 70% */
105 SDL_JOYSTICK_POWER_FULL, /* <= 100% */
106 SDL_JOYSTICK_POWER_WIRED,
107 SDL_JOYSTICK_POWER_MAX
108} SDL_JoystickPowerLevel;
109
110/* Set max recognized G-force from accelerometer
111 See src/joystick/uikit/SDL_sysjoystick.m for notes on why this is needed
112 */
113#define SDL_IPHONE_MAX_GFORCE 5.0
114
115
116/* Function prototypes */
117
118/**
119 * Locking for multi-threaded access to the joystick API
120 *
121 * If you are using the joystick API or handling events from multiple threads
122 * you should use these locking functions to protect access to the joysticks.
123 *
124 * In particular, you are guaranteed that the joystick list won't change, so
125 * the API functions that take a joystick index will be valid, and joystick
126 * and game controller events will not be delivered.
127 *
128 * \since This function is available since SDL 2.0.7.
129 */
130extern DECLSPEC void SDLCALL SDL_LockJoysticks(void);
131
132
133/**
134 * Unlocking for multi-threaded access to the joystick API
135 *
136 * If you are using the joystick API or handling events from multiple threads
137 * you should use these locking functions to protect access to the joysticks.
138 *
139 * In particular, you are guaranteed that the joystick list won't change, so
140 * the API functions that take a joystick index will be valid, and joystick
141 * and game controller events will not be delivered.
142 *
143 * \since This function is available since SDL 2.0.7.
144 */
145extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void);
146
147/**
148 * Count the number of joysticks attached to the system.
149 *
150 * \returns the number of attached joysticks on success or a negative error
151 * code on failure; call SDL_GetError() for more information.
152 *
153 * \since This function is available since SDL 2.0.0.
154 *
155 * \sa SDL_JoystickName
156 * \sa SDL_JoystickOpen
157 */
158extern DECLSPEC int SDLCALL SDL_NumJoysticks(void);
159
160/**
161 * Get the implementation dependent name of a joystick.
162 *
163 * This can be called before any joysticks are opened.
164 *
165 * \param device_index the index of the joystick to query (the N'th joystick
166 * on the system)
167 * \returns the name of the selected joystick. If no name can be found, this
168 * function returns NULL; call SDL_GetError() for more information.
169 *
170 * \since This function is available since SDL 2.0.0.
171 *
172 * \sa SDL_JoystickName
173 * \sa SDL_JoystickOpen
174 */
175extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index);
176
177/**
178 * Get the player index of a joystick, or -1 if it's not available This can be
179 * called before any joysticks are opened.
180 *
181 * \since This function is available since SDL 2.0.9.
182 */
183extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index);
184
185/**
186 * Get the implementation-dependent GUID for the joystick at a given device
187 * index.
188 *
189 * This function can be called before any joysticks are opened.
190 *
191 * \param device_index the index of the joystick to query (the N'th joystick
192 * on the system
193 * \returns the GUID of the selected joystick. If called on an invalid index,
194 * this function returns a zero GUID
195 *
196 * \since This function is available since SDL 2.0.0.
197 *
198 * \sa SDL_JoystickGetGUID
199 * \sa SDL_JoystickGetGUIDString
200 */
201extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index);
202
203/**
204 * Get the USB vendor ID of a joystick, if available.
205 *
206 * This can be called before any joysticks are opened. If the vendor ID isn't
207 * available this function returns 0.
208 *
209 * \param device_index the index of the joystick to query (the N'th joystick
210 * on the system
211 * \returns the USB vendor ID of the selected joystick. If called on an
212 * invalid index, this function returns zero
213 *
214 * \since This function is available since SDL 2.0.6.
215 */
216extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index);
217
218/**
219 * Get the USB product ID of a joystick, if available.
220 *
221 * This can be called before any joysticks are opened. If the product ID isn't
222 * available this function returns 0.
223 *
224 * \param device_index the index of the joystick to query (the N'th joystick
225 * on the system
226 * \returns the USB product ID of the selected joystick. If called on an
227 * invalid index, this function returns zero
228 *
229 * \since This function is available since SDL 2.0.6.
230 */
231extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index);
232
233/**
234 * Get the product version of a joystick, if available.
235 *
236 * This can be called before any joysticks are opened. If the product version
237 * isn't available this function returns 0.
238 *
239 * \param device_index the index of the joystick to query (the N'th joystick
240 * on the system
241 * \returns the product version of the selected joystick. If called on an
242 * invalid index, this function returns zero
243 *
244 * \since This function is available since SDL 2.0.6.
245 */
246extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index);
247
248/**
249 * Get the type of a joystick, if available.
250 *
251 * This can be called before any joysticks are opened.
252 *
253 * \param device_index the index of the joystick to query (the N'th joystick
254 * on the system
255 * \returns the SDL_JoystickType of the selected joystick. If called on an
256 * invalid index, this function returns `SDL_JOYSTICK_TYPE_UNKNOWN`
257 *
258 * \since This function is available since SDL 2.0.6.
259 */
260extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index);
261
262/**
263 * Get the instance ID of a joystick.
264 *
265 * This can be called before any joysticks are opened. If the index is out of
266 * range, this function will return -1.
267 *
268 * \param device_index the index of the joystick to query (the N'th joystick
269 * on the system
270 * \returns the instance id of the selected joystick. If called on an invalid
271 * index, this function returns zero
272 *
273 * \since This function is available since SDL 2.0.6.
274 */
275extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int device_index);
276
277/**
278 * Open a joystick for use.
279 *
280 * The `device_index` argument refers to the N'th joystick presently
281 * recognized by SDL on the system. It is **NOT** the same as the instance ID
282 * used to identify the joystick in future events. See
283 * SDL_JoystickInstanceID() for more details about instance IDs.
284 *
285 * The joystick subsystem must be initialized before a joystick can be opened
286 * for use.
287 *
288 * \param device_index the index of the joystick to query
289 * \returns a joystick identifier or NULL if an error occurred; call
290 * SDL_GetError() for more information.
291 *
292 * \since This function is available since SDL 2.0.0.
293 *
294 * \sa SDL_JoystickClose
295 * \sa SDL_JoystickInstanceID
296 */
297extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index);
298
299/**
300 * Get the SDL_Joystick associated with an instance id.
301 *
302 * \param instance_id the instance id to get the SDL_Joystick for
303 * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError()
304 * for more information.
305 *
306 * \since This function is available since SDL 2.0.4.
307 */
308extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID instance_id);
309
310/**
311 * Get the SDL_Joystick associated with a player index.
312 *
313 * \param player_index the player index to get the SDL_Joystick for
314 * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError()
315 * for more information.
316 *
317 * \since This function is available since SDL 2.0.12.
318 */
319extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromPlayerIndex(int player_index);
320
321/**
322 * Attach a new virtual joystick.
323 *
324 * \returns the joystick's device index, or -1 if an error occurred.
325 *
326 * \since This function is available since SDL 2.0.14.
327 */
328extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtual(SDL_JoystickType type,
329 int naxes,
330 int nbuttons,
331 int nhats);
332
333/**
334 * Detach a virtual joystick.
335 *
336 * \param device_index a value previously returned from
337 * SDL_JoystickAttachVirtual()
338 * \returns 0 on success, or -1 if an error occurred.
339 *
340 * \since This function is available since SDL 2.0.14.
341 */
342extern DECLSPEC int SDLCALL SDL_JoystickDetachVirtual(int device_index);
343
344/**
345 * Query whether or not the joystick at a given device index is virtual.
346 *
347 * \param device_index a joystick device index.
348 * \returns SDL_TRUE if the joystick is virtual, SDL_FALSE otherwise.
349 *
350 * \since This function is available since SDL 2.0.14.
351 */
352extern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index);
353
354/**
355 * Set values on an opened, virtual-joystick's axis.
356 *
357 * Please note that values set here will not be applied until the next call to
358 * SDL_JoystickUpdate, which can either be called directly, or can be called
359 * indirectly through various other SDL APIs, including, but not limited to
360 * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,
361 * SDL_WaitEvent.
362 *
363 * \param joystick the virtual joystick on which to set state.
364 * \param axis the specific axis on the virtual joystick to set.
365 * \param value the new value for the specified axis.
366 * \returns 0 on success, -1 on error.
367 *
368 * \since This function is available since SDL 2.0.14.
369 */
370extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualAxis(SDL_Joystick *joystick, int axis, Sint16 value);
371
372/**
373 * Set values on an opened, virtual-joystick's button.
374 *
375 * Please note that values set here will not be applied until the next call to
376 * SDL_JoystickUpdate, which can either be called directly, or can be called
377 * indirectly through various other SDL APIs, including, but not limited to
378 * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,
379 * SDL_WaitEvent.
380 *
381 * \param joystick the virtual joystick on which to set state.
382 * \param button the specific button on the virtual joystick to set.
383 * \param value the new value for the specified button.
384 * \returns 0 on success, -1 on error.
385 *
386 * \since This function is available since SDL 2.0.14.
387 */
388extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualButton(SDL_Joystick *joystick, int button, Uint8 value);
389
390/**
391 * Set values on an opened, virtual-joystick's hat.
392 *
393 * Please note that values set here will not be applied until the next call to
394 * SDL_JoystickUpdate, which can either be called directly, or can be called
395 * indirectly through various other SDL APIs, including, but not limited to
396 * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,
397 * SDL_WaitEvent.
398 *
399 * \param joystick the virtual joystick on which to set state.
400 * \param hat the specific hat on the virtual joystick to set.
401 * \param value the new value for the specified hat.
402 * \returns 0 on success, -1 on error.
403 *
404 * \since This function is available since SDL 2.0.14.
405 */
406extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualHat(SDL_Joystick *joystick, int hat, Uint8 value);
407
408/**
409 * Get the implementation dependent name of a joystick.
410 *
411 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
412 * \returns the name of the selected joystick. If no name can be found, this
413 * function returns NULL; call SDL_GetError() for more information.
414 *
415 * \since This function is available since SDL 2.0.0.
416 *
417 * \sa SDL_JoystickNameForIndex
418 * \sa SDL_JoystickOpen
419 */
420extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick *joystick);
421
422/**
423 * Get the player index of an opened joystick.
424 *
425 * For XInput controllers this returns the XInput user index. Many joysticks
426 * will not be able to supply this information.
427 *
428 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
429 * \returns the player index, or -1 if it's not available.
430 *
431 * \since This function is available since SDL 2.0.9.
432 */
433extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick *joystick);
434
435/**
436 * Set the player index of an opened joystick.
437 *
438 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
439 * \param player_index the player index to set.
440 *
441 * \since This function is available since SDL 2.0.12.
442 */
443extern DECLSPEC void SDLCALL SDL_JoystickSetPlayerIndex(SDL_Joystick *joystick, int player_index);
444
445/**
446 * Get the implementation-dependent GUID for the joystick.
447 *
448 * This function requires an open joystick.
449 *
450 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
451 * \returns the GUID of the given joystick. If called on an invalid index,
452 * this function returns a zero GUID; call SDL_GetError() for more
453 * information.
454 *
455 * \since This function is available since SDL 2.0.0.
456 *
457 * \sa SDL_JoystickGetDeviceGUID
458 * \sa SDL_JoystickGetGUIDString
459 */
460extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick *joystick);
461
462/**
463 * Get the USB vendor ID of an opened joystick, if available.
464 *
465 * If the vendor ID isn't available this function returns 0.
466 *
467 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
468 * \returns the USB vendor ID of the selected joystick, or 0 if unavailable.
469 *
470 * \since This function is available since SDL 2.0.6.
471 */
472extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick *joystick);
473
474/**
475 * Get the USB product ID of an opened joystick, if available.
476 *
477 * If the product ID isn't available this function returns 0.
478 *
479 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
480 * \returns the USB product ID of the selected joystick, or 0 if unavailable.
481 *
482 * \since This function is available since SDL 2.0.6.
483 */
484extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick *joystick);
485
486/**
487 * Get the product version of an opened joystick, if available.
488 *
489 * If the product version isn't available this function returns 0.
490 *
491 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
492 * \returns the product version of the selected joystick, or 0 if unavailable.
493 *
494 * \since This function is available since SDL 2.0.6.
495 */
496extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick *joystick);
497
498/**
499 * Get the serial number of an opened joystick, if available.
500 *
501 * Returns the serial number of the joystick, or NULL if it is not available.
502 *
503 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
504 * \returns the serial number of the selected joystick, or NULL if
505 * unavailable.
506 *
507 * \since This function is available since SDL 2.0.14.
508 */
509extern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystick);
510
511/**
512 * Get the type of an opened joystick.
513 *
514 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
515 * \returns the SDL_JoystickType of the selected joystick.
516 *
517 * \since This function is available since SDL 2.0.6.
518 */
519extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick *joystick);
520
521/**
522 * Get an ASCII string representation for a given SDL_JoystickGUID.
523 *
524 * You should supply at least 33 bytes for pszGUID.
525 *
526 * \param guid the SDL_JoystickGUID you wish to convert to string
527 * \param pszGUID buffer in which to write the ASCII string
528 * \param cbGUID the size of pszGUID
529 *
530 * \since This function is available since SDL 2.0.0.
531 *
532 * \sa SDL_JoystickGetDeviceGUID
533 * \sa SDL_JoystickGetGUID
534 * \sa SDL_JoystickGetGUIDFromString
535 */
536extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID);
537
538/**
539 * Convert a GUID string into a SDL_JoystickGUID structure.
540 *
541 * Performs no error checking. If this function is given a string containing
542 * an invalid GUID, the function will silently succeed, but the GUID generated
543 * will not be useful.
544 *
545 * \param pchGUID string containing an ASCII representation of a GUID
546 * \returns a SDL_JoystickGUID structure.
547 *
548 * \since This function is available since SDL 2.0.0.
549 *
550 * \sa SDL_JoystickGetGUIDString
551 */
552extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID);
553
554/**
555 * Get the status of a specified joystick.
556 *
557 * \param joystick the joystick to query
558 * \returns SDL_TRUE if the joystick has been opened, SDL_FALSE if it has not;
559 * call SDL_GetError() for more information.
560 *
561 * \since This function is available since SDL 2.0.0.
562 *
563 * \sa SDL_JoystickClose
564 * \sa SDL_JoystickOpen
565 */
566extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick *joystick);
567
568/**
569 * Get the instance ID of an opened joystick.
570 *
571 * \param joystick an SDL_Joystick structure containing joystick information
572 * \returns the instance ID of the specified joystick on success or a negative
573 * error code on failure; call SDL_GetError() for more information.
574 *
575 * \since This function is available since SDL 2.0.0.
576 *
577 * \sa SDL_JoystickOpen
578 */
579extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick *joystick);
580
581/**
582 * Get the number of general axis controls on a joystick.
583 *
584 * Often, the directional pad on a game controller will either look like 4
585 * separate buttons or a POV hat, and not axes, but all of this is up to the
586 * device and platform.
587 *
588 * \param joystick an SDL_Joystick structure containing joystick information
589 * \returns the number of axis controls/number of axes on success or a
590 * negative error code on failure; call SDL_GetError() for more
591 * information.
592 *
593 * \since This function is available since SDL 2.0.0.
594 *
595 * \sa SDL_JoystickGetAxis
596 * \sa SDL_JoystickOpen
597 */
598extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick);
599
600/**
601 * Get the number of trackballs on a joystick.
602 *
603 * Joystick trackballs have only relative motion events associated with them
604 * and their state cannot be polled.
605 *
606 * Most joysticks do not have trackballs.
607 *
608 * \param joystick an SDL_Joystick structure containing joystick information
609 * \returns the number of trackballs on success or a negative error code on
610 * failure; call SDL_GetError() for more information.
611 *
612 * \since This function is available since SDL 2.0.0.
613 *
614 * \sa SDL_JoystickGetBall
615 */
616extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick);
617
618/**
619 * Get the number of POV hats on a joystick.
620 *
621 * \param joystick an SDL_Joystick structure containing joystick information
622 * \returns the number of POV hats on success or a negative error code on
623 * failure; call SDL_GetError() for more information.
624 *
625 * \since This function is available since SDL 2.0.0.
626 *
627 * \sa SDL_JoystickGetHat
628 * \sa SDL_JoystickOpen
629 */
630extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick);
631
632/**
633 * Get the number of buttons on a joystick.
634 *
635 * \param joystick an SDL_Joystick structure containing joystick information
636 * \returns the number of buttons on success or a negative error code on
637 * failure; call SDL_GetError() for more information.
638 *
639 * \since This function is available since SDL 2.0.0.
640 *
641 * \sa SDL_JoystickGetButton
642 * \sa SDL_JoystickOpen
643 */
644extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick);
645
646/**
647 * Update the current state of the open joysticks.
648 *
649 * This is called automatically by the event loop if any joystick events are
650 * enabled.
651 *
652 * \since This function is available since SDL 2.0.0.
653 *
654 * \sa SDL_JoystickEventState
655 */
656extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void);
657
658/**
659 * Enable/disable joystick event polling.
660 *
661 * If joystick events are disabled, you must call SDL_JoystickUpdate()
662 * yourself and manually check the state of the joystick when you want
663 * joystick information.
664 *
665 * It is recommended that you leave joystick event handling enabled.
666 *
667 * **WARNING**: Calling this function may delete all events currently in SDL's
668 * event queue.
669 *
670 * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`
671 * \returns 1 if enabled, 0 if disabled, or a negative error code on failure;
672 * call SDL_GetError() for more information.
673 *
674 * If `state` is `SDL_QUERY` then the current state is returned,
675 * otherwise the new processing state is returned.
676 *
677 * \since This function is available since SDL 2.0.0.
678 *
679 * \sa SDL_GameControllerEventState
680 */
681extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state);
682
683#define SDL_JOYSTICK_AXIS_MAX 32767
684#define SDL_JOYSTICK_AXIS_MIN -32768
685
686/**
687 * Get the current state of an axis control on a joystick.
688 *
689 * SDL makes no promises about what part of the joystick any given axis refers
690 * to. Your game should have some sort of configuration UI to let users
691 * specify what each axis should be bound to. Alternately, SDL's higher-level
692 * Game Controller API makes a great effort to apply order to this lower-level
693 * interface, so you know that a specific axis is the "left thumb stick," etc.
694 *
695 * The value returned by SDL_JoystickGetAxis() is a signed integer (-32768 to
696 * 32767) representing the current position of the axis. It may be necessary
697 * to impose certain tolerances on these values to account for jitter.
698 *
699 * \param joystick an SDL_Joystick structure containing joystick information
700 * \param axis the axis to query; the axis indices start at index 0
701 * \returns a 16-bit signed integer representing the current position of the
702 * axis or 0 on failure; call SDL_GetError() for more information.
703 *
704 * \since This function is available since SDL 2.0.0.
705 *
706 * \sa SDL_JoystickNumAxes
707 */
708extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick,
709 int axis);
710
711/**
712 * Get the initial state of an axis control on a joystick.
713 *
714 * The state is a value ranging from -32768 to 32767.
715 *
716 * The axis indices start at index 0.
717 *
718 * \param joystick an SDL_Joystick structure containing joystick information
719 * \param axis the axis to query; the axis indices start at index 0
720 * \param state Upon return, the initial value is supplied here.
721 * \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not.
722 *
723 * \since This function is available since SDL 2.0.6.
724 */
725extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick *joystick,
726 int axis, Sint16 *state);
727
728/**
729 * \name Hat positions
730 */
731/* @{ */
732#define SDL_HAT_CENTERED 0x00
733#define SDL_HAT_UP 0x01
734#define SDL_HAT_RIGHT 0x02
735#define SDL_HAT_DOWN 0x04
736#define SDL_HAT_LEFT 0x08
737#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP)
738#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN)
739#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP)
740#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN)
741/* @} */
742
743/**
744 * Get the current state of a POV hat on a joystick.
745 *
746 * The returned value will be one of the following positions:
747 *
748 * - `SDL_HAT_CENTERED`
749 * - `SDL_HAT_UP`
750 * - `SDL_HAT_RIGHT`
751 * - `SDL_HAT_DOWN`
752 * - `SDL_HAT_LEFT`
753 * - `SDL_HAT_RIGHTUP`
754 * - `SDL_HAT_RIGHTDOWN`
755 * - `SDL_HAT_LEFTUP`
756 * - `SDL_HAT_LEFTDOWN`
757 *
758 * \param joystick an SDL_Joystick structure containing joystick information
759 * \param hat the hat index to get the state from; indices start at index 0
760 * \returns the current hat position.
761 *
762 * \since This function is available since SDL 2.0.0.
763 *
764 * \sa SDL_JoystickNumHats
765 */
766extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick,
767 int hat);
768
769/**
770 * Get the ball axis change since the last poll.
771 *
772 * Trackballs can only return relative motion since the last call to
773 * SDL_JoystickGetBall(), these motion deltas are placed into `dx` and `dy`.
774 *
775 * Most joysticks do not have trackballs.
776 *
777 * \param joystick the SDL_Joystick to query
778 * \param ball the ball index to query; ball indices start at index 0
779 * \param dx stores the difference in the x axis position since the last poll
780 * \param dy stores the difference in the y axis position since the last poll
781 * \returns 0 on success or a negative error code on failure; call
782 * SDL_GetError() for more information.
783 *
784 * \since This function is available since SDL 2.0.0.
785 *
786 * \sa SDL_JoystickNumBalls
787 */
788extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick,
789 int ball, int *dx, int *dy);
790
791/**
792 * Get the current state of a button on a joystick.
793 *
794 * \param joystick an SDL_Joystick structure containing joystick information
795 * \param button the button index to get the state from; indices start at
796 * index 0
797 * \returns 1 if the specified button is pressed, 0 otherwise.
798 *
799 * \since This function is available since SDL 2.0.0.
800 *
801 * \sa SDL_JoystickNumButtons
802 */
803extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick,
804 int button);
805
806/**
807 * Start a rumble effect.
808 *
809 * Each call to this function cancels any previous rumble effect, and calling
810 * it with 0 intensity stops any rumbling.
811 *
812 * \param joystick The joystick to vibrate
813 * \param low_frequency_rumble The intensity of the low frequency (left)
814 * rumble motor, from 0 to 0xFFFF
815 * \param high_frequency_rumble The intensity of the high frequency (right)
816 * rumble motor, from 0 to 0xFFFF
817 * \param duration_ms The duration of the rumble effect, in milliseconds
818 * \returns 0, or -1 if rumble isn't supported on this joystick
819 *
820 * \since This function is available since SDL 2.0.9.
821 *
822 * \sa SDL_JoystickHasRumble
823 */
824extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms);
825
826/**
827 * Start a rumble effect in the joystick's triggers
828 *
829 * Each call to this function cancels any previous trigger rumble effect, and
830 * calling it with 0 intensity stops any rumbling.
831 *
832 * Note that this function is for _trigger_ rumble; the first joystick to
833 * support this was the PlayStation 5's DualShock 5 controller. If you want
834 * the (more common) whole-controller rumble, use SDL_JoystickRumble()
835 * instead.
836 *
837 * \param joystick The joystick to vibrate
838 * \param left_rumble The intensity of the left trigger rumble motor, from 0
839 * to 0xFFFF
840 * \param right_rumble The intensity of the right trigger rumble motor, from 0
841 * to 0xFFFF
842 * \param duration_ms The duration of the rumble effect, in milliseconds
843 * \returns 0, or -1 if trigger rumble isn't supported on this joystick
844 *
845 * \since This function is available since SDL 2.0.14.
846 *
847 * \sa SDL_JoystickHasRumbleTriggers
848 */
849extern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms);
850
851/**
852 * Query whether a joystick has an LED.
853 *
854 * An example of a joystick LED is the light on the back of a PlayStation 4's
855 * DualShock 4 controller.
856 *
857 * \param joystick The joystick to query
858 * \return SDL_TRUE if the joystick has a modifiable LED, SDL_FALSE otherwise.
859 *
860 * \since This function is available since SDL 2.0.14.
861 */
862extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasLED(SDL_Joystick *joystick);
863
864/**
865 * Query whether a joystick has rumble support.
866 *
867 * \param joystick The joystick to query
868 * \return SDL_TRUE if the joystick has rumble, SDL_FALSE otherwise.
869 *
870 * \since This function is available since SDL 2.0.18.
871 *
872 * \sa SDL_JoystickRumble
873 */
874extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumble(SDL_Joystick *joystick);
875
876/**
877 * Query whether a joystick has rumble support on triggers.
878 *
879 * \param joystick The joystick to query
880 * \return SDL_TRUE if the joystick has trigger rumble, SDL_FALSE otherwise.
881 *
882 * \since This function is available since SDL 2.0.18.
883 *
884 * \sa SDL_JoystickRumbleTriggers
885 */
886extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumbleTriggers(SDL_Joystick *joystick);
887
888/**
889 * Update a joystick's LED color.
890 *
891 * An example of a joystick LED is the light on the back of a PlayStation 4's
892 * DualShock 4 controller.
893 *
894 * \param joystick The joystick to update
895 * \param red The intensity of the red LED
896 * \param green The intensity of the green LED
897 * \param blue The intensity of the blue LED
898 * \returns 0 on success, -1 if this joystick does not have a modifiable LED
899 *
900 * \since This function is available since SDL 2.0.14.
901 */
902extern DECLSPEC int SDLCALL SDL_JoystickSetLED(SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue);
903
904/**
905 * Send a joystick specific effect packet
906 *
907 * \param joystick The joystick to affect
908 * \param data The data to send to the joystick
909 * \param size The size of the data to send to the joystick
910 * \returns 0, or -1 if this joystick or driver doesn't support effect packets
911 *
912 * \since This function is available since SDL 2.0.16.
913 */
914extern DECLSPEC int SDLCALL SDL_JoystickSendEffect(SDL_Joystick *joystick, const void *data, int size);
915
916/**
917 * Close a joystick previously opened with SDL_JoystickOpen().
918 *
919 * \param joystick The joystick device to close
920 *
921 * \since This function is available since SDL 2.0.0.
922 *
923 * \sa SDL_JoystickOpen
924 */
925extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick);
926
927/**
928 * Get the battery level of a joystick as SDL_JoystickPowerLevel.
929 *
930 * \param joystick the SDL_Joystick to query
931 * \returns the current battery level as SDL_JoystickPowerLevel on success or
932 * `SDL_JOYSTICK_POWER_UNKNOWN` if it is unknown
933 *
934 * \since This function is available since SDL 2.0.4.
935 */
936extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick *joystick);
937
938/* Ends C function definitions when using C++ */
939#ifdef __cplusplus
940}
941#endif
942#include "close_code.h"
943
944#endif /* SDL_joystick_h_ */
945
946/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_keyboard.h b/vendor/SDL2/include/SDL_keyboard.h new file mode 100644 index 0000000..a53dde6 --- /dev/null +++ b/vendor/SDL2/include/SDL_keyboard.h
@@ -0,0 +1,316 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_keyboard.h
24 *
25 * Include file for SDL keyboard event handling
26 */
27
28#ifndef SDL_keyboard_h_
29#define SDL_keyboard_h_
30
31#include "SDL_stdinc.h"
32#include "SDL_error.h"
33#include "SDL_keycode.h"
34#include "SDL_video.h"
35
36#include "begin_code.h"
37/* Set up for C function definitions, even when using C++ */
38#ifdef __cplusplus
39extern "C" {
40#endif
41
42/**
43 * \brief The SDL keysym structure, used in key events.
44 *
45 * \note If you are looking for translated character input, see the ::SDL_TEXTINPUT event.
46 */
47typedef struct SDL_Keysym
48{
49 SDL_Scancode scancode; /**< SDL physical key code - see ::SDL_Scancode for details */
50 SDL_Keycode sym; /**< SDL virtual key code - see ::SDL_Keycode for details */
51 Uint16 mod; /**< current key modifiers */
52 Uint32 unused;
53} SDL_Keysym;
54
55/* Function prototypes */
56
57/**
58 * Query the window which currently has keyboard focus.
59 *
60 * \returns the window with keyboard focus.
61 *
62 * \since This function is available since SDL 2.0.0.
63 */
64extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void);
65
66/**
67 * Get a snapshot of the current state of the keyboard.
68 *
69 * The pointer returned is a pointer to an internal SDL array. It will be
70 * valid for the whole lifetime of the application and should not be freed by
71 * the caller.
72 *
73 * A array element with a value of 1 means that the key is pressed and a value
74 * of 0 means that it is not. Indexes into this array are obtained by using
75 * SDL_Scancode values.
76 *
77 * Use SDL_PumpEvents() to update the state array.
78 *
79 * This function gives you the current state after all events have been
80 * processed, so if a key or button has been pressed and released before you
81 * process events, then the pressed state will never show up in the
82 * SDL_GetKeyboardState() calls.
83 *
84 * Note: This function doesn't take into account whether shift has been
85 * pressed or not.
86 *
87 * \param numkeys if non-NULL, receives the length of the returned array
88 * \returns a pointer to an array of key states.
89 *
90 * \since This function is available since SDL 2.0.0.
91 *
92 * \sa SDL_PumpEvents
93 */
94extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys);
95
96/**
97 * Get the current key modifier state for the keyboard.
98 *
99 * \returns an OR'd combination of the modifier keys for the keyboard. See
100 * SDL_Keymod for details.
101 *
102 * \since This function is available since SDL 2.0.0.
103 *
104 * \sa SDL_GetKeyboardState
105 * \sa SDL_SetModState
106 */
107extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void);
108
109/**
110 * Set the current key modifier state for the keyboard.
111 *
112 * The inverse of SDL_GetModState(), SDL_SetModState() allows you to impose
113 * modifier key states on your application. Simply pass your desired modifier
114 * states into `modstate`. This value may be a bitwise, OR'd combination of
115 * SDL_Keymod values.
116 *
117 * This does not change the keyboard state, only the key modifier flags that
118 * SDL reports.
119 *
120 * \param modstate the desired SDL_Keymod for the keyboard
121 *
122 * \since This function is available since SDL 2.0.0.
123 *
124 * \sa SDL_GetModState
125 */
126extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate);
127
128/**
129 * Get the key code corresponding to the given scancode according to the
130 * current keyboard layout.
131 *
132 * See SDL_Keycode for details.
133 *
134 * \param scancode the desired SDL_Scancode to query
135 * \returns the SDL_Keycode that corresponds to the given SDL_Scancode.
136 *
137 * \since This function is available since SDL 2.0.0.
138 *
139 * \sa SDL_GetKeyName
140 * \sa SDL_GetScancodeFromKey
141 */
142extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode);
143
144/**
145 * Get the scancode corresponding to the given key code according to the
146 * current keyboard layout.
147 *
148 * See SDL_Scancode for details.
149 *
150 * \param key the desired SDL_Keycode to query
151 * \returns the SDL_Scancode that corresponds to the given SDL_Keycode.
152 *
153 * \since This function is available since SDL 2.0.0.
154 *
155 * \sa SDL_GetKeyFromScancode
156 * \sa SDL_GetScancodeName
157 */
158extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key);
159
160/**
161 * Get a human-readable name for a scancode.
162 *
163 * See SDL_Scancode for details.
164 *
165 * **Warning**: The returned name is by design not stable across platforms,
166 * e.g. the name for `SDL_SCANCODE_LGUI` is "Left GUI" under Linux but "Left
167 * Windows" under Microsoft Windows, and some scancodes like
168 * `SDL_SCANCODE_NONUSBACKSLASH` don't have any name at all. There are even
169 * scancodes that share names, e.g. `SDL_SCANCODE_RETURN` and
170 * `SDL_SCANCODE_RETURN2` (both called "Return"). This function is therefore
171 * unsuitable for creating a stable cross-platform two-way mapping between
172 * strings and scancodes.
173 *
174 * \param scancode the desired SDL_Scancode to query
175 * \returns a pointer to the name for the scancode. If the scancode doesn't
176 * have a name this function returns an empty string ("").
177 *
178 * \since This function is available since SDL 2.0.0.
179 *
180 * \sa SDL_GetScancodeFromKey
181 * \sa SDL_GetScancodeFromName
182 */
183extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode);
184
185/**
186 * Get a scancode from a human-readable name.
187 *
188 * \param name the human-readable scancode name
189 * \returns the SDL_Scancode, or `SDL_SCANCODE_UNKNOWN` if the name wasn't
190 * recognized; call SDL_GetError() for more information.
191 *
192 * \since This function is available since SDL 2.0.0.
193 *
194 * \sa SDL_GetKeyFromName
195 * \sa SDL_GetScancodeFromKey
196 * \sa SDL_GetScancodeName
197 */
198extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name);
199
200/**
201 * Get a human-readable name for a key.
202 *
203 * See SDL_Scancode and SDL_Keycode for details.
204 *
205 * \param key the desired SDL_Keycode to query
206 * \returns a pointer to a UTF-8 string that stays valid at least until the
207 * next call to this function. If you need it around any longer, you
208 * must copy it. If the key doesn't have a name, this function
209 * returns an empty string ("").
210 *
211 * \since This function is available since SDL 2.0.0.
212 *
213 * \sa SDL_GetKeyFromName
214 * \sa SDL_GetKeyFromScancode
215 * \sa SDL_GetScancodeFromKey
216 */
217extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key);
218
219/**
220 * Get a key code from a human-readable name.
221 *
222 * \param name the human-readable key name
223 * \returns key code, or `SDLK_UNKNOWN` if the name wasn't recognized; call
224 * SDL_GetError() for more information.
225 *
226 * \since This function is available since SDL 2.0.0.
227 *
228 * \sa SDL_GetKeyFromScancode
229 * \sa SDL_GetKeyName
230 * \sa SDL_GetScancodeFromName
231 */
232extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name);
233
234/**
235 * Start accepting Unicode text input events.
236 *
237 * This function will start accepting Unicode text input events in the focused
238 * SDL window, and start emitting SDL_TextInputEvent (SDL_TEXTINPUT) and
239 * SDL_TextEditingEvent (SDL_TEXTEDITING) events. Please use this function in
240 * pair with SDL_StopTextInput().
241 *
242 * On some platforms using this function activates the screen keyboard.
243 *
244 * \since This function is available since SDL 2.0.0.
245 *
246 * \sa SDL_SetTextInputRect
247 * \sa SDL_StopTextInput
248 */
249extern DECLSPEC void SDLCALL SDL_StartTextInput(void);
250
251/**
252 * Check whether or not Unicode text input events are enabled.
253 *
254 * \returns SDL_TRUE if text input events are enabled else SDL_FALSE.
255 *
256 * \since This function is available since SDL 2.0.0.
257 *
258 * \sa SDL_StartTextInput
259 */
260extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void);
261
262/**
263 * Stop receiving any text input events.
264 *
265 * \since This function is available since SDL 2.0.0.
266 *
267 * \sa SDL_StartTextInput
268 */
269extern DECLSPEC void SDLCALL SDL_StopTextInput(void);
270
271/**
272 * Set the rectangle used to type Unicode text inputs.
273 *
274 * \param rect the SDL_Rect structure representing the rectangle to receive
275 * text (ignored if NULL)
276 *
277 * \since This function is available since SDL 2.0.0.
278 *
279 * \sa SDL_StartTextInput
280 */
281extern DECLSPEC void SDLCALL SDL_SetTextInputRect(SDL_Rect *rect);
282
283/**
284 * Check whether the platform has screen keyboard support.
285 *
286 * \returns SDL_TRUE if the platform has some screen keyboard support or
287 * SDL_FALSE if not.
288 *
289 * \since This function is available since SDL 2.0.0.
290 *
291 * \sa SDL_StartTextInput
292 * \sa SDL_IsScreenKeyboardShown
293 */
294extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void);
295
296/**
297 * Check whether the screen keyboard is shown for given window.
298 *
299 * \param window the window for which screen keyboard should be queried
300 * \returns SDL_TRUE if screen keyboard is shown or SDL_FALSE if not.
301 *
302 * \since This function is available since SDL 2.0.0.
303 *
304 * \sa SDL_HasScreenKeyboardSupport
305 */
306extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window);
307
308/* Ends C function definitions when using C++ */
309#ifdef __cplusplus
310}
311#endif
312#include "close_code.h"
313
314#endif /* SDL_keyboard_h_ */
315
316/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_keycode.h b/vendor/SDL2/include/SDL_keycode.h new file mode 100644 index 0000000..3560254 --- /dev/null +++ b/vendor/SDL2/include/SDL_keycode.h
@@ -0,0 +1,353 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_keycode.h
24 *
25 * Defines constants which identify keyboard keys and modifiers.
26 */
27
28#ifndef SDL_keycode_h_
29#define SDL_keycode_h_
30
31#include "SDL_stdinc.h"
32#include "SDL_scancode.h"
33
34/**
35 * \brief The SDL virtual key representation.
36 *
37 * Values of this type are used to represent keyboard keys using the current
38 * layout of the keyboard. These values include Unicode values representing
39 * the unmodified character that would be generated by pressing the key, or
40 * an SDLK_* constant for those keys that do not generate characters.
41 *
42 * A special exception is the number keys at the top of the keyboard which
43 * always map to SDLK_0...SDLK_9, regardless of layout.
44 */
45typedef Sint32 SDL_Keycode;
46
47#define SDLK_SCANCODE_MASK (1<<30)
48#define SDL_SCANCODE_TO_KEYCODE(X) (X | SDLK_SCANCODE_MASK)
49
50typedef enum
51{
52 SDLK_UNKNOWN = 0,
53
54 SDLK_RETURN = '\r',
55 SDLK_ESCAPE = '\x1B',
56 SDLK_BACKSPACE = '\b',
57 SDLK_TAB = '\t',
58 SDLK_SPACE = ' ',
59 SDLK_EXCLAIM = '!',
60 SDLK_QUOTEDBL = '"',
61 SDLK_HASH = '#',
62 SDLK_PERCENT = '%',
63 SDLK_DOLLAR = '$',
64 SDLK_AMPERSAND = '&',
65 SDLK_QUOTE = '\'',
66 SDLK_LEFTPAREN = '(',
67 SDLK_RIGHTPAREN = ')',
68 SDLK_ASTERISK = '*',
69 SDLK_PLUS = '+',
70 SDLK_COMMA = ',',
71 SDLK_MINUS = '-',
72 SDLK_PERIOD = '.',
73 SDLK_SLASH = '/',
74 SDLK_0 = '0',
75 SDLK_1 = '1',
76 SDLK_2 = '2',
77 SDLK_3 = '3',
78 SDLK_4 = '4',
79 SDLK_5 = '5',
80 SDLK_6 = '6',
81 SDLK_7 = '7',
82 SDLK_8 = '8',
83 SDLK_9 = '9',
84 SDLK_COLON = ':',
85 SDLK_SEMICOLON = ';',
86 SDLK_LESS = '<',
87 SDLK_EQUALS = '=',
88 SDLK_GREATER = '>',
89 SDLK_QUESTION = '?',
90 SDLK_AT = '@',
91
92 /*
93 Skip uppercase letters
94 */
95
96 SDLK_LEFTBRACKET = '[',
97 SDLK_BACKSLASH = '\\',
98 SDLK_RIGHTBRACKET = ']',
99 SDLK_CARET = '^',
100 SDLK_UNDERSCORE = '_',
101 SDLK_BACKQUOTE = '`',
102 SDLK_a = 'a',
103 SDLK_b = 'b',
104 SDLK_c = 'c',
105 SDLK_d = 'd',
106 SDLK_e = 'e',
107 SDLK_f = 'f',
108 SDLK_g = 'g',
109 SDLK_h = 'h',
110 SDLK_i = 'i',
111 SDLK_j = 'j',
112 SDLK_k = 'k',
113 SDLK_l = 'l',
114 SDLK_m = 'm',
115 SDLK_n = 'n',
116 SDLK_o = 'o',
117 SDLK_p = 'p',
118 SDLK_q = 'q',
119 SDLK_r = 'r',
120 SDLK_s = 's',
121 SDLK_t = 't',
122 SDLK_u = 'u',
123 SDLK_v = 'v',
124 SDLK_w = 'w',
125 SDLK_x = 'x',
126 SDLK_y = 'y',
127 SDLK_z = 'z',
128
129 SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK),
130
131 SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1),
132 SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2),
133 SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3),
134 SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4),
135 SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5),
136 SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6),
137 SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7),
138 SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8),
139 SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9),
140 SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10),
141 SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11),
142 SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12),
143
144 SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN),
145 SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK),
146 SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE),
147 SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT),
148 SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME),
149 SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP),
150 SDLK_DELETE = '\x7F',
151 SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END),
152 SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN),
153 SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT),
154 SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT),
155 SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN),
156 SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP),
157
158 SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR),
159 SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE),
160 SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY),
161 SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS),
162 SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS),
163 SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER),
164 SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1),
165 SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2),
166 SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3),
167 SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4),
168 SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5),
169 SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6),
170 SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7),
171 SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8),
172 SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9),
173 SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0),
174 SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD),
175
176 SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION),
177 SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER),
178 SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS),
179 SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13),
180 SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14),
181 SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15),
182 SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16),
183 SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17),
184 SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18),
185 SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19),
186 SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20),
187 SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21),
188 SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22),
189 SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23),
190 SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24),
191 SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE),
192 SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP),
193 SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU),
194 SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT),
195 SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP),
196 SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN),
197 SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO),
198 SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT),
199 SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY),
200 SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE),
201 SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND),
202 SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE),
203 SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP),
204 SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN),
205 SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA),
206 SDLK_KP_EQUALSAS400 =
207 SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400),
208
209 SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE),
210 SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ),
211 SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL),
212 SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR),
213 SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR),
214 SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2),
215 SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR),
216 SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT),
217 SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER),
218 SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN),
219 SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL),
220 SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL),
221
222 SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00),
223 SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000),
224 SDLK_THOUSANDSSEPARATOR =
225 SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR),
226 SDLK_DECIMALSEPARATOR =
227 SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR),
228 SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT),
229 SDLK_CURRENCYSUBUNIT =
230 SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT),
231 SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN),
232 SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN),
233 SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE),
234 SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE),
235 SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB),
236 SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE),
237 SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A),
238 SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B),
239 SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C),
240 SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D),
241 SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E),
242 SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F),
243 SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR),
244 SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER),
245 SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT),
246 SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS),
247 SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER),
248 SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND),
249 SDLK_KP_DBLAMPERSAND =
250 SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND),
251 SDLK_KP_VERTICALBAR =
252 SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR),
253 SDLK_KP_DBLVERTICALBAR =
254 SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR),
255 SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON),
256 SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH),
257 SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE),
258 SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT),
259 SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM),
260 SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE),
261 SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL),
262 SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR),
263 SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD),
264 SDLK_KP_MEMSUBTRACT =
265 SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT),
266 SDLK_KP_MEMMULTIPLY =
267 SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY),
268 SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE),
269 SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS),
270 SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR),
271 SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY),
272 SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY),
273 SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL),
274 SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL),
275 SDLK_KP_HEXADECIMAL =
276 SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL),
277
278 SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL),
279 SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT),
280 SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT),
281 SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI),
282 SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL),
283 SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT),
284 SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT),
285 SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI),
286
287 SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE),
288
289 SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT),
290 SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV),
291 SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP),
292 SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY),
293 SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE),
294 SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT),
295 SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW),
296 SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL),
297 SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR),
298 SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER),
299 SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH),
300 SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME),
301 SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK),
302 SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD),
303 SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP),
304 SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH),
305 SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS),
306
307 SDLK_BRIGHTNESSDOWN =
308 SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN),
309 SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP),
310 SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH),
311 SDLK_KBDILLUMTOGGLE =
312 SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE),
313 SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN),
314 SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP),
315 SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT),
316 SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP),
317 SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP1),
318 SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2),
319
320 SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND),
321 SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD)
322} SDL_KeyCode;
323
324/**
325 * \brief Enumeration of valid key mods (possibly OR'd together).
326 */
327typedef enum
328{
329 KMOD_NONE = 0x0000,
330 KMOD_LSHIFT = 0x0001,
331 KMOD_RSHIFT = 0x0002,
332 KMOD_LCTRL = 0x0040,
333 KMOD_RCTRL = 0x0080,
334 KMOD_LALT = 0x0100,
335 KMOD_RALT = 0x0200,
336 KMOD_LGUI = 0x0400,
337 KMOD_RGUI = 0x0800,
338 KMOD_NUM = 0x1000,
339 KMOD_CAPS = 0x2000,
340 KMOD_MODE = 0x4000,
341 KMOD_SCROLL = 0x8000,
342
343 KMOD_CTRL = KMOD_LCTRL | KMOD_RCTRL,
344 KMOD_SHIFT = KMOD_LSHIFT | KMOD_RSHIFT,
345 KMOD_ALT = KMOD_LALT | KMOD_RALT,
346 KMOD_GUI = KMOD_LGUI | KMOD_RGUI,
347
348 KMOD_RESERVED = KMOD_SCROLL /* This is for source-level compatibility with SDL 2.0.0. */
349} SDL_Keymod;
350
351#endif /* SDL_keycode_h_ */
352
353/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_loadso.h b/vendor/SDL2/include/SDL_loadso.h new file mode 100644 index 0000000..61857c8 --- /dev/null +++ b/vendor/SDL2/include/SDL_loadso.h
@@ -0,0 +1,115 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_loadso.h
24 *
25 * System dependent library loading routines
26 *
27 * Some things to keep in mind:
28 * \li These functions only work on C function names. Other languages may
29 * have name mangling and intrinsic language support that varies from
30 * compiler to compiler.
31 * \li Make sure you declare your function pointers with the same calling
32 * convention as the actual library function. Your code will crash
33 * mysteriously if you do not do this.
34 * \li Avoid namespace collisions. If you load a symbol from the library,
35 * it is not defined whether or not it goes into the global symbol
36 * namespace for the application. If it does and it conflicts with
37 * symbols in your code or other shared libraries, you will not get
38 * the results you expect. :)
39 */
40
41#ifndef SDL_loadso_h_
42#define SDL_loadso_h_
43
44#include "SDL_stdinc.h"
45#include "SDL_error.h"
46
47#include "begin_code.h"
48/* Set up for C function definitions, even when using C++ */
49#ifdef __cplusplus
50extern "C" {
51#endif
52
53/**
54 * Dynamically load a shared object.
55 *
56 * \param sofile a system-dependent name of the object file
57 * \returns an opaque pointer to the object handle or NULL if there was an
58 * error; call SDL_GetError() for more information.
59 *
60 * \since This function is available since SDL 2.0.0.
61 *
62 * \sa SDL_LoadFunction
63 * \sa SDL_UnloadObject
64 */
65extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile);
66
67/**
68 * Look up the address of the named function in a shared object.
69 *
70 * This function pointer is no longer valid after calling SDL_UnloadObject().
71 *
72 * This function can only look up C function names. Other languages may have
73 * name mangling and intrinsic language support that varies from compiler to
74 * compiler.
75 *
76 * Make sure you declare your function pointers with the same calling
77 * convention as the actual library function. Your code will crash
78 * mysteriously if you do not do this.
79 *
80 * If the requested function doesn't exist, NULL is returned.
81 *
82 * \param handle a valid shared object handle returned by SDL_LoadObject()
83 * \param name the name of the function to look up
84 * \returns a pointer to the function or NULL if there was an error; call
85 * SDL_GetError() for more information.
86 *
87 * \since This function is available since SDL 2.0.0.
88 *
89 * \sa SDL_LoadObject
90 * \sa SDL_UnloadObject
91 */
92extern DECLSPEC void *SDLCALL SDL_LoadFunction(void *handle,
93 const char *name);
94
95/**
96 * Unload a shared object from memory.
97 *
98 * \param handle a valid shared object handle returned by SDL_LoadObject()
99 *
100 * \since This function is available since SDL 2.0.0.
101 *
102 * \sa SDL_LoadFunction
103 * \sa SDL_LoadObject
104 */
105extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle);
106
107/* Ends C function definitions when using C++ */
108#ifdef __cplusplus
109}
110#endif
111#include "close_code.h"
112
113#endif /* SDL_loadso_h_ */
114
115/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_locale.h b/vendor/SDL2/include/SDL_locale.h new file mode 100644 index 0000000..7515779 --- /dev/null +++ b/vendor/SDL2/include/SDL_locale.h
@@ -0,0 +1,103 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_locale.h
24 *
25 * Include file for SDL locale services
26 */
27
28#ifndef _SDL_locale_h
29#define _SDL_locale_h
30
31#include "SDL_stdinc.h"
32#include "SDL_error.h"
33
34#include "begin_code.h"
35/* Set up for C function definitions, even when using C++ */
36#ifdef __cplusplus
37/* *INDENT-OFF* */
38extern "C" {
39/* *INDENT-ON* */
40#endif
41
42
43typedef struct SDL_Locale
44{
45 const char *language; /**< A language name, like "en" for English. */
46 const char *country; /**< A country, like "US" for America. Can be NULL. */
47} SDL_Locale;
48
49/**
50 * Report the user's preferred locale.
51 *
52 * This returns an array of SDL_Locale structs, the final item zeroed out.
53 * When the caller is done with this array, it should call SDL_free() on the
54 * returned value; all the memory involved is allocated in a single block, so
55 * a single SDL_free() will suffice.
56 *
57 * Returned language strings are in the format xx, where 'xx' is an ISO-639
58 * language specifier (such as "en" for English, "de" for German, etc).
59 * Country strings are in the format YY, where "YY" is an ISO-3166 country
60 * code (such as "US" for the United States, "CA" for Canada, etc). Country
61 * might be NULL if there's no specific guidance on them (so you might get {
62 * "en", "US" } for American English, but { "en", NULL } means "English
63 * language, generically"). Language strings are never NULL, except to
64 * terminate the array.
65 *
66 * Please note that not all of these strings are 2 characters; some are three
67 * or more.
68 *
69 * The returned list of locales are in the order of the user's preference. For
70 * example, a German citizen that is fluent in US English and knows enough
71 * Japanese to navigate around Tokyo might have a list like: { "de", "en_US",
72 * "jp", NULL }. Someone from England might prefer British English (where
73 * "color" is spelled "colour", etc), but will settle for anything like it: {
74 * "en_GB", "en", NULL }.
75 *
76 * This function returns NULL on error, including when the platform does not
77 * supply this information at all.
78 *
79 * This might be a "slow" call that has to query the operating system. It's
80 * best to ask for this once and save the results. However, this list can
81 * change, usually because the user has changed a system preference outside of
82 * your program; SDL will send an SDL_LOCALECHANGED event in this case, if
83 * possible, and you can call this function again to get an updated copy of
84 * preferred locales.
85 *
86 * \return array of locales, terminated with a locale with a NULL language
87 * field. Will return NULL on error.
88 *
89 * \since This function is available since SDL 2.0.14.
90 */
91extern DECLSPEC SDL_Locale * SDLCALL SDL_GetPreferredLocales(void);
92
93/* Ends C function definitions when using C++ */
94#ifdef __cplusplus
95/* *INDENT-OFF* */
96}
97/* *INDENT-ON* */
98#endif
99#include "close_code.h"
100
101#endif /* _SDL_locale_h */
102
103/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_log.h b/vendor/SDL2/include/SDL_log.h new file mode 100644 index 0000000..dbbcb1e --- /dev/null +++ b/vendor/SDL2/include/SDL_log.h
@@ -0,0 +1,404 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_log.h
24 *
25 * Simple log messages with categories and priorities.
26 *
27 * By default logs are quiet, but if you're debugging SDL you might want:
28 *
29 * SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN);
30 *
31 * Here's where the messages go on different platforms:
32 * Windows: debug output stream
33 * Android: log output
34 * Others: standard error output (stderr)
35 */
36
37#ifndef SDL_log_h_
38#define SDL_log_h_
39
40#include "SDL_stdinc.h"
41
42#include "begin_code.h"
43/* Set up for C function definitions, even when using C++ */
44#ifdef __cplusplus
45extern "C" {
46#endif
47
48
49/**
50 * \brief The maximum size of a log message
51 *
52 * Messages longer than the maximum size will be truncated
53 */
54#define SDL_MAX_LOG_MESSAGE 4096
55
56/**
57 * \brief The predefined log categories
58 *
59 * By default the application category is enabled at the INFO level,
60 * the assert category is enabled at the WARN level, test is enabled
61 * at the VERBOSE level and all other categories are enabled at the
62 * CRITICAL level.
63 */
64typedef enum
65{
66 SDL_LOG_CATEGORY_APPLICATION,
67 SDL_LOG_CATEGORY_ERROR,
68 SDL_LOG_CATEGORY_ASSERT,
69 SDL_LOG_CATEGORY_SYSTEM,
70 SDL_LOG_CATEGORY_AUDIO,
71 SDL_LOG_CATEGORY_VIDEO,
72 SDL_LOG_CATEGORY_RENDER,
73 SDL_LOG_CATEGORY_INPUT,
74 SDL_LOG_CATEGORY_TEST,
75
76 /* Reserved for future SDL library use */
77 SDL_LOG_CATEGORY_RESERVED1,
78 SDL_LOG_CATEGORY_RESERVED2,
79 SDL_LOG_CATEGORY_RESERVED3,
80 SDL_LOG_CATEGORY_RESERVED4,
81 SDL_LOG_CATEGORY_RESERVED5,
82 SDL_LOG_CATEGORY_RESERVED6,
83 SDL_LOG_CATEGORY_RESERVED7,
84 SDL_LOG_CATEGORY_RESERVED8,
85 SDL_LOG_CATEGORY_RESERVED9,
86 SDL_LOG_CATEGORY_RESERVED10,
87
88 /* Beyond this point is reserved for application use, e.g.
89 enum {
90 MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM,
91 MYAPP_CATEGORY_AWESOME2,
92 MYAPP_CATEGORY_AWESOME3,
93 ...
94 };
95 */
96 SDL_LOG_CATEGORY_CUSTOM
97} SDL_LogCategory;
98
99/**
100 * \brief The predefined log priorities
101 */
102typedef enum
103{
104 SDL_LOG_PRIORITY_VERBOSE = 1,
105 SDL_LOG_PRIORITY_DEBUG,
106 SDL_LOG_PRIORITY_INFO,
107 SDL_LOG_PRIORITY_WARN,
108 SDL_LOG_PRIORITY_ERROR,
109 SDL_LOG_PRIORITY_CRITICAL,
110 SDL_NUM_LOG_PRIORITIES
111} SDL_LogPriority;
112
113
114/**
115 * Set the priority of all log categories.
116 *
117 * \param priority the SDL_LogPriority to assign
118 *
119 * \since This function is available since SDL 2.0.0.
120 *
121 * \sa SDL_LogSetPriority
122 */
123extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority);
124
125/**
126 * Set the priority of a particular log category.
127 *
128 * \param category the category to assign a priority to
129 * \param priority the SDL_LogPriority to assign
130 *
131 * \since This function is available since SDL 2.0.0.
132 *
133 * \sa SDL_LogGetPriority
134 * \sa SDL_LogSetAllPriority
135 */
136extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category,
137 SDL_LogPriority priority);
138
139/**
140 * Get the priority of a particular log category.
141 *
142 * \param category the category to query
143 * \returns the SDL_LogPriority for the requested category
144 *
145 * \since This function is available since SDL 2.0.0.
146 *
147 * \sa SDL_LogSetPriority
148 */
149extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category);
150
151/**
152 * Reset all priorities to default.
153 *
154 * This is called by SDL_Quit().
155 *
156 * \since This function is available since SDL 2.0.0.
157 *
158 * \sa SDL_LogSetAllPriority
159 * \sa SDL_LogSetPriority
160 */
161extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void);
162
163/**
164 * Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO.
165 *
166 * = * \param fmt a printf() style message format string
167 *
168 * \param ... additional parameters matching % tokens in the `fmt` string, if
169 * any
170 *
171 * \since This function is available since SDL 2.0.0.
172 *
173 * \sa SDL_LogCritical
174 * \sa SDL_LogDebug
175 * \sa SDL_LogError
176 * \sa SDL_LogInfo
177 * \sa SDL_LogMessage
178 * \sa SDL_LogMessageV
179 * \sa SDL_LogVerbose
180 * \sa SDL_LogWarn
181 */
182extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
183
184/**
185 * Log a message with SDL_LOG_PRIORITY_VERBOSE.
186 *
187 * \param category the category of the message
188 * \param fmt a printf() style message format string
189 * \param ... additional parameters matching % tokens in the **fmt** string,
190 * if any
191 *
192 * \since This function is available since SDL 2.0.0.
193 *
194 * \sa SDL_Log
195 * \sa SDL_LogCritical
196 * \sa SDL_LogDebug
197 * \sa SDL_LogError
198 * \sa SDL_LogInfo
199 * \sa SDL_LogMessage
200 * \sa SDL_LogMessageV
201 * \sa SDL_LogWarn
202 */
203extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
204
205/**
206 * Log a message with SDL_LOG_PRIORITY_DEBUG.
207 *
208 * \param category the category of the message
209 * \param fmt a printf() style message format string
210 * \param ... additional parameters matching % tokens in the **fmt** string,
211 * if any
212 *
213 * \since This function is available since SDL 2.0.0.
214 *
215 * \sa SDL_Log
216 * \sa SDL_LogCritical
217 * \sa SDL_LogError
218 * \sa SDL_LogInfo
219 * \sa SDL_LogMessage
220 * \sa SDL_LogMessageV
221 * \sa SDL_LogVerbose
222 * \sa SDL_LogWarn
223 */
224extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
225
226/**
227 * Log a message with SDL_LOG_PRIORITY_INFO.
228 *
229 * \param category the category of the message
230 * \param fmt a printf() style message format string
231 * \param ... additional parameters matching % tokens in the **fmt** string,
232 * if any
233 *
234 * \since This function is available since SDL 2.0.0.
235 *
236 * \sa SDL_Log
237 * \sa SDL_LogCritical
238 * \sa SDL_LogDebug
239 * \sa SDL_LogError
240 * \sa SDL_LogMessage
241 * \sa SDL_LogMessageV
242 * \sa SDL_LogVerbose
243 * \sa SDL_LogWarn
244 */
245extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
246
247/**
248 * Log a message with SDL_LOG_PRIORITY_WARN.
249 *
250 * \param category the category of the message
251 * \param fmt a printf() style message format string
252 * \param ... additional parameters matching % tokens in the **fmt** string,
253 * if any
254 *
255 * \since This function is available since SDL 2.0.0.
256 *
257 * \sa SDL_Log
258 * \sa SDL_LogCritical
259 * \sa SDL_LogDebug
260 * \sa SDL_LogError
261 * \sa SDL_LogInfo
262 * \sa SDL_LogMessage
263 * \sa SDL_LogMessageV
264 * \sa SDL_LogVerbose
265 */
266extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
267
268/**
269 * Log a message with SDL_LOG_PRIORITY_ERROR.
270 *
271 * \param category the category of the message
272 * \param fmt a printf() style message format string
273 * \param ... additional parameters matching % tokens in the **fmt** string,
274 * if any
275 *
276 * \since This function is available since SDL 2.0.0.
277 *
278 * \sa SDL_Log
279 * \sa SDL_LogCritical
280 * \sa SDL_LogDebug
281 * \sa SDL_LogInfo
282 * \sa SDL_LogMessage
283 * \sa SDL_LogMessageV
284 * \sa SDL_LogVerbose
285 * \sa SDL_LogWarn
286 */
287extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
288
289/**
290 * Log a message with SDL_LOG_PRIORITY_CRITICAL.
291 *
292 * \param category the category of the message
293 * \param fmt a printf() style message format string
294 * \param ... additional parameters matching % tokens in the **fmt** string,
295 * if any
296 *
297 * \since This function is available since SDL 2.0.0.
298 *
299 * \sa SDL_Log
300 * \sa SDL_LogDebug
301 * \sa SDL_LogError
302 * \sa SDL_LogInfo
303 * \sa SDL_LogMessage
304 * \sa SDL_LogMessageV
305 * \sa SDL_LogVerbose
306 * \sa SDL_LogWarn
307 */
308extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
309
310/**
311 * Log a message with the specified category and priority.
312 *
313 * \param category the category of the message
314 * \param priority the priority of the message
315 * \param fmt a printf() style message format string
316 * \param ... additional parameters matching % tokens in the **fmt** string,
317 * if any
318 *
319 * \since This function is available since SDL 2.0.0.
320 *
321 * \sa SDL_Log
322 * \sa SDL_LogCritical
323 * \sa SDL_LogDebug
324 * \sa SDL_LogError
325 * \sa SDL_LogInfo
326 * \sa SDL_LogMessageV
327 * \sa SDL_LogVerbose
328 * \sa SDL_LogWarn
329 */
330extern DECLSPEC void SDLCALL SDL_LogMessage(int category,
331 SDL_LogPriority priority,
332 SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3);
333
334/**
335 * Log a message with the specified category and priority.
336 *
337 * \param category the category of the message
338 * \param priority the priority of the message
339 * \param fmt a printf() style message format string
340 * \param ap a variable argument list
341 *
342 * \since This function is available since SDL 2.0.0.
343 *
344 * \sa SDL_Log
345 * \sa SDL_LogCritical
346 * \sa SDL_LogDebug
347 * \sa SDL_LogError
348 * \sa SDL_LogInfo
349 * \sa SDL_LogMessage
350 * \sa SDL_LogVerbose
351 * \sa SDL_LogWarn
352 */
353extern DECLSPEC void SDLCALL SDL_LogMessageV(int category,
354 SDL_LogPriority priority,
355 const char *fmt, va_list ap);
356
357/**
358 * The prototype for the log output callback function.
359 *
360 * This function is called by SDL when there is new text to be logged.
361 *
362 * \param userdata what was passed as `userdata` to SDL_LogSetOutputFunction()
363 * \param category the category of the message
364 * \param priority the priority of the message
365 * \param message the message being output
366 */
367typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message);
368
369/**
370 * Get the current log output function.
371 *
372 * \param callback an SDL_LogOutputFunction filled in with the current log
373 * callback
374 * \param userdata a pointer filled in with the pointer that is passed to
375 * `callback`
376 *
377 * \since This function is available since SDL 2.0.0.
378 *
379 * \sa SDL_LogSetOutputFunction
380 */
381extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata);
382
383/**
384 * Replace the default log output function with one of your own.
385 *
386 * \param callback an SDL_LogOutputFunction to call instead of the default
387 * \param userdata a pointer that is passed to `callback`
388 *
389 * \since This function is available since SDL 2.0.0.
390 *
391 * \sa SDL_LogGetOutputFunction
392 */
393extern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata);
394
395
396/* Ends C function definitions when using C++ */
397#ifdef __cplusplus
398}
399#endif
400#include "close_code.h"
401
402#endif /* SDL_log_h_ */
403
404/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_main.h b/vendor/SDL2/include/SDL_main.h new file mode 100644 index 0000000..b3fec15 --- /dev/null +++ b/vendor/SDL2/include/SDL_main.h
@@ -0,0 +1,235 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_main_h_
23#define SDL_main_h_
24
25#include "SDL_stdinc.h"
26
27/**
28 * \file SDL_main.h
29 *
30 * Redefine main() on some platforms so that it is called by SDL.
31 */
32
33#ifndef SDL_MAIN_HANDLED
34#if defined(__WIN32__)
35/* On Windows SDL provides WinMain(), which parses the command line and passes
36 the arguments to your main function.
37
38 If you provide your own WinMain(), you may define SDL_MAIN_HANDLED
39 */
40#define SDL_MAIN_AVAILABLE
41
42#elif defined(__WINRT__)
43/* On WinRT, SDL provides a main function that initializes CoreApplication,
44 creating an instance of IFrameworkView in the process.
45
46 Please note that #include'ing SDL_main.h is not enough to get a main()
47 function working. In non-XAML apps, the file,
48 src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled
49 into the app itself. In XAML apps, the function, SDL_WinRTRunApp must be
50 called, with a pointer to the Direct3D-hosted XAML control passed in.
51*/
52#define SDL_MAIN_NEEDED
53
54#elif defined(__IPHONEOS__)
55/* On iOS SDL provides a main function that creates an application delegate
56 and starts the iOS application run loop.
57
58 If you link with SDL dynamically on iOS, the main function can't be in a
59 shared library, so you need to link with libSDLmain.a, which includes a
60 stub main function that calls into the shared library to start execution.
61
62 See src/video/uikit/SDL_uikitappdelegate.m for more details.
63 */
64#define SDL_MAIN_NEEDED
65
66#elif defined(__ANDROID__)
67/* On Android SDL provides a Java class in SDLActivity.java that is the
68 main activity entry point.
69
70 See docs/README-android.md for more details on extending that class.
71 */
72#define SDL_MAIN_NEEDED
73
74/* We need to export SDL_main so it can be launched from Java */
75#define SDLMAIN_DECLSPEC DECLSPEC
76
77#elif defined(__NACL__)
78/* On NACL we use ppapi_simple to set up the application helper code,
79 then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before
80 starting the user main function.
81 All user code is run in a separate thread by ppapi_simple, thus
82 allowing for blocking io to take place via nacl_io
83*/
84#define SDL_MAIN_NEEDED
85
86#elif defined(__PSP__)
87/* On PSP SDL provides a main function that sets the module info,
88 activates the GPU and starts the thread required to be able to exit
89 the software.
90
91 If you provide this yourself, you may define SDL_MAIN_HANDLED
92 */
93#define SDL_MAIN_AVAILABLE
94
95#endif
96#endif /* SDL_MAIN_HANDLED */
97
98#ifndef SDLMAIN_DECLSPEC
99#define SDLMAIN_DECLSPEC
100#endif
101
102/**
103 * \file SDL_main.h
104 *
105 * The application's main() function must be called with C linkage,
106 * and should be declared like this:
107 * \code
108 * #ifdef __cplusplus
109 * extern "C"
110 * #endif
111 * int main(int argc, char *argv[])
112 * {
113 * }
114 * \endcode
115 */
116
117#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE)
118#define main SDL_main
119#endif
120
121#include "begin_code.h"
122#ifdef __cplusplus
123extern "C" {
124#endif
125
126/**
127 * The prototype for the application's main() function
128 */
129typedef int (*SDL_main_func)(int argc, char *argv[]);
130extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]);
131
132
133/**
134 * Circumvent failure of SDL_Init() when not using SDL_main() as an entry
135 * point.
136 *
137 * This function is defined in SDL_main.h, along with the preprocessor rule to
138 * redefine main() as SDL_main(). Thus to ensure that your main() function
139 * will not be changed it is necessary to define SDL_MAIN_HANDLED before
140 * including SDL.h.
141 *
142 * \since This function is available since SDL 2.0.0.
143 *
144 * \sa SDL_Init
145 */
146extern DECLSPEC void SDLCALL SDL_SetMainReady(void);
147
148#ifdef __WIN32__
149
150/**
151 * Register a win32 window class for SDL's use.
152 *
153 * This can be called to set the application window class at startup. It is
154 * safe to call this multiple times, as long as every call is eventually
155 * paired with a call to SDL_UnregisterApp, but a second registration attempt
156 * while a previous registration is still active will be ignored, other than
157 * to increment a counter.
158 *
159 * Most applications do not need to, and should not, call this directly; SDL
160 * will call it when initializing the video subsystem.
161 *
162 * \param name the window class name, in UTF-8 encoding. If NULL, SDL
163 * currently uses "SDL_app" but this isn't guaranteed.
164 * \param style the value to use in WNDCLASSEX::style. If `name` is NULL, SDL
165 * currently uses `(CS_BYTEALIGNCLIENT | CS_OWNDC)` regardless of
166 * what is specified here.
167 * \param hInst the HINSTANCE to use in WNDCLASSEX::hInstance. If zero, SDL
168 * will use `GetModuleHandle(NULL)` instead.
169 * \returns 0 on success, -1 on error. SDL_GetError() may have details.
170 *
171 * \since This function is available since SDL 2.0.2.
172 */
173extern DECLSPEC int SDLCALL SDL_RegisterApp(const char *name, Uint32 style, void *hInst);
174
175/**
176 * Deregister the win32 window class from an SDL_RegisterApp call.
177 *
178 * This can be called to undo the effects of SDL_RegisterApp.
179 *
180 * Most applications do not need to, and should not, call this directly; SDL
181 * will call it when deinitializing the video subsystem.
182 *
183 * It is safe to call this multiple times, as long as every call is eventually
184 * paired with a prior call to SDL_RegisterApp. The window class will only be
185 * deregistered when the registration counter in SDL_RegisterApp decrements to
186 * zero through calls to this function.
187 *
188 * \since This function is available since SDL 2.0.2.
189 */
190extern DECLSPEC void SDLCALL SDL_UnregisterApp(void);
191
192#endif /* __WIN32__ */
193
194
195#ifdef __WINRT__
196
197/**
198 * Initialize and launch an SDL/WinRT application.
199 *
200 * \param mainFunction the SDL app's C-style main(), an SDL_main_func
201 * \param reserved reserved for future use; should be NULL
202 * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve
203 * more information on the failure.
204 *
205 * \since This function is available since SDL 2.0.3.
206 */
207extern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * reserved);
208
209#endif /* __WINRT__ */
210
211#if defined(__IPHONEOS__)
212
213/**
214 * Initializes and launches an SDL application.
215 *
216 * \param argc The argc parameter from the application's main() function
217 * \param argv The argv parameter from the application's main() function
218 * \param mainFunction The SDL app's C-style main(), an SDL_main_func
219 * \return the return value from mainFunction
220 *
221 * \since This function is available since SDL 2.0.10.
222 */
223extern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_func mainFunction);
224
225#endif /* __IPHONEOS__ */
226
227
228#ifdef __cplusplus
229}
230#endif
231#include "close_code.h"
232
233#endif /* SDL_main_h_ */
234
235/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_messagebox.h b/vendor/SDL2/include/SDL_messagebox.h new file mode 100644 index 0000000..d763534 --- /dev/null +++ b/vendor/SDL2/include/SDL_messagebox.h
@@ -0,0 +1,193 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_messagebox_h_
23#define SDL_messagebox_h_
24
25#include "SDL_stdinc.h"
26#include "SDL_video.h" /* For SDL_Window */
27
28#include "begin_code.h"
29/* Set up for C function definitions, even when using C++ */
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34/**
35 * SDL_MessageBox flags. If supported will display warning icon, etc.
36 */
37typedef enum
38{
39 SDL_MESSAGEBOX_ERROR = 0x00000010, /**< error dialog */
40 SDL_MESSAGEBOX_WARNING = 0x00000020, /**< warning dialog */
41 SDL_MESSAGEBOX_INFORMATION = 0x00000040, /**< informational dialog */
42 SDL_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT = 0x00000080, /**< buttons placed left to right */
43 SDL_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT = 0x00000100 /**< buttons placed right to left */
44} SDL_MessageBoxFlags;
45
46/**
47 * Flags for SDL_MessageBoxButtonData.
48 */
49typedef enum
50{
51 SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001, /**< Marks the default button when return is hit */
52 SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002 /**< Marks the default button when escape is hit */
53} SDL_MessageBoxButtonFlags;
54
55/**
56 * Individual button data.
57 */
58typedef struct
59{
60 Uint32 flags; /**< ::SDL_MessageBoxButtonFlags */
61 int buttonid; /**< User defined button id (value returned via SDL_ShowMessageBox) */
62 const char * text; /**< The UTF-8 button text */
63} SDL_MessageBoxButtonData;
64
65/**
66 * RGB value used in a message box color scheme
67 */
68typedef struct
69{
70 Uint8 r, g, b;
71} SDL_MessageBoxColor;
72
73typedef enum
74{
75 SDL_MESSAGEBOX_COLOR_BACKGROUND,
76 SDL_MESSAGEBOX_COLOR_TEXT,
77 SDL_MESSAGEBOX_COLOR_BUTTON_BORDER,
78 SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND,
79 SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED,
80 SDL_MESSAGEBOX_COLOR_MAX
81} SDL_MessageBoxColorType;
82
83/**
84 * A set of colors to use for message box dialogs
85 */
86typedef struct
87{
88 SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX];
89} SDL_MessageBoxColorScheme;
90
91/**
92 * MessageBox structure containing title, text, window, etc.
93 */
94typedef struct
95{
96 Uint32 flags; /**< ::SDL_MessageBoxFlags */
97 SDL_Window *window; /**< Parent window, can be NULL */
98 const char *title; /**< UTF-8 title */
99 const char *message; /**< UTF-8 message text */
100
101 int numbuttons;
102 const SDL_MessageBoxButtonData *buttons;
103
104 const SDL_MessageBoxColorScheme *colorScheme; /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */
105} SDL_MessageBoxData;
106
107/**
108 * Create a modal message box.
109 *
110 * If your needs aren't complex, it might be easier to use
111 * SDL_ShowSimpleMessageBox.
112 *
113 * This function should be called on the thread that created the parent
114 * window, or on the main thread if the messagebox has no parent. It will
115 * block execution of that thread until the user clicks a button or closes the
116 * messagebox.
117 *
118 * This function may be called at any time, even before SDL_Init(). This makes
119 * it useful for reporting errors like a failure to create a renderer or
120 * OpenGL context.
121 *
122 * On X11, SDL rolls its own dialog box with X11 primitives instead of a
123 * formal toolkit like GTK+ or Qt.
124 *
125 * Note that if SDL_Init() would fail because there isn't any available video
126 * target, this function is likely to fail for the same reasons. If this is a
127 * concern, check the return value from this function and fall back to writing
128 * to stderr if you can.
129 *
130 * \param messageboxdata the SDL_MessageBoxData structure with title, text and
131 * other options
132 * \param buttonid the pointer to which user id of hit button should be copied
133 * \returns 0 on success or a negative error code on failure; call
134 * SDL_GetError() for more information.
135 *
136 * \since This function is available since SDL 2.0.0.
137 *
138 * \sa SDL_ShowSimpleMessageBox
139 */
140extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid);
141
142/**
143 * Display a simple modal message box.
144 *
145 * If your needs aren't complex, this function is preferred over
146 * SDL_ShowMessageBox.
147 *
148 * `flags` may be any of the following:
149 *
150 * - `SDL_MESSAGEBOX_ERROR`: error dialog
151 * - `SDL_MESSAGEBOX_WARNING`: warning dialog
152 * - `SDL_MESSAGEBOX_INFORMATION`: informational dialog
153 *
154 * This function should be called on the thread that created the parent
155 * window, or on the main thread if the messagebox has no parent. It will
156 * block execution of that thread until the user clicks a button or closes the
157 * messagebox.
158 *
159 * This function may be called at any time, even before SDL_Init(). This makes
160 * it useful for reporting errors like a failure to create a renderer or
161 * OpenGL context.
162 *
163 * On X11, SDL rolls its own dialog box with X11 primitives instead of a
164 * formal toolkit like GTK+ or Qt.
165 *
166 * Note that if SDL_Init() would fail because there isn't any available video
167 * target, this function is likely to fail for the same reasons. If this is a
168 * concern, check the return value from this function and fall back to writing
169 * to stderr if you can.
170 *
171 * \param flags an SDL_MessageBoxFlags value
172 * \param title UTF-8 title text
173 * \param message UTF-8 message text
174 * \param window the parent window, or NULL for no parent
175 * \returns 0 on success or a negative error code on failure; call
176 * SDL_GetError() for more information.
177 *
178 * \since This function is available since SDL 2.0.0.
179 *
180 * \sa SDL_ShowMessageBox
181 */
182extern DECLSPEC int SDLCALL SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window);
183
184
185/* Ends C function definitions when using C++ */
186#ifdef __cplusplus
187}
188#endif
189#include "close_code.h"
190
191#endif /* SDL_messagebox_h_ */
192
193/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_metal.h b/vendor/SDL2/include/SDL_metal.h new file mode 100644 index 0000000..9ecaa81 --- /dev/null +++ b/vendor/SDL2/include/SDL_metal.h
@@ -0,0 +1,112 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_metal.h
24 *
25 * Header file for functions to creating Metal layers and views on SDL windows.
26 */
27
28#ifndef SDL_metal_h_
29#define SDL_metal_h_
30
31#include "SDL_video.h"
32
33#include "begin_code.h"
34/* Set up for C function definitions, even when using C++ */
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39/**
40 * \brief A handle to a CAMetalLayer-backed NSView (macOS) or UIView (iOS/tvOS).
41 *
42 * \note This can be cast directly to an NSView or UIView.
43 */
44typedef void *SDL_MetalView;
45
46/**
47 * \name Metal support functions
48 */
49/* @{ */
50
51/**
52 * Create a CAMetalLayer-backed NSView/UIView and attach it to the specified
53 * window.
54 *
55 * On macOS, this does *not* associate a MTLDevice with the CAMetalLayer on
56 * its own. It is up to user code to do that.
57 *
58 * The returned handle can be casted directly to a NSView or UIView. To access
59 * the backing CAMetalLayer, call SDL_Metal_GetLayer().
60 *
61 * \since This function is available since SDL 2.0.12.
62 *
63 * \sa SDL_Metal_DestroyView
64 * \sa SDL_Metal_GetLayer
65 */
66extern DECLSPEC SDL_MetalView SDLCALL SDL_Metal_CreateView(SDL_Window * window);
67
68/**
69 * Destroy an existing SDL_MetalView object.
70 *
71 * This should be called before SDL_DestroyWindow, if SDL_Metal_CreateView was
72 * called after SDL_CreateWindow.
73 *
74 * \since This function is available since SDL 2.0.12.
75 *
76 * \sa SDL_Metal_CreateView
77 */
78extern DECLSPEC void SDLCALL SDL_Metal_DestroyView(SDL_MetalView view);
79
80/**
81 * Get a pointer to the backing CAMetalLayer for the given view.
82 *
83 * \since This function is available since SDL 2.0.14.
84 *
85 * \sa SDL_MetalCreateView
86 */
87extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view);
88
89/**
90 * Get the size of a window's underlying drawable in pixels (for use with
91 * setting viewport, scissor & etc).
92 *
93 * \param window SDL_Window from which the drawable size should be queried
94 * \param w Pointer to variable for storing the width in pixels, may be NULL
95 *
96 * \since This function is available since SDL 2.0.14.
97 *
98 * \sa SDL_GetWindowSize
99 * \sa SDL_CreateWindow
100 */
101extern DECLSPEC void SDLCALL SDL_Metal_GetDrawableSize(SDL_Window* window, int *w,
102 int *h);
103
104/* @} *//* Metal support functions */
105
106/* Ends C function definitions when using C++ */
107#ifdef __cplusplus
108}
109#endif
110#include "close_code.h"
111
112#endif /* SDL_metal_h_ */
diff --git a/vendor/SDL2/include/SDL_misc.h b/vendor/SDL2/include/SDL_misc.h new file mode 100644 index 0000000..261b6b8 --- /dev/null +++ b/vendor/SDL2/include/SDL_misc.h
@@ -0,0 +1,79 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_misc.h
24 *
25 * \brief Include file for SDL API functions that don't fit elsewhere.
26 */
27
28#ifndef SDL_misc_h_
29#define SDL_misc_h_
30
31#include "SDL_stdinc.h"
32
33#include "begin_code.h"
34
35/* Set up for C function definitions, even when using C++ */
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40/**
41 * Open a URL/URI in the browser or other appropriate external application.
42 *
43 * Open a URL in a separate, system-provided application. How this works will
44 * vary wildly depending on the platform. This will likely launch what makes
45 * sense to handle a specific URL's protocol (a web browser for `http://`,
46 * etc), but it might also be able to launch file managers for directories and
47 * other things.
48 *
49 * What happens when you open a URL varies wildly as well: your game window
50 * may lose focus (and may or may not lose focus if your game was fullscreen
51 * or grabbing input at the time). On mobile devices, your app will likely
52 * move to the background or your process might be paused. Any given platform
53 * may or may not handle a given URL.
54 *
55 * If this is unimplemented (or simply unavailable) for a platform, this will
56 * fail with an error. A successful result does not mean the URL loaded, just
57 * that we launched _something_ to handle it (or at least believe we did).
58 *
59 * All this to say: this function can be useful, but you should definitely
60 * test it on every platform you target.
61 *
62 * \param url A valid URL/URI to open. Use `file:///full/path/to/file` for
63 * local files, if supported.
64 * \returns 0 on success, or -1 on error; call SDL_GetError() for more
65 * information.
66 *
67 * \since This function is available since SDL 2.0.14.
68 */
69extern DECLSPEC int SDLCALL SDL_OpenURL(const char *url);
70
71/* Ends C function definitions when using C++ */
72#ifdef __cplusplus
73}
74#endif
75#include "close_code.h"
76
77#endif /* SDL_misc_h_ */
78
79/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_mouse.h b/vendor/SDL2/include/SDL_mouse.h new file mode 100644 index 0000000..1d4a2db --- /dev/null +++ b/vendor/SDL2/include/SDL_mouse.h
@@ -0,0 +1,454 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_mouse.h
24 *
25 * Include file for SDL mouse event handling.
26 */
27
28#ifndef SDL_mouse_h_
29#define SDL_mouse_h_
30
31#include "SDL_stdinc.h"
32#include "SDL_error.h"
33#include "SDL_video.h"
34
35#include "begin_code.h"
36/* Set up for C function definitions, even when using C++ */
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41typedef struct SDL_Cursor SDL_Cursor; /**< Implementation dependent */
42
43/**
44 * \brief Cursor types for SDL_CreateSystemCursor().
45 */
46typedef enum
47{
48 SDL_SYSTEM_CURSOR_ARROW, /**< Arrow */
49 SDL_SYSTEM_CURSOR_IBEAM, /**< I-beam */
50 SDL_SYSTEM_CURSOR_WAIT, /**< Wait */
51 SDL_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair */
52 SDL_SYSTEM_CURSOR_WAITARROW, /**< Small wait cursor (or Wait if not available) */
53 SDL_SYSTEM_CURSOR_SIZENWSE, /**< Double arrow pointing northwest and southeast */
54 SDL_SYSTEM_CURSOR_SIZENESW, /**< Double arrow pointing northeast and southwest */
55 SDL_SYSTEM_CURSOR_SIZEWE, /**< Double arrow pointing west and east */
56 SDL_SYSTEM_CURSOR_SIZENS, /**< Double arrow pointing north and south */
57 SDL_SYSTEM_CURSOR_SIZEALL, /**< Four pointed arrow pointing north, south, east, and west */
58 SDL_SYSTEM_CURSOR_NO, /**< Slashed circle or crossbones */
59 SDL_SYSTEM_CURSOR_HAND, /**< Hand */
60 SDL_NUM_SYSTEM_CURSORS
61} SDL_SystemCursor;
62
63/**
64 * \brief Scroll direction types for the Scroll event
65 */
66typedef enum
67{
68 SDL_MOUSEWHEEL_NORMAL, /**< The scroll direction is normal */
69 SDL_MOUSEWHEEL_FLIPPED /**< The scroll direction is flipped / natural */
70} SDL_MouseWheelDirection;
71
72/* Function prototypes */
73
74/**
75 * Get the window which currently has mouse focus.
76 *
77 * \returns the window with mouse focus.
78 *
79 * \since This function is available since SDL 2.0.0.
80 */
81extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void);
82
83/**
84 * Retrieve the current state of the mouse.
85 *
86 * The current button state is returned as a button bitmask, which can be
87 * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the
88 * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the
89 * mouse cursor position relative to the focus window. You can pass NULL for
90 * either `x` or `y`.
91 *
92 * \param x the x coordinate of the mouse cursor position relative to the
93 * focus window
94 * \param y the y coordinate of the mouse cursor position relative to the
95 * focus window
96 * \returns a 32-bit button bitmask of the current button state.
97 *
98 * \since This function is available since SDL 2.0.0.
99 *
100 * \sa SDL_GetGlobalMouseState
101 * \sa SDL_GetRelativeMouseState
102 * \sa SDL_PumpEvents
103 */
104extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y);
105
106/**
107 * Get the current state of the mouse in relation to the desktop.
108 *
109 * This works similarly to SDL_GetMouseState(), but the coordinates will be
110 * reported relative to the top-left of the desktop. This can be useful if you
111 * need to track the mouse outside of a specific window and SDL_CaptureMouse()
112 * doesn't fit your needs. For example, it could be useful if you need to
113 * track the mouse while dragging a window, where coordinates relative to a
114 * window might not be in sync at all times.
115 *
116 * Note: SDL_GetMouseState() returns the mouse position as SDL understands it
117 * from the last pump of the event queue. This function, however, queries the
118 * OS for the current mouse position, and as such, might be a slightly less
119 * efficient function. Unless you know what you're doing and have a good
120 * reason to use this function, you probably want SDL_GetMouseState() instead.
121 *
122 * \param x filled in with the current X coord relative to the desktop; can be
123 * NULL
124 * \param y filled in with the current Y coord relative to the desktop; can be
125 * NULL
126 * \returns the current button state as a bitmask which can be tested using
127 * the SDL_BUTTON(X) macros.
128 *
129 * \since This function is available since SDL 2.0.4.
130 *
131 * \sa SDL_CaptureMouse
132 */
133extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y);
134
135/**
136 * Retrieve the relative state of the mouse.
137 *
138 * The current button state is returned as a button bitmask, which can be
139 * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the
140 * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the
141 * mouse deltas since the last call to SDL_GetRelativeMouseState() or since
142 * event initialization. You can pass NULL for either `x` or `y`.
143 *
144 * \param x a pointer filled with the last recorded x coordinate of the mouse
145 * \param y a pointer filled with the last recorded y coordinate of the mouse
146 * \returns a 32-bit button bitmask of the relative button state.
147 *
148 * \since This function is available since SDL 2.0.0.
149 *
150 * \sa SDL_GetMouseState
151 */
152extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y);
153
154/**
155 * Move the mouse cursor to the given position within the window.
156 *
157 * This function generates a mouse motion event.
158 *
159 * Note that this function will appear to succeed, but not actually move the
160 * mouse when used over Microsoft Remote Desktop.
161 *
162 * \param window the window to move the mouse into, or NULL for the current
163 * mouse focus
164 * \param x the x coordinate within the window
165 * \param y the y coordinate within the window
166 *
167 * \since This function is available since SDL 2.0.0.
168 *
169 * \sa SDL_WarpMouseGlobal
170 */
171extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window,
172 int x, int y);
173
174/**
175 * Move the mouse to the given position in global screen space.
176 *
177 * This function generates a mouse motion event.
178 *
179 * A failure of this function usually means that it is unsupported by a
180 * platform.
181 *
182 * Note that this function will appear to succeed, but not actually move the
183 * mouse when used over Microsoft Remote Desktop.
184 *
185 * \param x the x coordinate
186 * \param y the y coordinate
187 * \returns 0 on success or a negative error code on failure; call
188 * SDL_GetError() for more information.
189 *
190 * \since This function is available since SDL 2.0.4.
191 *
192 * \sa SDL_WarpMouseInWindow
193 */
194extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y);
195
196/**
197 * Set relative mouse mode.
198 *
199 * While the mouse is in relative mode, the cursor is hidden, and the driver
200 * will try to report continuous motion in the current window. Only relative
201 * motion events will be delivered, the mouse position will not change.
202 *
203 * Note that this function will not be able to provide continuous relative
204 * motion when used over Microsoft Remote Desktop, instead motion is limited
205 * to the bounds of the screen.
206 *
207 * This function will flush any pending mouse motion.
208 *
209 * \param enabled SDL_TRUE to enable relative mode, SDL_FALSE to disable.
210 * \returns 0 on success or a negative error code on failure; call
211 * SDL_GetError() for more information.
212 *
213 * If relative mode is not supported, this returns -1.
214 *
215 * \since This function is available since SDL 2.0.0.
216 *
217 * \sa SDL_GetRelativeMouseMode
218 */
219extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled);
220
221/**
222 * Capture the mouse and to track input outside an SDL window.
223 *
224 * Capturing enables your app to obtain mouse events globally, instead of just
225 * within your window. Not all video targets support this function. When
226 * capturing is enabled, the current window will get all mouse events, but
227 * unlike relative mode, no change is made to the cursor and it is not
228 * restrained to your window.
229 *
230 * This function may also deny mouse input to other windows--both those in
231 * your application and others on the system--so you should use this function
232 * sparingly, and in small bursts. For example, you might want to track the
233 * mouse while the user is dragging something, until the user releases a mouse
234 * button. It is not recommended that you capture the mouse for long periods
235 * of time, such as the entire time your app is running. For that, you should
236 * probably use SDL_SetRelativeMouseMode() or SDL_SetWindowGrab(), depending
237 * on your goals.
238 *
239 * While captured, mouse events still report coordinates relative to the
240 * current (foreground) window, but those coordinates may be outside the
241 * bounds of the window (including negative values). Capturing is only allowed
242 * for the foreground window. If the window loses focus while capturing, the
243 * capture will be disabled automatically.
244 *
245 * While capturing is enabled, the current window will have the
246 * `SDL_WINDOW_MOUSE_CAPTURE` flag set.
247 *
248 * \param enabled SDL_TRUE to enable capturing, SDL_FALSE to disable.
249 * \returns 0 on success or -1 if not supported; call SDL_GetError() for more
250 * information.
251 *
252 * \since This function is available since SDL 2.0.4.
253 *
254 * \sa SDL_GetGlobalMouseState
255 */
256extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled);
257
258/**
259 * Query whether relative mouse mode is enabled.
260 *
261 * \returns SDL_TRUE if relative mode is enabled or SDL_FALSE otherwise.
262 *
263 * \since This function is available since SDL 2.0.0.
264 *
265 * \sa SDL_SetRelativeMouseMode
266 */
267extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void);
268
269/**
270 * Create a cursor using the specified bitmap data and mask (in MSB format).
271 *
272 * `mask` has to be in MSB (Most Significant Bit) format.
273 *
274 * The cursor width (`w`) must be a multiple of 8 bits.
275 *
276 * The cursor is created in black and white according to the following:
277 *
278 * - data=0, mask=1: white
279 * - data=1, mask=1: black
280 * - data=0, mask=0: transparent
281 * - data=1, mask=0: inverted color if possible, black if not.
282 *
283 * Cursors created with this function must be freed with SDL_FreeCursor().
284 *
285 * If you want to have a color cursor, or create your cursor from an
286 * SDL_Surface, you should use SDL_CreateColorCursor(). Alternately, you can
287 * hide the cursor and draw your own as part of your game's rendering, but it
288 * will be bound to the framerate.
289 *
290 * Also, since SDL 2.0.0, SDL_CreateSystemCursor() is available, which
291 * provides twelve readily available system cursors to pick from.
292 *
293 * \param data the color value for each pixel of the cursor
294 * \param mask the mask value for each pixel of the cursor
295 * \param w the width of the cursor
296 * \param h the height of the cursor
297 * \param hot_x the X-axis location of the upper left corner of the cursor
298 * relative to the actual mouse position
299 * \param hot_y the Y-axis location of the upper left corner of the cursor
300 * relative to the actual mouse position
301 * \returns a new cursor with the specified parameters on success or NULL on
302 * failure; call SDL_GetError() for more information.
303 *
304 * \since This function is available since SDL 2.0.0.
305 *
306 * \sa SDL_FreeCursor
307 * \sa SDL_SetCursor
308 * \sa SDL_ShowCursor
309 */
310extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data,
311 const Uint8 * mask,
312 int w, int h, int hot_x,
313 int hot_y);
314
315/**
316 * Create a color cursor.
317 *
318 * \param surface an SDL_Surface structure representing the cursor image
319 * \param hot_x the x position of the cursor hot spot
320 * \param hot_y the y position of the cursor hot spot
321 * \returns the new cursor on success or NULL on failure; call SDL_GetError()
322 * for more information.
323 *
324 * \since This function is available since SDL 2.0.0.
325 *
326 * \sa SDL_CreateCursor
327 * \sa SDL_FreeCursor
328 */
329extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface,
330 int hot_x,
331 int hot_y);
332
333/**
334 * Create a system cursor.
335 *
336 * \param id an SDL_SystemCursor enum value
337 * \returns a cursor on success or NULL on failure; call SDL_GetError() for
338 * more information.
339 *
340 * \since This function is available since SDL 2.0.0.
341 *
342 * \sa SDL_FreeCursor
343 */
344extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id);
345
346/**
347 * Set the active cursor.
348 *
349 * This function sets the currently active cursor to the specified one. If the
350 * cursor is currently visible, the change will be immediately represented on
351 * the display. SDL_SetCursor(NULL) can be used to force cursor redraw, if
352 * this is desired for any reason.
353 *
354 * \param cursor a cursor to make active
355 *
356 * \since This function is available since SDL 2.0.0.
357 *
358 * \sa SDL_CreateCursor
359 * \sa SDL_GetCursor
360 * \sa SDL_ShowCursor
361 */
362extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor);
363
364/**
365 * Get the active cursor.
366 *
367 * This function returns a pointer to the current cursor which is owned by the
368 * library. It is not necessary to free the cursor with SDL_FreeCursor().
369 *
370 * \returns the active cursor or NULL if there is no mouse.
371 *
372 * \since This function is available since SDL 2.0.0.
373 *
374 * \sa SDL_SetCursor
375 */
376extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void);
377
378/**
379 * Get the default cursor.
380 *
381 * \returns the default cursor on success or NULL on failure.
382 *
383 * \since This function is available since SDL 2.0.0.
384 *
385 * \sa SDL_CreateSystemCursor
386 */
387extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void);
388
389/**
390 * Free a previously-created cursor.
391 *
392 * Use this function to free cursor resources created with SDL_CreateCursor(),
393 * SDL_CreateColorCursor() or SDL_CreateSystemCursor().
394 *
395 * \param cursor the cursor to free
396 *
397 * \since This function is available since SDL 2.0.0.
398 *
399 * \sa SDL_CreateColorCursor
400 * \sa SDL_CreateCursor
401 * \sa SDL_CreateSystemCursor
402 */
403extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor);
404
405/**
406 * Toggle whether or not the cursor is shown.
407 *
408 * The cursor starts off displayed but can be turned off. Passing `SDL_ENABLE`
409 * displays the cursor and passing `SDL_DISABLE` hides it.
410 *
411 * The current state of the mouse cursor can be queried by passing
412 * `SDL_QUERY`; either `SDL_DISABLE` or `SDL_ENABLE` will be returned.
413 *
414 * \param toggle `SDL_ENABLE` to show the cursor, `SDL_DISABLE` to hide it,
415 * `SDL_QUERY` to query the current state without changing it.
416 * \returns `SDL_ENABLE` if the cursor is shown, or `SDL_DISABLE` if the
417 * cursor is hidden, or a negative error code on failure; call
418 * SDL_GetError() for more information.
419 *
420 * \since This function is available since SDL 2.0.0.
421 *
422 * \sa SDL_CreateCursor
423 * \sa SDL_SetCursor
424 */
425extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle);
426
427/**
428 * Used as a mask when testing buttons in buttonstate.
429 *
430 * - Button 1: Left mouse button
431 * - Button 2: Middle mouse button
432 * - Button 3: Right mouse button
433 */
434#define SDL_BUTTON(X) (1 << ((X)-1))
435#define SDL_BUTTON_LEFT 1
436#define SDL_BUTTON_MIDDLE 2
437#define SDL_BUTTON_RIGHT 3
438#define SDL_BUTTON_X1 4
439#define SDL_BUTTON_X2 5
440#define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT)
441#define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE)
442#define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT)
443#define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1)
444#define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2)
445
446/* Ends C function definitions when using C++ */
447#ifdef __cplusplus
448}
449#endif
450#include "close_code.h"
451
452#endif /* SDL_mouse_h_ */
453
454/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_mutex.h b/vendor/SDL2/include/SDL_mutex.h new file mode 100644 index 0000000..173468f --- /dev/null +++ b/vendor/SDL2/include/SDL_mutex.h
@@ -0,0 +1,471 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_mutex_h_
23#define SDL_mutex_h_
24
25/**
26 * \file SDL_mutex.h
27 *
28 * Functions to provide thread synchronization primitives.
29 */
30
31#include "SDL_stdinc.h"
32#include "SDL_error.h"
33
34#include "begin_code.h"
35/* Set up for C function definitions, even when using C++ */
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40/**
41 * Synchronization functions which can time out return this value
42 * if they time out.
43 */
44#define SDL_MUTEX_TIMEDOUT 1
45
46/**
47 * This is the timeout value which corresponds to never time out.
48 */
49#define SDL_MUTEX_MAXWAIT (~(Uint32)0)
50
51
52/**
53 * \name Mutex functions
54 */
55/* @{ */
56
57/* The SDL mutex structure, defined in SDL_sysmutex.c */
58struct SDL_mutex;
59typedef struct SDL_mutex SDL_mutex;
60
61/**
62 * Create a new mutex.
63 *
64 * All newly-created mutexes begin in the _unlocked_ state.
65 *
66 * Calls to SDL_LockMutex() will not return while the mutex is locked by
67 * another thread. See SDL_TryLockMutex() to attempt to lock without blocking.
68 *
69 * SDL mutexes are reentrant.
70 *
71 * \returns the initialized and unlocked mutex or NULL on failure; call
72 * SDL_GetError() for more information.
73 *
74 * \since This function is available since SDL 2.0.0.
75 *
76 * \sa SDL_DestroyMutex
77 * \sa SDL_LockMutex
78 * \sa SDL_TryLockMutex
79 * \sa SDL_UnlockMutex
80 */
81extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void);
82
83/**
84 * Lock the mutex.
85 *
86 * This will block until the mutex is available, which is to say it is in the
87 * unlocked state and the OS has chosen the caller as the next thread to lock
88 * it. Of all threads waiting to lock the mutex, only one may do so at a time.
89 *
90 * It is legal for the owning thread to lock an already-locked mutex. It must
91 * unlock it the same number of times before it is actually made available for
92 * other threads in the system (this is known as a "recursive mutex").
93 *
94 * \param mutex the mutex to lock
95 * \return 0, or -1 on error.
96 *
97 * \since This function is available since SDL 2.0.0.
98 */
99extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex);
100#define SDL_mutexP(m) SDL_LockMutex(m)
101
102/**
103 * Try to lock a mutex without blocking.
104 *
105 * This works just like SDL_LockMutex(), but if the mutex is not available,
106 * this function returns `SDL_MUTEX_TIMEOUT` immediately.
107 *
108 * This technique is useful if you need exclusive access to a resource but
109 * don't want to wait for it, and will return to it to try again later.
110 *
111 * \param mutex the mutex to try to lock
112 * \returns 0, `SDL_MUTEX_TIMEDOUT`, or -1 on error; call SDL_GetError() for
113 * more information.
114 *
115 * \since This function is available since SDL 2.0.0.
116 *
117 * \sa SDL_CreateMutex
118 * \sa SDL_DestroyMutex
119 * \sa SDL_LockMutex
120 * \sa SDL_UnlockMutex
121 */
122extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex);
123
124/**
125 * Unlock the mutex.
126 *
127 * It is legal for the owning thread to lock an already-locked mutex. It must
128 * unlock it the same number of times before it is actually made available for
129 * other threads in the system (this is known as a "recursive mutex").
130 *
131 * It is an error to unlock a mutex that has not been locked by the current
132 * thread, and doing so results in undefined behavior.
133 *
134 * It is also an error to unlock a mutex that isn't locked at all.
135 *
136 * \param mutex the mutex to unlock.
137 * \returns 0, or -1 on error.
138 *
139 * \since This function is available since SDL 2.0.0.
140 */
141extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex);
142#define SDL_mutexV(m) SDL_UnlockMutex(m)
143
144/**
145 * Destroy a mutex created with SDL_CreateMutex().
146 *
147 * This function must be called on any mutex that is no longer needed. Failure
148 * to destroy a mutex will result in a system memory or resource leak. While
149 * it is safe to destroy a mutex that is _unlocked_, it is not safe to attempt
150 * to destroy a locked mutex, and may result in undefined behavior depending
151 * on the platform.
152 *
153 * \param mutex the mutex to destroy
154 *
155 * \since This function is available since SDL 2.0.0.
156 *
157 * \sa SDL_CreateMutex
158 * \sa SDL_LockMutex
159 * \sa SDL_TryLockMutex
160 * \sa SDL_UnlockMutex
161 */
162extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex);
163
164/* @} *//* Mutex functions */
165
166
167/**
168 * \name Semaphore functions
169 */
170/* @{ */
171
172/* The SDL semaphore structure, defined in SDL_syssem.c */
173struct SDL_semaphore;
174typedef struct SDL_semaphore SDL_sem;
175
176/**
177 * Create a semaphore.
178 *
179 * This function creates a new semaphore and initializes it with the value
180 * `initial_value`. Each wait operation on the semaphore will atomically
181 * decrement the semaphore value and potentially block if the semaphore value
182 * is 0. Each post operation will atomically increment the semaphore value and
183 * wake waiting threads and allow them to retry the wait operation.
184 *
185 * \param initial_value the starting value of the semaphore
186 * \returns a new semaphore or NULL on failure; call SDL_GetError() for more
187 * information.
188 *
189 * \since This function is available since SDL 2.0.0.
190 *
191 * \sa SDL_DestroySemaphore
192 * \sa SDL_SemPost
193 * \sa SDL_SemTryWait
194 * \sa SDL_SemValue
195 * \sa SDL_SemWait
196 * \sa SDL_SemWaitTimeout
197 */
198extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value);
199
200/**
201 * Destroy a semaphore.
202 *
203 * It is not safe to destroy a semaphore if there are threads currently
204 * waiting on it.
205 *
206 * \param sem the semaphore to destroy
207 *
208 * \since This function is available since SDL 2.0.0.
209 *
210 * \sa SDL_CreateSemaphore
211 * \sa SDL_SemPost
212 * \sa SDL_SemTryWait
213 * \sa SDL_SemValue
214 * \sa SDL_SemWait
215 * \sa SDL_SemWaitTimeout
216 */
217extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem);
218
219/**
220 * Wait until a semaphore has a positive value and then decrements it.
221 *
222 * This function suspends the calling thread until either the semaphore
223 * pointed to by `sem` has a positive value or the call is interrupted by a
224 * signal or error. If the call is successful it will atomically decrement the
225 * semaphore value.
226 *
227 * This function is the equivalent of calling SDL_SemWaitTimeout() with a time
228 * length of `SDL_MUTEX_MAXWAIT`.
229 *
230 * \param sem the semaphore wait on
231 * \returns 0 on success or a negative error code on failure; call
232 * SDL_GetError() for more information.
233 *
234 * \since This function is available since SDL 2.0.0.
235 *
236 * \sa SDL_CreateSemaphore
237 * \sa SDL_DestroySemaphore
238 * \sa SDL_SemPost
239 * \sa SDL_SemTryWait
240 * \sa SDL_SemValue
241 * \sa SDL_SemWait
242 * \sa SDL_SemWaitTimeout
243 */
244extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem);
245
246/**
247 * See if a semaphore has a positive value and decrement it if it does.
248 *
249 * This function checks to see if the semaphore pointed to by `sem` has a
250 * positive value and atomically decrements the semaphore value if it does. If
251 * the semaphore doesn't have a positive value, the function immediately
252 * returns SDL_MUTEX_TIMEDOUT.
253 *
254 * \param sem the semaphore to wait on
255 * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait would
256 * block, or a negative error code on failure; call SDL_GetError()
257 * for more information.
258 *
259 * \since This function is available since SDL 2.0.0.
260 *
261 * \sa SDL_CreateSemaphore
262 * \sa SDL_DestroySemaphore
263 * \sa SDL_SemPost
264 * \sa SDL_SemValue
265 * \sa SDL_SemWait
266 * \sa SDL_SemWaitTimeout
267 */
268extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem);
269
270/**
271 * Wait until a semaphore has a positive value and then decrements it.
272 *
273 * This function suspends the calling thread until either the semaphore
274 * pointed to by `sem` has a positive value, the call is interrupted by a
275 * signal or error, or the specified time has elapsed. If the call is
276 * successful it will atomically decrement the semaphore value.
277 *
278 * \param sem the semaphore to wait on
279 * \param ms the length of the timeout, in milliseconds
280 * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait does not
281 * succeed in the allotted time, or a negative error code on failure;
282 * call SDL_GetError() for more information.
283 *
284 * \since This function is available since SDL 2.0.0.
285 *
286 * \sa SDL_CreateSemaphore
287 * \sa SDL_DestroySemaphore
288 * \sa SDL_SemPost
289 * \sa SDL_SemTryWait
290 * \sa SDL_SemValue
291 * \sa SDL_SemWait
292 */
293extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem * sem, Uint32 ms);
294
295/**
296 * Atomically increment a semaphore's value and wake waiting threads.
297 *
298 * \param sem the semaphore to increment
299 * \returns 0 on success or a negative error code on failure; call
300 * SDL_GetError() for more information.
301 *
302 * \since This function is available since SDL 2.0.0.
303 *
304 * \sa SDL_CreateSemaphore
305 * \sa SDL_DestroySemaphore
306 * \sa SDL_SemTryWait
307 * \sa SDL_SemValue
308 * \sa SDL_SemWait
309 * \sa SDL_SemWaitTimeout
310 */
311extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem);
312
313/**
314 * Get the current value of a semaphore.
315 *
316 * \param sem the semaphore to query
317 * \returns the current value of the semaphore.
318 *
319 * \since This function is available since SDL 2.0.0.
320 *
321 * \sa SDL_CreateSemaphore
322 */
323extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem);
324
325/* @} *//* Semaphore functions */
326
327
328/**
329 * \name Condition variable functions
330 */
331/* @{ */
332
333/* The SDL condition variable structure, defined in SDL_syscond.c */
334struct SDL_cond;
335typedef struct SDL_cond SDL_cond;
336
337/**
338 * Create a condition variable.
339 *
340 * \returns a new condition variable or NULL on failure; call SDL_GetError()
341 * for more information.
342 *
343 * \since This function is available since SDL 2.0.0.
344 *
345 * \sa SDL_CondBroadcast
346 * \sa SDL_CondSignal
347 * \sa SDL_CondWait
348 * \sa SDL_CondWaitTimeout
349 * \sa SDL_DestroyCond
350 */
351extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void);
352
353/**
354 * Destroy a condition variable.
355 *
356 * \param cond the condition variable to destroy
357 *
358 * \since This function is available since SDL 2.0.0.
359 *
360 * \sa SDL_CondBroadcast
361 * \sa SDL_CondSignal
362 * \sa SDL_CondWait
363 * \sa SDL_CondWaitTimeout
364 * \sa SDL_CreateCond
365 */
366extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond);
367
368/**
369 * Restart one of the threads that are waiting on the condition variable.
370 *
371 * \param cond the condition variable to signal
372 * \returns 0 on success or a negative error code on failure; call
373 * SDL_GetError() for more information.
374 *
375 * \since This function is available since SDL 2.0.0.
376 *
377 * \sa SDL_CondBroadcast
378 * \sa SDL_CondWait
379 * \sa SDL_CondWaitTimeout
380 * \sa SDL_CreateCond
381 * \sa SDL_DestroyCond
382 */
383extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond);
384
385/**
386 * Restart all threads that are waiting on the condition variable.
387 *
388 * \param cond the condition variable to signal
389 * \returns 0 on success or a negative error code on failure; call
390 * SDL_GetError() for more information.
391 *
392 * \since This function is available since SDL 2.0.0.
393 *
394 * \sa SDL_CondSignal
395 * \sa SDL_CondWait
396 * \sa SDL_CondWaitTimeout
397 * \sa SDL_CreateCond
398 * \sa SDL_DestroyCond
399 */
400extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond);
401
402/**
403 * Wait until a condition variable is signaled.
404 *
405 * This function unlocks the specified `mutex` and waits for another thread to
406 * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable
407 * `cond`. Once the condition variable is signaled, the mutex is re-locked and
408 * the function returns.
409 *
410 * The mutex must be locked before calling this function.
411 *
412 * This function is the equivalent of calling SDL_CondWaitTimeout() with a
413 * time length of `SDL_MUTEX_MAXWAIT`.
414 *
415 * \param cond the condition variable to wait on
416 * \param mutex the mutex used to coordinate thread access
417 * \returns 0 when it is signaled or a negative error code on failure; call
418 * SDL_GetError() for more information.
419 *
420 * \since This function is available since SDL 2.0.0.
421 *
422 * \sa SDL_CondBroadcast
423 * \sa SDL_CondSignal
424 * \sa SDL_CondWaitTimeout
425 * \sa SDL_CreateCond
426 * \sa SDL_DestroyCond
427 */
428extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex);
429
430/**
431 * Wait until a condition variable is signaled or a certain time has passed.
432 *
433 * This function unlocks the specified `mutex` and waits for another thread to
434 * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable
435 * `cond`, or for the specified time to elapse. Once the condition variable is
436 * signaled or the time elapsed, the mutex is re-locked and the function
437 * returns.
438 *
439 * The mutex must be locked before calling this function.
440 *
441 * \param cond the condition variable to wait on
442 * \param mutex the mutex used to coordinate thread access
443 * \param ms the maximum time to wait, in milliseconds, or `SDL_MUTEX_MAXWAIT`
444 * to wait indefinitely
445 * \returns 0 if the condition variable is signaled, `SDL_MUTEX_TIMEDOUT` if
446 * the condition is not signaled in the allotted time, or a negative
447 * error code on failure; call SDL_GetError() for more information.
448 *
449 * \since This function is available since SDL 2.0.0.
450 *
451 * \sa SDL_CondBroadcast
452 * \sa SDL_CondSignal
453 * \sa SDL_CondWait
454 * \sa SDL_CreateCond
455 * \sa SDL_DestroyCond
456 */
457extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond,
458 SDL_mutex * mutex, Uint32 ms);
459
460/* @} *//* Condition variable functions */
461
462
463/* Ends C function definitions when using C++ */
464#ifdef __cplusplus
465}
466#endif
467#include "close_code.h"
468
469#endif /* SDL_mutex_h_ */
470
471/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_name.h b/vendor/SDL2/include/SDL_name.h new file mode 100644 index 0000000..6ff35b4 --- /dev/null +++ b/vendor/SDL2/include/SDL_name.h
@@ -0,0 +1,33 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDLname_h_
23#define SDLname_h_
24
25#if defined(__STDC__) || defined(__cplusplus)
26#define NeedFunctionPrototypes 1
27#endif
28
29#define SDL_NAME(X) SDL_##X
30
31#endif /* SDLname_h_ */
32
33/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_opengl.h b/vendor/SDL2/include/SDL_opengl.h new file mode 100644 index 0000000..9aed503 --- /dev/null +++ b/vendor/SDL2/include/SDL_opengl.h
@@ -0,0 +1,2183 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_opengl.h
24 *
25 * This is a simple file to encapsulate the OpenGL API headers.
26 */
27
28/**
29 * \def NO_SDL_GLEXT
30 *
31 * Define this if you have your own version of glext.h and want to disable the
32 * version included in SDL_opengl.h.
33 */
34
35#ifndef SDL_opengl_h_
36#define SDL_opengl_h_
37
38#include "SDL_config.h"
39
40#ifndef __IPHONEOS__ /* No OpenGL on iOS. */
41
42/*
43 * Mesa 3-D graphics library
44 *
45 * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
46 * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
47 *
48 * Permission is hereby granted, free of charge, to any person obtaining a
49 * copy of this software and associated documentation files (the "Software"),
50 * to deal in the Software without restriction, including without limitation
51 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
52 * and/or sell copies of the Software, and to permit persons to whom the
53 * Software is furnished to do so, subject to the following conditions:
54 *
55 * The above copyright notice and this permission notice shall be included
56 * in all copies or substantial portions of the Software.
57 *
58 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
59 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
60 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
61 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
62 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
63 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
64 * OTHER DEALINGS IN THE SOFTWARE.
65 */
66
67
68#ifndef __gl_h_
69#define __gl_h_
70
71#if defined(USE_MGL_NAMESPACE)
72#include "gl_mangle.h"
73#endif
74
75
76/**********************************************************************
77 * Begin system-specific stuff.
78 */
79
80#if defined(_WIN32) && !defined(__WIN32__) && !defined(__CYGWIN__)
81#define __WIN32__
82#endif
83
84#if defined(__WIN32__) && !defined(__CYGWIN__)
85# if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
86# define GLAPI __declspec(dllexport)
87# elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
88# define GLAPI __declspec(dllimport)
89# else /* for use with static link lib build of Win32 edition only */
90# define GLAPI extern
91# endif /* _STATIC_MESA support */
92# if defined(__MINGW32__) && defined(GL_NO_STDCALL) || defined(UNDER_CE) /* The generated DLLs by MingW with STDCALL are not compatible with the ones done by Microsoft's compilers */
93# define GLAPIENTRY
94# else
95# define GLAPIENTRY __stdcall
96# endif
97#elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */
98# define GLAPI extern
99# define GLAPIENTRY __stdcall
100#elif defined(__OS2__) || defined(__EMX__) /* native os/2 opengl */
101# define GLAPI extern
102# define GLAPIENTRY _System
103# define APIENTRY _System
104# if defined(__GNUC__) && !defined(_System)
105# define _System
106# endif
107#elif (defined(__GNUC__) && __GNUC__ >= 4) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
108# define GLAPI __attribute__((visibility("default")))
109# define GLAPIENTRY
110#endif /* WIN32 && !CYGWIN */
111
112/*
113 * WINDOWS: Include windows.h here to define APIENTRY.
114 * It is also useful when applications include this file by
115 * including only glut.h, since glut.h depends on windows.h.
116 * Applications needing to include windows.h with parms other
117 * than "WIN32_LEAN_AND_MEAN" may include windows.h before
118 * glut.h or gl.h.
119 */
120#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)
121#ifndef WIN32_LEAN_AND_MEAN
122#define WIN32_LEAN_AND_MEAN 1
123#endif
124#ifndef NOMINMAX /* don't define min() and max(). */
125#define NOMINMAX
126#endif
127#include <windows.h>
128#endif
129
130#ifndef GLAPI
131#define GLAPI extern
132#endif
133
134#ifndef GLAPIENTRY
135#define GLAPIENTRY
136#endif
137
138#ifndef APIENTRY
139#define APIENTRY GLAPIENTRY
140#endif
141
142/* "P" suffix to be used for a pointer to a function */
143#ifndef APIENTRYP
144#define APIENTRYP APIENTRY *
145#endif
146
147#ifndef GLAPIENTRYP
148#define GLAPIENTRYP GLAPIENTRY *
149#endif
150
151#if defined(PRAGMA_EXPORT_SUPPORTED)
152#pragma export on
153#endif
154
155/*
156 * End system-specific stuff.
157 **********************************************************************/
158
159
160
161#ifdef __cplusplus
162extern "C" {
163#endif
164
165
166
167#define GL_VERSION_1_1 1
168#define GL_VERSION_1_2 1
169#define GL_VERSION_1_3 1
170#define GL_ARB_imaging 1
171
172
173/*
174 * Datatypes
175 */
176typedef unsigned int GLenum;
177typedef unsigned char GLboolean;
178typedef unsigned int GLbitfield;
179typedef void GLvoid;
180typedef signed char GLbyte; /* 1-byte signed */
181typedef short GLshort; /* 2-byte signed */
182typedef int GLint; /* 4-byte signed */
183typedef unsigned char GLubyte; /* 1-byte unsigned */
184typedef unsigned short GLushort; /* 2-byte unsigned */
185typedef unsigned int GLuint; /* 4-byte unsigned */
186typedef int GLsizei; /* 4-byte signed */
187typedef float GLfloat; /* single precision float */
188typedef float GLclampf; /* single precision float in [0,1] */
189typedef double GLdouble; /* double precision float */
190typedef double GLclampd; /* double precision float in [0,1] */
191
192
193
194/*
195 * Constants
196 */
197
198/* Boolean values */
199#define GL_FALSE 0
200#define GL_TRUE 1
201
202/* Data types */
203#define GL_BYTE 0x1400
204#define GL_UNSIGNED_BYTE 0x1401
205#define GL_SHORT 0x1402
206#define GL_UNSIGNED_SHORT 0x1403
207#define GL_INT 0x1404
208#define GL_UNSIGNED_INT 0x1405
209#define GL_FLOAT 0x1406
210#define GL_2_BYTES 0x1407
211#define GL_3_BYTES 0x1408
212#define GL_4_BYTES 0x1409
213#define GL_DOUBLE 0x140A
214
215/* Primitives */
216#define GL_POINTS 0x0000
217#define GL_LINES 0x0001
218#define GL_LINE_LOOP 0x0002
219#define GL_LINE_STRIP 0x0003
220#define GL_TRIANGLES 0x0004
221#define GL_TRIANGLE_STRIP 0x0005
222#define GL_TRIANGLE_FAN 0x0006
223#define GL_QUADS 0x0007
224#define GL_QUAD_STRIP 0x0008
225#define GL_POLYGON 0x0009
226
227/* Vertex Arrays */
228#define GL_VERTEX_ARRAY 0x8074
229#define GL_NORMAL_ARRAY 0x8075
230#define GL_COLOR_ARRAY 0x8076
231#define GL_INDEX_ARRAY 0x8077
232#define GL_TEXTURE_COORD_ARRAY 0x8078
233#define GL_EDGE_FLAG_ARRAY 0x8079
234#define GL_VERTEX_ARRAY_SIZE 0x807A
235#define GL_VERTEX_ARRAY_TYPE 0x807B
236#define GL_VERTEX_ARRAY_STRIDE 0x807C
237#define GL_NORMAL_ARRAY_TYPE 0x807E
238#define GL_NORMAL_ARRAY_STRIDE 0x807F
239#define GL_COLOR_ARRAY_SIZE 0x8081
240#define GL_COLOR_ARRAY_TYPE 0x8082
241#define GL_COLOR_ARRAY_STRIDE 0x8083
242#define GL_INDEX_ARRAY_TYPE 0x8085
243#define GL_INDEX_ARRAY_STRIDE 0x8086
244#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088
245#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089
246#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A
247#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C
248#define GL_VERTEX_ARRAY_POINTER 0x808E
249#define GL_NORMAL_ARRAY_POINTER 0x808F
250#define GL_COLOR_ARRAY_POINTER 0x8090
251#define GL_INDEX_ARRAY_POINTER 0x8091
252#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092
253#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093
254#define GL_V2F 0x2A20
255#define GL_V3F 0x2A21
256#define GL_C4UB_V2F 0x2A22
257#define GL_C4UB_V3F 0x2A23
258#define GL_C3F_V3F 0x2A24
259#define GL_N3F_V3F 0x2A25
260#define GL_C4F_N3F_V3F 0x2A26
261#define GL_T2F_V3F 0x2A27
262#define GL_T4F_V4F 0x2A28
263#define GL_T2F_C4UB_V3F 0x2A29
264#define GL_T2F_C3F_V3F 0x2A2A
265#define GL_T2F_N3F_V3F 0x2A2B
266#define GL_T2F_C4F_N3F_V3F 0x2A2C
267#define GL_T4F_C4F_N3F_V4F 0x2A2D
268
269/* Matrix Mode */
270#define GL_MATRIX_MODE 0x0BA0
271#define GL_MODELVIEW 0x1700
272#define GL_PROJECTION 0x1701
273#define GL_TEXTURE 0x1702
274
275/* Points */
276#define GL_POINT_SMOOTH 0x0B10
277#define GL_POINT_SIZE 0x0B11
278#define GL_POINT_SIZE_GRANULARITY 0x0B13
279#define GL_POINT_SIZE_RANGE 0x0B12
280
281/* Lines */
282#define GL_LINE_SMOOTH 0x0B20
283#define GL_LINE_STIPPLE 0x0B24
284#define GL_LINE_STIPPLE_PATTERN 0x0B25
285#define GL_LINE_STIPPLE_REPEAT 0x0B26
286#define GL_LINE_WIDTH 0x0B21
287#define GL_LINE_WIDTH_GRANULARITY 0x0B23
288#define GL_LINE_WIDTH_RANGE 0x0B22
289
290/* Polygons */
291#define GL_POINT 0x1B00
292#define GL_LINE 0x1B01
293#define GL_FILL 0x1B02
294#define GL_CW 0x0900
295#define GL_CCW 0x0901
296#define GL_FRONT 0x0404
297#define GL_BACK 0x0405
298#define GL_POLYGON_MODE 0x0B40
299#define GL_POLYGON_SMOOTH 0x0B41
300#define GL_POLYGON_STIPPLE 0x0B42
301#define GL_EDGE_FLAG 0x0B43
302#define GL_CULL_FACE 0x0B44
303#define GL_CULL_FACE_MODE 0x0B45
304#define GL_FRONT_FACE 0x0B46
305#define GL_POLYGON_OFFSET_FACTOR 0x8038
306#define GL_POLYGON_OFFSET_UNITS 0x2A00
307#define GL_POLYGON_OFFSET_POINT 0x2A01
308#define GL_POLYGON_OFFSET_LINE 0x2A02
309#define GL_POLYGON_OFFSET_FILL 0x8037
310
311/* Display Lists */
312#define GL_COMPILE 0x1300
313#define GL_COMPILE_AND_EXECUTE 0x1301
314#define GL_LIST_BASE 0x0B32
315#define GL_LIST_INDEX 0x0B33
316#define GL_LIST_MODE 0x0B30
317
318/* Depth buffer */
319#define GL_NEVER 0x0200
320#define GL_LESS 0x0201
321#define GL_EQUAL 0x0202
322#define GL_LEQUAL 0x0203
323#define GL_GREATER 0x0204
324#define GL_NOTEQUAL 0x0205
325#define GL_GEQUAL 0x0206
326#define GL_ALWAYS 0x0207
327#define GL_DEPTH_TEST 0x0B71
328#define GL_DEPTH_BITS 0x0D56
329#define GL_DEPTH_CLEAR_VALUE 0x0B73
330#define GL_DEPTH_FUNC 0x0B74
331#define GL_DEPTH_RANGE 0x0B70
332#define GL_DEPTH_WRITEMASK 0x0B72
333#define GL_DEPTH_COMPONENT 0x1902
334
335/* Lighting */
336#define GL_LIGHTING 0x0B50
337#define GL_LIGHT0 0x4000
338#define GL_LIGHT1 0x4001
339#define GL_LIGHT2 0x4002
340#define GL_LIGHT3 0x4003
341#define GL_LIGHT4 0x4004
342#define GL_LIGHT5 0x4005
343#define GL_LIGHT6 0x4006
344#define GL_LIGHT7 0x4007
345#define GL_SPOT_EXPONENT 0x1205
346#define GL_SPOT_CUTOFF 0x1206
347#define GL_CONSTANT_ATTENUATION 0x1207
348#define GL_LINEAR_ATTENUATION 0x1208
349#define GL_QUADRATIC_ATTENUATION 0x1209
350#define GL_AMBIENT 0x1200
351#define GL_DIFFUSE 0x1201
352#define GL_SPECULAR 0x1202
353#define GL_SHININESS 0x1601
354#define GL_EMISSION 0x1600
355#define GL_POSITION 0x1203
356#define GL_SPOT_DIRECTION 0x1204
357#define GL_AMBIENT_AND_DIFFUSE 0x1602
358#define GL_COLOR_INDEXES 0x1603
359#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52
360#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51
361#define GL_LIGHT_MODEL_AMBIENT 0x0B53
362#define GL_FRONT_AND_BACK 0x0408
363#define GL_SHADE_MODEL 0x0B54
364#define GL_FLAT 0x1D00
365#define GL_SMOOTH 0x1D01
366#define GL_COLOR_MATERIAL 0x0B57
367#define GL_COLOR_MATERIAL_FACE 0x0B55
368#define GL_COLOR_MATERIAL_PARAMETER 0x0B56
369#define GL_NORMALIZE 0x0BA1
370
371/* User clipping planes */
372#define GL_CLIP_PLANE0 0x3000
373#define GL_CLIP_PLANE1 0x3001
374#define GL_CLIP_PLANE2 0x3002
375#define GL_CLIP_PLANE3 0x3003
376#define GL_CLIP_PLANE4 0x3004
377#define GL_CLIP_PLANE5 0x3005
378
379/* Accumulation buffer */
380#define GL_ACCUM_RED_BITS 0x0D58
381#define GL_ACCUM_GREEN_BITS 0x0D59
382#define GL_ACCUM_BLUE_BITS 0x0D5A
383#define GL_ACCUM_ALPHA_BITS 0x0D5B
384#define GL_ACCUM_CLEAR_VALUE 0x0B80
385#define GL_ACCUM 0x0100
386#define GL_ADD 0x0104
387#define GL_LOAD 0x0101
388#define GL_MULT 0x0103
389#define GL_RETURN 0x0102
390
391/* Alpha testing */
392#define GL_ALPHA_TEST 0x0BC0
393#define GL_ALPHA_TEST_REF 0x0BC2
394#define GL_ALPHA_TEST_FUNC 0x0BC1
395
396/* Blending */
397#define GL_BLEND 0x0BE2
398#define GL_BLEND_SRC 0x0BE1
399#define GL_BLEND_DST 0x0BE0
400#define GL_ZERO 0
401#define GL_ONE 1
402#define GL_SRC_COLOR 0x0300
403#define GL_ONE_MINUS_SRC_COLOR 0x0301
404#define GL_SRC_ALPHA 0x0302
405#define GL_ONE_MINUS_SRC_ALPHA 0x0303
406#define GL_DST_ALPHA 0x0304
407#define GL_ONE_MINUS_DST_ALPHA 0x0305
408#define GL_DST_COLOR 0x0306
409#define GL_ONE_MINUS_DST_COLOR 0x0307
410#define GL_SRC_ALPHA_SATURATE 0x0308
411
412/* Render Mode */
413#define GL_FEEDBACK 0x1C01
414#define GL_RENDER 0x1C00
415#define GL_SELECT 0x1C02
416
417/* Feedback */
418#define GL_2D 0x0600
419#define GL_3D 0x0601
420#define GL_3D_COLOR 0x0602
421#define GL_3D_COLOR_TEXTURE 0x0603
422#define GL_4D_COLOR_TEXTURE 0x0604
423#define GL_POINT_TOKEN 0x0701
424#define GL_LINE_TOKEN 0x0702
425#define GL_LINE_RESET_TOKEN 0x0707
426#define GL_POLYGON_TOKEN 0x0703
427#define GL_BITMAP_TOKEN 0x0704
428#define GL_DRAW_PIXEL_TOKEN 0x0705
429#define GL_COPY_PIXEL_TOKEN 0x0706
430#define GL_PASS_THROUGH_TOKEN 0x0700
431#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0
432#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1
433#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2
434
435/* Selection */
436#define GL_SELECTION_BUFFER_POINTER 0x0DF3
437#define GL_SELECTION_BUFFER_SIZE 0x0DF4
438
439/* Fog */
440#define GL_FOG 0x0B60
441#define GL_FOG_MODE 0x0B65
442#define GL_FOG_DENSITY 0x0B62
443#define GL_FOG_COLOR 0x0B66
444#define GL_FOG_INDEX 0x0B61
445#define GL_FOG_START 0x0B63
446#define GL_FOG_END 0x0B64
447#define GL_LINEAR 0x2601
448#define GL_EXP 0x0800
449#define GL_EXP2 0x0801
450
451/* Logic Ops */
452#define GL_LOGIC_OP 0x0BF1
453#define GL_INDEX_LOGIC_OP 0x0BF1
454#define GL_COLOR_LOGIC_OP 0x0BF2
455#define GL_LOGIC_OP_MODE 0x0BF0
456#define GL_CLEAR 0x1500
457#define GL_SET 0x150F
458#define GL_COPY 0x1503
459#define GL_COPY_INVERTED 0x150C
460#define GL_NOOP 0x1505
461#define GL_INVERT 0x150A
462#define GL_AND 0x1501
463#define GL_NAND 0x150E
464#define GL_OR 0x1507
465#define GL_NOR 0x1508
466#define GL_XOR 0x1506
467#define GL_EQUIV 0x1509
468#define GL_AND_REVERSE 0x1502
469#define GL_AND_INVERTED 0x1504
470#define GL_OR_REVERSE 0x150B
471#define GL_OR_INVERTED 0x150D
472
473/* Stencil */
474#define GL_STENCIL_BITS 0x0D57
475#define GL_STENCIL_TEST 0x0B90
476#define GL_STENCIL_CLEAR_VALUE 0x0B91
477#define GL_STENCIL_FUNC 0x0B92
478#define GL_STENCIL_VALUE_MASK 0x0B93
479#define GL_STENCIL_FAIL 0x0B94
480#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
481#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
482#define GL_STENCIL_REF 0x0B97
483#define GL_STENCIL_WRITEMASK 0x0B98
484#define GL_STENCIL_INDEX 0x1901
485#define GL_KEEP 0x1E00
486#define GL_REPLACE 0x1E01
487#define GL_INCR 0x1E02
488#define GL_DECR 0x1E03
489
490/* Buffers, Pixel Drawing/Reading */
491#define GL_NONE 0
492#define GL_LEFT 0x0406
493#define GL_RIGHT 0x0407
494/*GL_FRONT 0x0404 */
495/*GL_BACK 0x0405 */
496/*GL_FRONT_AND_BACK 0x0408 */
497#define GL_FRONT_LEFT 0x0400
498#define GL_FRONT_RIGHT 0x0401
499#define GL_BACK_LEFT 0x0402
500#define GL_BACK_RIGHT 0x0403
501#define GL_AUX0 0x0409
502#define GL_AUX1 0x040A
503#define GL_AUX2 0x040B
504#define GL_AUX3 0x040C
505#define GL_COLOR_INDEX 0x1900
506#define GL_RED 0x1903
507#define GL_GREEN 0x1904
508#define GL_BLUE 0x1905
509#define GL_ALPHA 0x1906
510#define GL_LUMINANCE 0x1909
511#define GL_LUMINANCE_ALPHA 0x190A
512#define GL_ALPHA_BITS 0x0D55
513#define GL_RED_BITS 0x0D52
514#define GL_GREEN_BITS 0x0D53
515#define GL_BLUE_BITS 0x0D54
516#define GL_INDEX_BITS 0x0D51
517#define GL_SUBPIXEL_BITS 0x0D50
518#define GL_AUX_BUFFERS 0x0C00
519#define GL_READ_BUFFER 0x0C02
520#define GL_DRAW_BUFFER 0x0C01
521#define GL_DOUBLEBUFFER 0x0C32
522#define GL_STEREO 0x0C33
523#define GL_BITMAP 0x1A00
524#define GL_COLOR 0x1800
525#define GL_DEPTH 0x1801
526#define GL_STENCIL 0x1802
527#define GL_DITHER 0x0BD0
528#define GL_RGB 0x1907
529#define GL_RGBA 0x1908
530
531/* Implementation limits */
532#define GL_MAX_LIST_NESTING 0x0B31
533#define GL_MAX_EVAL_ORDER 0x0D30
534#define GL_MAX_LIGHTS 0x0D31
535#define GL_MAX_CLIP_PLANES 0x0D32
536#define GL_MAX_TEXTURE_SIZE 0x0D33
537#define GL_MAX_PIXEL_MAP_TABLE 0x0D34
538#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35
539#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36
540#define GL_MAX_NAME_STACK_DEPTH 0x0D37
541#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38
542#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39
543#define GL_MAX_VIEWPORT_DIMS 0x0D3A
544#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B
545
546/* Gets */
547#define GL_ATTRIB_STACK_DEPTH 0x0BB0
548#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1
549#define GL_COLOR_CLEAR_VALUE 0x0C22
550#define GL_COLOR_WRITEMASK 0x0C23
551#define GL_CURRENT_INDEX 0x0B01
552#define GL_CURRENT_COLOR 0x0B00
553#define GL_CURRENT_NORMAL 0x0B02
554#define GL_CURRENT_RASTER_COLOR 0x0B04
555#define GL_CURRENT_RASTER_DISTANCE 0x0B09
556#define GL_CURRENT_RASTER_INDEX 0x0B05
557#define GL_CURRENT_RASTER_POSITION 0x0B07
558#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06
559#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08
560#define GL_CURRENT_TEXTURE_COORDS 0x0B03
561#define GL_INDEX_CLEAR_VALUE 0x0C20
562#define GL_INDEX_MODE 0x0C30
563#define GL_INDEX_WRITEMASK 0x0C21
564#define GL_MODELVIEW_MATRIX 0x0BA6
565#define GL_MODELVIEW_STACK_DEPTH 0x0BA3
566#define GL_NAME_STACK_DEPTH 0x0D70
567#define GL_PROJECTION_MATRIX 0x0BA7
568#define GL_PROJECTION_STACK_DEPTH 0x0BA4
569#define GL_RENDER_MODE 0x0C40
570#define GL_RGBA_MODE 0x0C31
571#define GL_TEXTURE_MATRIX 0x0BA8
572#define GL_TEXTURE_STACK_DEPTH 0x0BA5
573#define GL_VIEWPORT 0x0BA2
574
575/* Evaluators */
576#define GL_AUTO_NORMAL 0x0D80
577#define GL_MAP1_COLOR_4 0x0D90
578#define GL_MAP1_INDEX 0x0D91
579#define GL_MAP1_NORMAL 0x0D92
580#define GL_MAP1_TEXTURE_COORD_1 0x0D93
581#define GL_MAP1_TEXTURE_COORD_2 0x0D94
582#define GL_MAP1_TEXTURE_COORD_3 0x0D95
583#define GL_MAP1_TEXTURE_COORD_4 0x0D96
584#define GL_MAP1_VERTEX_3 0x0D97
585#define GL_MAP1_VERTEX_4 0x0D98
586#define GL_MAP2_COLOR_4 0x0DB0
587#define GL_MAP2_INDEX 0x0DB1
588#define GL_MAP2_NORMAL 0x0DB2
589#define GL_MAP2_TEXTURE_COORD_1 0x0DB3
590#define GL_MAP2_TEXTURE_COORD_2 0x0DB4
591#define GL_MAP2_TEXTURE_COORD_3 0x0DB5
592#define GL_MAP2_TEXTURE_COORD_4 0x0DB6
593#define GL_MAP2_VERTEX_3 0x0DB7
594#define GL_MAP2_VERTEX_4 0x0DB8
595#define GL_MAP1_GRID_DOMAIN 0x0DD0
596#define GL_MAP1_GRID_SEGMENTS 0x0DD1
597#define GL_MAP2_GRID_DOMAIN 0x0DD2
598#define GL_MAP2_GRID_SEGMENTS 0x0DD3
599#define GL_COEFF 0x0A00
600#define GL_ORDER 0x0A01
601#define GL_DOMAIN 0x0A02
602
603/* Hints */
604#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50
605#define GL_POINT_SMOOTH_HINT 0x0C51
606#define GL_LINE_SMOOTH_HINT 0x0C52
607#define GL_POLYGON_SMOOTH_HINT 0x0C53
608#define GL_FOG_HINT 0x0C54
609#define GL_DONT_CARE 0x1100
610#define GL_FASTEST 0x1101
611#define GL_NICEST 0x1102
612
613/* Scissor box */
614#define GL_SCISSOR_BOX 0x0C10
615#define GL_SCISSOR_TEST 0x0C11
616
617/* Pixel Mode / Transfer */
618#define GL_MAP_COLOR 0x0D10
619#define GL_MAP_STENCIL 0x0D11
620#define GL_INDEX_SHIFT 0x0D12
621#define GL_INDEX_OFFSET 0x0D13
622#define GL_RED_SCALE 0x0D14
623#define GL_RED_BIAS 0x0D15
624#define GL_GREEN_SCALE 0x0D18
625#define GL_GREEN_BIAS 0x0D19
626#define GL_BLUE_SCALE 0x0D1A
627#define GL_BLUE_BIAS 0x0D1B
628#define GL_ALPHA_SCALE 0x0D1C
629#define GL_ALPHA_BIAS 0x0D1D
630#define GL_DEPTH_SCALE 0x0D1E
631#define GL_DEPTH_BIAS 0x0D1F
632#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1
633#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0
634#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2
635#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3
636#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4
637#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5
638#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6
639#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7
640#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8
641#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9
642#define GL_PIXEL_MAP_S_TO_S 0x0C71
643#define GL_PIXEL_MAP_I_TO_I 0x0C70
644#define GL_PIXEL_MAP_I_TO_R 0x0C72
645#define GL_PIXEL_MAP_I_TO_G 0x0C73
646#define GL_PIXEL_MAP_I_TO_B 0x0C74
647#define GL_PIXEL_MAP_I_TO_A 0x0C75
648#define GL_PIXEL_MAP_R_TO_R 0x0C76
649#define GL_PIXEL_MAP_G_TO_G 0x0C77
650#define GL_PIXEL_MAP_B_TO_B 0x0C78
651#define GL_PIXEL_MAP_A_TO_A 0x0C79
652#define GL_PACK_ALIGNMENT 0x0D05
653#define GL_PACK_LSB_FIRST 0x0D01
654#define GL_PACK_ROW_LENGTH 0x0D02
655#define GL_PACK_SKIP_PIXELS 0x0D04
656#define GL_PACK_SKIP_ROWS 0x0D03
657#define GL_PACK_SWAP_BYTES 0x0D00
658#define GL_UNPACK_ALIGNMENT 0x0CF5
659#define GL_UNPACK_LSB_FIRST 0x0CF1
660#define GL_UNPACK_ROW_LENGTH 0x0CF2
661#define GL_UNPACK_SKIP_PIXELS 0x0CF4
662#define GL_UNPACK_SKIP_ROWS 0x0CF3
663#define GL_UNPACK_SWAP_BYTES 0x0CF0
664#define GL_ZOOM_X 0x0D16
665#define GL_ZOOM_Y 0x0D17
666
667/* Texture mapping */
668#define GL_TEXTURE_ENV 0x2300
669#define GL_TEXTURE_ENV_MODE 0x2200
670#define GL_TEXTURE_1D 0x0DE0
671#define GL_TEXTURE_2D 0x0DE1
672#define GL_TEXTURE_WRAP_S 0x2802
673#define GL_TEXTURE_WRAP_T 0x2803
674#define GL_TEXTURE_MAG_FILTER 0x2800
675#define GL_TEXTURE_MIN_FILTER 0x2801
676#define GL_TEXTURE_ENV_COLOR 0x2201
677#define GL_TEXTURE_GEN_S 0x0C60
678#define GL_TEXTURE_GEN_T 0x0C61
679#define GL_TEXTURE_GEN_R 0x0C62
680#define GL_TEXTURE_GEN_Q 0x0C63
681#define GL_TEXTURE_GEN_MODE 0x2500
682#define GL_TEXTURE_BORDER_COLOR 0x1004
683#define GL_TEXTURE_WIDTH 0x1000
684#define GL_TEXTURE_HEIGHT 0x1001
685#define GL_TEXTURE_BORDER 0x1005
686#define GL_TEXTURE_COMPONENTS 0x1003
687#define GL_TEXTURE_RED_SIZE 0x805C
688#define GL_TEXTURE_GREEN_SIZE 0x805D
689#define GL_TEXTURE_BLUE_SIZE 0x805E
690#define GL_TEXTURE_ALPHA_SIZE 0x805F
691#define GL_TEXTURE_LUMINANCE_SIZE 0x8060
692#define GL_TEXTURE_INTENSITY_SIZE 0x8061
693#define GL_NEAREST_MIPMAP_NEAREST 0x2700
694#define GL_NEAREST_MIPMAP_LINEAR 0x2702
695#define GL_LINEAR_MIPMAP_NEAREST 0x2701
696#define GL_LINEAR_MIPMAP_LINEAR 0x2703
697#define GL_OBJECT_LINEAR 0x2401
698#define GL_OBJECT_PLANE 0x2501
699#define GL_EYE_LINEAR 0x2400
700#define GL_EYE_PLANE 0x2502
701#define GL_SPHERE_MAP 0x2402
702#define GL_DECAL 0x2101
703#define GL_MODULATE 0x2100
704#define GL_NEAREST 0x2600
705#define GL_REPEAT 0x2901
706#define GL_CLAMP 0x2900
707#define GL_S 0x2000
708#define GL_T 0x2001
709#define GL_R 0x2002
710#define GL_Q 0x2003
711
712/* Utility */
713#define GL_VENDOR 0x1F00
714#define GL_RENDERER 0x1F01
715#define GL_VERSION 0x1F02
716#define GL_EXTENSIONS 0x1F03
717
718/* Errors */
719#define GL_NO_ERROR 0
720#define GL_INVALID_ENUM 0x0500
721#define GL_INVALID_VALUE 0x0501
722#define GL_INVALID_OPERATION 0x0502
723#define GL_STACK_OVERFLOW 0x0503
724#define GL_STACK_UNDERFLOW 0x0504
725#define GL_OUT_OF_MEMORY 0x0505
726
727/* glPush/PopAttrib bits */
728#define GL_CURRENT_BIT 0x00000001
729#define GL_POINT_BIT 0x00000002
730#define GL_LINE_BIT 0x00000004
731#define GL_POLYGON_BIT 0x00000008
732#define GL_POLYGON_STIPPLE_BIT 0x00000010
733#define GL_PIXEL_MODE_BIT 0x00000020
734#define GL_LIGHTING_BIT 0x00000040
735#define GL_FOG_BIT 0x00000080
736#define GL_DEPTH_BUFFER_BIT 0x00000100
737#define GL_ACCUM_BUFFER_BIT 0x00000200
738#define GL_STENCIL_BUFFER_BIT 0x00000400
739#define GL_VIEWPORT_BIT 0x00000800
740#define GL_TRANSFORM_BIT 0x00001000
741#define GL_ENABLE_BIT 0x00002000
742#define GL_COLOR_BUFFER_BIT 0x00004000
743#define GL_HINT_BIT 0x00008000
744#define GL_EVAL_BIT 0x00010000
745#define GL_LIST_BIT 0x00020000
746#define GL_TEXTURE_BIT 0x00040000
747#define GL_SCISSOR_BIT 0x00080000
748#define GL_ALL_ATTRIB_BITS 0x000FFFFF
749
750
751/* OpenGL 1.1 */
752#define GL_PROXY_TEXTURE_1D 0x8063
753#define GL_PROXY_TEXTURE_2D 0x8064
754#define GL_TEXTURE_PRIORITY 0x8066
755#define GL_TEXTURE_RESIDENT 0x8067
756#define GL_TEXTURE_BINDING_1D 0x8068
757#define GL_TEXTURE_BINDING_2D 0x8069
758#define GL_TEXTURE_INTERNAL_FORMAT 0x1003
759#define GL_ALPHA4 0x803B
760#define GL_ALPHA8 0x803C
761#define GL_ALPHA12 0x803D
762#define GL_ALPHA16 0x803E
763#define GL_LUMINANCE4 0x803F
764#define GL_LUMINANCE8 0x8040
765#define GL_LUMINANCE12 0x8041
766#define GL_LUMINANCE16 0x8042
767#define GL_LUMINANCE4_ALPHA4 0x8043
768#define GL_LUMINANCE6_ALPHA2 0x8044
769#define GL_LUMINANCE8_ALPHA8 0x8045
770#define GL_LUMINANCE12_ALPHA4 0x8046
771#define GL_LUMINANCE12_ALPHA12 0x8047
772#define GL_LUMINANCE16_ALPHA16 0x8048
773#define GL_INTENSITY 0x8049
774#define GL_INTENSITY4 0x804A
775#define GL_INTENSITY8 0x804B
776#define GL_INTENSITY12 0x804C
777#define GL_INTENSITY16 0x804D
778#define GL_R3_G3_B2 0x2A10
779#define GL_RGB4 0x804F
780#define GL_RGB5 0x8050
781#define GL_RGB8 0x8051
782#define GL_RGB10 0x8052
783#define GL_RGB12 0x8053
784#define GL_RGB16 0x8054
785#define GL_RGBA2 0x8055
786#define GL_RGBA4 0x8056
787#define GL_RGB5_A1 0x8057
788#define GL_RGBA8 0x8058
789#define GL_RGB10_A2 0x8059
790#define GL_RGBA12 0x805A
791#define GL_RGBA16 0x805B
792#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001
793#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002
794#define GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFFF
795#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF
796
797
798
799/*
800 * Miscellaneous
801 */
802
803GLAPI void GLAPIENTRY glClearIndex( GLfloat c );
804
805GLAPI void GLAPIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
806
807GLAPI void GLAPIENTRY glClear( GLbitfield mask );
808
809GLAPI void GLAPIENTRY glIndexMask( GLuint mask );
810
811GLAPI void GLAPIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );
812
813GLAPI void GLAPIENTRY glAlphaFunc( GLenum func, GLclampf ref );
814
815GLAPI void GLAPIENTRY glBlendFunc( GLenum sfactor, GLenum dfactor );
816
817GLAPI void GLAPIENTRY glLogicOp( GLenum opcode );
818
819GLAPI void GLAPIENTRY glCullFace( GLenum mode );
820
821GLAPI void GLAPIENTRY glFrontFace( GLenum mode );
822
823GLAPI void GLAPIENTRY glPointSize( GLfloat size );
824
825GLAPI void GLAPIENTRY glLineWidth( GLfloat width );
826
827GLAPI void GLAPIENTRY glLineStipple( GLint factor, GLushort pattern );
828
829GLAPI void GLAPIENTRY glPolygonMode( GLenum face, GLenum mode );
830
831GLAPI void GLAPIENTRY glPolygonOffset( GLfloat factor, GLfloat units );
832
833GLAPI void GLAPIENTRY glPolygonStipple( const GLubyte *mask );
834
835GLAPI void GLAPIENTRY glGetPolygonStipple( GLubyte *mask );
836
837GLAPI void GLAPIENTRY glEdgeFlag( GLboolean flag );
838
839GLAPI void GLAPIENTRY glEdgeFlagv( const GLboolean *flag );
840
841GLAPI void GLAPIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height);
842
843GLAPI void GLAPIENTRY glClipPlane( GLenum plane, const GLdouble *equation );
844
845GLAPI void GLAPIENTRY glGetClipPlane( GLenum plane, GLdouble *equation );
846
847GLAPI void GLAPIENTRY glDrawBuffer( GLenum mode );
848
849GLAPI void GLAPIENTRY glReadBuffer( GLenum mode );
850
851GLAPI void GLAPIENTRY glEnable( GLenum cap );
852
853GLAPI void GLAPIENTRY glDisable( GLenum cap );
854
855GLAPI GLboolean GLAPIENTRY glIsEnabled( GLenum cap );
856
857
858GLAPI void GLAPIENTRY glEnableClientState( GLenum cap ); /* 1.1 */
859
860GLAPI void GLAPIENTRY glDisableClientState( GLenum cap ); /* 1.1 */
861
862
863GLAPI void GLAPIENTRY glGetBooleanv( GLenum pname, GLboolean *params );
864
865GLAPI void GLAPIENTRY glGetDoublev( GLenum pname, GLdouble *params );
866
867GLAPI void GLAPIENTRY glGetFloatv( GLenum pname, GLfloat *params );
868
869GLAPI void GLAPIENTRY glGetIntegerv( GLenum pname, GLint *params );
870
871
872GLAPI void GLAPIENTRY glPushAttrib( GLbitfield mask );
873
874GLAPI void GLAPIENTRY glPopAttrib( void );
875
876
877GLAPI void GLAPIENTRY glPushClientAttrib( GLbitfield mask ); /* 1.1 */
878
879GLAPI void GLAPIENTRY glPopClientAttrib( void ); /* 1.1 */
880
881
882GLAPI GLint GLAPIENTRY glRenderMode( GLenum mode );
883
884GLAPI GLenum GLAPIENTRY glGetError( void );
885
886GLAPI const GLubyte * GLAPIENTRY glGetString( GLenum name );
887
888GLAPI void GLAPIENTRY glFinish( void );
889
890GLAPI void GLAPIENTRY glFlush( void );
891
892GLAPI void GLAPIENTRY glHint( GLenum target, GLenum mode );
893
894
895/*
896 * Depth Buffer
897 */
898
899GLAPI void GLAPIENTRY glClearDepth( GLclampd depth );
900
901GLAPI void GLAPIENTRY glDepthFunc( GLenum func );
902
903GLAPI void GLAPIENTRY glDepthMask( GLboolean flag );
904
905GLAPI void GLAPIENTRY glDepthRange( GLclampd near_val, GLclampd far_val );
906
907
908/*
909 * Accumulation Buffer
910 */
911
912GLAPI void GLAPIENTRY glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
913
914GLAPI void GLAPIENTRY glAccum( GLenum op, GLfloat value );
915
916
917/*
918 * Transformation
919 */
920
921GLAPI void GLAPIENTRY glMatrixMode( GLenum mode );
922
923GLAPI void GLAPIENTRY glOrtho( GLdouble left, GLdouble right,
924 GLdouble bottom, GLdouble top,
925 GLdouble near_val, GLdouble far_val );
926
927GLAPI void GLAPIENTRY glFrustum( GLdouble left, GLdouble right,
928 GLdouble bottom, GLdouble top,
929 GLdouble near_val, GLdouble far_val );
930
931GLAPI void GLAPIENTRY glViewport( GLint x, GLint y,
932 GLsizei width, GLsizei height );
933
934GLAPI void GLAPIENTRY glPushMatrix( void );
935
936GLAPI void GLAPIENTRY glPopMatrix( void );
937
938GLAPI void GLAPIENTRY glLoadIdentity( void );
939
940GLAPI void GLAPIENTRY glLoadMatrixd( const GLdouble *m );
941GLAPI void GLAPIENTRY glLoadMatrixf( const GLfloat *m );
942
943GLAPI void GLAPIENTRY glMultMatrixd( const GLdouble *m );
944GLAPI void GLAPIENTRY glMultMatrixf( const GLfloat *m );
945
946GLAPI void GLAPIENTRY glRotated( GLdouble angle,
947 GLdouble x, GLdouble y, GLdouble z );
948GLAPI void GLAPIENTRY glRotatef( GLfloat angle,
949 GLfloat x, GLfloat y, GLfloat z );
950
951GLAPI void GLAPIENTRY glScaled( GLdouble x, GLdouble y, GLdouble z );
952GLAPI void GLAPIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z );
953
954GLAPI void GLAPIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble z );
955GLAPI void GLAPIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z );
956
957
958/*
959 * Display Lists
960 */
961
962GLAPI GLboolean GLAPIENTRY glIsList( GLuint list );
963
964GLAPI void GLAPIENTRY glDeleteLists( GLuint list, GLsizei range );
965
966GLAPI GLuint GLAPIENTRY glGenLists( GLsizei range );
967
968GLAPI void GLAPIENTRY glNewList( GLuint list, GLenum mode );
969
970GLAPI void GLAPIENTRY glEndList( void );
971
972GLAPI void GLAPIENTRY glCallList( GLuint list );
973
974GLAPI void GLAPIENTRY glCallLists( GLsizei n, GLenum type,
975 const GLvoid *lists );
976
977GLAPI void GLAPIENTRY glListBase( GLuint base );
978
979
980/*
981 * Drawing Functions
982 */
983
984GLAPI void GLAPIENTRY glBegin( GLenum mode );
985
986GLAPI void GLAPIENTRY glEnd( void );
987
988
989GLAPI void GLAPIENTRY glVertex2d( GLdouble x, GLdouble y );
990GLAPI void GLAPIENTRY glVertex2f( GLfloat x, GLfloat y );
991GLAPI void GLAPIENTRY glVertex2i( GLint x, GLint y );
992GLAPI void GLAPIENTRY glVertex2s( GLshort x, GLshort y );
993
994GLAPI void GLAPIENTRY glVertex3d( GLdouble x, GLdouble y, GLdouble z );
995GLAPI void GLAPIENTRY glVertex3f( GLfloat x, GLfloat y, GLfloat z );
996GLAPI void GLAPIENTRY glVertex3i( GLint x, GLint y, GLint z );
997GLAPI void GLAPIENTRY glVertex3s( GLshort x, GLshort y, GLshort z );
998
999GLAPI void GLAPIENTRY glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
1000GLAPI void GLAPIENTRY glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
1001GLAPI void GLAPIENTRY glVertex4i( GLint x, GLint y, GLint z, GLint w );
1002GLAPI void GLAPIENTRY glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w );
1003
1004GLAPI void GLAPIENTRY glVertex2dv( const GLdouble *v );
1005GLAPI void GLAPIENTRY glVertex2fv( const GLfloat *v );
1006GLAPI void GLAPIENTRY glVertex2iv( const GLint *v );
1007GLAPI void GLAPIENTRY glVertex2sv( const GLshort *v );
1008
1009GLAPI void GLAPIENTRY glVertex3dv( const GLdouble *v );
1010GLAPI void GLAPIENTRY glVertex3fv( const GLfloat *v );
1011GLAPI void GLAPIENTRY glVertex3iv( const GLint *v );
1012GLAPI void GLAPIENTRY glVertex3sv( const GLshort *v );
1013
1014GLAPI void GLAPIENTRY glVertex4dv( const GLdouble *v );
1015GLAPI void GLAPIENTRY glVertex4fv( const GLfloat *v );
1016GLAPI void GLAPIENTRY glVertex4iv( const GLint *v );
1017GLAPI void GLAPIENTRY glVertex4sv( const GLshort *v );
1018
1019
1020GLAPI void GLAPIENTRY glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz );
1021GLAPI void GLAPIENTRY glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz );
1022GLAPI void GLAPIENTRY glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz );
1023GLAPI void GLAPIENTRY glNormal3i( GLint nx, GLint ny, GLint nz );
1024GLAPI void GLAPIENTRY glNormal3s( GLshort nx, GLshort ny, GLshort nz );
1025
1026GLAPI void GLAPIENTRY glNormal3bv( const GLbyte *v );
1027GLAPI void GLAPIENTRY glNormal3dv( const GLdouble *v );
1028GLAPI void GLAPIENTRY glNormal3fv( const GLfloat *v );
1029GLAPI void GLAPIENTRY glNormal3iv( const GLint *v );
1030GLAPI void GLAPIENTRY glNormal3sv( const GLshort *v );
1031
1032
1033GLAPI void GLAPIENTRY glIndexd( GLdouble c );
1034GLAPI void GLAPIENTRY glIndexf( GLfloat c );
1035GLAPI void GLAPIENTRY glIndexi( GLint c );
1036GLAPI void GLAPIENTRY glIndexs( GLshort c );
1037GLAPI void GLAPIENTRY glIndexub( GLubyte c ); /* 1.1 */
1038
1039GLAPI void GLAPIENTRY glIndexdv( const GLdouble *c );
1040GLAPI void GLAPIENTRY glIndexfv( const GLfloat *c );
1041GLAPI void GLAPIENTRY glIndexiv( const GLint *c );
1042GLAPI void GLAPIENTRY glIndexsv( const GLshort *c );
1043GLAPI void GLAPIENTRY glIndexubv( const GLubyte *c ); /* 1.1 */
1044
1045GLAPI void GLAPIENTRY glColor3b( GLbyte red, GLbyte green, GLbyte blue );
1046GLAPI void GLAPIENTRY glColor3d( GLdouble red, GLdouble green, GLdouble blue );
1047GLAPI void GLAPIENTRY glColor3f( GLfloat red, GLfloat green, GLfloat blue );
1048GLAPI void GLAPIENTRY glColor3i( GLint red, GLint green, GLint blue );
1049GLAPI void GLAPIENTRY glColor3s( GLshort red, GLshort green, GLshort blue );
1050GLAPI void GLAPIENTRY glColor3ub( GLubyte red, GLubyte green, GLubyte blue );
1051GLAPI void GLAPIENTRY glColor3ui( GLuint red, GLuint green, GLuint blue );
1052GLAPI void GLAPIENTRY glColor3us( GLushort red, GLushort green, GLushort blue );
1053
1054GLAPI void GLAPIENTRY glColor4b( GLbyte red, GLbyte green,
1055 GLbyte blue, GLbyte alpha );
1056GLAPI void GLAPIENTRY glColor4d( GLdouble red, GLdouble green,
1057 GLdouble blue, GLdouble alpha );
1058GLAPI void GLAPIENTRY glColor4f( GLfloat red, GLfloat green,
1059 GLfloat blue, GLfloat alpha );
1060GLAPI void GLAPIENTRY glColor4i( GLint red, GLint green,
1061 GLint blue, GLint alpha );
1062GLAPI void GLAPIENTRY glColor4s( GLshort red, GLshort green,
1063 GLshort blue, GLshort alpha );
1064GLAPI void GLAPIENTRY glColor4ub( GLubyte red, GLubyte green,
1065 GLubyte blue, GLubyte alpha );
1066GLAPI void GLAPIENTRY glColor4ui( GLuint red, GLuint green,
1067 GLuint blue, GLuint alpha );
1068GLAPI void GLAPIENTRY glColor4us( GLushort red, GLushort green,
1069 GLushort blue, GLushort alpha );
1070
1071
1072GLAPI void GLAPIENTRY glColor3bv( const GLbyte *v );
1073GLAPI void GLAPIENTRY glColor3dv( const GLdouble *v );
1074GLAPI void GLAPIENTRY glColor3fv( const GLfloat *v );
1075GLAPI void GLAPIENTRY glColor3iv( const GLint *v );
1076GLAPI void GLAPIENTRY glColor3sv( const GLshort *v );
1077GLAPI void GLAPIENTRY glColor3ubv( const GLubyte *v );
1078GLAPI void GLAPIENTRY glColor3uiv( const GLuint *v );
1079GLAPI void GLAPIENTRY glColor3usv( const GLushort *v );
1080
1081GLAPI void GLAPIENTRY glColor4bv( const GLbyte *v );
1082GLAPI void GLAPIENTRY glColor4dv( const GLdouble *v );
1083GLAPI void GLAPIENTRY glColor4fv( const GLfloat *v );
1084GLAPI void GLAPIENTRY glColor4iv( const GLint *v );
1085GLAPI void GLAPIENTRY glColor4sv( const GLshort *v );
1086GLAPI void GLAPIENTRY glColor4ubv( const GLubyte *v );
1087GLAPI void GLAPIENTRY glColor4uiv( const GLuint *v );
1088GLAPI void GLAPIENTRY glColor4usv( const GLushort *v );
1089
1090
1091GLAPI void GLAPIENTRY glTexCoord1d( GLdouble s );
1092GLAPI void GLAPIENTRY glTexCoord1f( GLfloat s );
1093GLAPI void GLAPIENTRY glTexCoord1i( GLint s );
1094GLAPI void GLAPIENTRY glTexCoord1s( GLshort s );
1095
1096GLAPI void GLAPIENTRY glTexCoord2d( GLdouble s, GLdouble t );
1097GLAPI void GLAPIENTRY glTexCoord2f( GLfloat s, GLfloat t );
1098GLAPI void GLAPIENTRY glTexCoord2i( GLint s, GLint t );
1099GLAPI void GLAPIENTRY glTexCoord2s( GLshort s, GLshort t );
1100
1101GLAPI void GLAPIENTRY glTexCoord3d( GLdouble s, GLdouble t, GLdouble r );
1102GLAPI void GLAPIENTRY glTexCoord3f( GLfloat s, GLfloat t, GLfloat r );
1103GLAPI void GLAPIENTRY glTexCoord3i( GLint s, GLint t, GLint r );
1104GLAPI void GLAPIENTRY glTexCoord3s( GLshort s, GLshort t, GLshort r );
1105
1106GLAPI void GLAPIENTRY glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q );
1107GLAPI void GLAPIENTRY glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q );
1108GLAPI void GLAPIENTRY glTexCoord4i( GLint s, GLint t, GLint r, GLint q );
1109GLAPI void GLAPIENTRY glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q );
1110
1111GLAPI void GLAPIENTRY glTexCoord1dv( const GLdouble *v );
1112GLAPI void GLAPIENTRY glTexCoord1fv( const GLfloat *v );
1113GLAPI void GLAPIENTRY glTexCoord1iv( const GLint *v );
1114GLAPI void GLAPIENTRY glTexCoord1sv( const GLshort *v );
1115
1116GLAPI void GLAPIENTRY glTexCoord2dv( const GLdouble *v );
1117GLAPI void GLAPIENTRY glTexCoord2fv( const GLfloat *v );
1118GLAPI void GLAPIENTRY glTexCoord2iv( const GLint *v );
1119GLAPI void GLAPIENTRY glTexCoord2sv( const GLshort *v );
1120
1121GLAPI void GLAPIENTRY glTexCoord3dv( const GLdouble *v );
1122GLAPI void GLAPIENTRY glTexCoord3fv( const GLfloat *v );
1123GLAPI void GLAPIENTRY glTexCoord3iv( const GLint *v );
1124GLAPI void GLAPIENTRY glTexCoord3sv( const GLshort *v );
1125
1126GLAPI void GLAPIENTRY glTexCoord4dv( const GLdouble *v );
1127GLAPI void GLAPIENTRY glTexCoord4fv( const GLfloat *v );
1128GLAPI void GLAPIENTRY glTexCoord4iv( const GLint *v );
1129GLAPI void GLAPIENTRY glTexCoord4sv( const GLshort *v );
1130
1131
1132GLAPI void GLAPIENTRY glRasterPos2d( GLdouble x, GLdouble y );
1133GLAPI void GLAPIENTRY glRasterPos2f( GLfloat x, GLfloat y );
1134GLAPI void GLAPIENTRY glRasterPos2i( GLint x, GLint y );
1135GLAPI void GLAPIENTRY glRasterPos2s( GLshort x, GLshort y );
1136
1137GLAPI void GLAPIENTRY glRasterPos3d( GLdouble x, GLdouble y, GLdouble z );
1138GLAPI void GLAPIENTRY glRasterPos3f( GLfloat x, GLfloat y, GLfloat z );
1139GLAPI void GLAPIENTRY glRasterPos3i( GLint x, GLint y, GLint z );
1140GLAPI void GLAPIENTRY glRasterPos3s( GLshort x, GLshort y, GLshort z );
1141
1142GLAPI void GLAPIENTRY glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
1143GLAPI void GLAPIENTRY glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
1144GLAPI void GLAPIENTRY glRasterPos4i( GLint x, GLint y, GLint z, GLint w );
1145GLAPI void GLAPIENTRY glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w );
1146
1147GLAPI void GLAPIENTRY glRasterPos2dv( const GLdouble *v );
1148GLAPI void GLAPIENTRY glRasterPos2fv( const GLfloat *v );
1149GLAPI void GLAPIENTRY glRasterPos2iv( const GLint *v );
1150GLAPI void GLAPIENTRY glRasterPos2sv( const GLshort *v );
1151
1152GLAPI void GLAPIENTRY glRasterPos3dv( const GLdouble *v );
1153GLAPI void GLAPIENTRY glRasterPos3fv( const GLfloat *v );
1154GLAPI void GLAPIENTRY glRasterPos3iv( const GLint *v );
1155GLAPI void GLAPIENTRY glRasterPos3sv( const GLshort *v );
1156
1157GLAPI void GLAPIENTRY glRasterPos4dv( const GLdouble *v );
1158GLAPI void GLAPIENTRY glRasterPos4fv( const GLfloat *v );
1159GLAPI void GLAPIENTRY glRasterPos4iv( const GLint *v );
1160GLAPI void GLAPIENTRY glRasterPos4sv( const GLshort *v );
1161
1162
1163GLAPI void GLAPIENTRY glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 );
1164GLAPI void GLAPIENTRY glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 );
1165GLAPI void GLAPIENTRY glRecti( GLint x1, GLint y1, GLint x2, GLint y2 );
1166GLAPI void GLAPIENTRY glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 );
1167
1168
1169GLAPI void GLAPIENTRY glRectdv( const GLdouble *v1, const GLdouble *v2 );
1170GLAPI void GLAPIENTRY glRectfv( const GLfloat *v1, const GLfloat *v2 );
1171GLAPI void GLAPIENTRY glRectiv( const GLint *v1, const GLint *v2 );
1172GLAPI void GLAPIENTRY glRectsv( const GLshort *v1, const GLshort *v2 );
1173
1174
1175/*
1176 * Vertex Arrays (1.1)
1177 */
1178
1179GLAPI void GLAPIENTRY glVertexPointer( GLint size, GLenum type,
1180 GLsizei stride, const GLvoid *ptr );
1181
1182GLAPI void GLAPIENTRY glNormalPointer( GLenum type, GLsizei stride,
1183 const GLvoid *ptr );
1184
1185GLAPI void GLAPIENTRY glColorPointer( GLint size, GLenum type,
1186 GLsizei stride, const GLvoid *ptr );
1187
1188GLAPI void GLAPIENTRY glIndexPointer( GLenum type, GLsizei stride,
1189 const GLvoid *ptr );
1190
1191GLAPI void GLAPIENTRY glTexCoordPointer( GLint size, GLenum type,
1192 GLsizei stride, const GLvoid *ptr );
1193
1194GLAPI void GLAPIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr );
1195
1196GLAPI void GLAPIENTRY glGetPointerv( GLenum pname, GLvoid **params );
1197
1198GLAPI void GLAPIENTRY glArrayElement( GLint i );
1199
1200GLAPI void GLAPIENTRY glDrawArrays( GLenum mode, GLint first, GLsizei count );
1201
1202GLAPI void GLAPIENTRY glDrawElements( GLenum mode, GLsizei count,
1203 GLenum type, const GLvoid *indices );
1204
1205GLAPI void GLAPIENTRY glInterleavedArrays( GLenum format, GLsizei stride,
1206 const GLvoid *pointer );
1207
1208/*
1209 * Lighting
1210 */
1211
1212GLAPI void GLAPIENTRY glShadeModel( GLenum mode );
1213
1214GLAPI void GLAPIENTRY glLightf( GLenum light, GLenum pname, GLfloat param );
1215GLAPI void GLAPIENTRY glLighti( GLenum light, GLenum pname, GLint param );
1216GLAPI void GLAPIENTRY glLightfv( GLenum light, GLenum pname,
1217 const GLfloat *params );
1218GLAPI void GLAPIENTRY glLightiv( GLenum light, GLenum pname,
1219 const GLint *params );
1220
1221GLAPI void GLAPIENTRY glGetLightfv( GLenum light, GLenum pname,
1222 GLfloat *params );
1223GLAPI void GLAPIENTRY glGetLightiv( GLenum light, GLenum pname,
1224 GLint *params );
1225
1226GLAPI void GLAPIENTRY glLightModelf( GLenum pname, GLfloat param );
1227GLAPI void GLAPIENTRY glLightModeli( GLenum pname, GLint param );
1228GLAPI void GLAPIENTRY glLightModelfv( GLenum pname, const GLfloat *params );
1229GLAPI void GLAPIENTRY glLightModeliv( GLenum pname, const GLint *params );
1230
1231GLAPI void GLAPIENTRY glMaterialf( GLenum face, GLenum pname, GLfloat param );
1232GLAPI void GLAPIENTRY glMateriali( GLenum face, GLenum pname, GLint param );
1233GLAPI void GLAPIENTRY glMaterialfv( GLenum face, GLenum pname, const GLfloat *params );
1234GLAPI void GLAPIENTRY glMaterialiv( GLenum face, GLenum pname, const GLint *params );
1235
1236GLAPI void GLAPIENTRY glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params );
1237GLAPI void GLAPIENTRY glGetMaterialiv( GLenum face, GLenum pname, GLint *params );
1238
1239GLAPI void GLAPIENTRY glColorMaterial( GLenum face, GLenum mode );
1240
1241
1242/*
1243 * Raster functions
1244 */
1245
1246GLAPI void GLAPIENTRY glPixelZoom( GLfloat xfactor, GLfloat yfactor );
1247
1248GLAPI void GLAPIENTRY glPixelStoref( GLenum pname, GLfloat param );
1249GLAPI void GLAPIENTRY glPixelStorei( GLenum pname, GLint param );
1250
1251GLAPI void GLAPIENTRY glPixelTransferf( GLenum pname, GLfloat param );
1252GLAPI void GLAPIENTRY glPixelTransferi( GLenum pname, GLint param );
1253
1254GLAPI void GLAPIENTRY glPixelMapfv( GLenum map, GLsizei mapsize,
1255 const GLfloat *values );
1256GLAPI void GLAPIENTRY glPixelMapuiv( GLenum map, GLsizei mapsize,
1257 const GLuint *values );
1258GLAPI void GLAPIENTRY glPixelMapusv( GLenum map, GLsizei mapsize,
1259 const GLushort *values );
1260
1261GLAPI void GLAPIENTRY glGetPixelMapfv( GLenum map, GLfloat *values );
1262GLAPI void GLAPIENTRY glGetPixelMapuiv( GLenum map, GLuint *values );
1263GLAPI void GLAPIENTRY glGetPixelMapusv( GLenum map, GLushort *values );
1264
1265GLAPI void GLAPIENTRY glBitmap( GLsizei width, GLsizei height,
1266 GLfloat xorig, GLfloat yorig,
1267 GLfloat xmove, GLfloat ymove,
1268 const GLubyte *bitmap );
1269
1270GLAPI void GLAPIENTRY glReadPixels( GLint x, GLint y,
1271 GLsizei width, GLsizei height,
1272 GLenum format, GLenum type,
1273 GLvoid *pixels );
1274
1275GLAPI void GLAPIENTRY glDrawPixels( GLsizei width, GLsizei height,
1276 GLenum format, GLenum type,
1277 const GLvoid *pixels );
1278
1279GLAPI void GLAPIENTRY glCopyPixels( GLint x, GLint y,
1280 GLsizei width, GLsizei height,
1281 GLenum type );
1282
1283/*
1284 * Stenciling
1285 */
1286
1287GLAPI void GLAPIENTRY glStencilFunc( GLenum func, GLint ref, GLuint mask );
1288
1289GLAPI void GLAPIENTRY glStencilMask( GLuint mask );
1290
1291GLAPI void GLAPIENTRY glStencilOp( GLenum fail, GLenum zfail, GLenum zpass );
1292
1293GLAPI void GLAPIENTRY glClearStencil( GLint s );
1294
1295
1296
1297/*
1298 * Texture mapping
1299 */
1300
1301GLAPI void GLAPIENTRY glTexGend( GLenum coord, GLenum pname, GLdouble param );
1302GLAPI void GLAPIENTRY glTexGenf( GLenum coord, GLenum pname, GLfloat param );
1303GLAPI void GLAPIENTRY glTexGeni( GLenum coord, GLenum pname, GLint param );
1304
1305GLAPI void GLAPIENTRY glTexGendv( GLenum coord, GLenum pname, const GLdouble *params );
1306GLAPI void GLAPIENTRY glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params );
1307GLAPI void GLAPIENTRY glTexGeniv( GLenum coord, GLenum pname, const GLint *params );
1308
1309GLAPI void GLAPIENTRY glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params );
1310GLAPI void GLAPIENTRY glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params );
1311GLAPI void GLAPIENTRY glGetTexGeniv( GLenum coord, GLenum pname, GLint *params );
1312
1313
1314GLAPI void GLAPIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param );
1315GLAPI void GLAPIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param );
1316
1317GLAPI void GLAPIENTRY glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params );
1318GLAPI void GLAPIENTRY glTexEnviv( GLenum target, GLenum pname, const GLint *params );
1319
1320GLAPI void GLAPIENTRY glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params );
1321GLAPI void GLAPIENTRY glGetTexEnviv( GLenum target, GLenum pname, GLint *params );
1322
1323
1324GLAPI void GLAPIENTRY glTexParameterf( GLenum target, GLenum pname, GLfloat param );
1325GLAPI void GLAPIENTRY glTexParameteri( GLenum target, GLenum pname, GLint param );
1326
1327GLAPI void GLAPIENTRY glTexParameterfv( GLenum target, GLenum pname,
1328 const GLfloat *params );
1329GLAPI void GLAPIENTRY glTexParameteriv( GLenum target, GLenum pname,
1330 const GLint *params );
1331
1332GLAPI void GLAPIENTRY glGetTexParameterfv( GLenum target,
1333 GLenum pname, GLfloat *params);
1334GLAPI void GLAPIENTRY glGetTexParameteriv( GLenum target,
1335 GLenum pname, GLint *params );
1336
1337GLAPI void GLAPIENTRY glGetTexLevelParameterfv( GLenum target, GLint level,
1338 GLenum pname, GLfloat *params );
1339GLAPI void GLAPIENTRY glGetTexLevelParameteriv( GLenum target, GLint level,
1340 GLenum pname, GLint *params );
1341
1342
1343GLAPI void GLAPIENTRY glTexImage1D( GLenum target, GLint level,
1344 GLint internalFormat,
1345 GLsizei width, GLint border,
1346 GLenum format, GLenum type,
1347 const GLvoid *pixels );
1348
1349GLAPI void GLAPIENTRY glTexImage2D( GLenum target, GLint level,
1350 GLint internalFormat,
1351 GLsizei width, GLsizei height,
1352 GLint border, GLenum format, GLenum type,
1353 const GLvoid *pixels );
1354
1355GLAPI void GLAPIENTRY glGetTexImage( GLenum target, GLint level,
1356 GLenum format, GLenum type,
1357 GLvoid *pixels );
1358
1359
1360/* 1.1 functions */
1361
1362GLAPI void GLAPIENTRY glGenTextures( GLsizei n, GLuint *textures );
1363
1364GLAPI void GLAPIENTRY glDeleteTextures( GLsizei n, const GLuint *textures);
1365
1366GLAPI void GLAPIENTRY glBindTexture( GLenum target, GLuint texture );
1367
1368GLAPI void GLAPIENTRY glPrioritizeTextures( GLsizei n,
1369 const GLuint *textures,
1370 const GLclampf *priorities );
1371
1372GLAPI GLboolean GLAPIENTRY glAreTexturesResident( GLsizei n,
1373 const GLuint *textures,
1374 GLboolean *residences );
1375
1376GLAPI GLboolean GLAPIENTRY glIsTexture( GLuint texture );
1377
1378
1379GLAPI void GLAPIENTRY glTexSubImage1D( GLenum target, GLint level,
1380 GLint xoffset,
1381 GLsizei width, GLenum format,
1382 GLenum type, const GLvoid *pixels );
1383
1384
1385GLAPI void GLAPIENTRY glTexSubImage2D( GLenum target, GLint level,
1386 GLint xoffset, GLint yoffset,
1387 GLsizei width, GLsizei height,
1388 GLenum format, GLenum type,
1389 const GLvoid *pixels );
1390
1391
1392GLAPI void GLAPIENTRY glCopyTexImage1D( GLenum target, GLint level,
1393 GLenum internalformat,
1394 GLint x, GLint y,
1395 GLsizei width, GLint border );
1396
1397
1398GLAPI void GLAPIENTRY glCopyTexImage2D( GLenum target, GLint level,
1399 GLenum internalformat,
1400 GLint x, GLint y,
1401 GLsizei width, GLsizei height,
1402 GLint border );
1403
1404
1405GLAPI void GLAPIENTRY glCopyTexSubImage1D( GLenum target, GLint level,
1406 GLint xoffset, GLint x, GLint y,
1407 GLsizei width );
1408
1409
1410GLAPI void GLAPIENTRY glCopyTexSubImage2D( GLenum target, GLint level,
1411 GLint xoffset, GLint yoffset,
1412 GLint x, GLint y,
1413 GLsizei width, GLsizei height );
1414
1415
1416/*
1417 * Evaluators
1418 */
1419
1420GLAPI void GLAPIENTRY glMap1d( GLenum target, GLdouble u1, GLdouble u2,
1421 GLint stride,
1422 GLint order, const GLdouble *points );
1423GLAPI void GLAPIENTRY glMap1f( GLenum target, GLfloat u1, GLfloat u2,
1424 GLint stride,
1425 GLint order, const GLfloat *points );
1426
1427GLAPI void GLAPIENTRY glMap2d( GLenum target,
1428 GLdouble u1, GLdouble u2, GLint ustride, GLint uorder,
1429 GLdouble v1, GLdouble v2, GLint vstride, GLint vorder,
1430 const GLdouble *points );
1431GLAPI void GLAPIENTRY glMap2f( GLenum target,
1432 GLfloat u1, GLfloat u2, GLint ustride, GLint uorder,
1433 GLfloat v1, GLfloat v2, GLint vstride, GLint vorder,
1434 const GLfloat *points );
1435
1436GLAPI void GLAPIENTRY glGetMapdv( GLenum target, GLenum query, GLdouble *v );
1437GLAPI void GLAPIENTRY glGetMapfv( GLenum target, GLenum query, GLfloat *v );
1438GLAPI void GLAPIENTRY glGetMapiv( GLenum target, GLenum query, GLint *v );
1439
1440GLAPI void GLAPIENTRY glEvalCoord1d( GLdouble u );
1441GLAPI void GLAPIENTRY glEvalCoord1f( GLfloat u );
1442
1443GLAPI void GLAPIENTRY glEvalCoord1dv( const GLdouble *u );
1444GLAPI void GLAPIENTRY glEvalCoord1fv( const GLfloat *u );
1445
1446GLAPI void GLAPIENTRY glEvalCoord2d( GLdouble u, GLdouble v );
1447GLAPI void GLAPIENTRY glEvalCoord2f( GLfloat u, GLfloat v );
1448
1449GLAPI void GLAPIENTRY glEvalCoord2dv( const GLdouble *u );
1450GLAPI void GLAPIENTRY glEvalCoord2fv( const GLfloat *u );
1451
1452GLAPI void GLAPIENTRY glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 );
1453GLAPI void GLAPIENTRY glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 );
1454
1455GLAPI void GLAPIENTRY glMapGrid2d( GLint un, GLdouble u1, GLdouble u2,
1456 GLint vn, GLdouble v1, GLdouble v2 );
1457GLAPI void GLAPIENTRY glMapGrid2f( GLint un, GLfloat u1, GLfloat u2,
1458 GLint vn, GLfloat v1, GLfloat v2 );
1459
1460GLAPI void GLAPIENTRY glEvalPoint1( GLint i );
1461
1462GLAPI void GLAPIENTRY glEvalPoint2( GLint i, GLint j );
1463
1464GLAPI void GLAPIENTRY glEvalMesh1( GLenum mode, GLint i1, GLint i2 );
1465
1466GLAPI void GLAPIENTRY glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
1467
1468
1469/*
1470 * Fog
1471 */
1472
1473GLAPI void GLAPIENTRY glFogf( GLenum pname, GLfloat param );
1474
1475GLAPI void GLAPIENTRY glFogi( GLenum pname, GLint param );
1476
1477GLAPI void GLAPIENTRY glFogfv( GLenum pname, const GLfloat *params );
1478
1479GLAPI void GLAPIENTRY glFogiv( GLenum pname, const GLint *params );
1480
1481
1482/*
1483 * Selection and Feedback
1484 */
1485
1486GLAPI void GLAPIENTRY glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer );
1487
1488GLAPI void GLAPIENTRY glPassThrough( GLfloat token );
1489
1490GLAPI void GLAPIENTRY glSelectBuffer( GLsizei size, GLuint *buffer );
1491
1492GLAPI void GLAPIENTRY glInitNames( void );
1493
1494GLAPI void GLAPIENTRY glLoadName( GLuint name );
1495
1496GLAPI void GLAPIENTRY glPushName( GLuint name );
1497
1498GLAPI void GLAPIENTRY glPopName( void );
1499
1500
1501
1502/*
1503 * OpenGL 1.2
1504 */
1505
1506#define GL_RESCALE_NORMAL 0x803A
1507#define GL_CLAMP_TO_EDGE 0x812F
1508#define GL_MAX_ELEMENTS_VERTICES 0x80E8
1509#define GL_MAX_ELEMENTS_INDICES 0x80E9
1510#define GL_BGR 0x80E0
1511#define GL_BGRA 0x80E1
1512#define GL_UNSIGNED_BYTE_3_3_2 0x8032
1513#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
1514#define GL_UNSIGNED_SHORT_5_6_5 0x8363
1515#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
1516#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
1517#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
1518#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
1519#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
1520#define GL_UNSIGNED_INT_8_8_8_8 0x8035
1521#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
1522#define GL_UNSIGNED_INT_10_10_10_2 0x8036
1523#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
1524#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8
1525#define GL_SINGLE_COLOR 0x81F9
1526#define GL_SEPARATE_SPECULAR_COLOR 0x81FA
1527#define GL_TEXTURE_MIN_LOD 0x813A
1528#define GL_TEXTURE_MAX_LOD 0x813B
1529#define GL_TEXTURE_BASE_LEVEL 0x813C
1530#define GL_TEXTURE_MAX_LEVEL 0x813D
1531#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12
1532#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13
1533#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
1534#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
1535#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
1536#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
1537#define GL_PACK_SKIP_IMAGES 0x806B
1538#define GL_PACK_IMAGE_HEIGHT 0x806C
1539#define GL_UNPACK_SKIP_IMAGES 0x806D
1540#define GL_UNPACK_IMAGE_HEIGHT 0x806E
1541#define GL_TEXTURE_3D 0x806F
1542#define GL_PROXY_TEXTURE_3D 0x8070
1543#define GL_TEXTURE_DEPTH 0x8071
1544#define GL_TEXTURE_WRAP_R 0x8072
1545#define GL_MAX_3D_TEXTURE_SIZE 0x8073
1546#define GL_TEXTURE_BINDING_3D 0x806A
1547
1548GLAPI void GLAPIENTRY glDrawRangeElements( GLenum mode, GLuint start,
1549 GLuint end, GLsizei count, GLenum type, const GLvoid *indices );
1550
1551GLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level,
1552 GLint internalFormat,
1553 GLsizei width, GLsizei height,
1554 GLsizei depth, GLint border,
1555 GLenum format, GLenum type,
1556 const GLvoid *pixels );
1557
1558GLAPI void GLAPIENTRY glTexSubImage3D( GLenum target, GLint level,
1559 GLint xoffset, GLint yoffset,
1560 GLint zoffset, GLsizei width,
1561 GLsizei height, GLsizei depth,
1562 GLenum format,
1563 GLenum type, const GLvoid *pixels);
1564
1565GLAPI void GLAPIENTRY glCopyTexSubImage3D( GLenum target, GLint level,
1566 GLint xoffset, GLint yoffset,
1567 GLint zoffset, GLint x,
1568 GLint y, GLsizei width,
1569 GLsizei height );
1570
1571typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
1572typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
1573typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
1574typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
1575
1576
1577/*
1578 * GL_ARB_imaging
1579 */
1580
1581#define GL_CONSTANT_COLOR 0x8001
1582#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
1583#define GL_CONSTANT_ALPHA 0x8003
1584#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
1585#define GL_COLOR_TABLE 0x80D0
1586#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
1587#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
1588#define GL_PROXY_COLOR_TABLE 0x80D3
1589#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
1590#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
1591#define GL_COLOR_TABLE_SCALE 0x80D6
1592#define GL_COLOR_TABLE_BIAS 0x80D7
1593#define GL_COLOR_TABLE_FORMAT 0x80D8
1594#define GL_COLOR_TABLE_WIDTH 0x80D9
1595#define GL_COLOR_TABLE_RED_SIZE 0x80DA
1596#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB
1597#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC
1598#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
1599#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
1600#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
1601#define GL_CONVOLUTION_1D 0x8010
1602#define GL_CONVOLUTION_2D 0x8011
1603#define GL_SEPARABLE_2D 0x8012
1604#define GL_CONVOLUTION_BORDER_MODE 0x8013
1605#define GL_CONVOLUTION_FILTER_SCALE 0x8014
1606#define GL_CONVOLUTION_FILTER_BIAS 0x8015
1607#define GL_REDUCE 0x8016
1608#define GL_CONVOLUTION_FORMAT 0x8017
1609#define GL_CONVOLUTION_WIDTH 0x8018
1610#define GL_CONVOLUTION_HEIGHT 0x8019
1611#define GL_MAX_CONVOLUTION_WIDTH 0x801A
1612#define GL_MAX_CONVOLUTION_HEIGHT 0x801B
1613#define GL_POST_CONVOLUTION_RED_SCALE 0x801C
1614#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
1615#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
1616#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
1617#define GL_POST_CONVOLUTION_RED_BIAS 0x8020
1618#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
1619#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
1620#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
1621#define GL_CONSTANT_BORDER 0x8151
1622#define GL_REPLICATE_BORDER 0x8153
1623#define GL_CONVOLUTION_BORDER_COLOR 0x8154
1624#define GL_COLOR_MATRIX 0x80B1
1625#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
1626#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
1627#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
1628#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
1629#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
1630#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
1631#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
1632#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
1633#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
1634#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
1635#define GL_HISTOGRAM 0x8024
1636#define GL_PROXY_HISTOGRAM 0x8025
1637#define GL_HISTOGRAM_WIDTH 0x8026
1638#define GL_HISTOGRAM_FORMAT 0x8027
1639#define GL_HISTOGRAM_RED_SIZE 0x8028
1640#define GL_HISTOGRAM_GREEN_SIZE 0x8029
1641#define GL_HISTOGRAM_BLUE_SIZE 0x802A
1642#define GL_HISTOGRAM_ALPHA_SIZE 0x802B
1643#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
1644#define GL_HISTOGRAM_SINK 0x802D
1645#define GL_MINMAX 0x802E
1646#define GL_MINMAX_FORMAT 0x802F
1647#define GL_MINMAX_SINK 0x8030
1648#define GL_TABLE_TOO_LARGE 0x8031
1649#define GL_BLEND_EQUATION 0x8009
1650#define GL_MIN 0x8007
1651#define GL_MAX 0x8008
1652#define GL_FUNC_ADD 0x8006
1653#define GL_FUNC_SUBTRACT 0x800A
1654#define GL_FUNC_REVERSE_SUBTRACT 0x800B
1655#define GL_BLEND_COLOR 0x8005
1656
1657
1658GLAPI void GLAPIENTRY glColorTable( GLenum target, GLenum internalformat,
1659 GLsizei width, GLenum format,
1660 GLenum type, const GLvoid *table );
1661
1662GLAPI void GLAPIENTRY glColorSubTable( GLenum target,
1663 GLsizei start, GLsizei count,
1664 GLenum format, GLenum type,
1665 const GLvoid *data );
1666
1667GLAPI void GLAPIENTRY glColorTableParameteriv(GLenum target, GLenum pname,
1668 const GLint *params);
1669
1670GLAPI void GLAPIENTRY glColorTableParameterfv(GLenum target, GLenum pname,
1671 const GLfloat *params);
1672
1673GLAPI void GLAPIENTRY glCopyColorSubTable( GLenum target, GLsizei start,
1674 GLint x, GLint y, GLsizei width );
1675
1676GLAPI void GLAPIENTRY glCopyColorTable( GLenum target, GLenum internalformat,
1677 GLint x, GLint y, GLsizei width );
1678
1679GLAPI void GLAPIENTRY glGetColorTable( GLenum target, GLenum format,
1680 GLenum type, GLvoid *table );
1681
1682GLAPI void GLAPIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname,
1683 GLfloat *params );
1684
1685GLAPI void GLAPIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname,
1686 GLint *params );
1687
1688GLAPI void GLAPIENTRY glBlendEquation( GLenum mode );
1689
1690GLAPI void GLAPIENTRY glBlendColor( GLclampf red, GLclampf green,
1691 GLclampf blue, GLclampf alpha );
1692
1693GLAPI void GLAPIENTRY glHistogram( GLenum target, GLsizei width,
1694 GLenum internalformat, GLboolean sink );
1695
1696GLAPI void GLAPIENTRY glResetHistogram( GLenum target );
1697
1698GLAPI void GLAPIENTRY glGetHistogram( GLenum target, GLboolean reset,
1699 GLenum format, GLenum type,
1700 GLvoid *values );
1701
1702GLAPI void GLAPIENTRY glGetHistogramParameterfv( GLenum target, GLenum pname,
1703 GLfloat *params );
1704
1705GLAPI void GLAPIENTRY glGetHistogramParameteriv( GLenum target, GLenum pname,
1706 GLint *params );
1707
1708GLAPI void GLAPIENTRY glMinmax( GLenum target, GLenum internalformat,
1709 GLboolean sink );
1710
1711GLAPI void GLAPIENTRY glResetMinmax( GLenum target );
1712
1713GLAPI void GLAPIENTRY glGetMinmax( GLenum target, GLboolean reset,
1714 GLenum format, GLenum types,
1715 GLvoid *values );
1716
1717GLAPI void GLAPIENTRY glGetMinmaxParameterfv( GLenum target, GLenum pname,
1718 GLfloat *params );
1719
1720GLAPI void GLAPIENTRY glGetMinmaxParameteriv( GLenum target, GLenum pname,
1721 GLint *params );
1722
1723GLAPI void GLAPIENTRY glConvolutionFilter1D( GLenum target,
1724 GLenum internalformat, GLsizei width, GLenum format, GLenum type,
1725 const GLvoid *image );
1726
1727GLAPI void GLAPIENTRY glConvolutionFilter2D( GLenum target,
1728 GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
1729 GLenum type, const GLvoid *image );
1730
1731GLAPI void GLAPIENTRY glConvolutionParameterf( GLenum target, GLenum pname,
1732 GLfloat params );
1733
1734GLAPI void GLAPIENTRY glConvolutionParameterfv( GLenum target, GLenum pname,
1735 const GLfloat *params );
1736
1737GLAPI void GLAPIENTRY glConvolutionParameteri( GLenum target, GLenum pname,
1738 GLint params );
1739
1740GLAPI void GLAPIENTRY glConvolutionParameteriv( GLenum target, GLenum pname,
1741 const GLint *params );
1742
1743GLAPI void GLAPIENTRY glCopyConvolutionFilter1D( GLenum target,
1744 GLenum internalformat, GLint x, GLint y, GLsizei width );
1745
1746GLAPI void GLAPIENTRY glCopyConvolutionFilter2D( GLenum target,
1747 GLenum internalformat, GLint x, GLint y, GLsizei width,
1748 GLsizei height);
1749
1750GLAPI void GLAPIENTRY glGetConvolutionFilter( GLenum target, GLenum format,
1751 GLenum type, GLvoid *image );
1752
1753GLAPI void GLAPIENTRY glGetConvolutionParameterfv( GLenum target, GLenum pname,
1754 GLfloat *params );
1755
1756GLAPI void GLAPIENTRY glGetConvolutionParameteriv( GLenum target, GLenum pname,
1757 GLint *params );
1758
1759GLAPI void GLAPIENTRY glSeparableFilter2D( GLenum target,
1760 GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
1761 GLenum type, const GLvoid *row, const GLvoid *column );
1762
1763GLAPI void GLAPIENTRY glGetSeparableFilter( GLenum target, GLenum format,
1764 GLenum type, GLvoid *row, GLvoid *column, GLvoid *span );
1765
1766
1767
1768
1769/*
1770 * OpenGL 1.3
1771 */
1772
1773/* multitexture */
1774#define GL_TEXTURE0 0x84C0
1775#define GL_TEXTURE1 0x84C1
1776#define GL_TEXTURE2 0x84C2
1777#define GL_TEXTURE3 0x84C3
1778#define GL_TEXTURE4 0x84C4
1779#define GL_TEXTURE5 0x84C5
1780#define GL_TEXTURE6 0x84C6
1781#define GL_TEXTURE7 0x84C7
1782#define GL_TEXTURE8 0x84C8
1783#define GL_TEXTURE9 0x84C9
1784#define GL_TEXTURE10 0x84CA
1785#define GL_TEXTURE11 0x84CB
1786#define GL_TEXTURE12 0x84CC
1787#define GL_TEXTURE13 0x84CD
1788#define GL_TEXTURE14 0x84CE
1789#define GL_TEXTURE15 0x84CF
1790#define GL_TEXTURE16 0x84D0
1791#define GL_TEXTURE17 0x84D1
1792#define GL_TEXTURE18 0x84D2
1793#define GL_TEXTURE19 0x84D3
1794#define GL_TEXTURE20 0x84D4
1795#define GL_TEXTURE21 0x84D5
1796#define GL_TEXTURE22 0x84D6
1797#define GL_TEXTURE23 0x84D7
1798#define GL_TEXTURE24 0x84D8
1799#define GL_TEXTURE25 0x84D9
1800#define GL_TEXTURE26 0x84DA
1801#define GL_TEXTURE27 0x84DB
1802#define GL_TEXTURE28 0x84DC
1803#define GL_TEXTURE29 0x84DD
1804#define GL_TEXTURE30 0x84DE
1805#define GL_TEXTURE31 0x84DF
1806#define GL_ACTIVE_TEXTURE 0x84E0
1807#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
1808#define GL_MAX_TEXTURE_UNITS 0x84E2
1809/* texture_cube_map */
1810#define GL_NORMAL_MAP 0x8511
1811#define GL_REFLECTION_MAP 0x8512
1812#define GL_TEXTURE_CUBE_MAP 0x8513
1813#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
1814#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
1815#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
1816#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
1817#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
1818#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
1819#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
1820#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
1821#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
1822/* texture_compression */
1823#define GL_COMPRESSED_ALPHA 0x84E9
1824#define GL_COMPRESSED_LUMINANCE 0x84EA
1825#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB
1826#define GL_COMPRESSED_INTENSITY 0x84EC
1827#define GL_COMPRESSED_RGB 0x84ED
1828#define GL_COMPRESSED_RGBA 0x84EE
1829#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
1830#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
1831#define GL_TEXTURE_COMPRESSED 0x86A1
1832#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
1833#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
1834/* multisample */
1835#define GL_MULTISAMPLE 0x809D
1836#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
1837#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
1838#define GL_SAMPLE_COVERAGE 0x80A0
1839#define GL_SAMPLE_BUFFERS 0x80A8
1840#define GL_SAMPLES 0x80A9
1841#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
1842#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
1843#define GL_MULTISAMPLE_BIT 0x20000000
1844/* transpose_matrix */
1845#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3
1846#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4
1847#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5
1848#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6
1849/* texture_env_combine */
1850#define GL_COMBINE 0x8570
1851#define GL_COMBINE_RGB 0x8571
1852#define GL_COMBINE_ALPHA 0x8572
1853#define GL_SOURCE0_RGB 0x8580
1854#define GL_SOURCE1_RGB 0x8581
1855#define GL_SOURCE2_RGB 0x8582
1856#define GL_SOURCE0_ALPHA 0x8588
1857#define GL_SOURCE1_ALPHA 0x8589
1858#define GL_SOURCE2_ALPHA 0x858A
1859#define GL_OPERAND0_RGB 0x8590
1860#define GL_OPERAND1_RGB 0x8591
1861#define GL_OPERAND2_RGB 0x8592
1862#define GL_OPERAND0_ALPHA 0x8598
1863#define GL_OPERAND1_ALPHA 0x8599
1864#define GL_OPERAND2_ALPHA 0x859A
1865#define GL_RGB_SCALE 0x8573
1866#define GL_ADD_SIGNED 0x8574
1867#define GL_INTERPOLATE 0x8575
1868#define GL_SUBTRACT 0x84E7
1869#define GL_CONSTANT 0x8576
1870#define GL_PRIMARY_COLOR 0x8577
1871#define GL_PREVIOUS 0x8578
1872/* texture_env_dot3 */
1873#define GL_DOT3_RGB 0x86AE
1874#define GL_DOT3_RGBA 0x86AF
1875/* texture_border_clamp */
1876#define GL_CLAMP_TO_BORDER 0x812D
1877
1878GLAPI void GLAPIENTRY glActiveTexture( GLenum texture );
1879
1880GLAPI void GLAPIENTRY glClientActiveTexture( GLenum texture );
1881
1882GLAPI void GLAPIENTRY glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data );
1883
1884GLAPI void GLAPIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data );
1885
1886GLAPI void GLAPIENTRY glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data );
1887
1888GLAPI void GLAPIENTRY glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data );
1889
1890GLAPI void GLAPIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data );
1891
1892GLAPI void GLAPIENTRY glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data );
1893
1894GLAPI void GLAPIENTRY glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img );
1895
1896GLAPI void GLAPIENTRY glMultiTexCoord1d( GLenum target, GLdouble s );
1897
1898GLAPI void GLAPIENTRY glMultiTexCoord1dv( GLenum target, const GLdouble *v );
1899
1900GLAPI void GLAPIENTRY glMultiTexCoord1f( GLenum target, GLfloat s );
1901
1902GLAPI void GLAPIENTRY glMultiTexCoord1fv( GLenum target, const GLfloat *v );
1903
1904GLAPI void GLAPIENTRY glMultiTexCoord1i( GLenum target, GLint s );
1905
1906GLAPI void GLAPIENTRY glMultiTexCoord1iv( GLenum target, const GLint *v );
1907
1908GLAPI void GLAPIENTRY glMultiTexCoord1s( GLenum target, GLshort s );
1909
1910GLAPI void GLAPIENTRY glMultiTexCoord1sv( GLenum target, const GLshort *v );
1911
1912GLAPI void GLAPIENTRY glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t );
1913
1914GLAPI void GLAPIENTRY glMultiTexCoord2dv( GLenum target, const GLdouble *v );
1915
1916GLAPI void GLAPIENTRY glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t );
1917
1918GLAPI void GLAPIENTRY glMultiTexCoord2fv( GLenum target, const GLfloat *v );
1919
1920GLAPI void GLAPIENTRY glMultiTexCoord2i( GLenum target, GLint s, GLint t );
1921
1922GLAPI void GLAPIENTRY glMultiTexCoord2iv( GLenum target, const GLint *v );
1923
1924GLAPI void GLAPIENTRY glMultiTexCoord2s( GLenum target, GLshort s, GLshort t );
1925
1926GLAPI void GLAPIENTRY glMultiTexCoord2sv( GLenum target, const GLshort *v );
1927
1928GLAPI void GLAPIENTRY glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r );
1929
1930GLAPI void GLAPIENTRY glMultiTexCoord3dv( GLenum target, const GLdouble *v );
1931
1932GLAPI void GLAPIENTRY glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r );
1933
1934GLAPI void GLAPIENTRY glMultiTexCoord3fv( GLenum target, const GLfloat *v );
1935
1936GLAPI void GLAPIENTRY glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r );
1937
1938GLAPI void GLAPIENTRY glMultiTexCoord3iv( GLenum target, const GLint *v );
1939
1940GLAPI void GLAPIENTRY glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r );
1941
1942GLAPI void GLAPIENTRY glMultiTexCoord3sv( GLenum target, const GLshort *v );
1943
1944GLAPI void GLAPIENTRY glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q );
1945
1946GLAPI void GLAPIENTRY glMultiTexCoord4dv( GLenum target, const GLdouble *v );
1947
1948GLAPI void GLAPIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q );
1949
1950GLAPI void GLAPIENTRY glMultiTexCoord4fv( GLenum target, const GLfloat *v );
1951
1952GLAPI void GLAPIENTRY glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q );
1953
1954GLAPI void GLAPIENTRY glMultiTexCoord4iv( GLenum target, const GLint *v );
1955
1956GLAPI void GLAPIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q );
1957
1958GLAPI void GLAPIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v );
1959
1960
1961GLAPI void GLAPIENTRY glLoadTransposeMatrixd( const GLdouble m[16] );
1962
1963GLAPI void GLAPIENTRY glLoadTransposeMatrixf( const GLfloat m[16] );
1964
1965GLAPI void GLAPIENTRY glMultTransposeMatrixd( const GLdouble m[16] );
1966
1967GLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat m[16] );
1968
1969GLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert );
1970
1971
1972typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
1973typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
1974typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
1975typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
1976typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
1977typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
1978typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
1979typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
1980typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img);
1981
1982
1983
1984/*
1985 * GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1)
1986 */
1987#ifndef GL_ARB_multitexture
1988#define GL_ARB_multitexture 1
1989
1990#define GL_TEXTURE0_ARB 0x84C0
1991#define GL_TEXTURE1_ARB 0x84C1
1992#define GL_TEXTURE2_ARB 0x84C2
1993#define GL_TEXTURE3_ARB 0x84C3
1994#define GL_TEXTURE4_ARB 0x84C4
1995#define GL_TEXTURE5_ARB 0x84C5
1996#define GL_TEXTURE6_ARB 0x84C6
1997#define GL_TEXTURE7_ARB 0x84C7
1998#define GL_TEXTURE8_ARB 0x84C8
1999#define GL_TEXTURE9_ARB 0x84C9
2000#define GL_TEXTURE10_ARB 0x84CA
2001#define GL_TEXTURE11_ARB 0x84CB
2002#define GL_TEXTURE12_ARB 0x84CC
2003#define GL_TEXTURE13_ARB 0x84CD
2004#define GL_TEXTURE14_ARB 0x84CE
2005#define GL_TEXTURE15_ARB 0x84CF
2006#define GL_TEXTURE16_ARB 0x84D0
2007#define GL_TEXTURE17_ARB 0x84D1
2008#define GL_TEXTURE18_ARB 0x84D2
2009#define GL_TEXTURE19_ARB 0x84D3
2010#define GL_TEXTURE20_ARB 0x84D4
2011#define GL_TEXTURE21_ARB 0x84D5
2012#define GL_TEXTURE22_ARB 0x84D6
2013#define GL_TEXTURE23_ARB 0x84D7
2014#define GL_TEXTURE24_ARB 0x84D8
2015#define GL_TEXTURE25_ARB 0x84D9
2016#define GL_TEXTURE26_ARB 0x84DA
2017#define GL_TEXTURE27_ARB 0x84DB
2018#define GL_TEXTURE28_ARB 0x84DC
2019#define GL_TEXTURE29_ARB 0x84DD
2020#define GL_TEXTURE30_ARB 0x84DE
2021#define GL_TEXTURE31_ARB 0x84DF
2022#define GL_ACTIVE_TEXTURE_ARB 0x84E0
2023#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
2024#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
2025
2026GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture);
2027GLAPI void GLAPIENTRY glClientActiveTextureARB(GLenum texture);
2028GLAPI void GLAPIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s);
2029GLAPI void GLAPIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble *v);
2030GLAPI void GLAPIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s);
2031GLAPI void GLAPIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v);
2032GLAPI void GLAPIENTRY glMultiTexCoord1iARB(GLenum target, GLint s);
2033GLAPI void GLAPIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint *v);
2034GLAPI void GLAPIENTRY glMultiTexCoord1sARB(GLenum target, GLshort s);
2035GLAPI void GLAPIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort *v);
2036GLAPI void GLAPIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t);
2037GLAPI void GLAPIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble *v);
2038GLAPI void GLAPIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t);
2039GLAPI void GLAPIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v);
2040GLAPI void GLAPIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t);
2041GLAPI void GLAPIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint *v);
2042GLAPI void GLAPIENTRY glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t);
2043GLAPI void GLAPIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v);
2044GLAPI void GLAPIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r);
2045GLAPI void GLAPIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble *v);
2046GLAPI void GLAPIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r);
2047GLAPI void GLAPIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v);
2048GLAPI void GLAPIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r);
2049GLAPI void GLAPIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint *v);
2050GLAPI void GLAPIENTRY glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r);
2051GLAPI void GLAPIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort *v);
2052GLAPI void GLAPIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
2053GLAPI void GLAPIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble *v);
2054GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
2055GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v);
2056GLAPI void GLAPIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q);
2057GLAPI void GLAPIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint *v);
2058GLAPI void GLAPIENTRY glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
2059GLAPI void GLAPIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v);
2060
2061typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
2062typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
2063typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
2064typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
2065typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
2066typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
2067typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
2068typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
2069typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
2070typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
2071typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
2072typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
2073typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
2074typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
2075typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
2076typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
2077typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
2078typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
2079typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
2080typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
2081typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
2082typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
2083typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
2084typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
2085typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
2086typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
2087typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
2088typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
2089typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
2090typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
2091typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
2092typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
2093typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
2094typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
2095
2096#endif /* GL_ARB_multitexture */
2097
2098
2099
2100/*
2101 * Define this token if you want "old-style" header file behaviour (extensions
2102 * defined in gl.h). Otherwise, extensions will be included from glext.h.
2103 */
2104#if !defined(NO_SDL_GLEXT) && !defined(GL_GLEXT_LEGACY)
2105#include "SDL_opengl_glext.h"
2106#endif /* GL_GLEXT_LEGACY */
2107
2108
2109
2110/*
2111 * ???. GL_MESA_packed_depth_stencil
2112 * XXX obsolete
2113 */
2114#ifndef GL_MESA_packed_depth_stencil
2115#define GL_MESA_packed_depth_stencil 1
2116
2117#define GL_DEPTH_STENCIL_MESA 0x8750
2118#define GL_UNSIGNED_INT_24_8_MESA 0x8751
2119#define GL_UNSIGNED_INT_8_24_REV_MESA 0x8752
2120#define GL_UNSIGNED_SHORT_15_1_MESA 0x8753
2121#define GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754
2122
2123#endif /* GL_MESA_packed_depth_stencil */
2124
2125
2126#ifndef GL_ATI_blend_equation_separate
2127#define GL_ATI_blend_equation_separate 1
2128
2129#define GL_ALPHA_BLEND_EQUATION_ATI 0x883D
2130
2131GLAPI void GLAPIENTRY glBlendEquationSeparateATI( GLenum modeRGB, GLenum modeA );
2132typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEATIPROC) (GLenum modeRGB, GLenum modeA);
2133
2134#endif /* GL_ATI_blend_equation_separate */
2135
2136
2137/* GL_OES_EGL_image */
2138#ifndef GL_OES_EGL_image
2139typedef void* GLeglImageOES;
2140#endif
2141
2142#ifndef GL_OES_EGL_image
2143#define GL_OES_EGL_image 1
2144#ifdef GL_GLEXT_PROTOTYPES
2145GLAPI void APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image);
2146GLAPI void APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image);
2147#endif
2148typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
2149typedef void (APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
2150#endif
2151
2152
2153/**
2154 ** NOTE!!!!! If you add new functions to this file, or update
2155 ** glext.h be sure to regenerate the gl_mangle.h file. See comments
2156 ** in that file for details.
2157 **/
2158
2159
2160
2161/**********************************************************************
2162 * Begin system-specific stuff
2163 */
2164#if defined(PRAGMA_EXPORT_SUPPORTED)
2165#pragma export off
2166#endif
2167
2168/*
2169 * End system-specific stuff
2170 **********************************************************************/
2171
2172
2173#ifdef __cplusplus
2174}
2175#endif
2176
2177#endif /* __gl_h_ */
2178
2179#endif /* !__IPHONEOS__ */
2180
2181#endif /* SDL_opengl_h_ */
2182
2183/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_opengl_glext.h b/vendor/SDL2/include/SDL_opengl_glext.h new file mode 100644 index 0000000..6a402b1 --- /dev/null +++ b/vendor/SDL2/include/SDL_opengl_glext.h
@@ -0,0 +1,11180 @@
1#ifndef __glext_h_
2#define __glext_h_ 1
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8/*
9** Copyright (c) 2013-2014 The Khronos Group Inc.
10**
11** Permission is hereby granted, free of charge, to any person obtaining a
12** copy of this software and/or associated documentation files (the
13** "Materials"), to deal in the Materials without restriction, including
14** without limitation the rights to use, copy, modify, merge, publish,
15** distribute, sublicense, and/or sell copies of the Materials, and to
16** permit persons to whom the Materials are furnished to do so, subject to
17** the following conditions:
18**
19** The above copyright notice and this permission notice shall be included
20** in all copies or substantial portions of the Materials.
21**
22** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
25** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
26** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
27** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
28** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
29*/
30/*
31** This header is generated from the Khronos OpenGL / OpenGL ES XML
32** API Registry. The current version of the Registry, generator scripts
33** used to make the header, and the header can be found at
34** http://www.opengl.org/registry/
35**
36** Khronos $Revision: 26745 $ on $Date: 2014-05-21 03:12:26 -0700 (Wed, 21 May 2014) $
37*/
38
39#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
40#ifndef WIN32_LEAN_AND_MEAN
41#define WIN32_LEAN_AND_MEAN 1
42#endif
43#ifndef NOMINMAX /* don't define min() and max(). */
44#define NOMINMAX
45#endif
46#include <windows.h>
47#endif
48
49#ifndef APIENTRY
50#define APIENTRY
51#endif
52#ifndef APIENTRYP
53#define APIENTRYP APIENTRY *
54#endif
55#ifndef GLAPI
56#define GLAPI extern
57#endif
58
59#define GL_GLEXT_VERSION 20140521
60
61/* Generated C header for:
62 * API: gl
63 * Profile: compatibility
64 * Versions considered: .*
65 * Versions emitted: 1\.[2-9]|[234]\.[0-9]
66 * Default extensions included: gl
67 * Additional extensions included: _nomatch_^
68 * Extensions removed: _nomatch_^
69 */
70
71#ifndef GL_VERSION_1_2
72#define GL_VERSION_1_2 1
73#define GL_UNSIGNED_BYTE_3_3_2 0x8032
74#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
75#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
76#define GL_UNSIGNED_INT_8_8_8_8 0x8035
77#define GL_UNSIGNED_INT_10_10_10_2 0x8036
78#define GL_TEXTURE_BINDING_3D 0x806A
79#define GL_PACK_SKIP_IMAGES 0x806B
80#define GL_PACK_IMAGE_HEIGHT 0x806C
81#define GL_UNPACK_SKIP_IMAGES 0x806D
82#define GL_UNPACK_IMAGE_HEIGHT 0x806E
83#define GL_TEXTURE_3D 0x806F
84#define GL_PROXY_TEXTURE_3D 0x8070
85#define GL_TEXTURE_DEPTH 0x8071
86#define GL_TEXTURE_WRAP_R 0x8072
87#define GL_MAX_3D_TEXTURE_SIZE 0x8073
88#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
89#define GL_UNSIGNED_SHORT_5_6_5 0x8363
90#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
91#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
92#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
93#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
94#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
95#define GL_BGR 0x80E0
96#define GL_BGRA 0x80E1
97#define GL_MAX_ELEMENTS_VERTICES 0x80E8
98#define GL_MAX_ELEMENTS_INDICES 0x80E9
99#define GL_CLAMP_TO_EDGE 0x812F
100#define GL_TEXTURE_MIN_LOD 0x813A
101#define GL_TEXTURE_MAX_LOD 0x813B
102#define GL_TEXTURE_BASE_LEVEL 0x813C
103#define GL_TEXTURE_MAX_LEVEL 0x813D
104#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12
105#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13
106#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
107#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
108#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
109#define GL_RESCALE_NORMAL 0x803A
110#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8
111#define GL_SINGLE_COLOR 0x81F9
112#define GL_SEPARATE_SPECULAR_COLOR 0x81FA
113#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
114typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
115typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
116typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
117typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
118#ifdef GL_GLEXT_PROTOTYPES
119GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
120GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
121GLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
122GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
123#endif
124#endif /* GL_VERSION_1_2 */
125
126#ifndef GL_VERSION_1_3
127#define GL_VERSION_1_3 1
128#define GL_TEXTURE0 0x84C0
129#define GL_TEXTURE1 0x84C1
130#define GL_TEXTURE2 0x84C2
131#define GL_TEXTURE3 0x84C3
132#define GL_TEXTURE4 0x84C4
133#define GL_TEXTURE5 0x84C5
134#define GL_TEXTURE6 0x84C6
135#define GL_TEXTURE7 0x84C7
136#define GL_TEXTURE8 0x84C8
137#define GL_TEXTURE9 0x84C9
138#define GL_TEXTURE10 0x84CA
139#define GL_TEXTURE11 0x84CB
140#define GL_TEXTURE12 0x84CC
141#define GL_TEXTURE13 0x84CD
142#define GL_TEXTURE14 0x84CE
143#define GL_TEXTURE15 0x84CF
144#define GL_TEXTURE16 0x84D0
145#define GL_TEXTURE17 0x84D1
146#define GL_TEXTURE18 0x84D2
147#define GL_TEXTURE19 0x84D3
148#define GL_TEXTURE20 0x84D4
149#define GL_TEXTURE21 0x84D5
150#define GL_TEXTURE22 0x84D6
151#define GL_TEXTURE23 0x84D7
152#define GL_TEXTURE24 0x84D8
153#define GL_TEXTURE25 0x84D9
154#define GL_TEXTURE26 0x84DA
155#define GL_TEXTURE27 0x84DB
156#define GL_TEXTURE28 0x84DC
157#define GL_TEXTURE29 0x84DD
158#define GL_TEXTURE30 0x84DE
159#define GL_TEXTURE31 0x84DF
160#define GL_ACTIVE_TEXTURE 0x84E0
161#define GL_MULTISAMPLE 0x809D
162#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
163#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
164#define GL_SAMPLE_COVERAGE 0x80A0
165#define GL_SAMPLE_BUFFERS 0x80A8
166#define GL_SAMPLES 0x80A9
167#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
168#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
169#define GL_TEXTURE_CUBE_MAP 0x8513
170#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
171#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
172#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
173#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
174#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
175#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
176#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
177#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
178#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
179#define GL_COMPRESSED_RGB 0x84ED
180#define GL_COMPRESSED_RGBA 0x84EE
181#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
182#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
183#define GL_TEXTURE_COMPRESSED 0x86A1
184#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
185#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
186#define GL_CLAMP_TO_BORDER 0x812D
187#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
188#define GL_MAX_TEXTURE_UNITS 0x84E2
189#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3
190#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4
191#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5
192#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6
193#define GL_MULTISAMPLE_BIT 0x20000000
194#define GL_NORMAL_MAP 0x8511
195#define GL_REFLECTION_MAP 0x8512
196#define GL_COMPRESSED_ALPHA 0x84E9
197#define GL_COMPRESSED_LUMINANCE 0x84EA
198#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB
199#define GL_COMPRESSED_INTENSITY 0x84EC
200#define GL_COMBINE 0x8570
201#define GL_COMBINE_RGB 0x8571
202#define GL_COMBINE_ALPHA 0x8572
203#define GL_SOURCE0_RGB 0x8580
204#define GL_SOURCE1_RGB 0x8581
205#define GL_SOURCE2_RGB 0x8582
206#define GL_SOURCE0_ALPHA 0x8588
207#define GL_SOURCE1_ALPHA 0x8589
208#define GL_SOURCE2_ALPHA 0x858A
209#define GL_OPERAND0_RGB 0x8590
210#define GL_OPERAND1_RGB 0x8591
211#define GL_OPERAND2_RGB 0x8592
212#define GL_OPERAND0_ALPHA 0x8598
213#define GL_OPERAND1_ALPHA 0x8599
214#define GL_OPERAND2_ALPHA 0x859A
215#define GL_RGB_SCALE 0x8573
216#define GL_ADD_SIGNED 0x8574
217#define GL_INTERPOLATE 0x8575
218#define GL_SUBTRACT 0x84E7
219#define GL_CONSTANT 0x8576
220#define GL_PRIMARY_COLOR 0x8577
221#define GL_PREVIOUS 0x8578
222#define GL_DOT3_RGB 0x86AE
223#define GL_DOT3_RGBA 0x86AF
224typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
225typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert);
226typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
227typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
228typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
229typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
230typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
231typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
232typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img);
233typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
234typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
235typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
236typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
237typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
238typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
239typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
240typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
241typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
242typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
243typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
244typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
245typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
246typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
247typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
248typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
249typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
250typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
251typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
252typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
253typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
254typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
255typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
256typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
257typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
258typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
259typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
260typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
261typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
262typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
263typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
264typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
265typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
266typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);
267typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);
268typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);
269typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
270#ifdef GL_GLEXT_PROTOTYPES
271GLAPI void APIENTRY glActiveTexture (GLenum texture);
272GLAPI void APIENTRY glSampleCoverage (GLfloat value, GLboolean invert);
273GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
274GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
275GLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
276GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
277GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
278GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
279GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, void *img);
280GLAPI void APIENTRY glClientActiveTexture (GLenum texture);
281GLAPI void APIENTRY glMultiTexCoord1d (GLenum target, GLdouble s);
282GLAPI void APIENTRY glMultiTexCoord1dv (GLenum target, const GLdouble *v);
283GLAPI void APIENTRY glMultiTexCoord1f (GLenum target, GLfloat s);
284GLAPI void APIENTRY glMultiTexCoord1fv (GLenum target, const GLfloat *v);
285GLAPI void APIENTRY glMultiTexCoord1i (GLenum target, GLint s);
286GLAPI void APIENTRY glMultiTexCoord1iv (GLenum target, const GLint *v);
287GLAPI void APIENTRY glMultiTexCoord1s (GLenum target, GLshort s);
288GLAPI void APIENTRY glMultiTexCoord1sv (GLenum target, const GLshort *v);
289GLAPI void APIENTRY glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t);
290GLAPI void APIENTRY glMultiTexCoord2dv (GLenum target, const GLdouble *v);
291GLAPI void APIENTRY glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t);
292GLAPI void APIENTRY glMultiTexCoord2fv (GLenum target, const GLfloat *v);
293GLAPI void APIENTRY glMultiTexCoord2i (GLenum target, GLint s, GLint t);
294GLAPI void APIENTRY glMultiTexCoord2iv (GLenum target, const GLint *v);
295GLAPI void APIENTRY glMultiTexCoord2s (GLenum target, GLshort s, GLshort t);
296GLAPI void APIENTRY glMultiTexCoord2sv (GLenum target, const GLshort *v);
297GLAPI void APIENTRY glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r);
298GLAPI void APIENTRY glMultiTexCoord3dv (GLenum target, const GLdouble *v);
299GLAPI void APIENTRY glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r);
300GLAPI void APIENTRY glMultiTexCoord3fv (GLenum target, const GLfloat *v);
301GLAPI void APIENTRY glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r);
302GLAPI void APIENTRY glMultiTexCoord3iv (GLenum target, const GLint *v);
303GLAPI void APIENTRY glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r);
304GLAPI void APIENTRY glMultiTexCoord3sv (GLenum target, const GLshort *v);
305GLAPI void APIENTRY glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
306GLAPI void APIENTRY glMultiTexCoord4dv (GLenum target, const GLdouble *v);
307GLAPI void APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
308GLAPI void APIENTRY glMultiTexCoord4fv (GLenum target, const GLfloat *v);
309GLAPI void APIENTRY glMultiTexCoord4i (GLenum target, GLint s, GLint t, GLint r, GLint q);
310GLAPI void APIENTRY glMultiTexCoord4iv (GLenum target, const GLint *v);
311GLAPI void APIENTRY glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
312GLAPI void APIENTRY glMultiTexCoord4sv (GLenum target, const GLshort *v);
313GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *m);
314GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *m);
315GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *m);
316GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *m);
317#endif
318#endif /* GL_VERSION_1_3 */
319
320#ifndef GL_VERSION_1_4
321#define GL_VERSION_1_4 1
322#define GL_BLEND_DST_RGB 0x80C8
323#define GL_BLEND_SRC_RGB 0x80C9
324#define GL_BLEND_DST_ALPHA 0x80CA
325#define GL_BLEND_SRC_ALPHA 0x80CB
326#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128
327#define GL_DEPTH_COMPONENT16 0x81A5
328#define GL_DEPTH_COMPONENT24 0x81A6
329#define GL_DEPTH_COMPONENT32 0x81A7
330#define GL_MIRRORED_REPEAT 0x8370
331#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD
332#define GL_TEXTURE_LOD_BIAS 0x8501
333#define GL_INCR_WRAP 0x8507
334#define GL_DECR_WRAP 0x8508
335#define GL_TEXTURE_DEPTH_SIZE 0x884A
336#define GL_TEXTURE_COMPARE_MODE 0x884C
337#define GL_TEXTURE_COMPARE_FUNC 0x884D
338#define GL_POINT_SIZE_MIN 0x8126
339#define GL_POINT_SIZE_MAX 0x8127
340#define GL_POINT_DISTANCE_ATTENUATION 0x8129
341#define GL_GENERATE_MIPMAP 0x8191
342#define GL_GENERATE_MIPMAP_HINT 0x8192
343#define GL_FOG_COORDINATE_SOURCE 0x8450
344#define GL_FOG_COORDINATE 0x8451
345#define GL_FRAGMENT_DEPTH 0x8452
346#define GL_CURRENT_FOG_COORDINATE 0x8453
347#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454
348#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455
349#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456
350#define GL_FOG_COORDINATE_ARRAY 0x8457
351#define GL_COLOR_SUM 0x8458
352#define GL_CURRENT_SECONDARY_COLOR 0x8459
353#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A
354#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B
355#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C
356#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D
357#define GL_SECONDARY_COLOR_ARRAY 0x845E
358#define GL_TEXTURE_FILTER_CONTROL 0x8500
359#define GL_DEPTH_TEXTURE_MODE 0x884B
360#define GL_COMPARE_R_TO_TEXTURE 0x884E
361#define GL_FUNC_ADD 0x8006
362#define GL_FUNC_SUBTRACT 0x800A
363#define GL_FUNC_REVERSE_SUBTRACT 0x800B
364#define GL_MIN 0x8007
365#define GL_MAX 0x8008
366#define GL_CONSTANT_COLOR 0x8001
367#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
368#define GL_CONSTANT_ALPHA 0x8003
369#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
370typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
371typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
372typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
373typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
374typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
375typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
376typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
377typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord);
378typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
379typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord);
380typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord);
381typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const void *pointer);
382typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
383typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v);
384typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
385typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v);
386typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);
387typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v);
388typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue);
389typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v);
390typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);
391typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v);
392typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);
393typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v);
394typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);
395typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v);
396typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);
397typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v);
398typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
399typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y);
400typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v);
401typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y);
402typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v);
403typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y);
404typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v);
405typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y);
406typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v);
407typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);
408typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v);
409typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);
410typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v);
411typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z);
412typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v);
413typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z);
414typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v);
415typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
416typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
417#ifdef GL_GLEXT_PROTOTYPES
418GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
419GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
420GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
421GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param);
422GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params);
423GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param);
424GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params);
425GLAPI void APIENTRY glFogCoordf (GLfloat coord);
426GLAPI void APIENTRY glFogCoordfv (const GLfloat *coord);
427GLAPI void APIENTRY glFogCoordd (GLdouble coord);
428GLAPI void APIENTRY glFogCoorddv (const GLdouble *coord);
429GLAPI void APIENTRY glFogCoordPointer (GLenum type, GLsizei stride, const void *pointer);
430GLAPI void APIENTRY glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue);
431GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *v);
432GLAPI void APIENTRY glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue);
433GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *v);
434GLAPI void APIENTRY glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue);
435GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *v);
436GLAPI void APIENTRY glSecondaryColor3i (GLint red, GLint green, GLint blue);
437GLAPI void APIENTRY glSecondaryColor3iv (const GLint *v);
438GLAPI void APIENTRY glSecondaryColor3s (GLshort red, GLshort green, GLshort blue);
439GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *v);
440GLAPI void APIENTRY glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue);
441GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *v);
442GLAPI void APIENTRY glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue);
443GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *v);
444GLAPI void APIENTRY glSecondaryColor3us (GLushort red, GLushort green, GLushort blue);
445GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *v);
446GLAPI void APIENTRY glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
447GLAPI void APIENTRY glWindowPos2d (GLdouble x, GLdouble y);
448GLAPI void APIENTRY glWindowPos2dv (const GLdouble *v);
449GLAPI void APIENTRY glWindowPos2f (GLfloat x, GLfloat y);
450GLAPI void APIENTRY glWindowPos2fv (const GLfloat *v);
451GLAPI void APIENTRY glWindowPos2i (GLint x, GLint y);
452GLAPI void APIENTRY glWindowPos2iv (const GLint *v);
453GLAPI void APIENTRY glWindowPos2s (GLshort x, GLshort y);
454GLAPI void APIENTRY glWindowPos2sv (const GLshort *v);
455GLAPI void APIENTRY glWindowPos3d (GLdouble x, GLdouble y, GLdouble z);
456GLAPI void APIENTRY glWindowPos3dv (const GLdouble *v);
457GLAPI void APIENTRY glWindowPos3f (GLfloat x, GLfloat y, GLfloat z);
458GLAPI void APIENTRY glWindowPos3fv (const GLfloat *v);
459GLAPI void APIENTRY glWindowPos3i (GLint x, GLint y, GLint z);
460GLAPI void APIENTRY glWindowPos3iv (const GLint *v);
461GLAPI void APIENTRY glWindowPos3s (GLshort x, GLshort y, GLshort z);
462GLAPI void APIENTRY glWindowPos3sv (const GLshort *v);
463GLAPI void APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
464GLAPI void APIENTRY glBlendEquation (GLenum mode);
465#endif
466#endif /* GL_VERSION_1_4 */
467
468#ifndef GL_VERSION_1_5
469#define GL_VERSION_1_5 1
470#include <stddef.h>
471#ifdef __MACOSX__
472typedef long GLsizeiptr;
473typedef long GLintptr;
474#else
475typedef ptrdiff_t GLsizeiptr;
476typedef ptrdiff_t GLintptr;
477#endif
478#define GL_BUFFER_SIZE 0x8764
479#define GL_BUFFER_USAGE 0x8765
480#define GL_QUERY_COUNTER_BITS 0x8864
481#define GL_CURRENT_QUERY 0x8865
482#define GL_QUERY_RESULT 0x8866
483#define GL_QUERY_RESULT_AVAILABLE 0x8867
484#define GL_ARRAY_BUFFER 0x8892
485#define GL_ELEMENT_ARRAY_BUFFER 0x8893
486#define GL_ARRAY_BUFFER_BINDING 0x8894
487#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
488#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
489#define GL_READ_ONLY 0x88B8
490#define GL_WRITE_ONLY 0x88B9
491#define GL_READ_WRITE 0x88BA
492#define GL_BUFFER_ACCESS 0x88BB
493#define GL_BUFFER_MAPPED 0x88BC
494#define GL_BUFFER_MAP_POINTER 0x88BD
495#define GL_STREAM_DRAW 0x88E0
496#define GL_STREAM_READ 0x88E1
497#define GL_STREAM_COPY 0x88E2
498#define GL_STATIC_DRAW 0x88E4
499#define GL_STATIC_READ 0x88E5
500#define GL_STATIC_COPY 0x88E6
501#define GL_DYNAMIC_DRAW 0x88E8
502#define GL_DYNAMIC_READ 0x88E9
503#define GL_DYNAMIC_COPY 0x88EA
504#define GL_SAMPLES_PASSED 0x8914
505#define GL_SRC1_ALPHA 0x8589
506#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896
507#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897
508#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898
509#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899
510#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A
511#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B
512#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C
513#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D
514#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E
515#define GL_FOG_COORD_SRC 0x8450
516#define GL_FOG_COORD 0x8451
517#define GL_CURRENT_FOG_COORD 0x8453
518#define GL_FOG_COORD_ARRAY_TYPE 0x8454
519#define GL_FOG_COORD_ARRAY_STRIDE 0x8455
520#define GL_FOG_COORD_ARRAY_POINTER 0x8456
521#define GL_FOG_COORD_ARRAY 0x8457
522#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D
523#define GL_SRC0_RGB 0x8580
524#define GL_SRC1_RGB 0x8581
525#define GL_SRC2_RGB 0x8582
526#define GL_SRC0_ALPHA 0x8588
527#define GL_SRC2_ALPHA 0x858A
528typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
529typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
530typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id);
531typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
532typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target);
533typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
534typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);
535typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
536typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
537typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
538typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
539typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
540typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
541typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
542typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void *data);
543typedef void *(APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
544typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
545typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
546typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void **params);
547#ifdef GL_GLEXT_PROTOTYPES
548GLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids);
549GLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids);
550GLAPI GLboolean APIENTRY glIsQuery (GLuint id);
551GLAPI void APIENTRY glBeginQuery (GLenum target, GLuint id);
552GLAPI void APIENTRY glEndQuery (GLenum target);
553GLAPI void APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params);
554GLAPI void APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params);
555GLAPI void APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params);
556GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer);
557GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);
558GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);
559GLAPI GLboolean APIENTRY glIsBuffer (GLuint buffer);
560GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
561GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
562GLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data);
563GLAPI void *APIENTRY glMapBuffer (GLenum target, GLenum access);
564GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target);
565GLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);
566GLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, void **params);
567#endif
568#endif /* GL_VERSION_1_5 */
569
570#ifndef GL_VERSION_2_0
571#define GL_VERSION_2_0 1
572typedef char GLchar;
573#define GL_BLEND_EQUATION_RGB 0x8009
574#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
575#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
576#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
577#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
578#define GL_CURRENT_VERTEX_ATTRIB 0x8626
579#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642
580#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
581#define GL_STENCIL_BACK_FUNC 0x8800
582#define GL_STENCIL_BACK_FAIL 0x8801
583#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
584#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
585#define GL_MAX_DRAW_BUFFERS 0x8824
586#define GL_DRAW_BUFFER0 0x8825
587#define GL_DRAW_BUFFER1 0x8826
588#define GL_DRAW_BUFFER2 0x8827
589#define GL_DRAW_BUFFER3 0x8828
590#define GL_DRAW_BUFFER4 0x8829
591#define GL_DRAW_BUFFER5 0x882A
592#define GL_DRAW_BUFFER6 0x882B
593#define GL_DRAW_BUFFER7 0x882C
594#define GL_DRAW_BUFFER8 0x882D
595#define GL_DRAW_BUFFER9 0x882E
596#define GL_DRAW_BUFFER10 0x882F
597#define GL_DRAW_BUFFER11 0x8830
598#define GL_DRAW_BUFFER12 0x8831
599#define GL_DRAW_BUFFER13 0x8832
600#define GL_DRAW_BUFFER14 0x8833
601#define GL_DRAW_BUFFER15 0x8834
602#define GL_BLEND_EQUATION_ALPHA 0x883D
603#define GL_MAX_VERTEX_ATTRIBS 0x8869
604#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
605#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
606#define GL_FRAGMENT_SHADER 0x8B30
607#define GL_VERTEX_SHADER 0x8B31
608#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
609#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A
610#define GL_MAX_VARYING_FLOATS 0x8B4B
611#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
612#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
613#define GL_SHADER_TYPE 0x8B4F
614#define GL_FLOAT_VEC2 0x8B50
615#define GL_FLOAT_VEC3 0x8B51
616#define GL_FLOAT_VEC4 0x8B52
617#define GL_INT_VEC2 0x8B53
618#define GL_INT_VEC3 0x8B54
619#define GL_INT_VEC4 0x8B55
620#define GL_BOOL 0x8B56
621#define GL_BOOL_VEC2 0x8B57
622#define GL_BOOL_VEC3 0x8B58
623#define GL_BOOL_VEC4 0x8B59
624#define GL_FLOAT_MAT2 0x8B5A
625#define GL_FLOAT_MAT3 0x8B5B
626#define GL_FLOAT_MAT4 0x8B5C
627#define GL_SAMPLER_1D 0x8B5D
628#define GL_SAMPLER_2D 0x8B5E
629#define GL_SAMPLER_3D 0x8B5F
630#define GL_SAMPLER_CUBE 0x8B60
631#define GL_SAMPLER_1D_SHADOW 0x8B61
632#define GL_SAMPLER_2D_SHADOW 0x8B62
633#define GL_DELETE_STATUS 0x8B80
634#define GL_COMPILE_STATUS 0x8B81
635#define GL_LINK_STATUS 0x8B82
636#define GL_VALIDATE_STATUS 0x8B83
637#define GL_INFO_LOG_LENGTH 0x8B84
638#define GL_ATTACHED_SHADERS 0x8B85
639#define GL_ACTIVE_UNIFORMS 0x8B86
640#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
641#define GL_SHADER_SOURCE_LENGTH 0x8B88
642#define GL_ACTIVE_ATTRIBUTES 0x8B89
643#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
644#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
645#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
646#define GL_CURRENT_PROGRAM 0x8B8D
647#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0
648#define GL_LOWER_LEFT 0x8CA1
649#define GL_UPPER_LEFT 0x8CA2
650#define GL_STENCIL_BACK_REF 0x8CA3
651#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
652#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
653#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643
654#define GL_POINT_SPRITE 0x8861
655#define GL_COORD_REPLACE 0x8862
656#define GL_MAX_TEXTURE_COORDS 0x8871
657typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
658typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
659typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
660typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
661typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
662typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
663typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
664typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
665typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
666typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
667typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
668typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
669typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
670typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
671typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
672typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
673typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
674typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
675typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
676typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
677typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
678typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
679typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
680typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
681typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
682typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
683typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
684typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
685typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
686typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
687typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer);
688typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
689typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
690typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
691typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
692typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
693typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
694typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
695typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
696typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
697typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
698typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
699typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
700typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
701typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
702typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
703typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
704typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
705typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
706typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
707typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
708typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
709typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
710typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
711typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
712typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
713typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
714typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
715typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
716typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
717typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
718typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
719typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
720typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
721typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
722typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
723typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
724typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
725typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
726typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
727typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
728typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
729typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
730typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
731typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
732typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
733typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
734typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
735typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
736typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
737typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
738typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
739typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
740typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
741typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
742typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
743typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
744typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
745typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
746typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
747typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
748typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
749typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
750#ifdef GL_GLEXT_PROTOTYPES
751GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
752GLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs);
753GLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
754GLAPI void APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
755GLAPI void APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
756GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader);
757GLAPI void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
758GLAPI void APIENTRY glCompileShader (GLuint shader);
759GLAPI GLuint APIENTRY glCreateProgram (void);
760GLAPI GLuint APIENTRY glCreateShader (GLenum type);
761GLAPI void APIENTRY glDeleteProgram (GLuint program);
762GLAPI void APIENTRY glDeleteShader (GLuint shader);
763GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader);
764GLAPI void APIENTRY glDisableVertexAttribArray (GLuint index);
765GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index);
766GLAPI void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
767GLAPI void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
768GLAPI void APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
769GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);
770GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);
771GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
772GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
773GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
774GLAPI void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
775GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);
776GLAPI void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params);
777GLAPI void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params);
778GLAPI void APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params);
779GLAPI void APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params);
780GLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);
781GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer);
782GLAPI GLboolean APIENTRY glIsProgram (GLuint program);
783GLAPI GLboolean APIENTRY glIsShader (GLuint shader);
784GLAPI void APIENTRY glLinkProgram (GLuint program);
785GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
786GLAPI void APIENTRY glUseProgram (GLuint program);
787GLAPI void APIENTRY glUniform1f (GLint location, GLfloat v0);
788GLAPI void APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1);
789GLAPI void APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
790GLAPI void APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
791GLAPI void APIENTRY glUniform1i (GLint location, GLint v0);
792GLAPI void APIENTRY glUniform2i (GLint location, GLint v0, GLint v1);
793GLAPI void APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2);
794GLAPI void APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
795GLAPI void APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value);
796GLAPI void APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value);
797GLAPI void APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value);
798GLAPI void APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value);
799GLAPI void APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value);
800GLAPI void APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value);
801GLAPI void APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value);
802GLAPI void APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value);
803GLAPI void APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
804GLAPI void APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
805GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
806GLAPI void APIENTRY glValidateProgram (GLuint program);
807GLAPI void APIENTRY glVertexAttrib1d (GLuint index, GLdouble x);
808GLAPI void APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v);
809GLAPI void APIENTRY glVertexAttrib1f (GLuint index, GLfloat x);
810GLAPI void APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v);
811GLAPI void APIENTRY glVertexAttrib1s (GLuint index, GLshort x);
812GLAPI void APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v);
813GLAPI void APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y);
814GLAPI void APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v);
815GLAPI void APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y);
816GLAPI void APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v);
817GLAPI void APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y);
818GLAPI void APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v);
819GLAPI void APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
820GLAPI void APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v);
821GLAPI void APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z);
822GLAPI void APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v);
823GLAPI void APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z);
824GLAPI void APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v);
825GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v);
826GLAPI void APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v);
827GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v);
828GLAPI void APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
829GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v);
830GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v);
831GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v);
832GLAPI void APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v);
833GLAPI void APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
834GLAPI void APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v);
835GLAPI void APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
836GLAPI void APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v);
837GLAPI void APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v);
838GLAPI void APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
839GLAPI void APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v);
840GLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v);
841GLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v);
842GLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v);
843GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
844#endif
845#endif /* GL_VERSION_2_0 */
846
847#ifndef GL_VERSION_2_1
848#define GL_VERSION_2_1 1
849#define GL_PIXEL_PACK_BUFFER 0x88EB
850#define GL_PIXEL_UNPACK_BUFFER 0x88EC
851#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED
852#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF
853#define GL_FLOAT_MAT2x3 0x8B65
854#define GL_FLOAT_MAT2x4 0x8B66
855#define GL_FLOAT_MAT3x2 0x8B67
856#define GL_FLOAT_MAT3x4 0x8B68
857#define GL_FLOAT_MAT4x2 0x8B69
858#define GL_FLOAT_MAT4x3 0x8B6A
859#define GL_SRGB 0x8C40
860#define GL_SRGB8 0x8C41
861#define GL_SRGB_ALPHA 0x8C42
862#define GL_SRGB8_ALPHA8 0x8C43
863#define GL_COMPRESSED_SRGB 0x8C48
864#define GL_COMPRESSED_SRGB_ALPHA 0x8C49
865#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F
866#define GL_SLUMINANCE_ALPHA 0x8C44
867#define GL_SLUMINANCE8_ALPHA8 0x8C45
868#define GL_SLUMINANCE 0x8C46
869#define GL_SLUMINANCE8 0x8C47
870#define GL_COMPRESSED_SLUMINANCE 0x8C4A
871#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B
872typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
873typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
874typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
875typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
876typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
877typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
878#ifdef GL_GLEXT_PROTOTYPES
879GLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
880GLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
881GLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
882GLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
883GLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
884GLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
885#endif
886#endif /* GL_VERSION_2_1 */
887
888#ifndef GL_VERSION_3_0
889#define GL_VERSION_3_0 1
890typedef unsigned short GLhalf;
891#define GL_COMPARE_REF_TO_TEXTURE 0x884E
892#define GL_CLIP_DISTANCE0 0x3000
893#define GL_CLIP_DISTANCE1 0x3001
894#define GL_CLIP_DISTANCE2 0x3002
895#define GL_CLIP_DISTANCE3 0x3003
896#define GL_CLIP_DISTANCE4 0x3004
897#define GL_CLIP_DISTANCE5 0x3005
898#define GL_CLIP_DISTANCE6 0x3006
899#define GL_CLIP_DISTANCE7 0x3007
900#define GL_MAX_CLIP_DISTANCES 0x0D32
901#define GL_MAJOR_VERSION 0x821B
902#define GL_MINOR_VERSION 0x821C
903#define GL_NUM_EXTENSIONS 0x821D
904#define GL_CONTEXT_FLAGS 0x821E
905#define GL_COMPRESSED_RED 0x8225
906#define GL_COMPRESSED_RG 0x8226
907#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001
908#define GL_RGBA32F 0x8814
909#define GL_RGB32F 0x8815
910#define GL_RGBA16F 0x881A
911#define GL_RGB16F 0x881B
912#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD
913#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF
914#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904
915#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905
916#define GL_CLAMP_READ_COLOR 0x891C
917#define GL_FIXED_ONLY 0x891D
918#define GL_MAX_VARYING_COMPONENTS 0x8B4B
919#define GL_TEXTURE_1D_ARRAY 0x8C18
920#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19
921#define GL_TEXTURE_2D_ARRAY 0x8C1A
922#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B
923#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C
924#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D
925#define GL_R11F_G11F_B10F 0x8C3A
926#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B
927#define GL_RGB9_E5 0x8C3D
928#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E
929#define GL_TEXTURE_SHARED_SIZE 0x8C3F
930#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76
931#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F
932#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80
933#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83
934#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84
935#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85
936#define GL_PRIMITIVES_GENERATED 0x8C87
937#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88
938#define GL_RASTERIZER_DISCARD 0x8C89
939#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A
940#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B
941#define GL_INTERLEAVED_ATTRIBS 0x8C8C
942#define GL_SEPARATE_ATTRIBS 0x8C8D
943#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E
944#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F
945#define GL_RGBA32UI 0x8D70
946#define GL_RGB32UI 0x8D71
947#define GL_RGBA16UI 0x8D76
948#define GL_RGB16UI 0x8D77
949#define GL_RGBA8UI 0x8D7C
950#define GL_RGB8UI 0x8D7D
951#define GL_RGBA32I 0x8D82
952#define GL_RGB32I 0x8D83
953#define GL_RGBA16I 0x8D88
954#define GL_RGB16I 0x8D89
955#define GL_RGBA8I 0x8D8E
956#define GL_RGB8I 0x8D8F
957#define GL_RED_INTEGER 0x8D94
958#define GL_GREEN_INTEGER 0x8D95
959#define GL_BLUE_INTEGER 0x8D96
960#define GL_RGB_INTEGER 0x8D98
961#define GL_RGBA_INTEGER 0x8D99
962#define GL_BGR_INTEGER 0x8D9A
963#define GL_BGRA_INTEGER 0x8D9B
964#define GL_SAMPLER_1D_ARRAY 0x8DC0
965#define GL_SAMPLER_2D_ARRAY 0x8DC1
966#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3
967#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4
968#define GL_SAMPLER_CUBE_SHADOW 0x8DC5
969#define GL_UNSIGNED_INT_VEC2 0x8DC6
970#define GL_UNSIGNED_INT_VEC3 0x8DC7
971#define GL_UNSIGNED_INT_VEC4 0x8DC8
972#define GL_INT_SAMPLER_1D 0x8DC9
973#define GL_INT_SAMPLER_2D 0x8DCA
974#define GL_INT_SAMPLER_3D 0x8DCB
975#define GL_INT_SAMPLER_CUBE 0x8DCC
976#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE
977#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF
978#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1
979#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2
980#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3
981#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4
982#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6
983#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7
984#define GL_QUERY_WAIT 0x8E13
985#define GL_QUERY_NO_WAIT 0x8E14
986#define GL_QUERY_BY_REGION_WAIT 0x8E15
987#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16
988#define GL_BUFFER_ACCESS_FLAGS 0x911F
989#define GL_BUFFER_MAP_LENGTH 0x9120
990#define GL_BUFFER_MAP_OFFSET 0x9121
991#define GL_DEPTH_COMPONENT32F 0x8CAC
992#define GL_DEPTH32F_STENCIL8 0x8CAD
993#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
994#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
995#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
996#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
997#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
998#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
999#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
1000#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
1001#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
1002#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
1003#define GL_FRAMEBUFFER_DEFAULT 0x8218
1004#define GL_FRAMEBUFFER_UNDEFINED 0x8219
1005#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A
1006#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
1007#define GL_DEPTH_STENCIL 0x84F9
1008#define GL_UNSIGNED_INT_24_8 0x84FA
1009#define GL_DEPTH24_STENCIL8 0x88F0
1010#define GL_TEXTURE_STENCIL_SIZE 0x88F1
1011#define GL_TEXTURE_RED_TYPE 0x8C10
1012#define GL_TEXTURE_GREEN_TYPE 0x8C11
1013#define GL_TEXTURE_BLUE_TYPE 0x8C12
1014#define GL_TEXTURE_ALPHA_TYPE 0x8C13
1015#define GL_TEXTURE_DEPTH_TYPE 0x8C16
1016#define GL_UNSIGNED_NORMALIZED 0x8C17
1017#define GL_FRAMEBUFFER_BINDING 0x8CA6
1018#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6
1019#define GL_RENDERBUFFER_BINDING 0x8CA7
1020#define GL_READ_FRAMEBUFFER 0x8CA8
1021#define GL_DRAW_FRAMEBUFFER 0x8CA9
1022#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA
1023#define GL_RENDERBUFFER_SAMPLES 0x8CAB
1024#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
1025#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
1026#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
1027#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
1028#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
1029#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
1030#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
1031#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
1032#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
1033#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
1034#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
1035#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF
1036#define GL_COLOR_ATTACHMENT0 0x8CE0
1037#define GL_COLOR_ATTACHMENT1 0x8CE1
1038#define GL_COLOR_ATTACHMENT2 0x8CE2
1039#define GL_COLOR_ATTACHMENT3 0x8CE3
1040#define GL_COLOR_ATTACHMENT4 0x8CE4
1041#define GL_COLOR_ATTACHMENT5 0x8CE5
1042#define GL_COLOR_ATTACHMENT6 0x8CE6
1043#define GL_COLOR_ATTACHMENT7 0x8CE7
1044#define GL_COLOR_ATTACHMENT8 0x8CE8
1045#define GL_COLOR_ATTACHMENT9 0x8CE9
1046#define GL_COLOR_ATTACHMENT10 0x8CEA
1047#define GL_COLOR_ATTACHMENT11 0x8CEB
1048#define GL_COLOR_ATTACHMENT12 0x8CEC
1049#define GL_COLOR_ATTACHMENT13 0x8CED
1050#define GL_COLOR_ATTACHMENT14 0x8CEE
1051#define GL_COLOR_ATTACHMENT15 0x8CEF
1052#define GL_DEPTH_ATTACHMENT 0x8D00
1053#define GL_STENCIL_ATTACHMENT 0x8D20
1054#define GL_FRAMEBUFFER 0x8D40
1055#define GL_RENDERBUFFER 0x8D41
1056#define GL_RENDERBUFFER_WIDTH 0x8D42
1057#define GL_RENDERBUFFER_HEIGHT 0x8D43
1058#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
1059#define GL_STENCIL_INDEX1 0x8D46
1060#define GL_STENCIL_INDEX4 0x8D47
1061#define GL_STENCIL_INDEX8 0x8D48
1062#define GL_STENCIL_INDEX16 0x8D49
1063#define GL_RENDERBUFFER_RED_SIZE 0x8D50
1064#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51
1065#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52
1066#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
1067#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
1068#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
1069#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
1070#define GL_MAX_SAMPLES 0x8D57
1071#define GL_INDEX 0x8222
1072#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14
1073#define GL_TEXTURE_INTENSITY_TYPE 0x8C15
1074#define GL_FRAMEBUFFER_SRGB 0x8DB9
1075#define GL_HALF_FLOAT 0x140B
1076#define GL_MAP_READ_BIT 0x0001
1077#define GL_MAP_WRITE_BIT 0x0002
1078#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004
1079#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
1080#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010
1081#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020
1082#define GL_COMPRESSED_RED_RGTC1 0x8DBB
1083#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC
1084#define GL_COMPRESSED_RG_RGTC2 0x8DBD
1085#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE
1086#define GL_RG 0x8227
1087#define GL_RG_INTEGER 0x8228
1088#define GL_R8 0x8229
1089#define GL_R16 0x822A
1090#define GL_RG8 0x822B
1091#define GL_RG16 0x822C
1092#define GL_R16F 0x822D
1093#define GL_R32F 0x822E
1094#define GL_RG16F 0x822F
1095#define GL_RG32F 0x8230
1096#define GL_R8I 0x8231
1097#define GL_R8UI 0x8232
1098#define GL_R16I 0x8233
1099#define GL_R16UI 0x8234
1100#define GL_R32I 0x8235
1101#define GL_R32UI 0x8236
1102#define GL_RG8I 0x8237
1103#define GL_RG8UI 0x8238
1104#define GL_RG16I 0x8239
1105#define GL_RG16UI 0x823A
1106#define GL_RG32I 0x823B
1107#define GL_RG32UI 0x823C
1108#define GL_VERTEX_ARRAY_BINDING 0x85B5
1109#define GL_CLAMP_VERTEX_COLOR 0x891A
1110#define GL_CLAMP_FRAGMENT_COLOR 0x891B
1111#define GL_ALPHA_INTEGER 0x8D97
1112typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
1113typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
1114typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);
1115typedef void (APIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index);
1116typedef void (APIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index);
1117typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index);
1118typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);
1119typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void);
1120typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
1121typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
1122typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
1123typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
1124typedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp);
1125typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode);
1126typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void);
1127typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
1128typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params);
1129typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params);
1130typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x);
1131typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y);
1132typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z);
1133typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
1134typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x);
1135typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y);
1136typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
1137typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
1138typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v);
1139typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v);
1140typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v);
1141typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v);
1142typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v);
1143typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v);
1144typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v);
1145typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v);
1146typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v);
1147typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v);
1148typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v);
1149typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v);
1150typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params);
1151typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name);
1152typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name);
1153typedef void (APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
1154typedef void (APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
1155typedef void (APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
1156typedef void (APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
1157typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value);
1158typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value);
1159typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value);
1160typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value);
1161typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params);
1162typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params);
1163typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params);
1164typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params);
1165typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value);
1166typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value);
1167typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value);
1168typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
1169typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
1170typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
1171typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
1172typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
1173typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
1174typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
1175typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
1176typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
1177typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
1178typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
1179typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
1180typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
1181typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
1182typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
1183typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
1184typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
1185typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
1186typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);
1187typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
1188typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1189typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
1190typedef void *(APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
1191typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
1192typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
1193typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
1194typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
1195typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
1196#ifdef GL_GLEXT_PROTOTYPES
1197GLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
1198GLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data);
1199GLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data);
1200GLAPI void APIENTRY glEnablei (GLenum target, GLuint index);
1201GLAPI void APIENTRY glDisablei (GLenum target, GLuint index);
1202GLAPI GLboolean APIENTRY glIsEnabledi (GLenum target, GLuint index);
1203GLAPI void APIENTRY glBeginTransformFeedback (GLenum primitiveMode);
1204GLAPI void APIENTRY glEndTransformFeedback (void);
1205GLAPI void APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
1206GLAPI void APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer);
1207GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
1208GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
1209GLAPI void APIENTRY glClampColor (GLenum target, GLenum clamp);
1210GLAPI void APIENTRY glBeginConditionalRender (GLuint id, GLenum mode);
1211GLAPI void APIENTRY glEndConditionalRender (void);
1212GLAPI void APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
1213GLAPI void APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params);
1214GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params);
1215GLAPI void APIENTRY glVertexAttribI1i (GLuint index, GLint x);
1216GLAPI void APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y);
1217GLAPI void APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z);
1218GLAPI void APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w);
1219GLAPI void APIENTRY glVertexAttribI1ui (GLuint index, GLuint x);
1220GLAPI void APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y);
1221GLAPI void APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z);
1222GLAPI void APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
1223GLAPI void APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v);
1224GLAPI void APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v);
1225GLAPI void APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v);
1226GLAPI void APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v);
1227GLAPI void APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v);
1228GLAPI void APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v);
1229GLAPI void APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v);
1230GLAPI void APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v);
1231GLAPI void APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v);
1232GLAPI void APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v);
1233GLAPI void APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v);
1234GLAPI void APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v);
1235GLAPI void APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params);
1236GLAPI void APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name);
1237GLAPI GLint APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name);
1238GLAPI void APIENTRY glUniform1ui (GLint location, GLuint v0);
1239GLAPI void APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1);
1240GLAPI void APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2);
1241GLAPI void APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
1242GLAPI void APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value);
1243GLAPI void APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value);
1244GLAPI void APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value);
1245GLAPI void APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value);
1246GLAPI void APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params);
1247GLAPI void APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params);
1248GLAPI void APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params);
1249GLAPI void APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params);
1250GLAPI void APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value);
1251GLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value);
1252GLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value);
1253GLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
1254GLAPI const GLubyte *APIENTRY glGetStringi (GLenum name, GLuint index);
1255GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer);
1256GLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
1257GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);
1258GLAPI void APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);
1259GLAPI void APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
1260GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params);
1261GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint framebuffer);
1262GLAPI void APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
1263GLAPI void APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);
1264GLAPI void APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers);
1265GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum target);
1266GLAPI void APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
1267GLAPI void APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
1268GLAPI void APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
1269GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
1270GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params);
1271GLAPI void APIENTRY glGenerateMipmap (GLenum target);
1272GLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
1273GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1274GLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
1275GLAPI void *APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
1276GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length);
1277GLAPI void APIENTRY glBindVertexArray (GLuint array);
1278GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays);
1279GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays);
1280GLAPI GLboolean APIENTRY glIsVertexArray (GLuint array);
1281#endif
1282#endif /* GL_VERSION_3_0 */
1283
1284#ifndef GL_VERSION_3_1
1285#define GL_VERSION_3_1 1
1286#define GL_SAMPLER_2D_RECT 0x8B63
1287#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64
1288#define GL_SAMPLER_BUFFER 0x8DC2
1289#define GL_INT_SAMPLER_2D_RECT 0x8DCD
1290#define GL_INT_SAMPLER_BUFFER 0x8DD0
1291#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5
1292#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8
1293#define GL_TEXTURE_BUFFER 0x8C2A
1294#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B
1295#define GL_TEXTURE_BINDING_BUFFER 0x8C2C
1296#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D
1297#define GL_TEXTURE_RECTANGLE 0x84F5
1298#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6
1299#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7
1300#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8
1301#define GL_R8_SNORM 0x8F94
1302#define GL_RG8_SNORM 0x8F95
1303#define GL_RGB8_SNORM 0x8F96
1304#define GL_RGBA8_SNORM 0x8F97
1305#define GL_R16_SNORM 0x8F98
1306#define GL_RG16_SNORM 0x8F99
1307#define GL_RGB16_SNORM 0x8F9A
1308#define GL_RGBA16_SNORM 0x8F9B
1309#define GL_SIGNED_NORMALIZED 0x8F9C
1310#define GL_PRIMITIVE_RESTART 0x8F9D
1311#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E
1312#define GL_COPY_READ_BUFFER 0x8F36
1313#define GL_COPY_WRITE_BUFFER 0x8F37
1314#define GL_UNIFORM_BUFFER 0x8A11
1315#define GL_UNIFORM_BUFFER_BINDING 0x8A28
1316#define GL_UNIFORM_BUFFER_START 0x8A29
1317#define GL_UNIFORM_BUFFER_SIZE 0x8A2A
1318#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B
1319#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D
1320#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E
1321#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F
1322#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30
1323#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
1324#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
1325#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
1326#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
1327#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36
1328#define GL_UNIFORM_TYPE 0x8A37
1329#define GL_UNIFORM_SIZE 0x8A38
1330#define GL_UNIFORM_NAME_LENGTH 0x8A39
1331#define GL_UNIFORM_BLOCK_INDEX 0x8A3A
1332#define GL_UNIFORM_OFFSET 0x8A3B
1333#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C
1334#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D
1335#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E
1336#define GL_UNIFORM_BLOCK_BINDING 0x8A3F
1337#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40
1338#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41
1339#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42
1340#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
1341#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
1342#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
1343#define GL_INVALID_INDEX 0xFFFFFFFFu
1344typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
1345typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
1346typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer);
1347typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index);
1348typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
1349typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
1350typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
1351typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
1352typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName);
1353typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
1354typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
1355typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
1356#ifdef GL_GLEXT_PROTOTYPES
1357GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
1358GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
1359GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer);
1360GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index);
1361GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
1362GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
1363GLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
1364GLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
1365GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName);
1366GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
1367GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
1368GLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
1369#endif
1370#endif /* GL_VERSION_3_1 */
1371
1372#ifndef GL_VERSION_3_2
1373#define GL_VERSION_3_2 1
1374typedef struct __GLsync *GLsync;
1375#ifndef GLEXT_64_TYPES_DEFINED
1376/* This code block is duplicated in glxext.h, so must be protected */
1377#define GLEXT_64_TYPES_DEFINED
1378/* Define int32_t, int64_t, and uint64_t types for UST/MSC */
1379/* (as used in the GL_EXT_timer_query extension). */
1380#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
1381#include <inttypes.h>
1382#elif defined(__sun__) || defined(__digital__)
1383#include <inttypes.h>
1384#if defined(__STDC__)
1385#if defined(__arch64__) || defined(_LP64)
1386typedef long int int64_t;
1387typedef unsigned long int uint64_t;
1388#else
1389typedef long long int int64_t;
1390typedef unsigned long long int uint64_t;
1391#endif /* __arch64__ */
1392#endif /* __STDC__ */
1393#elif defined( __VMS ) || defined(__sgi)
1394#include <inttypes.h>
1395#elif defined(__SCO__) || defined(__USLC__)
1396#include <stdint.h>
1397#elif defined(__UNIXOS2__) || defined(__SOL64__)
1398typedef long int int32_t;
1399typedef long long int int64_t;
1400typedef unsigned long long int uint64_t;
1401#elif defined(_WIN32) && defined(__GNUC__)
1402#include <stdint.h>
1403#elif defined(_WIN32)
1404typedef __int32 int32_t;
1405typedef __int64 int64_t;
1406typedef unsigned __int64 uint64_t;
1407#else
1408/* Fallback if nothing above works */
1409#include <inttypes.h>
1410#endif
1411#endif
1412typedef uint64_t GLuint64;
1413typedef int64_t GLint64;
1414#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001
1415#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002
1416#define GL_LINES_ADJACENCY 0x000A
1417#define GL_LINE_STRIP_ADJACENCY 0x000B
1418#define GL_TRIANGLES_ADJACENCY 0x000C
1419#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D
1420#define GL_PROGRAM_POINT_SIZE 0x8642
1421#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29
1422#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7
1423#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8
1424#define GL_GEOMETRY_SHADER 0x8DD9
1425#define GL_GEOMETRY_VERTICES_OUT 0x8916
1426#define GL_GEOMETRY_INPUT_TYPE 0x8917
1427#define GL_GEOMETRY_OUTPUT_TYPE 0x8918
1428#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF
1429#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0
1430#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1
1431#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122
1432#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123
1433#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124
1434#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125
1435#define GL_CONTEXT_PROFILE_MASK 0x9126
1436#define GL_DEPTH_CLAMP 0x864F
1437#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C
1438#define GL_FIRST_VERTEX_CONVENTION 0x8E4D
1439#define GL_LAST_VERTEX_CONVENTION 0x8E4E
1440#define GL_PROVOKING_VERTEX 0x8E4F
1441#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
1442#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111
1443#define GL_OBJECT_TYPE 0x9112
1444#define GL_SYNC_CONDITION 0x9113
1445#define GL_SYNC_STATUS 0x9114
1446#define GL_SYNC_FLAGS 0x9115
1447#define GL_SYNC_FENCE 0x9116
1448#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117
1449#define GL_UNSIGNALED 0x9118
1450#define GL_SIGNALED 0x9119
1451#define GL_ALREADY_SIGNALED 0x911A
1452#define GL_TIMEOUT_EXPIRED 0x911B
1453#define GL_CONDITION_SATISFIED 0x911C
1454#define GL_WAIT_FAILED 0x911D
1455#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull
1456#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001
1457#define GL_SAMPLE_POSITION 0x8E50
1458#define GL_SAMPLE_MASK 0x8E51
1459#define GL_SAMPLE_MASK_VALUE 0x8E52
1460#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59
1461#define GL_TEXTURE_2D_MULTISAMPLE 0x9100
1462#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101
1463#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
1464#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
1465#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
1466#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
1467#define GL_TEXTURE_SAMPLES 0x9106
1468#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
1469#define GL_SAMPLER_2D_MULTISAMPLE 0x9108
1470#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109
1471#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
1472#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B
1473#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
1474#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
1475#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E
1476#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F
1477#define GL_MAX_INTEGER_SAMPLES 0x9110
1478typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
1479typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
1480typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
1481typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
1482typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
1483typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags);
1484typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync);
1485typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync);
1486typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
1487typedef void (APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
1488typedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *data);
1489typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
1490typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
1491typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params);
1492typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
1493typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
1494typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
1495typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val);
1496typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask);
1497#ifdef GL_GLEXT_PROTOTYPES
1498GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
1499GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
1500GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
1501GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
1502GLAPI void APIENTRY glProvokingVertex (GLenum mode);
1503GLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags);
1504GLAPI GLboolean APIENTRY glIsSync (GLsync sync);
1505GLAPI void APIENTRY glDeleteSync (GLsync sync);
1506GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
1507GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
1508GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *data);
1509GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
1510GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data);
1511GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params);
1512GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level);
1513GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
1514GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
1515GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);
1516GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask);
1517#endif
1518#endif /* GL_VERSION_3_2 */
1519
1520#ifndef GL_VERSION_3_3
1521#define GL_VERSION_3_3 1
1522#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE
1523#define GL_SRC1_COLOR 0x88F9
1524#define GL_ONE_MINUS_SRC1_COLOR 0x88FA
1525#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB
1526#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC
1527#define GL_ANY_SAMPLES_PASSED 0x8C2F
1528#define GL_SAMPLER_BINDING 0x8919
1529#define GL_RGB10_A2UI 0x906F
1530#define GL_TEXTURE_SWIZZLE_R 0x8E42
1531#define GL_TEXTURE_SWIZZLE_G 0x8E43
1532#define GL_TEXTURE_SWIZZLE_B 0x8E44
1533#define GL_TEXTURE_SWIZZLE_A 0x8E45
1534#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46
1535#define GL_TIME_ELAPSED 0x88BF
1536#define GL_TIMESTAMP 0x8E28
1537#define GL_INT_2_10_10_10_REV 0x8D9F
1538typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
1539typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name);
1540typedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers);
1541typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers);
1542typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler);
1543typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
1544typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
1545typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
1546typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
1547typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param);
1548typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
1549typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param);
1550typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params);
1551typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params);
1552typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);
1553typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params);
1554typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
1555typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params);
1556typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params);
1557typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor);
1558typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1559typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1560typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1561typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1562typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1563typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1564typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1565typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1566typedef void (APIENTRYP PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value);
1567typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value);
1568typedef void (APIENTRYP PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value);
1569typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value);
1570typedef void (APIENTRYP PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value);
1571typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value);
1572typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords);
1573typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords);
1574typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords);
1575typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords);
1576typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords);
1577typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords);
1578typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords);
1579typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords);
1580typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords);
1581typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
1582typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords);
1583typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
1584typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords);
1585typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
1586typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords);
1587typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
1588typedef void (APIENTRYP PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords);
1589typedef void (APIENTRYP PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords);
1590typedef void (APIENTRYP PFNGLCOLORP3UIPROC) (GLenum type, GLuint color);
1591typedef void (APIENTRYP PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint *color);
1592typedef void (APIENTRYP PFNGLCOLORP4UIPROC) (GLenum type, GLuint color);
1593typedef void (APIENTRYP PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint *color);
1594typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color);
1595typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color);
1596#ifdef GL_GLEXT_PROTOTYPES
1597GLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
1598GLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name);
1599GLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers);
1600GLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers);
1601GLAPI GLboolean APIENTRY glIsSampler (GLuint sampler);
1602GLAPI void APIENTRY glBindSampler (GLuint unit, GLuint sampler);
1603GLAPI void APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param);
1604GLAPI void APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param);
1605GLAPI void APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param);
1606GLAPI void APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param);
1607GLAPI void APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param);
1608GLAPI void APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param);
1609GLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params);
1610GLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params);
1611GLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params);
1612GLAPI void APIENTRY glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params);
1613GLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target);
1614GLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params);
1615GLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params);
1616GLAPI void APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor);
1617GLAPI void APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1618GLAPI void APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1619GLAPI void APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1620GLAPI void APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1621GLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1622GLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1623GLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1624GLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1625GLAPI void APIENTRY glVertexP2ui (GLenum type, GLuint value);
1626GLAPI void APIENTRY glVertexP2uiv (GLenum type, const GLuint *value);
1627GLAPI void APIENTRY glVertexP3ui (GLenum type, GLuint value);
1628GLAPI void APIENTRY glVertexP3uiv (GLenum type, const GLuint *value);
1629GLAPI void APIENTRY glVertexP4ui (GLenum type, GLuint value);
1630GLAPI void APIENTRY glVertexP4uiv (GLenum type, const GLuint *value);
1631GLAPI void APIENTRY glTexCoordP1ui (GLenum type, GLuint coords);
1632GLAPI void APIENTRY glTexCoordP1uiv (GLenum type, const GLuint *coords);
1633GLAPI void APIENTRY glTexCoordP2ui (GLenum type, GLuint coords);
1634GLAPI void APIENTRY glTexCoordP2uiv (GLenum type, const GLuint *coords);
1635GLAPI void APIENTRY glTexCoordP3ui (GLenum type, GLuint coords);
1636GLAPI void APIENTRY glTexCoordP3uiv (GLenum type, const GLuint *coords);
1637GLAPI void APIENTRY glTexCoordP4ui (GLenum type, GLuint coords);
1638GLAPI void APIENTRY glTexCoordP4uiv (GLenum type, const GLuint *coords);
1639GLAPI void APIENTRY glMultiTexCoordP1ui (GLenum texture, GLenum type, GLuint coords);
1640GLAPI void APIENTRY glMultiTexCoordP1uiv (GLenum texture, GLenum type, const GLuint *coords);
1641GLAPI void APIENTRY glMultiTexCoordP2ui (GLenum texture, GLenum type, GLuint coords);
1642GLAPI void APIENTRY glMultiTexCoordP2uiv (GLenum texture, GLenum type, const GLuint *coords);
1643GLAPI void APIENTRY glMultiTexCoordP3ui (GLenum texture, GLenum type, GLuint coords);
1644GLAPI void APIENTRY glMultiTexCoordP3uiv (GLenum texture, GLenum type, const GLuint *coords);
1645GLAPI void APIENTRY glMultiTexCoordP4ui (GLenum texture, GLenum type, GLuint coords);
1646GLAPI void APIENTRY glMultiTexCoordP4uiv (GLenum texture, GLenum type, const GLuint *coords);
1647GLAPI void APIENTRY glNormalP3ui (GLenum type, GLuint coords);
1648GLAPI void APIENTRY glNormalP3uiv (GLenum type, const GLuint *coords);
1649GLAPI void APIENTRY glColorP3ui (GLenum type, GLuint color);
1650GLAPI void APIENTRY glColorP3uiv (GLenum type, const GLuint *color);
1651GLAPI void APIENTRY glColorP4ui (GLenum type, GLuint color);
1652GLAPI void APIENTRY glColorP4uiv (GLenum type, const GLuint *color);
1653GLAPI void APIENTRY glSecondaryColorP3ui (GLenum type, GLuint color);
1654GLAPI void APIENTRY glSecondaryColorP3uiv (GLenum type, const GLuint *color);
1655#endif
1656#endif /* GL_VERSION_3_3 */
1657
1658#ifndef GL_VERSION_4_0
1659#define GL_VERSION_4_0 1
1660#define GL_SAMPLE_SHADING 0x8C36
1661#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37
1662#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E
1663#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F
1664#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009
1665#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A
1666#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B
1667#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C
1668#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D
1669#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E
1670#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F
1671#define GL_DRAW_INDIRECT_BUFFER 0x8F3F
1672#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43
1673#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
1674#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
1675#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
1676#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
1677#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
1678#define GL_MAX_VERTEX_STREAMS 0x8E71
1679#define GL_DOUBLE_VEC2 0x8FFC
1680#define GL_DOUBLE_VEC3 0x8FFD
1681#define GL_DOUBLE_VEC4 0x8FFE
1682#define GL_DOUBLE_MAT2 0x8F46
1683#define GL_DOUBLE_MAT3 0x8F47
1684#define GL_DOUBLE_MAT4 0x8F48
1685#define GL_DOUBLE_MAT2x3 0x8F49
1686#define GL_DOUBLE_MAT2x4 0x8F4A
1687#define GL_DOUBLE_MAT3x2 0x8F4B
1688#define GL_DOUBLE_MAT3x4 0x8F4C
1689#define GL_DOUBLE_MAT4x2 0x8F4D
1690#define GL_DOUBLE_MAT4x3 0x8F4E
1691#define GL_ACTIVE_SUBROUTINES 0x8DE5
1692#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6
1693#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
1694#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48
1695#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
1696#define GL_MAX_SUBROUTINES 0x8DE7
1697#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
1698#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A
1699#define GL_COMPATIBLE_SUBROUTINES 0x8E4B
1700#define GL_PATCHES 0x000E
1701#define GL_PATCH_VERTICES 0x8E72
1702#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73
1703#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74
1704#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75
1705#define GL_TESS_GEN_MODE 0x8E76
1706#define GL_TESS_GEN_SPACING 0x8E77
1707#define GL_TESS_GEN_VERTEX_ORDER 0x8E78
1708#define GL_TESS_GEN_POINT_MODE 0x8E79
1709#define GL_ISOLINES 0x8E7A
1710#define GL_FRACTIONAL_ODD 0x8E7B
1711#define GL_FRACTIONAL_EVEN 0x8E7C
1712#define GL_MAX_PATCH_VERTICES 0x8E7D
1713#define GL_MAX_TESS_GEN_LEVEL 0x8E7E
1714#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
1715#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
1716#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
1717#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
1718#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
1719#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84
1720#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
1721#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
1722#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
1723#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
1724#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
1725#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
1726#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
1727#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
1728#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
1729#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
1730#define GL_TESS_EVALUATION_SHADER 0x8E87
1731#define GL_TESS_CONTROL_SHADER 0x8E88
1732#define GL_TRANSFORM_FEEDBACK 0x8E22
1733#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
1734#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
1735#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25
1736#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
1737typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLfloat value);
1738typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode);
1739typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
1740typedef void (APIENTRYP PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst);
1741typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
1742typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect);
1743typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect);
1744typedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x);
1745typedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y);
1746typedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z);
1747typedef void (APIENTRYP PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
1748typedef void (APIENTRYP PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value);
1749typedef void (APIENTRYP PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value);
1750typedef void (APIENTRYP PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value);
1751typedef void (APIENTRYP PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value);
1752typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1753typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1754typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1755typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1756typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1757typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1758typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1759typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1760typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1761typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params);
1762typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name);
1763typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name);
1764typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
1765typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
1766typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
1767typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices);
1768typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params);
1769typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
1770typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);
1771typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values);
1772typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
1773typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids);
1774typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
1775typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
1776typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
1777typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
1778typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id);
1779typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream);
1780typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id);
1781typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index);
1782typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
1783#ifdef GL_GLEXT_PROTOTYPES
1784GLAPI void APIENTRY glMinSampleShading (GLfloat value);
1785GLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode);
1786GLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
1787GLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst);
1788GLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
1789GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const void *indirect);
1790GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect);
1791GLAPI void APIENTRY glUniform1d (GLint location, GLdouble x);
1792GLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y);
1793GLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z);
1794GLAPI void APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
1795GLAPI void APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value);
1796GLAPI void APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value);
1797GLAPI void APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value);
1798GLAPI void APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value);
1799GLAPI void APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1800GLAPI void APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1801GLAPI void APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1802GLAPI void APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1803GLAPI void APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1804GLAPI void APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1805GLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1806GLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1807GLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1808GLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params);
1809GLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name);
1810GLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name);
1811GLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
1812GLAPI void APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
1813GLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
1814GLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices);
1815GLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params);
1816GLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
1817GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value);
1818GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values);
1819GLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id);
1820GLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids);
1821GLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids);
1822GLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id);
1823GLAPI void APIENTRY glPauseTransformFeedback (void);
1824GLAPI void APIENTRY glResumeTransformFeedback (void);
1825GLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id);
1826GLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream);
1827GLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id);
1828GLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index);
1829GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params);
1830#endif
1831#endif /* GL_VERSION_4_0 */
1832
1833#ifndef GL_VERSION_4_1
1834#define GL_VERSION_4_1 1
1835#define GL_FIXED 0x140C
1836#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
1837#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
1838#define GL_LOW_FLOAT 0x8DF0
1839#define GL_MEDIUM_FLOAT 0x8DF1
1840#define GL_HIGH_FLOAT 0x8DF2
1841#define GL_LOW_INT 0x8DF3
1842#define GL_MEDIUM_INT 0x8DF4
1843#define GL_HIGH_INT 0x8DF5
1844#define GL_SHADER_COMPILER 0x8DFA
1845#define GL_SHADER_BINARY_FORMATS 0x8DF8
1846#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
1847#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
1848#define GL_MAX_VARYING_VECTORS 0x8DFC
1849#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
1850#define GL_RGB565 0x8D62
1851#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
1852#define GL_PROGRAM_BINARY_LENGTH 0x8741
1853#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
1854#define GL_PROGRAM_BINARY_FORMATS 0x87FF
1855#define GL_VERTEX_SHADER_BIT 0x00000001
1856#define GL_FRAGMENT_SHADER_BIT 0x00000002
1857#define GL_GEOMETRY_SHADER_BIT 0x00000004
1858#define GL_TESS_CONTROL_SHADER_BIT 0x00000008
1859#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010
1860#define GL_ALL_SHADER_BITS 0xFFFFFFFF
1861#define GL_PROGRAM_SEPARABLE 0x8258
1862#define GL_ACTIVE_PROGRAM 0x8259
1863#define GL_PROGRAM_PIPELINE_BINDING 0x825A
1864#define GL_MAX_VIEWPORTS 0x825B
1865#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C
1866#define GL_VIEWPORT_BOUNDS_RANGE 0x825D
1867#define GL_LAYER_PROVOKING_VERTEX 0x825E
1868#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F
1869#define GL_UNDEFINED_VERTEX 0x8260
1870typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void);
1871typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
1872typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
1873typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f);
1874typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d);
1875typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
1876typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
1877typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);
1878typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
1879typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program);
1880typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar *const*strings);
1881typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);
1882typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines);
1883typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);
1884typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline);
1885typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params);
1886typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0);
1887typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
1888typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0);
1889typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1890typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0);
1891typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
1892typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0);
1893typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
1894typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1);
1895typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
1896typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
1897typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1898typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1);
1899typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
1900typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
1901typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
1902typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
1903typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
1904typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
1905typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1906typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
1907typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
1908typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
1909typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
1910typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
1911typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
1912typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
1913typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1914typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
1915typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
1916typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
1917typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
1918typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1919typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1920typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1921typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1922typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1923typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1924typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1925typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1926typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1927typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1928typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1929typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1930typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1931typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1932typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1933typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1934typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1935typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
1936typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline);
1937typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
1938typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x);
1939typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y);
1940typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
1941typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
1942typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v);
1943typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v);
1944typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v);
1945typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v);
1946typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
1947typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params);
1948typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v);
1949typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
1950typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v);
1951typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v);
1952typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
1953typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v);
1954typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble *v);
1955typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f);
1956typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data);
1957typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data);
1958#ifdef GL_GLEXT_PROTOTYPES
1959GLAPI void APIENTRY glReleaseShaderCompiler (void);
1960GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
1961GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
1962GLAPI void APIENTRY glDepthRangef (GLfloat n, GLfloat f);
1963GLAPI void APIENTRY glClearDepthf (GLfloat d);
1964GLAPI void APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
1965GLAPI void APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
1966GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value);
1967GLAPI void APIENTRY glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program);
1968GLAPI void APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program);
1969GLAPI GLuint APIENTRY glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar *const*strings);
1970GLAPI void APIENTRY glBindProgramPipeline (GLuint pipeline);
1971GLAPI void APIENTRY glDeleteProgramPipelines (GLsizei n, const GLuint *pipelines);
1972GLAPI void APIENTRY glGenProgramPipelines (GLsizei n, GLuint *pipelines);
1973GLAPI GLboolean APIENTRY glIsProgramPipeline (GLuint pipeline);
1974GLAPI void APIENTRY glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params);
1975GLAPI void APIENTRY glProgramUniform1i (GLuint program, GLint location, GLint v0);
1976GLAPI void APIENTRY glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value);
1977GLAPI void APIENTRY glProgramUniform1f (GLuint program, GLint location, GLfloat v0);
1978GLAPI void APIENTRY glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1979GLAPI void APIENTRY glProgramUniform1d (GLuint program, GLint location, GLdouble v0);
1980GLAPI void APIENTRY glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
1981GLAPI void APIENTRY glProgramUniform1ui (GLuint program, GLint location, GLuint v0);
1982GLAPI void APIENTRY glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
1983GLAPI void APIENTRY glProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1);
1984GLAPI void APIENTRY glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value);
1985GLAPI void APIENTRY glProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1);
1986GLAPI void APIENTRY glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1987GLAPI void APIENTRY glProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1);
1988GLAPI void APIENTRY glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
1989GLAPI void APIENTRY glProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1);
1990GLAPI void APIENTRY glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
1991GLAPI void APIENTRY glProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
1992GLAPI void APIENTRY glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value);
1993GLAPI void APIENTRY glProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
1994GLAPI void APIENTRY glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1995GLAPI void APIENTRY glProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
1996GLAPI void APIENTRY glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
1997GLAPI void APIENTRY glProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
1998GLAPI void APIENTRY glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
1999GLAPI void APIENTRY glProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
2000GLAPI void APIENTRY glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value);
2001GLAPI void APIENTRY glProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
2002GLAPI void APIENTRY glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
2003GLAPI void APIENTRY glProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
2004GLAPI void APIENTRY glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
2005GLAPI void APIENTRY glProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
2006GLAPI void APIENTRY glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
2007GLAPI void APIENTRY glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2008GLAPI void APIENTRY glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2009GLAPI void APIENTRY glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2010GLAPI void APIENTRY glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2011GLAPI void APIENTRY glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2012GLAPI void APIENTRY glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2013GLAPI void APIENTRY glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2014GLAPI void APIENTRY glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2015GLAPI void APIENTRY glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2016GLAPI void APIENTRY glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2017GLAPI void APIENTRY glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2018GLAPI void APIENTRY glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2019GLAPI void APIENTRY glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2020GLAPI void APIENTRY glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2021GLAPI void APIENTRY glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2022GLAPI void APIENTRY glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2023GLAPI void APIENTRY glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2024GLAPI void APIENTRY glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2025GLAPI void APIENTRY glValidateProgramPipeline (GLuint pipeline);
2026GLAPI void APIENTRY glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
2027GLAPI void APIENTRY glVertexAttribL1d (GLuint index, GLdouble x);
2028GLAPI void APIENTRY glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y);
2029GLAPI void APIENTRY glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
2030GLAPI void APIENTRY glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
2031GLAPI void APIENTRY glVertexAttribL1dv (GLuint index, const GLdouble *v);
2032GLAPI void APIENTRY glVertexAttribL2dv (GLuint index, const GLdouble *v);
2033GLAPI void APIENTRY glVertexAttribL3dv (GLuint index, const GLdouble *v);
2034GLAPI void APIENTRY glVertexAttribL4dv (GLuint index, const GLdouble *v);
2035GLAPI void APIENTRY glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
2036GLAPI void APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params);
2037GLAPI void APIENTRY glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v);
2038GLAPI void APIENTRY glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
2039GLAPI void APIENTRY glViewportIndexedfv (GLuint index, const GLfloat *v);
2040GLAPI void APIENTRY glScissorArrayv (GLuint first, GLsizei count, const GLint *v);
2041GLAPI void APIENTRY glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
2042GLAPI void APIENTRY glScissorIndexedv (GLuint index, const GLint *v);
2043GLAPI void APIENTRY glDepthRangeArrayv (GLuint first, GLsizei count, const GLdouble *v);
2044GLAPI void APIENTRY glDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f);
2045GLAPI void APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data);
2046GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data);
2047#endif
2048#endif /* GL_VERSION_4_1 */
2049
2050#ifndef GL_VERSION_4_2
2051#define GL_VERSION_4_2 1
2052#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127
2053#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128
2054#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129
2055#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A
2056#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B
2057#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C
2058#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D
2059#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E
2060#define GL_NUM_SAMPLE_COUNTS 0x9380
2061#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC
2062#define GL_ATOMIC_COUNTER_BUFFER 0x92C0
2063#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1
2064#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2
2065#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3
2066#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4
2067#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5
2068#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6
2069#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7
2070#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8
2071#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9
2072#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA
2073#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB
2074#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC
2075#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD
2076#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE
2077#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF
2078#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0
2079#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1
2080#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2
2081#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3
2082#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4
2083#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5
2084#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6
2085#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7
2086#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8
2087#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC
2088#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9
2089#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA
2090#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB
2091#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001
2092#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002
2093#define GL_UNIFORM_BARRIER_BIT 0x00000004
2094#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008
2095#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020
2096#define GL_COMMAND_BARRIER_BIT 0x00000040
2097#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080
2098#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100
2099#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200
2100#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400
2101#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800
2102#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000
2103#define GL_ALL_BARRIER_BITS 0xFFFFFFFF
2104#define GL_MAX_IMAGE_UNITS 0x8F38
2105#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39
2106#define GL_IMAGE_BINDING_NAME 0x8F3A
2107#define GL_IMAGE_BINDING_LEVEL 0x8F3B
2108#define GL_IMAGE_BINDING_LAYERED 0x8F3C
2109#define GL_IMAGE_BINDING_LAYER 0x8F3D
2110#define GL_IMAGE_BINDING_ACCESS 0x8F3E
2111#define GL_IMAGE_1D 0x904C
2112#define GL_IMAGE_2D 0x904D
2113#define GL_IMAGE_3D 0x904E
2114#define GL_IMAGE_2D_RECT 0x904F
2115#define GL_IMAGE_CUBE 0x9050
2116#define GL_IMAGE_BUFFER 0x9051
2117#define GL_IMAGE_1D_ARRAY 0x9052
2118#define GL_IMAGE_2D_ARRAY 0x9053
2119#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054
2120#define GL_IMAGE_2D_MULTISAMPLE 0x9055
2121#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056
2122#define GL_INT_IMAGE_1D 0x9057
2123#define GL_INT_IMAGE_2D 0x9058
2124#define GL_INT_IMAGE_3D 0x9059
2125#define GL_INT_IMAGE_2D_RECT 0x905A
2126#define GL_INT_IMAGE_CUBE 0x905B
2127#define GL_INT_IMAGE_BUFFER 0x905C
2128#define GL_INT_IMAGE_1D_ARRAY 0x905D
2129#define GL_INT_IMAGE_2D_ARRAY 0x905E
2130#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F
2131#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060
2132#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061
2133#define GL_UNSIGNED_INT_IMAGE_1D 0x9062
2134#define GL_UNSIGNED_INT_IMAGE_2D 0x9063
2135#define GL_UNSIGNED_INT_IMAGE_3D 0x9064
2136#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065
2137#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066
2138#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067
2139#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068
2140#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069
2141#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A
2142#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B
2143#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C
2144#define GL_MAX_IMAGE_SAMPLES 0x906D
2145#define GL_IMAGE_BINDING_FORMAT 0x906E
2146#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7
2147#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8
2148#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9
2149#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA
2150#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB
2151#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC
2152#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD
2153#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE
2154#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF
2155#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C
2156#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
2157#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
2158#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
2159#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
2160typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
2161typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
2162typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
2163typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
2164typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
2165typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
2166typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers);
2167typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
2168typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
2169typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
2170typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount);
2171typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
2172#ifdef GL_GLEXT_PROTOTYPES
2173GLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
2174GLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
2175GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
2176GLAPI void APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
2177GLAPI void APIENTRY glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
2178GLAPI void APIENTRY glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
2179GLAPI void APIENTRY glMemoryBarrier (GLbitfield barriers);
2180GLAPI void APIENTRY glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
2181GLAPI void APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
2182GLAPI void APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
2183GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount);
2184GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
2185#endif
2186#endif /* GL_VERSION_4_2 */
2187
2188#ifndef GL_VERSION_4_3
2189#define GL_VERSION_4_3 1
2190typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
2191#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9
2192#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E
2193#define GL_COMPRESSED_RGB8_ETC2 0x9274
2194#define GL_COMPRESSED_SRGB8_ETC2 0x9275
2195#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
2196#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
2197#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278
2198#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
2199#define GL_COMPRESSED_R11_EAC 0x9270
2200#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271
2201#define GL_COMPRESSED_RG11_EAC 0x9272
2202#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273
2203#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69
2204#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
2205#define GL_MAX_ELEMENT_INDEX 0x8D6B
2206#define GL_COMPUTE_SHADER 0x91B9
2207#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB
2208#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC
2209#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD
2210#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262
2211#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263
2212#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264
2213#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265
2214#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266
2215#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB
2216#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE
2217#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF
2218#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267
2219#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC
2220#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED
2221#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE
2222#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF
2223#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
2224#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
2225#define GL_DEBUG_CALLBACK_FUNCTION 0x8244
2226#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245
2227#define GL_DEBUG_SOURCE_API 0x8246
2228#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
2229#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
2230#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
2231#define GL_DEBUG_SOURCE_APPLICATION 0x824A
2232#define GL_DEBUG_SOURCE_OTHER 0x824B
2233#define GL_DEBUG_TYPE_ERROR 0x824C
2234#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
2235#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
2236#define GL_DEBUG_TYPE_PORTABILITY 0x824F
2237#define GL_DEBUG_TYPE_PERFORMANCE 0x8250
2238#define GL_DEBUG_TYPE_OTHER 0x8251
2239#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
2240#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
2241#define GL_DEBUG_LOGGED_MESSAGES 0x9145
2242#define GL_DEBUG_SEVERITY_HIGH 0x9146
2243#define GL_DEBUG_SEVERITY_MEDIUM 0x9147
2244#define GL_DEBUG_SEVERITY_LOW 0x9148
2245#define GL_DEBUG_TYPE_MARKER 0x8268
2246#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269
2247#define GL_DEBUG_TYPE_POP_GROUP 0x826A
2248#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B
2249#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C
2250#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D
2251#define GL_BUFFER 0x82E0
2252#define GL_SHADER 0x82E1
2253#define GL_PROGRAM 0x82E2
2254#define GL_QUERY 0x82E3
2255#define GL_PROGRAM_PIPELINE 0x82E4
2256#define GL_SAMPLER 0x82E6
2257#define GL_MAX_LABEL_LENGTH 0x82E8
2258#define GL_DEBUG_OUTPUT 0x92E0
2259#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
2260#define GL_MAX_UNIFORM_LOCATIONS 0x826E
2261#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310
2262#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311
2263#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312
2264#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313
2265#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314
2266#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315
2267#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316
2268#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317
2269#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318
2270#define GL_INTERNALFORMAT_SUPPORTED 0x826F
2271#define GL_INTERNALFORMAT_PREFERRED 0x8270
2272#define GL_INTERNALFORMAT_RED_SIZE 0x8271
2273#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272
2274#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273
2275#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274
2276#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275
2277#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276
2278#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277
2279#define GL_INTERNALFORMAT_RED_TYPE 0x8278
2280#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279
2281#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A
2282#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B
2283#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C
2284#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D
2285#define GL_MAX_WIDTH 0x827E
2286#define GL_MAX_HEIGHT 0x827F
2287#define GL_MAX_DEPTH 0x8280
2288#define GL_MAX_LAYERS 0x8281
2289#define GL_MAX_COMBINED_DIMENSIONS 0x8282
2290#define GL_COLOR_COMPONENTS 0x8283
2291#define GL_DEPTH_COMPONENTS 0x8284
2292#define GL_STENCIL_COMPONENTS 0x8285
2293#define GL_COLOR_RENDERABLE 0x8286
2294#define GL_DEPTH_RENDERABLE 0x8287
2295#define GL_STENCIL_RENDERABLE 0x8288
2296#define GL_FRAMEBUFFER_RENDERABLE 0x8289
2297#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A
2298#define GL_FRAMEBUFFER_BLEND 0x828B
2299#define GL_READ_PIXELS 0x828C
2300#define GL_READ_PIXELS_FORMAT 0x828D
2301#define GL_READ_PIXELS_TYPE 0x828E
2302#define GL_TEXTURE_IMAGE_FORMAT 0x828F
2303#define GL_TEXTURE_IMAGE_TYPE 0x8290
2304#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291
2305#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292
2306#define GL_MIPMAP 0x8293
2307#define GL_MANUAL_GENERATE_MIPMAP 0x8294
2308#define GL_AUTO_GENERATE_MIPMAP 0x8295
2309#define GL_COLOR_ENCODING 0x8296
2310#define GL_SRGB_READ 0x8297
2311#define GL_SRGB_WRITE 0x8298
2312#define GL_FILTER 0x829A
2313#define GL_VERTEX_TEXTURE 0x829B
2314#define GL_TESS_CONTROL_TEXTURE 0x829C
2315#define GL_TESS_EVALUATION_TEXTURE 0x829D
2316#define GL_GEOMETRY_TEXTURE 0x829E
2317#define GL_FRAGMENT_TEXTURE 0x829F
2318#define GL_COMPUTE_TEXTURE 0x82A0
2319#define GL_TEXTURE_SHADOW 0x82A1
2320#define GL_TEXTURE_GATHER 0x82A2
2321#define GL_TEXTURE_GATHER_SHADOW 0x82A3
2322#define GL_SHADER_IMAGE_LOAD 0x82A4
2323#define GL_SHADER_IMAGE_STORE 0x82A5
2324#define GL_SHADER_IMAGE_ATOMIC 0x82A6
2325#define GL_IMAGE_TEXEL_SIZE 0x82A7
2326#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8
2327#define GL_IMAGE_PIXEL_FORMAT 0x82A9
2328#define GL_IMAGE_PIXEL_TYPE 0x82AA
2329#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC
2330#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD
2331#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE
2332#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF
2333#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1
2334#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2
2335#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3
2336#define GL_CLEAR_BUFFER 0x82B4
2337#define GL_TEXTURE_VIEW 0x82B5
2338#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6
2339#define GL_FULL_SUPPORT 0x82B7
2340#define GL_CAVEAT_SUPPORT 0x82B8
2341#define GL_IMAGE_CLASS_4_X_32 0x82B9
2342#define GL_IMAGE_CLASS_2_X_32 0x82BA
2343#define GL_IMAGE_CLASS_1_X_32 0x82BB
2344#define GL_IMAGE_CLASS_4_X_16 0x82BC
2345#define GL_IMAGE_CLASS_2_X_16 0x82BD
2346#define GL_IMAGE_CLASS_1_X_16 0x82BE
2347#define GL_IMAGE_CLASS_4_X_8 0x82BF
2348#define GL_IMAGE_CLASS_2_X_8 0x82C0
2349#define GL_IMAGE_CLASS_1_X_8 0x82C1
2350#define GL_IMAGE_CLASS_11_11_10 0x82C2
2351#define GL_IMAGE_CLASS_10_10_10_2 0x82C3
2352#define GL_VIEW_CLASS_128_BITS 0x82C4
2353#define GL_VIEW_CLASS_96_BITS 0x82C5
2354#define GL_VIEW_CLASS_64_BITS 0x82C6
2355#define GL_VIEW_CLASS_48_BITS 0x82C7
2356#define GL_VIEW_CLASS_32_BITS 0x82C8
2357#define GL_VIEW_CLASS_24_BITS 0x82C9
2358#define GL_VIEW_CLASS_16_BITS 0x82CA
2359#define GL_VIEW_CLASS_8_BITS 0x82CB
2360#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC
2361#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD
2362#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE
2363#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF
2364#define GL_VIEW_CLASS_RGTC1_RED 0x82D0
2365#define GL_VIEW_CLASS_RGTC2_RG 0x82D1
2366#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2
2367#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3
2368#define GL_UNIFORM 0x92E1
2369#define GL_UNIFORM_BLOCK 0x92E2
2370#define GL_PROGRAM_INPUT 0x92E3
2371#define GL_PROGRAM_OUTPUT 0x92E4
2372#define GL_BUFFER_VARIABLE 0x92E5
2373#define GL_SHADER_STORAGE_BLOCK 0x92E6
2374#define GL_VERTEX_SUBROUTINE 0x92E8
2375#define GL_TESS_CONTROL_SUBROUTINE 0x92E9
2376#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA
2377#define GL_GEOMETRY_SUBROUTINE 0x92EB
2378#define GL_FRAGMENT_SUBROUTINE 0x92EC
2379#define GL_COMPUTE_SUBROUTINE 0x92ED
2380#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE
2381#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF
2382#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0
2383#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1
2384#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2
2385#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3
2386#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4
2387#define GL_ACTIVE_RESOURCES 0x92F5
2388#define GL_MAX_NAME_LENGTH 0x92F6
2389#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7
2390#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8
2391#define GL_NAME_LENGTH 0x92F9
2392#define GL_TYPE 0x92FA
2393#define GL_ARRAY_SIZE 0x92FB
2394#define GL_OFFSET 0x92FC
2395#define GL_BLOCK_INDEX 0x92FD
2396#define GL_ARRAY_STRIDE 0x92FE
2397#define GL_MATRIX_STRIDE 0x92FF
2398#define GL_IS_ROW_MAJOR 0x9300
2399#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301
2400#define GL_BUFFER_BINDING 0x9302
2401#define GL_BUFFER_DATA_SIZE 0x9303
2402#define GL_NUM_ACTIVE_VARIABLES 0x9304
2403#define GL_ACTIVE_VARIABLES 0x9305
2404#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306
2405#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
2406#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
2407#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309
2408#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A
2409#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B
2410#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C
2411#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D
2412#define GL_LOCATION 0x930E
2413#define GL_LOCATION_INDEX 0x930F
2414#define GL_IS_PER_PATCH 0x92E7
2415#define GL_SHADER_STORAGE_BUFFER 0x90D2
2416#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3
2417#define GL_SHADER_STORAGE_BUFFER_START 0x90D4
2418#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5
2419#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6
2420#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
2421#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
2422#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
2423#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA
2424#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB
2425#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
2426#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
2427#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE
2428#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
2429#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000
2430#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
2431#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA
2432#define GL_TEXTURE_BUFFER_OFFSET 0x919D
2433#define GL_TEXTURE_BUFFER_SIZE 0x919E
2434#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F
2435#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB
2436#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC
2437#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD
2438#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE
2439#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
2440#define GL_VERTEX_ATTRIB_BINDING 0x82D4
2441#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5
2442#define GL_VERTEX_BINDING_DIVISOR 0x82D6
2443#define GL_VERTEX_BINDING_OFFSET 0x82D7
2444#define GL_VERTEX_BINDING_STRIDE 0x82D8
2445#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
2446#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
2447#define GL_VERTEX_BINDING_BUFFER 0x8F4F
2448#define GL_DISPLAY_LIST 0x82E7
2449typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
2450typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
2451typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
2452typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect);
2453typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC) (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);
2454typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
2455typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
2456typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params);
2457typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
2458typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level);
2459typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
2460typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer);
2461typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
2462typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
2463typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
2464typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
2465typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
2466typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
2467typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
2468typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
2469typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name);
2470typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
2471typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
2472typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
2473typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
2474typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
2475typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
2476typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
2477typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
2478typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
2479typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
2480typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex);
2481typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor);
2482typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
2483typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
2484typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam);
2485typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
2486typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
2487typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void);
2488typedef void (APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
2489typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
2490typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label);
2491typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
2492#ifdef GL_GLEXT_PROTOTYPES
2493GLAPI void APIENTRY glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
2494GLAPI void APIENTRY glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
2495GLAPI void APIENTRY glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
2496GLAPI void APIENTRY glDispatchComputeIndirect (GLintptr indirect);
2497GLAPI void APIENTRY glCopyImageSubData (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);
2498GLAPI void APIENTRY glFramebufferParameteri (GLenum target, GLenum pname, GLint param);
2499GLAPI void APIENTRY glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params);
2500GLAPI void APIENTRY glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params);
2501GLAPI void APIENTRY glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
2502GLAPI void APIENTRY glInvalidateTexImage (GLuint texture, GLint level);
2503GLAPI void APIENTRY glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length);
2504GLAPI void APIENTRY glInvalidateBufferData (GLuint buffer);
2505GLAPI void APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments);
2506GLAPI void APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
2507GLAPI void APIENTRY glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
2508GLAPI void APIENTRY glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
2509GLAPI void APIENTRY glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
2510GLAPI GLuint APIENTRY glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar *name);
2511GLAPI void APIENTRY glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
2512GLAPI void APIENTRY glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
2513GLAPI GLint APIENTRY glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar *name);
2514GLAPI GLint APIENTRY glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar *name);
2515GLAPI void APIENTRY glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
2516GLAPI void APIENTRY glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
2517GLAPI void APIENTRY glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
2518GLAPI void APIENTRY glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
2519GLAPI void APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
2520GLAPI void APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
2521GLAPI void APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
2522GLAPI void APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
2523GLAPI void APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
2524GLAPI void APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex);
2525GLAPI void APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor);
2526GLAPI void APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
2527GLAPI void APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
2528GLAPI void APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam);
2529GLAPI GLuint APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
2530GLAPI void APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message);
2531GLAPI void APIENTRY glPopDebugGroup (void);
2532GLAPI void APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
2533GLAPI void APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
2534GLAPI void APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label);
2535GLAPI void APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
2536#endif
2537#endif /* GL_VERSION_4_3 */
2538
2539#ifndef GL_VERSION_4_4
2540#define GL_VERSION_4_4 1
2541#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5
2542#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
2543#define GL_TEXTURE_BUFFER_BINDING 0x8C2A
2544#define GL_MAP_PERSISTENT_BIT 0x0040
2545#define GL_MAP_COHERENT_BIT 0x0080
2546#define GL_DYNAMIC_STORAGE_BIT 0x0100
2547#define GL_CLIENT_STORAGE_BIT 0x0200
2548#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000
2549#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F
2550#define GL_BUFFER_STORAGE_FLAGS 0x8220
2551#define GL_CLEAR_TEXTURE 0x9365
2552#define GL_LOCATION_COMPONENT 0x934A
2553#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B
2554#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C
2555#define GL_QUERY_BUFFER 0x9192
2556#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000
2557#define GL_QUERY_BUFFER_BINDING 0x9193
2558#define GL_QUERY_RESULT_NO_WAIT 0x9194
2559#define GL_MIRROR_CLAMP_TO_EDGE 0x8743
2560typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
2561typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
2562typedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
2563typedef void (APIENTRYP PFNGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
2564typedef void (APIENTRYP PFNGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
2565typedef void (APIENTRYP PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
2566typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers);
2567typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
2568typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
2569#ifdef GL_GLEXT_PROTOTYPES
2570GLAPI void APIENTRY glBufferStorage (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
2571GLAPI void APIENTRY glClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
2572GLAPI void APIENTRY glClearTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
2573GLAPI void APIENTRY glBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
2574GLAPI void APIENTRY glBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
2575GLAPI void APIENTRY glBindTextures (GLuint first, GLsizei count, const GLuint *textures);
2576GLAPI void APIENTRY glBindSamplers (GLuint first, GLsizei count, const GLuint *samplers);
2577GLAPI void APIENTRY glBindImageTextures (GLuint first, GLsizei count, const GLuint *textures);
2578GLAPI void APIENTRY glBindVertexBuffers (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
2579#endif
2580#endif /* GL_VERSION_4_4 */
2581
2582#ifndef GL_ARB_ES2_compatibility
2583#define GL_ARB_ES2_compatibility 1
2584#endif /* GL_ARB_ES2_compatibility */
2585
2586#ifndef GL_ARB_ES3_compatibility
2587#define GL_ARB_ES3_compatibility 1
2588#endif /* GL_ARB_ES3_compatibility */
2589
2590#ifndef GL_ARB_arrays_of_arrays
2591#define GL_ARB_arrays_of_arrays 1
2592#endif /* GL_ARB_arrays_of_arrays */
2593
2594#ifndef GL_ARB_base_instance
2595#define GL_ARB_base_instance 1
2596#endif /* GL_ARB_base_instance */
2597
2598#ifndef GL_ARB_bindless_texture
2599#define GL_ARB_bindless_texture 1
2600typedef uint64_t GLuint64EXT;
2601#define GL_UNSIGNED_INT64_ARB 0x140F
2602typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLEARBPROC) (GLuint texture);
2603typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler);
2604typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
2605typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle);
2606typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
2607typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access);
2608typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle);
2609typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value);
2610typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
2611typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value);
2612typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
2613typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
2614typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle);
2615typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x);
2616typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT *v);
2617typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT *params);
2618#ifdef GL_GLEXT_PROTOTYPES
2619GLAPI GLuint64 APIENTRY glGetTextureHandleARB (GLuint texture);
2620GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleARB (GLuint texture, GLuint sampler);
2621GLAPI void APIENTRY glMakeTextureHandleResidentARB (GLuint64 handle);
2622GLAPI void APIENTRY glMakeTextureHandleNonResidentARB (GLuint64 handle);
2623GLAPI GLuint64 APIENTRY glGetImageHandleARB (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
2624GLAPI void APIENTRY glMakeImageHandleResidentARB (GLuint64 handle, GLenum access);
2625GLAPI void APIENTRY glMakeImageHandleNonResidentARB (GLuint64 handle);
2626GLAPI void APIENTRY glUniformHandleui64ARB (GLint location, GLuint64 value);
2627GLAPI void APIENTRY glUniformHandleui64vARB (GLint location, GLsizei count, const GLuint64 *value);
2628GLAPI void APIENTRY glProgramUniformHandleui64ARB (GLuint program, GLint location, GLuint64 value);
2629GLAPI void APIENTRY glProgramUniformHandleui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
2630GLAPI GLboolean APIENTRY glIsTextureHandleResidentARB (GLuint64 handle);
2631GLAPI GLboolean APIENTRY glIsImageHandleResidentARB (GLuint64 handle);
2632GLAPI void APIENTRY glVertexAttribL1ui64ARB (GLuint index, GLuint64EXT x);
2633GLAPI void APIENTRY glVertexAttribL1ui64vARB (GLuint index, const GLuint64EXT *v);
2634GLAPI void APIENTRY glGetVertexAttribLui64vARB (GLuint index, GLenum pname, GLuint64EXT *params);
2635#endif
2636#endif /* GL_ARB_bindless_texture */
2637
2638#ifndef GL_ARB_blend_func_extended
2639#define GL_ARB_blend_func_extended 1
2640#endif /* GL_ARB_blend_func_extended */
2641
2642#ifndef GL_ARB_buffer_storage
2643#define GL_ARB_buffer_storage 1
2644#endif /* GL_ARB_buffer_storage */
2645
2646#ifndef GL_ARB_cl_event
2647#define GL_ARB_cl_event 1
2648struct _cl_context;
2649struct _cl_event;
2650#define GL_SYNC_CL_EVENT_ARB 0x8240
2651#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241
2652typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);
2653#ifdef GL_GLEXT_PROTOTYPES
2654GLAPI GLsync APIENTRY glCreateSyncFromCLeventARB (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);
2655#endif
2656#endif /* GL_ARB_cl_event */
2657
2658#ifndef GL_ARB_clear_buffer_object
2659#define GL_ARB_clear_buffer_object 1
2660#endif /* GL_ARB_clear_buffer_object */
2661
2662#ifndef GL_ARB_clear_texture
2663#define GL_ARB_clear_texture 1
2664#endif /* GL_ARB_clear_texture */
2665
2666#ifndef GL_ARB_color_buffer_float
2667#define GL_ARB_color_buffer_float 1
2668#define GL_RGBA_FLOAT_MODE_ARB 0x8820
2669#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A
2670#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B
2671#define GL_CLAMP_READ_COLOR_ARB 0x891C
2672#define GL_FIXED_ONLY_ARB 0x891D
2673typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
2674#ifdef GL_GLEXT_PROTOTYPES
2675GLAPI void APIENTRY glClampColorARB (GLenum target, GLenum clamp);
2676#endif
2677#endif /* GL_ARB_color_buffer_float */
2678
2679#ifndef GL_ARB_compatibility
2680#define GL_ARB_compatibility 1
2681#endif /* GL_ARB_compatibility */
2682
2683#ifndef GL_ARB_compressed_texture_pixel_storage
2684#define GL_ARB_compressed_texture_pixel_storage 1
2685#endif /* GL_ARB_compressed_texture_pixel_storage */
2686
2687#ifndef GL_ARB_compute_shader
2688#define GL_ARB_compute_shader 1
2689#define GL_COMPUTE_SHADER_BIT 0x00000020
2690#endif /* GL_ARB_compute_shader */
2691
2692#ifndef GL_ARB_compute_variable_group_size
2693#define GL_ARB_compute_variable_group_size 1
2694#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344
2695#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB
2696#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345
2697#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF
2698typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
2699#ifdef GL_GLEXT_PROTOTYPES
2700GLAPI void APIENTRY glDispatchComputeGroupSizeARB (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
2701#endif
2702#endif /* GL_ARB_compute_variable_group_size */
2703
2704#ifndef GL_ARB_conservative_depth
2705#define GL_ARB_conservative_depth 1
2706#endif /* GL_ARB_conservative_depth */
2707
2708#ifndef GL_ARB_copy_buffer
2709#define GL_ARB_copy_buffer 1
2710#define GL_COPY_READ_BUFFER_BINDING 0x8F36
2711#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37
2712#endif /* GL_ARB_copy_buffer */
2713
2714#ifndef GL_ARB_copy_image
2715#define GL_ARB_copy_image 1
2716#endif /* GL_ARB_copy_image */
2717
2718#ifndef GL_ARB_debug_output
2719#define GL_ARB_debug_output 1
2720typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
2721#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242
2722#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
2723#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244
2724#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245
2725#define GL_DEBUG_SOURCE_API_ARB 0x8246
2726#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
2727#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
2728#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249
2729#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A
2730#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B
2731#define GL_DEBUG_TYPE_ERROR_ARB 0x824C
2732#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
2733#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
2734#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F
2735#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250
2736#define GL_DEBUG_TYPE_OTHER_ARB 0x8251
2737#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143
2738#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144
2739#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145
2740#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146
2741#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147
2742#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148
2743typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
2744typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
2745typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam);
2746typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
2747#ifdef GL_GLEXT_PROTOTYPES
2748GLAPI void APIENTRY glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
2749GLAPI void APIENTRY glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
2750GLAPI void APIENTRY glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const void *userParam);
2751GLAPI GLuint APIENTRY glGetDebugMessageLogARB (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
2752#endif
2753#endif /* GL_ARB_debug_output */
2754
2755#ifndef GL_ARB_depth_buffer_float
2756#define GL_ARB_depth_buffer_float 1
2757#endif /* GL_ARB_depth_buffer_float */
2758
2759#ifndef GL_ARB_depth_clamp
2760#define GL_ARB_depth_clamp 1
2761#endif /* GL_ARB_depth_clamp */
2762
2763#ifndef GL_ARB_depth_texture
2764#define GL_ARB_depth_texture 1
2765#define GL_DEPTH_COMPONENT16_ARB 0x81A5
2766#define GL_DEPTH_COMPONENT24_ARB 0x81A6
2767#define GL_DEPTH_COMPONENT32_ARB 0x81A7
2768#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A
2769#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B
2770#endif /* GL_ARB_depth_texture */
2771
2772#ifndef GL_ARB_draw_buffers
2773#define GL_ARB_draw_buffers 1
2774#define GL_MAX_DRAW_BUFFERS_ARB 0x8824
2775#define GL_DRAW_BUFFER0_ARB 0x8825
2776#define GL_DRAW_BUFFER1_ARB 0x8826
2777#define GL_DRAW_BUFFER2_ARB 0x8827
2778#define GL_DRAW_BUFFER3_ARB 0x8828
2779#define GL_DRAW_BUFFER4_ARB 0x8829
2780#define GL_DRAW_BUFFER5_ARB 0x882A
2781#define GL_DRAW_BUFFER6_ARB 0x882B
2782#define GL_DRAW_BUFFER7_ARB 0x882C
2783#define GL_DRAW_BUFFER8_ARB 0x882D
2784#define GL_DRAW_BUFFER9_ARB 0x882E
2785#define GL_DRAW_BUFFER10_ARB 0x882F
2786#define GL_DRAW_BUFFER11_ARB 0x8830
2787#define GL_DRAW_BUFFER12_ARB 0x8831
2788#define GL_DRAW_BUFFER13_ARB 0x8832
2789#define GL_DRAW_BUFFER14_ARB 0x8833
2790#define GL_DRAW_BUFFER15_ARB 0x8834
2791typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs);
2792#ifdef GL_GLEXT_PROTOTYPES
2793GLAPI void APIENTRY glDrawBuffersARB (GLsizei n, const GLenum *bufs);
2794#endif
2795#endif /* GL_ARB_draw_buffers */
2796
2797#ifndef GL_ARB_draw_buffers_blend
2798#define GL_ARB_draw_buffers_blend 1
2799typedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode);
2800typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
2801typedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst);
2802typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
2803#ifdef GL_GLEXT_PROTOTYPES
2804GLAPI void APIENTRY glBlendEquationiARB (GLuint buf, GLenum mode);
2805GLAPI void APIENTRY glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
2806GLAPI void APIENTRY glBlendFunciARB (GLuint buf, GLenum src, GLenum dst);
2807GLAPI void APIENTRY glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
2808#endif
2809#endif /* GL_ARB_draw_buffers_blend */
2810
2811#ifndef GL_ARB_draw_elements_base_vertex
2812#define GL_ARB_draw_elements_base_vertex 1
2813#endif /* GL_ARB_draw_elements_base_vertex */
2814
2815#ifndef GL_ARB_draw_indirect
2816#define GL_ARB_draw_indirect 1
2817#endif /* GL_ARB_draw_indirect */
2818
2819#ifndef GL_ARB_draw_instanced
2820#define GL_ARB_draw_instanced 1
2821typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
2822typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
2823#ifdef GL_GLEXT_PROTOTYPES
2824GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
2825GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
2826#endif
2827#endif /* GL_ARB_draw_instanced */
2828
2829#ifndef GL_ARB_enhanced_layouts
2830#define GL_ARB_enhanced_layouts 1
2831#endif /* GL_ARB_enhanced_layouts */
2832
2833#ifndef GL_ARB_explicit_attrib_location
2834#define GL_ARB_explicit_attrib_location 1
2835#endif /* GL_ARB_explicit_attrib_location */
2836
2837#ifndef GL_ARB_explicit_uniform_location
2838#define GL_ARB_explicit_uniform_location 1
2839#endif /* GL_ARB_explicit_uniform_location */
2840
2841#ifndef GL_ARB_fragment_coord_conventions
2842#define GL_ARB_fragment_coord_conventions 1
2843#endif /* GL_ARB_fragment_coord_conventions */
2844
2845#ifndef GL_ARB_fragment_layer_viewport
2846#define GL_ARB_fragment_layer_viewport 1
2847#endif /* GL_ARB_fragment_layer_viewport */
2848
2849#ifndef GL_ARB_fragment_program
2850#define GL_ARB_fragment_program 1
2851#define GL_FRAGMENT_PROGRAM_ARB 0x8804
2852#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875
2853#define GL_PROGRAM_LENGTH_ARB 0x8627
2854#define GL_PROGRAM_FORMAT_ARB 0x8876
2855#define GL_PROGRAM_BINDING_ARB 0x8677
2856#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0
2857#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1
2858#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
2859#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
2860#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4
2861#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5
2862#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
2863#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
2864#define GL_PROGRAM_PARAMETERS_ARB 0x88A8
2865#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9
2866#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA
2867#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
2868#define GL_PROGRAM_ATTRIBS_ARB 0x88AC
2869#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD
2870#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE
2871#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
2872#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
2873#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
2874#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
2875#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805
2876#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806
2877#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807
2878#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
2879#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
2880#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
2881#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
2882#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
2883#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
2884#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
2885#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
2886#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
2887#define GL_PROGRAM_STRING_ARB 0x8628
2888#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B
2889#define GL_CURRENT_MATRIX_ARB 0x8641
2890#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7
2891#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
2892#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F
2893#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
2894#define GL_MAX_TEXTURE_COORDS_ARB 0x8871
2895#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872
2896#define GL_PROGRAM_ERROR_STRING_ARB 0x8874
2897#define GL_MATRIX0_ARB 0x88C0
2898#define GL_MATRIX1_ARB 0x88C1
2899#define GL_MATRIX2_ARB 0x88C2
2900#define GL_MATRIX3_ARB 0x88C3
2901#define GL_MATRIX4_ARB 0x88C4
2902#define GL_MATRIX5_ARB 0x88C5
2903#define GL_MATRIX6_ARB 0x88C6
2904#define GL_MATRIX7_ARB 0x88C7
2905#define GL_MATRIX8_ARB 0x88C8
2906#define GL_MATRIX9_ARB 0x88C9
2907#define GL_MATRIX10_ARB 0x88CA
2908#define GL_MATRIX11_ARB 0x88CB
2909#define GL_MATRIX12_ARB 0x88CC
2910#define GL_MATRIX13_ARB 0x88CD
2911#define GL_MATRIX14_ARB 0x88CE
2912#define GL_MATRIX15_ARB 0x88CF
2913#define GL_MATRIX16_ARB 0x88D0
2914#define GL_MATRIX17_ARB 0x88D1
2915#define GL_MATRIX18_ARB 0x88D2
2916#define GL_MATRIX19_ARB 0x88D3
2917#define GL_MATRIX20_ARB 0x88D4
2918#define GL_MATRIX21_ARB 0x88D5
2919#define GL_MATRIX22_ARB 0x88D6
2920#define GL_MATRIX23_ARB 0x88D7
2921#define GL_MATRIX24_ARB 0x88D8
2922#define GL_MATRIX25_ARB 0x88D9
2923#define GL_MATRIX26_ARB 0x88DA
2924#define GL_MATRIX27_ARB 0x88DB
2925#define GL_MATRIX28_ARB 0x88DC
2926#define GL_MATRIX29_ARB 0x88DD
2927#define GL_MATRIX30_ARB 0x88DE
2928#define GL_MATRIX31_ARB 0x88DF
2929typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void *string);
2930typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
2931typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs);
2932typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs);
2933typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
2934typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
2935typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
2936typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
2937typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
2938typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
2939typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
2940typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
2941typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
2942typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
2943typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
2944typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
2945typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params);
2946typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void *string);
2947typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program);
2948#ifdef GL_GLEXT_PROTOTYPES
2949GLAPI void APIENTRY glProgramStringARB (GLenum target, GLenum format, GLsizei len, const void *string);
2950GLAPI void APIENTRY glBindProgramARB (GLenum target, GLuint program);
2951GLAPI void APIENTRY glDeleteProgramsARB (GLsizei n, const GLuint *programs);
2952GLAPI void APIENTRY glGenProgramsARB (GLsizei n, GLuint *programs);
2953GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
2954GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
2955GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
2956GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
2957GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
2958GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
2959GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
2960GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
2961GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble *params);
2962GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat *params);
2963GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble *params);
2964GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat *params);
2965GLAPI void APIENTRY glGetProgramivARB (GLenum target, GLenum pname, GLint *params);
2966GLAPI void APIENTRY glGetProgramStringARB (GLenum target, GLenum pname, void *string);
2967GLAPI GLboolean APIENTRY glIsProgramARB (GLuint program);
2968#endif
2969#endif /* GL_ARB_fragment_program */
2970
2971#ifndef GL_ARB_fragment_program_shadow
2972#define GL_ARB_fragment_program_shadow 1
2973#endif /* GL_ARB_fragment_program_shadow */
2974
2975#ifndef GL_ARB_fragment_shader
2976#define GL_ARB_fragment_shader 1
2977#define GL_FRAGMENT_SHADER_ARB 0x8B30
2978#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
2979#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B
2980#endif /* GL_ARB_fragment_shader */
2981
2982#ifndef GL_ARB_framebuffer_no_attachments
2983#define GL_ARB_framebuffer_no_attachments 1
2984#endif /* GL_ARB_framebuffer_no_attachments */
2985
2986#ifndef GL_ARB_framebuffer_object
2987#define GL_ARB_framebuffer_object 1
2988#endif /* GL_ARB_framebuffer_object */
2989
2990#ifndef GL_ARB_framebuffer_sRGB
2991#define GL_ARB_framebuffer_sRGB 1
2992#endif /* GL_ARB_framebuffer_sRGB */
2993
2994#ifndef GL_KHR_context_flush_control
2995#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB
2996#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC
2997#endif /* GL_KHR_context_flush_control */
2998
2999#ifndef GL_ARB_geometry_shader4
3000#define GL_ARB_geometry_shader4 1
3001#define GL_LINES_ADJACENCY_ARB 0x000A
3002#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B
3003#define GL_TRIANGLES_ADJACENCY_ARB 0x000C
3004#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D
3005#define GL_PROGRAM_POINT_SIZE_ARB 0x8642
3006#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29
3007#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7
3008#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8
3009#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9
3010#define GL_GEOMETRY_SHADER_ARB 0x8DD9
3011#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA
3012#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB
3013#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC
3014#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD
3015#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE
3016#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF
3017#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0
3018#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1
3019typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value);
3020typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
3021typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
3022typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
3023#ifdef GL_GLEXT_PROTOTYPES
3024GLAPI void APIENTRY glProgramParameteriARB (GLuint program, GLenum pname, GLint value);
3025GLAPI void APIENTRY glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level);
3026GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
3027GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
3028#endif
3029#endif /* GL_ARB_geometry_shader4 */
3030
3031#ifndef GL_ARB_get_program_binary
3032#define GL_ARB_get_program_binary 1
3033#endif /* GL_ARB_get_program_binary */
3034
3035#ifndef GL_ARB_gpu_shader5
3036#define GL_ARB_gpu_shader5 1
3037#endif /* GL_ARB_gpu_shader5 */
3038
3039#ifndef GL_ARB_gpu_shader_fp64
3040#define GL_ARB_gpu_shader_fp64 1
3041#endif /* GL_ARB_gpu_shader_fp64 */
3042
3043#ifndef GL_ARB_half_float_pixel
3044#define GL_ARB_half_float_pixel 1
3045typedef unsigned short GLhalfARB;
3046#define GL_HALF_FLOAT_ARB 0x140B
3047#endif /* GL_ARB_half_float_pixel */
3048
3049#ifndef GL_ARB_half_float_vertex
3050#define GL_ARB_half_float_vertex 1
3051#endif /* GL_ARB_half_float_vertex */
3052
3053#ifndef GL_ARB_imaging
3054#define GL_ARB_imaging 1
3055#define GL_BLEND_COLOR 0x8005
3056#define GL_BLEND_EQUATION 0x8009
3057#define GL_CONVOLUTION_1D 0x8010
3058#define GL_CONVOLUTION_2D 0x8011
3059#define GL_SEPARABLE_2D 0x8012
3060#define GL_CONVOLUTION_BORDER_MODE 0x8013
3061#define GL_CONVOLUTION_FILTER_SCALE 0x8014
3062#define GL_CONVOLUTION_FILTER_BIAS 0x8015
3063#define GL_REDUCE 0x8016
3064#define GL_CONVOLUTION_FORMAT 0x8017
3065#define GL_CONVOLUTION_WIDTH 0x8018
3066#define GL_CONVOLUTION_HEIGHT 0x8019
3067#define GL_MAX_CONVOLUTION_WIDTH 0x801A
3068#define GL_MAX_CONVOLUTION_HEIGHT 0x801B
3069#define GL_POST_CONVOLUTION_RED_SCALE 0x801C
3070#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
3071#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
3072#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
3073#define GL_POST_CONVOLUTION_RED_BIAS 0x8020
3074#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
3075#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
3076#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
3077#define GL_HISTOGRAM 0x8024
3078#define GL_PROXY_HISTOGRAM 0x8025
3079#define GL_HISTOGRAM_WIDTH 0x8026
3080#define GL_HISTOGRAM_FORMAT 0x8027
3081#define GL_HISTOGRAM_RED_SIZE 0x8028
3082#define GL_HISTOGRAM_GREEN_SIZE 0x8029
3083#define GL_HISTOGRAM_BLUE_SIZE 0x802A
3084#define GL_HISTOGRAM_ALPHA_SIZE 0x802B
3085#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
3086#define GL_HISTOGRAM_SINK 0x802D
3087#define GL_MINMAX 0x802E
3088#define GL_MINMAX_FORMAT 0x802F
3089#define GL_MINMAX_SINK 0x8030
3090#define GL_TABLE_TOO_LARGE 0x8031
3091#define GL_COLOR_MATRIX 0x80B1
3092#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
3093#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
3094#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
3095#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
3096#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
3097#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
3098#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
3099#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
3100#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
3101#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
3102#define GL_COLOR_TABLE 0x80D0
3103#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
3104#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
3105#define GL_PROXY_COLOR_TABLE 0x80D3
3106#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
3107#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
3108#define GL_COLOR_TABLE_SCALE 0x80D6
3109#define GL_COLOR_TABLE_BIAS 0x80D7
3110#define GL_COLOR_TABLE_FORMAT 0x80D8
3111#define GL_COLOR_TABLE_WIDTH 0x80D9
3112#define GL_COLOR_TABLE_RED_SIZE 0x80DA
3113#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB
3114#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC
3115#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
3116#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
3117#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
3118#define GL_CONSTANT_BORDER 0x8151
3119#define GL_REPLICATE_BORDER 0x8153
3120#define GL_CONVOLUTION_BORDER_COLOR 0x8154
3121typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
3122typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
3123typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
3124typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
3125typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, void *table);
3126typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
3127typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
3128typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
3129typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
3130typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
3131typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
3132typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
3133typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
3134typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
3135typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
3136typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
3137typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
3138typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, void *image);
3139typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
3140typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
3141typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
3142typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
3143typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
3144typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
3145typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
3146typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
3147typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
3148typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
3149typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
3150typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
3151typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target);
3152typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);
3153#ifdef GL_GLEXT_PROTOTYPES
3154GLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
3155GLAPI void APIENTRY glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params);
3156GLAPI void APIENTRY glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params);
3157GLAPI void APIENTRY glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
3158GLAPI void APIENTRY glGetColorTable (GLenum target, GLenum format, GLenum type, void *table);
3159GLAPI void APIENTRY glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params);
3160GLAPI void APIENTRY glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params);
3161GLAPI void APIENTRY glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
3162GLAPI void APIENTRY glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
3163GLAPI void APIENTRY glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
3164GLAPI void APIENTRY glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
3165GLAPI void APIENTRY glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params);
3166GLAPI void APIENTRY glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params);
3167GLAPI void APIENTRY glConvolutionParameteri (GLenum target, GLenum pname, GLint params);
3168GLAPI void APIENTRY glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params);
3169GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
3170GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
3171GLAPI void APIENTRY glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, void *image);
3172GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params);
3173GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params);
3174GLAPI void APIENTRY glGetSeparableFilter (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
3175GLAPI void APIENTRY glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
3176GLAPI void APIENTRY glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
3177GLAPI void APIENTRY glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params);
3178GLAPI void APIENTRY glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params);
3179GLAPI void APIENTRY glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
3180GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params);
3181GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params);
3182GLAPI void APIENTRY glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
3183GLAPI void APIENTRY glMinmax (GLenum target, GLenum internalformat, GLboolean sink);
3184GLAPI void APIENTRY glResetHistogram (GLenum target);
3185GLAPI void APIENTRY glResetMinmax (GLenum target);
3186#endif
3187#endif /* GL_ARB_imaging */
3188
3189#ifndef GL_ARB_indirect_parameters
3190#define GL_ARB_indirect_parameters 1
3191#define GL_PARAMETER_BUFFER_ARB 0x80EE
3192#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF
3193typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
3194typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
3195#ifdef GL_GLEXT_PROTOTYPES
3196GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
3197GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
3198#endif
3199#endif /* GL_ARB_indirect_parameters */
3200
3201#ifndef GL_ARB_instanced_arrays
3202#define GL_ARB_instanced_arrays 1
3203#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE
3204typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor);
3205#ifdef GL_GLEXT_PROTOTYPES
3206GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor);
3207#endif
3208#endif /* GL_ARB_instanced_arrays */
3209
3210#ifndef GL_ARB_internalformat_query
3211#define GL_ARB_internalformat_query 1
3212#endif /* GL_ARB_internalformat_query */
3213
3214#ifndef GL_ARB_internalformat_query2
3215#define GL_ARB_internalformat_query2 1
3216#define GL_SRGB_DECODE_ARB 0x8299
3217#endif /* GL_ARB_internalformat_query2 */
3218
3219#ifndef GL_ARB_invalidate_subdata
3220#define GL_ARB_invalidate_subdata 1
3221#endif /* GL_ARB_invalidate_subdata */
3222
3223#ifndef GL_ARB_map_buffer_alignment
3224#define GL_ARB_map_buffer_alignment 1
3225#endif /* GL_ARB_map_buffer_alignment */
3226
3227#ifndef GL_ARB_map_buffer_range
3228#define GL_ARB_map_buffer_range 1
3229#endif /* GL_ARB_map_buffer_range */
3230
3231#ifndef GL_ARB_matrix_palette
3232#define GL_ARB_matrix_palette 1
3233#define GL_MATRIX_PALETTE_ARB 0x8840
3234#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
3235#define GL_MAX_PALETTE_MATRICES_ARB 0x8842
3236#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843
3237#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844
3238#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845
3239#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846
3240#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847
3241#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848
3242#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
3243typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
3244typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices);
3245typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices);
3246typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices);
3247typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
3248#ifdef GL_GLEXT_PROTOTYPES
3249GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint index);
3250GLAPI void APIENTRY glMatrixIndexubvARB (GLint size, const GLubyte *indices);
3251GLAPI void APIENTRY glMatrixIndexusvARB (GLint size, const GLushort *indices);
3252GLAPI void APIENTRY glMatrixIndexuivARB (GLint size, const GLuint *indices);
3253GLAPI void APIENTRY glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer);
3254#endif
3255#endif /* GL_ARB_matrix_palette */
3256
3257#ifndef GL_ARB_multi_bind
3258#define GL_ARB_multi_bind 1
3259#endif /* GL_ARB_multi_bind */
3260
3261#ifndef GL_ARB_multi_draw_indirect
3262#define GL_ARB_multi_draw_indirect 1
3263#endif /* GL_ARB_multi_draw_indirect */
3264
3265#ifndef GL_ARB_multisample
3266#define GL_ARB_multisample 1
3267#define GL_MULTISAMPLE_ARB 0x809D
3268#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E
3269#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F
3270#define GL_SAMPLE_COVERAGE_ARB 0x80A0
3271#define GL_SAMPLE_BUFFERS_ARB 0x80A8
3272#define GL_SAMPLES_ARB 0x80A9
3273#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA
3274#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB
3275#define GL_MULTISAMPLE_BIT_ARB 0x20000000
3276typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLfloat value, GLboolean invert);
3277#ifdef GL_GLEXT_PROTOTYPES
3278GLAPI void APIENTRY glSampleCoverageARB (GLfloat value, GLboolean invert);
3279#endif
3280#endif /* GL_ARB_multisample */
3281
3282#ifndef GL_ARB_multitexture
3283#define GL_ARB_multitexture 1
3284#define GL_TEXTURE0_ARB 0x84C0
3285#define GL_TEXTURE1_ARB 0x84C1
3286#define GL_TEXTURE2_ARB 0x84C2
3287#define GL_TEXTURE3_ARB 0x84C3
3288#define GL_TEXTURE4_ARB 0x84C4
3289#define GL_TEXTURE5_ARB 0x84C5
3290#define GL_TEXTURE6_ARB 0x84C6
3291#define GL_TEXTURE7_ARB 0x84C7
3292#define GL_TEXTURE8_ARB 0x84C8
3293#define GL_TEXTURE9_ARB 0x84C9
3294#define GL_TEXTURE10_ARB 0x84CA
3295#define GL_TEXTURE11_ARB 0x84CB
3296#define GL_TEXTURE12_ARB 0x84CC
3297#define GL_TEXTURE13_ARB 0x84CD
3298#define GL_TEXTURE14_ARB 0x84CE
3299#define GL_TEXTURE15_ARB 0x84CF
3300#define GL_TEXTURE16_ARB 0x84D0
3301#define GL_TEXTURE17_ARB 0x84D1
3302#define GL_TEXTURE18_ARB 0x84D2
3303#define GL_TEXTURE19_ARB 0x84D3
3304#define GL_TEXTURE20_ARB 0x84D4
3305#define GL_TEXTURE21_ARB 0x84D5
3306#define GL_TEXTURE22_ARB 0x84D6
3307#define GL_TEXTURE23_ARB 0x84D7
3308#define GL_TEXTURE24_ARB 0x84D8
3309#define GL_TEXTURE25_ARB 0x84D9
3310#define GL_TEXTURE26_ARB 0x84DA
3311#define GL_TEXTURE27_ARB 0x84DB
3312#define GL_TEXTURE28_ARB 0x84DC
3313#define GL_TEXTURE29_ARB 0x84DD
3314#define GL_TEXTURE30_ARB 0x84DE
3315#define GL_TEXTURE31_ARB 0x84DF
3316#define GL_ACTIVE_TEXTURE_ARB 0x84E0
3317#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
3318#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
3319typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
3320typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
3321typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
3322typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
3323typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
3324typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
3325typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
3326typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
3327typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
3328typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
3329typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
3330typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
3331typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
3332typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
3333typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
3334typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
3335typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
3336typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
3337typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
3338typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
3339typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
3340typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
3341typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
3342typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
3343typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
3344typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
3345typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
3346typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
3347typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
3348typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
3349typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
3350typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
3351typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
3352typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
3353#ifdef GL_GLEXT_PROTOTYPES
3354GLAPI void APIENTRY glActiveTextureARB (GLenum texture);
3355GLAPI void APIENTRY glClientActiveTextureARB (GLenum texture);
3356GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum target, GLdouble s);
3357GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum target, const GLdouble *v);
3358GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum target, GLfloat s);
3359GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum target, const GLfloat *v);
3360GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum target, GLint s);
3361GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum target, const GLint *v);
3362GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum target, GLshort s);
3363GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum target, const GLshort *v);
3364GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t);
3365GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum target, const GLdouble *v);
3366GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t);
3367GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum target, const GLfloat *v);
3368GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum target, GLint s, GLint t);
3369GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum target, const GLint *v);
3370GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t);
3371GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum target, const GLshort *v);
3372GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r);
3373GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum target, const GLdouble *v);
3374GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r);
3375GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum target, const GLfloat *v);
3376GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r);
3377GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum target, const GLint *v);
3378GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r);
3379GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum target, const GLshort *v);
3380GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
3381GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum target, const GLdouble *v);
3382GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
3383GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum target, const GLfloat *v);
3384GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q);
3385GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum target, const GLint *v);
3386GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
3387GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum target, const GLshort *v);
3388#endif
3389#endif /* GL_ARB_multitexture */
3390
3391#ifndef GL_ARB_occlusion_query
3392#define GL_ARB_occlusion_query 1
3393#define GL_QUERY_COUNTER_BITS_ARB 0x8864
3394#define GL_CURRENT_QUERY_ARB 0x8865
3395#define GL_QUERY_RESULT_ARB 0x8866
3396#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867
3397#define GL_SAMPLES_PASSED_ARB 0x8914
3398typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids);
3399typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids);
3400typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id);
3401typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id);
3402typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target);
3403typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params);
3404typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params);
3405typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params);
3406#ifdef GL_GLEXT_PROTOTYPES
3407GLAPI void APIENTRY glGenQueriesARB (GLsizei n, GLuint *ids);
3408GLAPI void APIENTRY glDeleteQueriesARB (GLsizei n, const GLuint *ids);
3409GLAPI GLboolean APIENTRY glIsQueryARB (GLuint id);
3410GLAPI void APIENTRY glBeginQueryARB (GLenum target, GLuint id);
3411GLAPI void APIENTRY glEndQueryARB (GLenum target);
3412GLAPI void APIENTRY glGetQueryivARB (GLenum target, GLenum pname, GLint *params);
3413GLAPI void APIENTRY glGetQueryObjectivARB (GLuint id, GLenum pname, GLint *params);
3414GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint *params);
3415#endif
3416#endif /* GL_ARB_occlusion_query */
3417
3418#ifndef GL_ARB_occlusion_query2
3419#define GL_ARB_occlusion_query2 1
3420#endif /* GL_ARB_occlusion_query2 */
3421
3422#ifndef GL_ARB_pixel_buffer_object
3423#define GL_ARB_pixel_buffer_object 1
3424#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB
3425#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC
3426#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED
3427#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
3428#endif /* GL_ARB_pixel_buffer_object */
3429
3430#ifndef GL_ARB_point_parameters
3431#define GL_ARB_point_parameters 1
3432#define GL_POINT_SIZE_MIN_ARB 0x8126
3433#define GL_POINT_SIZE_MAX_ARB 0x8127
3434#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128
3435#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
3436typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
3437typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params);
3438#ifdef GL_GLEXT_PROTOTYPES
3439GLAPI void APIENTRY glPointParameterfARB (GLenum pname, GLfloat param);
3440GLAPI void APIENTRY glPointParameterfvARB (GLenum pname, const GLfloat *params);
3441#endif
3442#endif /* GL_ARB_point_parameters */
3443
3444#ifndef GL_ARB_point_sprite
3445#define GL_ARB_point_sprite 1
3446#define GL_POINT_SPRITE_ARB 0x8861
3447#define GL_COORD_REPLACE_ARB 0x8862
3448#endif /* GL_ARB_point_sprite */
3449
3450#ifndef GL_ARB_program_interface_query
3451#define GL_ARB_program_interface_query 1
3452#endif /* GL_ARB_program_interface_query */
3453
3454#ifndef GL_ARB_provoking_vertex
3455#define GL_ARB_provoking_vertex 1
3456#endif /* GL_ARB_provoking_vertex */
3457
3458#ifndef GL_ARB_query_buffer_object
3459#define GL_ARB_query_buffer_object 1
3460#endif /* GL_ARB_query_buffer_object */
3461
3462#ifndef GL_ARB_robust_buffer_access_behavior
3463#define GL_ARB_robust_buffer_access_behavior 1
3464#endif /* GL_ARB_robust_buffer_access_behavior */
3465
3466#ifndef GL_ARB_robustness
3467#define GL_ARB_robustness 1
3468#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004
3469#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
3470#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253
3471#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254
3472#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255
3473#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
3474#define GL_NO_RESET_NOTIFICATION_ARB 0x8261
3475typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void);
3476typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);
3477typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
3478typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void *img);
3479typedef void (APIENTRYP PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
3480typedef void (APIENTRYP PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
3481typedef void (APIENTRYP PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
3482typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
3483typedef void (APIENTRYP PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
3484typedef void (APIENTRYP PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
3485typedef void (APIENTRYP PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v);
3486typedef void (APIENTRYP PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat *values);
3487typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint *values);
3488typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort *values);
3489typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte *pattern);
3490typedef void (APIENTRYP PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);
3491typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);
3492typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);
3493typedef void (APIENTRYP PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
3494typedef void (APIENTRYP PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
3495#ifdef GL_GLEXT_PROTOTYPES
3496GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void);
3497GLAPI void APIENTRY glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);
3498GLAPI void APIENTRY glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
3499GLAPI void APIENTRY glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, void *img);
3500GLAPI void APIENTRY glGetnUniformfvARB (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
3501GLAPI void APIENTRY glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint *params);
3502GLAPI void APIENTRY glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
3503GLAPI void APIENTRY glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
3504GLAPI void APIENTRY glGetnMapdvARB (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
3505GLAPI void APIENTRY glGetnMapfvARB (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
3506GLAPI void APIENTRY glGetnMapivARB (GLenum target, GLenum query, GLsizei bufSize, GLint *v);
3507GLAPI void APIENTRY glGetnPixelMapfvARB (GLenum map, GLsizei bufSize, GLfloat *values);
3508GLAPI void APIENTRY glGetnPixelMapuivARB (GLenum map, GLsizei bufSize, GLuint *values);
3509GLAPI void APIENTRY glGetnPixelMapusvARB (GLenum map, GLsizei bufSize, GLushort *values);
3510GLAPI void APIENTRY glGetnPolygonStippleARB (GLsizei bufSize, GLubyte *pattern);
3511GLAPI void APIENTRY glGetnColorTableARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);
3512GLAPI void APIENTRY glGetnConvolutionFilterARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);
3513GLAPI void APIENTRY glGetnSeparableFilterARB (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);
3514GLAPI void APIENTRY glGetnHistogramARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
3515GLAPI void APIENTRY glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
3516#endif
3517#endif /* GL_ARB_robustness */
3518
3519#ifndef GL_ARB_robustness_isolation
3520#define GL_ARB_robustness_isolation 1
3521#endif /* GL_ARB_robustness_isolation */
3522
3523#ifndef GL_ARB_sample_shading
3524#define GL_ARB_sample_shading 1
3525#define GL_SAMPLE_SHADING_ARB 0x8C36
3526#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37
3527typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLfloat value);
3528#ifdef GL_GLEXT_PROTOTYPES
3529GLAPI void APIENTRY glMinSampleShadingARB (GLfloat value);
3530#endif
3531#endif /* GL_ARB_sample_shading */
3532
3533#ifndef GL_ARB_sampler_objects
3534#define GL_ARB_sampler_objects 1
3535#endif /* GL_ARB_sampler_objects */
3536
3537#ifndef GL_ARB_seamless_cube_map
3538#define GL_ARB_seamless_cube_map 1
3539#endif /* GL_ARB_seamless_cube_map */
3540
3541#ifndef GL_ARB_seamless_cubemap_per_texture
3542#define GL_ARB_seamless_cubemap_per_texture 1
3543#endif /* GL_ARB_seamless_cubemap_per_texture */
3544
3545#ifndef GL_ARB_separate_shader_objects
3546#define GL_ARB_separate_shader_objects 1
3547#endif /* GL_ARB_separate_shader_objects */
3548
3549#ifndef GL_ARB_shader_atomic_counters
3550#define GL_ARB_shader_atomic_counters 1
3551#endif /* GL_ARB_shader_atomic_counters */
3552
3553#ifndef GL_ARB_shader_bit_encoding
3554#define GL_ARB_shader_bit_encoding 1
3555#endif /* GL_ARB_shader_bit_encoding */
3556
3557#ifndef GL_ARB_shader_draw_parameters
3558#define GL_ARB_shader_draw_parameters 1
3559#endif /* GL_ARB_shader_draw_parameters */
3560
3561#ifndef GL_ARB_shader_group_vote
3562#define GL_ARB_shader_group_vote 1
3563#endif /* GL_ARB_shader_group_vote */
3564
3565#ifndef GL_ARB_shader_image_load_store
3566#define GL_ARB_shader_image_load_store 1
3567#endif /* GL_ARB_shader_image_load_store */
3568
3569#ifndef GL_ARB_shader_image_size
3570#define GL_ARB_shader_image_size 1
3571#endif /* GL_ARB_shader_image_size */
3572
3573#ifndef GL_ARB_shader_objects
3574#define GL_ARB_shader_objects 1
3575#ifdef __APPLE__
3576typedef void *GLhandleARB;
3577#else
3578typedef unsigned int GLhandleARB;
3579#endif
3580typedef char GLcharARB;
3581#define GL_PROGRAM_OBJECT_ARB 0x8B40
3582#define GL_SHADER_OBJECT_ARB 0x8B48
3583#define GL_OBJECT_TYPE_ARB 0x8B4E
3584#define GL_OBJECT_SUBTYPE_ARB 0x8B4F
3585#define GL_FLOAT_VEC2_ARB 0x8B50
3586#define GL_FLOAT_VEC3_ARB 0x8B51
3587#define GL_FLOAT_VEC4_ARB 0x8B52
3588#define GL_INT_VEC2_ARB 0x8B53
3589#define GL_INT_VEC3_ARB 0x8B54
3590#define GL_INT_VEC4_ARB 0x8B55
3591#define GL_BOOL_ARB 0x8B56
3592#define GL_BOOL_VEC2_ARB 0x8B57
3593#define GL_BOOL_VEC3_ARB 0x8B58
3594#define GL_BOOL_VEC4_ARB 0x8B59
3595#define GL_FLOAT_MAT2_ARB 0x8B5A
3596#define GL_FLOAT_MAT3_ARB 0x8B5B
3597#define GL_FLOAT_MAT4_ARB 0x8B5C
3598#define GL_SAMPLER_1D_ARB 0x8B5D
3599#define GL_SAMPLER_2D_ARB 0x8B5E
3600#define GL_SAMPLER_3D_ARB 0x8B5F
3601#define GL_SAMPLER_CUBE_ARB 0x8B60
3602#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61
3603#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62
3604#define GL_SAMPLER_2D_RECT_ARB 0x8B63
3605#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
3606#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80
3607#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81
3608#define GL_OBJECT_LINK_STATUS_ARB 0x8B82
3609#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83
3610#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84
3611#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85
3612#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86
3613#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
3614#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88
3615typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
3616typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname);
3617typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
3618typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
3619typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length);
3620typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
3621typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
3622typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
3623typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
3624typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
3625typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);
3626typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
3627typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
3628typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
3629typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
3630typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
3631typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
3632typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
3633typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
3634typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
3635typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
3636typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
3637typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
3638typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value);
3639typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value);
3640typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value);
3641typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value);
3642typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3643typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3644typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3645typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params);
3646typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params);
3647typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
3648typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
3649typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
3650typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
3651typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params);
3652typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params);
3653typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
3654#ifdef GL_GLEXT_PROTOTYPES
3655GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB obj);
3656GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum pname);
3657GLAPI void APIENTRY glDetachObjectARB (GLhandleARB containerObj, GLhandleARB attachedObj);
3658GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum shaderType);
3659GLAPI void APIENTRY glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length);
3660GLAPI void APIENTRY glCompileShaderARB (GLhandleARB shaderObj);
3661GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void);
3662GLAPI void APIENTRY glAttachObjectARB (GLhandleARB containerObj, GLhandleARB obj);
3663GLAPI void APIENTRY glLinkProgramARB (GLhandleARB programObj);
3664GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB programObj);
3665GLAPI void APIENTRY glValidateProgramARB (GLhandleARB programObj);
3666GLAPI void APIENTRY glUniform1fARB (GLint location, GLfloat v0);
3667GLAPI void APIENTRY glUniform2fARB (GLint location, GLfloat v0, GLfloat v1);
3668GLAPI void APIENTRY glUniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
3669GLAPI void APIENTRY glUniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
3670GLAPI void APIENTRY glUniform1iARB (GLint location, GLint v0);
3671GLAPI void APIENTRY glUniform2iARB (GLint location, GLint v0, GLint v1);
3672GLAPI void APIENTRY glUniform3iARB (GLint location, GLint v0, GLint v1, GLint v2);
3673GLAPI void APIENTRY glUniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
3674GLAPI void APIENTRY glUniform1fvARB (GLint location, GLsizei count, const GLfloat *value);
3675GLAPI void APIENTRY glUniform2fvARB (GLint location, GLsizei count, const GLfloat *value);
3676GLAPI void APIENTRY glUniform3fvARB (GLint location, GLsizei count, const GLfloat *value);
3677GLAPI void APIENTRY glUniform4fvARB (GLint location, GLsizei count, const GLfloat *value);
3678GLAPI void APIENTRY glUniform1ivARB (GLint location, GLsizei count, const GLint *value);
3679GLAPI void APIENTRY glUniform2ivARB (GLint location, GLsizei count, const GLint *value);
3680GLAPI void APIENTRY glUniform3ivARB (GLint location, GLsizei count, const GLint *value);
3681GLAPI void APIENTRY glUniform4ivARB (GLint location, GLsizei count, const GLint *value);
3682GLAPI void APIENTRY glUniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3683GLAPI void APIENTRY glUniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3684GLAPI void APIENTRY glUniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3685GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat *params);
3686GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint *params);
3687GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
3688GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
3689GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name);
3690GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
3691GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat *params);
3692GLAPI void APIENTRY glGetUniformivARB (GLhandleARB programObj, GLint location, GLint *params);
3693GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
3694#endif
3695#endif /* GL_ARB_shader_objects */
3696
3697#ifndef GL_ARB_shader_precision
3698#define GL_ARB_shader_precision 1
3699#endif /* GL_ARB_shader_precision */
3700
3701#ifndef GL_ARB_shader_stencil_export
3702#define GL_ARB_shader_stencil_export 1
3703#endif /* GL_ARB_shader_stencil_export */
3704
3705#ifndef GL_ARB_shader_storage_buffer_object
3706#define GL_ARB_shader_storage_buffer_object 1
3707#endif /* GL_ARB_shader_storage_buffer_object */
3708
3709#ifndef GL_ARB_shader_subroutine
3710#define GL_ARB_shader_subroutine 1
3711#endif /* GL_ARB_shader_subroutine */
3712
3713#ifndef GL_ARB_shader_texture_lod
3714#define GL_ARB_shader_texture_lod 1
3715#endif /* GL_ARB_shader_texture_lod */
3716
3717#ifndef GL_ARB_shading_language_100
3718#define GL_ARB_shading_language_100 1
3719#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C
3720#endif /* GL_ARB_shading_language_100 */
3721
3722#ifndef GL_ARB_shading_language_420pack
3723#define GL_ARB_shading_language_420pack 1
3724#endif /* GL_ARB_shading_language_420pack */
3725
3726#ifndef GL_ARB_shading_language_include
3727#define GL_ARB_shading_language_include 1
3728#define GL_SHADER_INCLUDE_ARB 0x8DAE
3729#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9
3730#define GL_NAMED_STRING_TYPE_ARB 0x8DEA
3731typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
3732typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
3733typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);
3734typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
3735typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
3736typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
3737#ifdef GL_GLEXT_PROTOTYPES
3738GLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
3739GLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name);
3740GLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);
3741GLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name);
3742GLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
3743GLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
3744#endif
3745#endif /* GL_ARB_shading_language_include */
3746
3747#ifndef GL_ARB_shading_language_packing
3748#define GL_ARB_shading_language_packing 1
3749#endif /* GL_ARB_shading_language_packing */
3750
3751#ifndef GL_ARB_shadow
3752#define GL_ARB_shadow 1
3753#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C
3754#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D
3755#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E
3756#endif /* GL_ARB_shadow */
3757
3758#ifndef GL_ARB_shadow_ambient
3759#define GL_ARB_shadow_ambient 1
3760#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
3761#endif /* GL_ARB_shadow_ambient */
3762
3763#ifndef GL_ARB_sparse_texture
3764#define GL_ARB_sparse_texture 1
3765#define GL_TEXTURE_SPARSE_ARB 0x91A6
3766#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7
3767#define GL_MIN_SPARSE_LEVEL_ARB 0x919B
3768#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8
3769#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195
3770#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196
3771#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197
3772#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198
3773#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199
3774#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A
3775#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9
3776typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
3777#ifdef GL_GLEXT_PROTOTYPES
3778GLAPI void APIENTRY glTexPageCommitmentARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
3779#endif
3780#endif /* GL_ARB_sparse_texture */
3781
3782#ifndef GL_ARB_stencil_texturing
3783#define GL_ARB_stencil_texturing 1
3784#endif /* GL_ARB_stencil_texturing */
3785
3786#ifndef GL_ARB_sync
3787#define GL_ARB_sync 1
3788#endif /* GL_ARB_sync */
3789
3790#ifndef GL_ARB_tessellation_shader
3791#define GL_ARB_tessellation_shader 1
3792#endif /* GL_ARB_tessellation_shader */
3793
3794#ifndef GL_ARB_texture_border_clamp
3795#define GL_ARB_texture_border_clamp 1
3796#define GL_CLAMP_TO_BORDER_ARB 0x812D
3797#endif /* GL_ARB_texture_border_clamp */
3798
3799#ifndef GL_ARB_texture_buffer_object
3800#define GL_ARB_texture_buffer_object 1
3801#define GL_TEXTURE_BUFFER_ARB 0x8C2A
3802#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B
3803#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C
3804#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D
3805#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E
3806typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer);
3807#ifdef GL_GLEXT_PROTOTYPES
3808GLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer);
3809#endif
3810#endif /* GL_ARB_texture_buffer_object */
3811
3812#ifndef GL_ARB_texture_buffer_object_rgb32
3813#define GL_ARB_texture_buffer_object_rgb32 1
3814#endif /* GL_ARB_texture_buffer_object_rgb32 */
3815
3816#ifndef GL_ARB_texture_buffer_range
3817#define GL_ARB_texture_buffer_range 1
3818#endif /* GL_ARB_texture_buffer_range */
3819
3820#ifndef GL_ARB_texture_compression
3821#define GL_ARB_texture_compression 1
3822#define GL_COMPRESSED_ALPHA_ARB 0x84E9
3823#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA
3824#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
3825#define GL_COMPRESSED_INTENSITY_ARB 0x84EC
3826#define GL_COMPRESSED_RGB_ARB 0x84ED
3827#define GL_COMPRESSED_RGBA_ARB 0x84EE
3828#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF
3829#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
3830#define GL_TEXTURE_COMPRESSED_ARB 0x86A1
3831#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
3832#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
3833typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
3834typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
3835typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
3836typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
3837typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
3838typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
3839typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img);
3840#ifdef GL_GLEXT_PROTOTYPES
3841GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
3842GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
3843GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
3844GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
3845GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
3846GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
3847GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum target, GLint level, void *img);
3848#endif
3849#endif /* GL_ARB_texture_compression */
3850
3851#ifndef GL_ARB_texture_compression_bptc
3852#define GL_ARB_texture_compression_bptc 1
3853#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
3854#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
3855#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
3856#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
3857#endif /* GL_ARB_texture_compression_bptc */
3858
3859#ifndef GL_ARB_texture_compression_rgtc
3860#define GL_ARB_texture_compression_rgtc 1
3861#endif /* GL_ARB_texture_compression_rgtc */
3862
3863#ifndef GL_ARB_texture_cube_map
3864#define GL_ARB_texture_cube_map 1
3865#define GL_NORMAL_MAP_ARB 0x8511
3866#define GL_REFLECTION_MAP_ARB 0x8512
3867#define GL_TEXTURE_CUBE_MAP_ARB 0x8513
3868#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514
3869#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
3870#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
3871#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
3872#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
3873#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
3874#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
3875#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
3876#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C
3877#endif /* GL_ARB_texture_cube_map */
3878
3879#ifndef GL_ARB_texture_cube_map_array
3880#define GL_ARB_texture_cube_map_array 1
3881#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009
3882#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A
3883#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B
3884#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C
3885#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D
3886#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E
3887#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F
3888#endif /* GL_ARB_texture_cube_map_array */
3889
3890#ifndef GL_ARB_texture_env_add
3891#define GL_ARB_texture_env_add 1
3892#endif /* GL_ARB_texture_env_add */
3893
3894#ifndef GL_ARB_texture_env_combine
3895#define GL_ARB_texture_env_combine 1
3896#define GL_COMBINE_ARB 0x8570
3897#define GL_COMBINE_RGB_ARB 0x8571
3898#define GL_COMBINE_ALPHA_ARB 0x8572
3899#define GL_SOURCE0_RGB_ARB 0x8580
3900#define GL_SOURCE1_RGB_ARB 0x8581
3901#define GL_SOURCE2_RGB_ARB 0x8582
3902#define GL_SOURCE0_ALPHA_ARB 0x8588
3903#define GL_SOURCE1_ALPHA_ARB 0x8589
3904#define GL_SOURCE2_ALPHA_ARB 0x858A
3905#define GL_OPERAND0_RGB_ARB 0x8590
3906#define GL_OPERAND1_RGB_ARB 0x8591
3907#define GL_OPERAND2_RGB_ARB 0x8592
3908#define GL_OPERAND0_ALPHA_ARB 0x8598
3909#define GL_OPERAND1_ALPHA_ARB 0x8599
3910#define GL_OPERAND2_ALPHA_ARB 0x859A
3911#define GL_RGB_SCALE_ARB 0x8573
3912#define GL_ADD_SIGNED_ARB 0x8574
3913#define GL_INTERPOLATE_ARB 0x8575
3914#define GL_SUBTRACT_ARB 0x84E7
3915#define GL_CONSTANT_ARB 0x8576
3916#define GL_PRIMARY_COLOR_ARB 0x8577
3917#define GL_PREVIOUS_ARB 0x8578
3918#endif /* GL_ARB_texture_env_combine */
3919
3920#ifndef GL_ARB_texture_env_crossbar
3921#define GL_ARB_texture_env_crossbar 1
3922#endif /* GL_ARB_texture_env_crossbar */
3923
3924#ifndef GL_ARB_texture_env_dot3
3925#define GL_ARB_texture_env_dot3 1
3926#define GL_DOT3_RGB_ARB 0x86AE
3927#define GL_DOT3_RGBA_ARB 0x86AF
3928#endif /* GL_ARB_texture_env_dot3 */
3929
3930#ifndef GL_ARB_texture_float
3931#define GL_ARB_texture_float 1
3932#define GL_TEXTURE_RED_TYPE_ARB 0x8C10
3933#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11
3934#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12
3935#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13
3936#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14
3937#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15
3938#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16
3939#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17
3940#define GL_RGBA32F_ARB 0x8814
3941#define GL_RGB32F_ARB 0x8815
3942#define GL_ALPHA32F_ARB 0x8816
3943#define GL_INTENSITY32F_ARB 0x8817
3944#define GL_LUMINANCE32F_ARB 0x8818
3945#define GL_LUMINANCE_ALPHA32F_ARB 0x8819
3946#define GL_RGBA16F_ARB 0x881A
3947#define GL_RGB16F_ARB 0x881B
3948#define GL_ALPHA16F_ARB 0x881C
3949#define GL_INTENSITY16F_ARB 0x881D
3950#define GL_LUMINANCE16F_ARB 0x881E
3951#define GL_LUMINANCE_ALPHA16F_ARB 0x881F
3952#endif /* GL_ARB_texture_float */
3953
3954#ifndef GL_ARB_texture_gather
3955#define GL_ARB_texture_gather 1
3956#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
3957#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
3958#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F
3959#endif /* GL_ARB_texture_gather */
3960
3961#ifndef GL_ARB_texture_mirror_clamp_to_edge
3962#define GL_ARB_texture_mirror_clamp_to_edge 1
3963#endif /* GL_ARB_texture_mirror_clamp_to_edge */
3964
3965#ifndef GL_ARB_texture_mirrored_repeat
3966#define GL_ARB_texture_mirrored_repeat 1
3967#define GL_MIRRORED_REPEAT_ARB 0x8370
3968#endif /* GL_ARB_texture_mirrored_repeat */
3969
3970#ifndef GL_ARB_texture_multisample
3971#define GL_ARB_texture_multisample 1
3972#endif /* GL_ARB_texture_multisample */
3973
3974#ifndef GL_ARB_texture_non_power_of_two
3975#define GL_ARB_texture_non_power_of_two 1
3976#endif /* GL_ARB_texture_non_power_of_two */
3977
3978#ifndef GL_ARB_texture_query_levels
3979#define GL_ARB_texture_query_levels 1
3980#endif /* GL_ARB_texture_query_levels */
3981
3982#ifndef GL_ARB_texture_query_lod
3983#define GL_ARB_texture_query_lod 1
3984#endif /* GL_ARB_texture_query_lod */
3985
3986#ifndef GL_ARB_texture_rectangle
3987#define GL_ARB_texture_rectangle 1
3988#define GL_TEXTURE_RECTANGLE_ARB 0x84F5
3989#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6
3990#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7
3991#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
3992#endif /* GL_ARB_texture_rectangle */
3993
3994#ifndef GL_ARB_texture_rg
3995#define GL_ARB_texture_rg 1
3996#endif /* GL_ARB_texture_rg */
3997
3998#ifndef GL_ARB_texture_rgb10_a2ui
3999#define GL_ARB_texture_rgb10_a2ui 1
4000#endif /* GL_ARB_texture_rgb10_a2ui */
4001
4002#ifndef GL_ARB_texture_stencil8
4003#define GL_ARB_texture_stencil8 1
4004#endif /* GL_ARB_texture_stencil8 */
4005
4006#ifndef GL_ARB_texture_storage
4007#define GL_ARB_texture_storage 1
4008#endif /* GL_ARB_texture_storage */
4009
4010#ifndef GL_ARB_texture_storage_multisample
4011#define GL_ARB_texture_storage_multisample 1
4012#endif /* GL_ARB_texture_storage_multisample */
4013
4014#ifndef GL_ARB_texture_swizzle
4015#define GL_ARB_texture_swizzle 1
4016#endif /* GL_ARB_texture_swizzle */
4017
4018#ifndef GL_ARB_texture_view
4019#define GL_ARB_texture_view 1
4020#endif /* GL_ARB_texture_view */
4021
4022#ifndef GL_ARB_timer_query
4023#define GL_ARB_timer_query 1
4024#endif /* GL_ARB_timer_query */
4025
4026#ifndef GL_ARB_transform_feedback2
4027#define GL_ARB_transform_feedback2 1
4028#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23
4029#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24
4030#endif /* GL_ARB_transform_feedback2 */
4031
4032#ifndef GL_ARB_transform_feedback3
4033#define GL_ARB_transform_feedback3 1
4034#endif /* GL_ARB_transform_feedback3 */
4035
4036#ifndef GL_ARB_transform_feedback_instanced
4037#define GL_ARB_transform_feedback_instanced 1
4038#endif /* GL_ARB_transform_feedback_instanced */
4039
4040#ifndef GL_ARB_transpose_matrix
4041#define GL_ARB_transpose_matrix 1
4042#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
4043#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
4044#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5
4045#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6
4046typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
4047typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
4048typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
4049typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
4050#ifdef GL_GLEXT_PROTOTYPES
4051GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *m);
4052GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *m);
4053GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *m);
4054GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *m);
4055#endif
4056#endif /* GL_ARB_transpose_matrix */
4057
4058#ifndef GL_ARB_uniform_buffer_object
4059#define GL_ARB_uniform_buffer_object 1
4060#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C
4061#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
4062#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45
4063#endif /* GL_ARB_uniform_buffer_object */
4064
4065#ifndef GL_ARB_vertex_array_bgra
4066#define GL_ARB_vertex_array_bgra 1
4067#endif /* GL_ARB_vertex_array_bgra */
4068
4069#ifndef GL_ARB_vertex_array_object
4070#define GL_ARB_vertex_array_object 1
4071#endif /* GL_ARB_vertex_array_object */
4072
4073#ifndef GL_ARB_vertex_attrib_64bit
4074#define GL_ARB_vertex_attrib_64bit 1
4075#endif /* GL_ARB_vertex_attrib_64bit */
4076
4077#ifndef GL_ARB_vertex_attrib_binding
4078#define GL_ARB_vertex_attrib_binding 1
4079#endif /* GL_ARB_vertex_attrib_binding */
4080
4081#ifndef GL_ARB_vertex_blend
4082#define GL_ARB_vertex_blend 1
4083#define GL_MAX_VERTEX_UNITS_ARB 0x86A4
4084#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5
4085#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6
4086#define GL_VERTEX_BLEND_ARB 0x86A7
4087#define GL_CURRENT_WEIGHT_ARB 0x86A8
4088#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9
4089#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA
4090#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB
4091#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC
4092#define GL_WEIGHT_ARRAY_ARB 0x86AD
4093#define GL_MODELVIEW0_ARB 0x1700
4094#define GL_MODELVIEW1_ARB 0x850A
4095#define GL_MODELVIEW2_ARB 0x8722
4096#define GL_MODELVIEW3_ARB 0x8723
4097#define GL_MODELVIEW4_ARB 0x8724
4098#define GL_MODELVIEW5_ARB 0x8725
4099#define GL_MODELVIEW6_ARB 0x8726
4100#define GL_MODELVIEW7_ARB 0x8727
4101#define GL_MODELVIEW8_ARB 0x8728
4102#define GL_MODELVIEW9_ARB 0x8729
4103#define GL_MODELVIEW10_ARB 0x872A
4104#define GL_MODELVIEW11_ARB 0x872B
4105#define GL_MODELVIEW12_ARB 0x872C
4106#define GL_MODELVIEW13_ARB 0x872D
4107#define GL_MODELVIEW14_ARB 0x872E
4108#define GL_MODELVIEW15_ARB 0x872F
4109#define GL_MODELVIEW16_ARB 0x8730
4110#define GL_MODELVIEW17_ARB 0x8731
4111#define GL_MODELVIEW18_ARB 0x8732
4112#define GL_MODELVIEW19_ARB 0x8733
4113#define GL_MODELVIEW20_ARB 0x8734
4114#define GL_MODELVIEW21_ARB 0x8735
4115#define GL_MODELVIEW22_ARB 0x8736
4116#define GL_MODELVIEW23_ARB 0x8737
4117#define GL_MODELVIEW24_ARB 0x8738
4118#define GL_MODELVIEW25_ARB 0x8739
4119#define GL_MODELVIEW26_ARB 0x873A
4120#define GL_MODELVIEW27_ARB 0x873B
4121#define GL_MODELVIEW28_ARB 0x873C
4122#define GL_MODELVIEW29_ARB 0x873D
4123#define GL_MODELVIEW30_ARB 0x873E
4124#define GL_MODELVIEW31_ARB 0x873F
4125typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights);
4126typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights);
4127typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights);
4128typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights);
4129typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights);
4130typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights);
4131typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights);
4132typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights);
4133typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
4134typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count);
4135#ifdef GL_GLEXT_PROTOTYPES
4136GLAPI void APIENTRY glWeightbvARB (GLint size, const GLbyte *weights);
4137GLAPI void APIENTRY glWeightsvARB (GLint size, const GLshort *weights);
4138GLAPI void APIENTRY glWeightivARB (GLint size, const GLint *weights);
4139GLAPI void APIENTRY glWeightfvARB (GLint size, const GLfloat *weights);
4140GLAPI void APIENTRY glWeightdvARB (GLint size, const GLdouble *weights);
4141GLAPI void APIENTRY glWeightubvARB (GLint size, const GLubyte *weights);
4142GLAPI void APIENTRY glWeightusvARB (GLint size, const GLushort *weights);
4143GLAPI void APIENTRY glWeightuivARB (GLint size, const GLuint *weights);
4144GLAPI void APIENTRY glWeightPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer);
4145GLAPI void APIENTRY glVertexBlendARB (GLint count);
4146#endif
4147#endif /* GL_ARB_vertex_blend */
4148
4149#ifndef GL_ARB_vertex_buffer_object
4150#define GL_ARB_vertex_buffer_object 1
4151#ifdef __MACOSX__ /* The OS X headers haven't caught up with Khronos yet */
4152typedef long GLsizeiptrARB;
4153typedef long GLintptrARB;
4154#else
4155typedef ptrdiff_t GLsizeiptrARB;
4156typedef ptrdiff_t GLintptrARB;
4157#endif
4158#define GL_BUFFER_SIZE_ARB 0x8764
4159#define GL_BUFFER_USAGE_ARB 0x8765
4160#define GL_ARRAY_BUFFER_ARB 0x8892
4161#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893
4162#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894
4163#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
4164#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
4165#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
4166#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
4167#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
4168#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
4169#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
4170#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
4171#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
4172#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
4173#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
4174#define GL_READ_ONLY_ARB 0x88B8
4175#define GL_WRITE_ONLY_ARB 0x88B9
4176#define GL_READ_WRITE_ARB 0x88BA
4177#define GL_BUFFER_ACCESS_ARB 0x88BB
4178#define GL_BUFFER_MAPPED_ARB 0x88BC
4179#define GL_BUFFER_MAP_POINTER_ARB 0x88BD
4180#define GL_STREAM_DRAW_ARB 0x88E0
4181#define GL_STREAM_READ_ARB 0x88E1
4182#define GL_STREAM_COPY_ARB 0x88E2
4183#define GL_STATIC_DRAW_ARB 0x88E4
4184#define GL_STATIC_READ_ARB 0x88E5
4185#define GL_STATIC_COPY_ARB 0x88E6
4186#define GL_DYNAMIC_DRAW_ARB 0x88E8
4187#define GL_DYNAMIC_READ_ARB 0x88E9
4188#define GL_DYNAMIC_COPY_ARB 0x88EA
4189typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
4190typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
4191typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
4192typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer);
4193typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage);
4194typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data);
4195typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data);
4196typedef void *(APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access);
4197typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target);
4198typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params);
4199typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, void **params);
4200#ifdef GL_GLEXT_PROTOTYPES
4201GLAPI void APIENTRY glBindBufferARB (GLenum target, GLuint buffer);
4202GLAPI void APIENTRY glDeleteBuffersARB (GLsizei n, const GLuint *buffers);
4203GLAPI void APIENTRY glGenBuffersARB (GLsizei n, GLuint *buffers);
4204GLAPI GLboolean APIENTRY glIsBufferARB (GLuint buffer);
4205GLAPI void APIENTRY glBufferDataARB (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage);
4206GLAPI void APIENTRY glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data);
4207GLAPI void APIENTRY glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data);
4208GLAPI void *APIENTRY glMapBufferARB (GLenum target, GLenum access);
4209GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum target);
4210GLAPI void APIENTRY glGetBufferParameterivARB (GLenum target, GLenum pname, GLint *params);
4211GLAPI void APIENTRY glGetBufferPointervARB (GLenum target, GLenum pname, void **params);
4212#endif
4213#endif /* GL_ARB_vertex_buffer_object */
4214
4215#ifndef GL_ARB_vertex_program
4216#define GL_ARB_vertex_program 1
4217#define GL_COLOR_SUM_ARB 0x8458
4218#define GL_VERTEX_PROGRAM_ARB 0x8620
4219#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
4220#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623
4221#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
4222#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625
4223#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626
4224#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642
4225#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643
4226#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
4227#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869
4228#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
4229#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0
4230#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
4231#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
4232#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
4233typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
4234typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v);
4235typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
4236typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v);
4237typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);
4238typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v);
4239typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);
4240typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v);
4241typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);
4242typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v);
4243typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);
4244typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v);
4245typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
4246typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v);
4247typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
4248typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v);
4249typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
4250typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v);
4251typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v);
4252typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v);
4253typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v);
4254typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
4255typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v);
4256typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v);
4257typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v);
4258typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v);
4259typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
4260typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v);
4261typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
4262typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v);
4263typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v);
4264typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
4265typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v);
4266typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v);
4267typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v);
4268typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v);
4269typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
4270typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
4271typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
4272typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params);
4273typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params);
4274typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params);
4275typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, void **pointer);
4276#ifdef GL_GLEXT_PROTOTYPES
4277GLAPI void APIENTRY glVertexAttrib1dARB (GLuint index, GLdouble x);
4278GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint index, const GLdouble *v);
4279GLAPI void APIENTRY glVertexAttrib1fARB (GLuint index, GLfloat x);
4280GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint index, const GLfloat *v);
4281GLAPI void APIENTRY glVertexAttrib1sARB (GLuint index, GLshort x);
4282GLAPI void APIENTRY glVertexAttrib1svARB (GLuint index, const GLshort *v);
4283GLAPI void APIENTRY glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y);
4284GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint index, const GLdouble *v);
4285GLAPI void APIENTRY glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y);
4286GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint index, const GLfloat *v);
4287GLAPI void APIENTRY glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y);
4288GLAPI void APIENTRY glVertexAttrib2svARB (GLuint index, const GLshort *v);
4289GLAPI void APIENTRY glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z);
4290GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint index, const GLdouble *v);
4291GLAPI void APIENTRY glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z);
4292GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint index, const GLfloat *v);
4293GLAPI void APIENTRY glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z);
4294GLAPI void APIENTRY glVertexAttrib3svARB (GLuint index, const GLshort *v);
4295GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint index, const GLbyte *v);
4296GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint index, const GLint *v);
4297GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint index, const GLshort *v);
4298GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
4299GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint index, const GLubyte *v);
4300GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint index, const GLuint *v);
4301GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint index, const GLushort *v);
4302GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint index, const GLbyte *v);
4303GLAPI void APIENTRY glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
4304GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint index, const GLdouble *v);
4305GLAPI void APIENTRY glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
4306GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint index, const GLfloat *v);
4307GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint index, const GLint *v);
4308GLAPI void APIENTRY glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
4309GLAPI void APIENTRY glVertexAttrib4svARB (GLuint index, const GLshort *v);
4310GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint index, const GLubyte *v);
4311GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint index, const GLuint *v);
4312GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint index, const GLushort *v);
4313GLAPI void APIENTRY glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
4314GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint index);
4315GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint index);
4316GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble *params);
4317GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat *params);
4318GLAPI void APIENTRY glGetVertexAttribivARB (GLuint index, GLenum pname, GLint *params);
4319GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint index, GLenum pname, void **pointer);
4320#endif
4321#endif /* GL_ARB_vertex_program */
4322
4323#ifndef GL_ARB_vertex_shader
4324#define GL_ARB_vertex_shader 1
4325#define GL_VERTEX_SHADER_ARB 0x8B31
4326#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
4327#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B
4328#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
4329#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
4330#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89
4331#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A
4332typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name);
4333typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
4334typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
4335#ifdef GL_GLEXT_PROTOTYPES
4336GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB *name);
4337GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
4338GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name);
4339#endif
4340#endif /* GL_ARB_vertex_shader */
4341
4342#ifndef GL_ARB_vertex_type_10f_11f_11f_rev
4343#define GL_ARB_vertex_type_10f_11f_11f_rev 1
4344#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */
4345
4346#ifndef GL_ARB_vertex_type_2_10_10_10_rev
4347#define GL_ARB_vertex_type_2_10_10_10_rev 1
4348#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
4349
4350#ifndef GL_ARB_viewport_array
4351#define GL_ARB_viewport_array 1
4352#endif /* GL_ARB_viewport_array */
4353
4354#ifndef GL_ARB_window_pos
4355#define GL_ARB_window_pos 1
4356typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
4357typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v);
4358typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y);
4359typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v);
4360typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y);
4361typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v);
4362typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y);
4363typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v);
4364typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z);
4365typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v);
4366typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z);
4367typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v);
4368typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z);
4369typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v);
4370typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z);
4371typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v);
4372#ifdef GL_GLEXT_PROTOTYPES
4373GLAPI void APIENTRY glWindowPos2dARB (GLdouble x, GLdouble y);
4374GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *v);
4375GLAPI void APIENTRY glWindowPos2fARB (GLfloat x, GLfloat y);
4376GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *v);
4377GLAPI void APIENTRY glWindowPos2iARB (GLint x, GLint y);
4378GLAPI void APIENTRY glWindowPos2ivARB (const GLint *v);
4379GLAPI void APIENTRY glWindowPos2sARB (GLshort x, GLshort y);
4380GLAPI void APIENTRY glWindowPos2svARB (const GLshort *v);
4381GLAPI void APIENTRY glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z);
4382GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *v);
4383GLAPI void APIENTRY glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z);
4384GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *v);
4385GLAPI void APIENTRY glWindowPos3iARB (GLint x, GLint y, GLint z);
4386GLAPI void APIENTRY glWindowPos3ivARB (const GLint *v);
4387GLAPI void APIENTRY glWindowPos3sARB (GLshort x, GLshort y, GLshort z);
4388GLAPI void APIENTRY glWindowPos3svARB (const GLshort *v);
4389#endif
4390#endif /* GL_ARB_window_pos */
4391
4392#ifndef GL_KHR_debug
4393#define GL_KHR_debug 1
4394#endif /* GL_KHR_debug */
4395
4396#ifndef GL_KHR_texture_compression_astc_hdr
4397#define GL_KHR_texture_compression_astc_hdr 1
4398#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
4399#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
4400#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
4401#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
4402#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
4403#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
4404#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
4405#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
4406#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
4407#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
4408#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
4409#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
4410#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
4411#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
4412#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
4413#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
4414#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
4415#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
4416#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
4417#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
4418#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
4419#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
4420#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
4421#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
4422#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
4423#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
4424#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
4425#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
4426#endif /* GL_KHR_texture_compression_astc_hdr */
4427
4428#ifndef GL_KHR_texture_compression_astc_ldr
4429#define GL_KHR_texture_compression_astc_ldr 1
4430#endif /* GL_KHR_texture_compression_astc_ldr */
4431
4432#ifndef GL_OES_byte_coordinates
4433#define GL_OES_byte_coordinates 1
4434typedef void (APIENTRYP PFNGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s);
4435typedef void (APIENTRYP PFNGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte *coords);
4436typedef void (APIENTRYP PFNGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t);
4437typedef void (APIENTRYP PFNGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte *coords);
4438typedef void (APIENTRYP PFNGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r);
4439typedef void (APIENTRYP PFNGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte *coords);
4440typedef void (APIENTRYP PFNGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q);
4441typedef void (APIENTRYP PFNGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte *coords);
4442typedef void (APIENTRYP PFNGLTEXCOORD1BOESPROC) (GLbyte s);
4443typedef void (APIENTRYP PFNGLTEXCOORD1BVOESPROC) (const GLbyte *coords);
4444typedef void (APIENTRYP PFNGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t);
4445typedef void (APIENTRYP PFNGLTEXCOORD2BVOESPROC) (const GLbyte *coords);
4446typedef void (APIENTRYP PFNGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r);
4447typedef void (APIENTRYP PFNGLTEXCOORD3BVOESPROC) (const GLbyte *coords);
4448typedef void (APIENTRYP PFNGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q);
4449typedef void (APIENTRYP PFNGLTEXCOORD4BVOESPROC) (const GLbyte *coords);
4450typedef void (APIENTRYP PFNGLVERTEX2BOESPROC) (GLbyte x);
4451typedef void (APIENTRYP PFNGLVERTEX2BVOESPROC) (const GLbyte *coords);
4452typedef void (APIENTRYP PFNGLVERTEX3BOESPROC) (GLbyte x, GLbyte y);
4453typedef void (APIENTRYP PFNGLVERTEX3BVOESPROC) (const GLbyte *coords);
4454typedef void (APIENTRYP PFNGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z);
4455typedef void (APIENTRYP PFNGLVERTEX4BVOESPROC) (const GLbyte *coords);
4456#ifdef GL_GLEXT_PROTOTYPES
4457GLAPI void APIENTRY glMultiTexCoord1bOES (GLenum texture, GLbyte s);
4458GLAPI void APIENTRY glMultiTexCoord1bvOES (GLenum texture, const GLbyte *coords);
4459GLAPI void APIENTRY glMultiTexCoord2bOES (GLenum texture, GLbyte s, GLbyte t);
4460GLAPI void APIENTRY glMultiTexCoord2bvOES (GLenum texture, const GLbyte *coords);
4461GLAPI void APIENTRY glMultiTexCoord3bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r);
4462GLAPI void APIENTRY glMultiTexCoord3bvOES (GLenum texture, const GLbyte *coords);
4463GLAPI void APIENTRY glMultiTexCoord4bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q);
4464GLAPI void APIENTRY glMultiTexCoord4bvOES (GLenum texture, const GLbyte *coords);
4465GLAPI void APIENTRY glTexCoord1bOES (GLbyte s);
4466GLAPI void APIENTRY glTexCoord1bvOES (const GLbyte *coords);
4467GLAPI void APIENTRY glTexCoord2bOES (GLbyte s, GLbyte t);
4468GLAPI void APIENTRY glTexCoord2bvOES (const GLbyte *coords);
4469GLAPI void APIENTRY glTexCoord3bOES (GLbyte s, GLbyte t, GLbyte r);
4470GLAPI void APIENTRY glTexCoord3bvOES (const GLbyte *coords);
4471GLAPI void APIENTRY glTexCoord4bOES (GLbyte s, GLbyte t, GLbyte r, GLbyte q);
4472GLAPI void APIENTRY glTexCoord4bvOES (const GLbyte *coords);
4473GLAPI void APIENTRY glVertex2bOES (GLbyte x);
4474GLAPI void APIENTRY glVertex2bvOES (const GLbyte *coords);
4475GLAPI void APIENTRY glVertex3bOES (GLbyte x, GLbyte y);
4476GLAPI void APIENTRY glVertex3bvOES (const GLbyte *coords);
4477GLAPI void APIENTRY glVertex4bOES (GLbyte x, GLbyte y, GLbyte z);
4478GLAPI void APIENTRY glVertex4bvOES (const GLbyte *coords);
4479#endif
4480#endif /* GL_OES_byte_coordinates */
4481
4482#ifndef GL_OES_compressed_paletted_texture
4483#define GL_OES_compressed_paletted_texture 1
4484#define GL_PALETTE4_RGB8_OES 0x8B90
4485#define GL_PALETTE4_RGBA8_OES 0x8B91
4486#define GL_PALETTE4_R5_G6_B5_OES 0x8B92
4487#define GL_PALETTE4_RGBA4_OES 0x8B93
4488#define GL_PALETTE4_RGB5_A1_OES 0x8B94
4489#define GL_PALETTE8_RGB8_OES 0x8B95
4490#define GL_PALETTE8_RGBA8_OES 0x8B96
4491#define GL_PALETTE8_R5_G6_B5_OES 0x8B97
4492#define GL_PALETTE8_RGBA4_OES 0x8B98
4493#define GL_PALETTE8_RGB5_A1_OES 0x8B99
4494#endif /* GL_OES_compressed_paletted_texture */
4495
4496#ifndef GL_OES_fixed_point
4497#define GL_OES_fixed_point 1
4498typedef GLint GLfixed;
4499#define GL_FIXED_OES 0x140C
4500typedef void (APIENTRYP PFNGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref);
4501typedef void (APIENTRYP PFNGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
4502typedef void (APIENTRYP PFNGLCLEARDEPTHXOESPROC) (GLfixed depth);
4503typedef void (APIENTRYP PFNGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation);
4504typedef void (APIENTRYP PFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
4505typedef void (APIENTRYP PFNGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f);
4506typedef void (APIENTRYP PFNGLFOGXOESPROC) (GLenum pname, GLfixed param);
4507typedef void (APIENTRYP PFNGLFOGXVOESPROC) (GLenum pname, const GLfixed *param);
4508typedef void (APIENTRYP PFNGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
4509typedef void (APIENTRYP PFNGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed *equation);
4510typedef void (APIENTRYP PFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params);
4511typedef void (APIENTRYP PFNGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
4512typedef void (APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
4513typedef void (APIENTRYP PFNGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param);
4514typedef void (APIENTRYP PFNGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *param);
4515typedef void (APIENTRYP PFNGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param);
4516typedef void (APIENTRYP PFNGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params);
4517typedef void (APIENTRYP PFNGLLINEWIDTHXOESPROC) (GLfixed width);
4518typedef void (APIENTRYP PFNGLLOADMATRIXXOESPROC) (const GLfixed *m);
4519typedef void (APIENTRYP PFNGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param);
4520typedef void (APIENTRYP PFNGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *param);
4521typedef void (APIENTRYP PFNGLMULTMATRIXXOESPROC) (const GLfixed *m);
4522typedef void (APIENTRYP PFNGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
4523typedef void (APIENTRYP PFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz);
4524typedef void (APIENTRYP PFNGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
4525typedef void (APIENTRYP PFNGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params);
4526typedef void (APIENTRYP PFNGLPOINTSIZEXOESPROC) (GLfixed size);
4527typedef void (APIENTRYP PFNGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units);
4528typedef void (APIENTRYP PFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
4529typedef void (APIENTRYP PFNGLSAMPLECOVERAGEOESPROC) (GLfixed value, GLboolean invert);
4530typedef void (APIENTRYP PFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z);
4531typedef void (APIENTRYP PFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param);
4532typedef void (APIENTRYP PFNGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
4533typedef void (APIENTRYP PFNGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param);
4534typedef void (APIENTRYP PFNGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
4535typedef void (APIENTRYP PFNGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z);
4536typedef void (APIENTRYP PFNGLACCUMXOESPROC) (GLenum op, GLfixed value);
4537typedef void (APIENTRYP PFNGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap);
4538typedef void (APIENTRYP PFNGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
4539typedef void (APIENTRYP PFNGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
4540typedef void (APIENTRYP PFNGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue);
4541typedef void (APIENTRYP PFNGLCOLOR3XVOESPROC) (const GLfixed *components);
4542typedef void (APIENTRYP PFNGLCOLOR4XVOESPROC) (const GLfixed *components);
4543typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param);
4544typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
4545typedef void (APIENTRYP PFNGLEVALCOORD1XOESPROC) (GLfixed u);
4546typedef void (APIENTRYP PFNGLEVALCOORD1XVOESPROC) (const GLfixed *coords);
4547typedef void (APIENTRYP PFNGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v);
4548typedef void (APIENTRYP PFNGLEVALCOORD2XVOESPROC) (const GLfixed *coords);
4549typedef void (APIENTRYP PFNGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer);
4550typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
4551typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
4552typedef void (APIENTRYP PFNGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed *params);
4553typedef void (APIENTRYP PFNGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed *v);
4554typedef void (APIENTRYP PFNGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param);
4555typedef void (APIENTRYP PFNGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed *values);
4556typedef void (APIENTRYP PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params);
4557typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params);
4558typedef void (APIENTRYP PFNGLINDEXXOESPROC) (GLfixed component);
4559typedef void (APIENTRYP PFNGLINDEXXVOESPROC) (const GLfixed *component);
4560typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed *m);
4561typedef void (APIENTRYP PFNGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points);
4562typedef void (APIENTRYP PFNGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points);
4563typedef void (APIENTRYP PFNGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2);
4564typedef void (APIENTRYP PFNGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2);
4565typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m);
4566typedef void (APIENTRYP PFNGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s);
4567typedef void (APIENTRYP PFNGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords);
4568typedef void (APIENTRYP PFNGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t);
4569typedef void (APIENTRYP PFNGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords);
4570typedef void (APIENTRYP PFNGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r);
4571typedef void (APIENTRYP PFNGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords);
4572typedef void (APIENTRYP PFNGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords);
4573typedef void (APIENTRYP PFNGLNORMAL3XVOESPROC) (const GLfixed *coords);
4574typedef void (APIENTRYP PFNGLPASSTHROUGHXOESPROC) (GLfixed token);
4575typedef void (APIENTRYP PFNGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed *values);
4576typedef void (APIENTRYP PFNGLPIXELSTOREXPROC) (GLenum pname, GLfixed param);
4577typedef void (APIENTRYP PFNGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param);
4578typedef void (APIENTRYP PFNGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor);
4579typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities);
4580typedef void (APIENTRYP PFNGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y);
4581typedef void (APIENTRYP PFNGLRASTERPOS2XVOESPROC) (const GLfixed *coords);
4582typedef void (APIENTRYP PFNGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z);
4583typedef void (APIENTRYP PFNGLRASTERPOS3XVOESPROC) (const GLfixed *coords);
4584typedef void (APIENTRYP PFNGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w);
4585typedef void (APIENTRYP PFNGLRASTERPOS4XVOESPROC) (const GLfixed *coords);
4586typedef void (APIENTRYP PFNGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2);
4587typedef void (APIENTRYP PFNGLRECTXVOESPROC) (const GLfixed *v1, const GLfixed *v2);
4588typedef void (APIENTRYP PFNGLTEXCOORD1XOESPROC) (GLfixed s);
4589typedef void (APIENTRYP PFNGLTEXCOORD1XVOESPROC) (const GLfixed *coords);
4590typedef void (APIENTRYP PFNGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t);
4591typedef void (APIENTRYP PFNGLTEXCOORD2XVOESPROC) (const GLfixed *coords);
4592typedef void (APIENTRYP PFNGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r);
4593typedef void (APIENTRYP PFNGLTEXCOORD3XVOESPROC) (const GLfixed *coords);
4594typedef void (APIENTRYP PFNGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q);
4595typedef void (APIENTRYP PFNGLTEXCOORD4XVOESPROC) (const GLfixed *coords);
4596typedef void (APIENTRYP PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param);
4597typedef void (APIENTRYP PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params);
4598typedef void (APIENTRYP PFNGLVERTEX2XOESPROC) (GLfixed x);
4599typedef void (APIENTRYP PFNGLVERTEX2XVOESPROC) (const GLfixed *coords);
4600typedef void (APIENTRYP PFNGLVERTEX3XOESPROC) (GLfixed x, GLfixed y);
4601typedef void (APIENTRYP PFNGLVERTEX3XVOESPROC) (const GLfixed *coords);
4602typedef void (APIENTRYP PFNGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z);
4603typedef void (APIENTRYP PFNGLVERTEX4XVOESPROC) (const GLfixed *coords);
4604#ifdef GL_GLEXT_PROTOTYPES
4605GLAPI void APIENTRY glAlphaFuncxOES (GLenum func, GLfixed ref);
4606GLAPI void APIENTRY glClearColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
4607GLAPI void APIENTRY glClearDepthxOES (GLfixed depth);
4608GLAPI void APIENTRY glClipPlanexOES (GLenum plane, const GLfixed *equation);
4609GLAPI void APIENTRY glColor4xOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
4610GLAPI void APIENTRY glDepthRangexOES (GLfixed n, GLfixed f);
4611GLAPI void APIENTRY glFogxOES (GLenum pname, GLfixed param);
4612GLAPI void APIENTRY glFogxvOES (GLenum pname, const GLfixed *param);
4613GLAPI void APIENTRY glFrustumxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
4614GLAPI void APIENTRY glGetClipPlanexOES (GLenum plane, GLfixed *equation);
4615GLAPI void APIENTRY glGetFixedvOES (GLenum pname, GLfixed *params);
4616GLAPI void APIENTRY glGetTexEnvxvOES (GLenum target, GLenum pname, GLfixed *params);
4617GLAPI void APIENTRY glGetTexParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
4618GLAPI void APIENTRY glLightModelxOES (GLenum pname, GLfixed param);
4619GLAPI void APIENTRY glLightModelxvOES (GLenum pname, const GLfixed *param);
4620GLAPI void APIENTRY glLightxOES (GLenum light, GLenum pname, GLfixed param);
4621GLAPI void APIENTRY glLightxvOES (GLenum light, GLenum pname, const GLfixed *params);
4622GLAPI void APIENTRY glLineWidthxOES (GLfixed width);
4623GLAPI void APIENTRY glLoadMatrixxOES (const GLfixed *m);
4624GLAPI void APIENTRY glMaterialxOES (GLenum face, GLenum pname, GLfixed param);
4625GLAPI void APIENTRY glMaterialxvOES (GLenum face, GLenum pname, const GLfixed *param);
4626GLAPI void APIENTRY glMultMatrixxOES (const GLfixed *m);
4627GLAPI void APIENTRY glMultiTexCoord4xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
4628GLAPI void APIENTRY glNormal3xOES (GLfixed nx, GLfixed ny, GLfixed nz);
4629GLAPI void APIENTRY glOrthoxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
4630GLAPI void APIENTRY glPointParameterxvOES (GLenum pname, const GLfixed *params);
4631GLAPI void APIENTRY glPointSizexOES (GLfixed size);
4632GLAPI void APIENTRY glPolygonOffsetxOES (GLfixed factor, GLfixed units);
4633GLAPI void APIENTRY glRotatexOES (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
4634GLAPI void APIENTRY glSampleCoverageOES (GLfixed value, GLboolean invert);
4635GLAPI void APIENTRY glScalexOES (GLfixed x, GLfixed y, GLfixed z);
4636GLAPI void APIENTRY glTexEnvxOES (GLenum target, GLenum pname, GLfixed param);
4637GLAPI void APIENTRY glTexEnvxvOES (GLenum target, GLenum pname, const GLfixed *params);
4638GLAPI void APIENTRY glTexParameterxOES (GLenum target, GLenum pname, GLfixed param);
4639GLAPI void APIENTRY glTexParameterxvOES (GLenum target, GLenum pname, const GLfixed *params);
4640GLAPI void APIENTRY glTranslatexOES (GLfixed x, GLfixed y, GLfixed z);
4641GLAPI void APIENTRY glAccumxOES (GLenum op, GLfixed value);
4642GLAPI void APIENTRY glBitmapxOES (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap);
4643GLAPI void APIENTRY glBlendColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
4644GLAPI void APIENTRY glClearAccumxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
4645GLAPI void APIENTRY glColor3xOES (GLfixed red, GLfixed green, GLfixed blue);
4646GLAPI void APIENTRY glColor3xvOES (const GLfixed *components);
4647GLAPI void APIENTRY glColor4xvOES (const GLfixed *components);
4648GLAPI void APIENTRY glConvolutionParameterxOES (GLenum target, GLenum pname, GLfixed param);
4649GLAPI void APIENTRY glConvolutionParameterxvOES (GLenum target, GLenum pname, const GLfixed *params);
4650GLAPI void APIENTRY glEvalCoord1xOES (GLfixed u);
4651GLAPI void APIENTRY glEvalCoord1xvOES (const GLfixed *coords);
4652GLAPI void APIENTRY glEvalCoord2xOES (GLfixed u, GLfixed v);
4653GLAPI void APIENTRY glEvalCoord2xvOES (const GLfixed *coords);
4654GLAPI void APIENTRY glFeedbackBufferxOES (GLsizei n, GLenum type, const GLfixed *buffer);
4655GLAPI void APIENTRY glGetConvolutionParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
4656GLAPI void APIENTRY glGetHistogramParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
4657GLAPI void APIENTRY glGetLightxOES (GLenum light, GLenum pname, GLfixed *params);
4658GLAPI void APIENTRY glGetMapxvOES (GLenum target, GLenum query, GLfixed *v);
4659GLAPI void APIENTRY glGetMaterialxOES (GLenum face, GLenum pname, GLfixed param);
4660GLAPI void APIENTRY glGetPixelMapxv (GLenum map, GLint size, GLfixed *values);
4661GLAPI void APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params);
4662GLAPI void APIENTRY glGetTexLevelParameterxvOES (GLenum target, GLint level, GLenum pname, GLfixed *params);
4663GLAPI void APIENTRY glIndexxOES (GLfixed component);
4664GLAPI void APIENTRY glIndexxvOES (const GLfixed *component);
4665GLAPI void APIENTRY glLoadTransposeMatrixxOES (const GLfixed *m);
4666GLAPI void APIENTRY glMap1xOES (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points);
4667GLAPI void APIENTRY glMap2xOES (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points);
4668GLAPI void APIENTRY glMapGrid1xOES (GLint n, GLfixed u1, GLfixed u2);
4669GLAPI void APIENTRY glMapGrid2xOES (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2);
4670GLAPI void APIENTRY glMultTransposeMatrixxOES (const GLfixed *m);
4671GLAPI void APIENTRY glMultiTexCoord1xOES (GLenum texture, GLfixed s);
4672GLAPI void APIENTRY glMultiTexCoord1xvOES (GLenum texture, const GLfixed *coords);
4673GLAPI void APIENTRY glMultiTexCoord2xOES (GLenum texture, GLfixed s, GLfixed t);
4674GLAPI void APIENTRY glMultiTexCoord2xvOES (GLenum texture, const GLfixed *coords);
4675GLAPI void APIENTRY glMultiTexCoord3xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r);
4676GLAPI void APIENTRY glMultiTexCoord3xvOES (GLenum texture, const GLfixed *coords);
4677GLAPI void APIENTRY glMultiTexCoord4xvOES (GLenum texture, const GLfixed *coords);
4678GLAPI void APIENTRY glNormal3xvOES (const GLfixed *coords);
4679GLAPI void APIENTRY glPassThroughxOES (GLfixed token);
4680GLAPI void APIENTRY glPixelMapx (GLenum map, GLint size, const GLfixed *values);
4681GLAPI void APIENTRY glPixelStorex (GLenum pname, GLfixed param);
4682GLAPI void APIENTRY glPixelTransferxOES (GLenum pname, GLfixed param);
4683GLAPI void APIENTRY glPixelZoomxOES (GLfixed xfactor, GLfixed yfactor);
4684GLAPI void APIENTRY glPrioritizeTexturesxOES (GLsizei n, const GLuint *textures, const GLfixed *priorities);
4685GLAPI void APIENTRY glRasterPos2xOES (GLfixed x, GLfixed y);
4686GLAPI void APIENTRY glRasterPos2xvOES (const GLfixed *coords);
4687GLAPI void APIENTRY glRasterPos3xOES (GLfixed x, GLfixed y, GLfixed z);
4688GLAPI void APIENTRY glRasterPos3xvOES (const GLfixed *coords);
4689GLAPI void APIENTRY glRasterPos4xOES (GLfixed x, GLfixed y, GLfixed z, GLfixed w);
4690GLAPI void APIENTRY glRasterPos4xvOES (const GLfixed *coords);
4691GLAPI void APIENTRY glRectxOES (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2);
4692GLAPI void APIENTRY glRectxvOES (const GLfixed *v1, const GLfixed *v2);
4693GLAPI void APIENTRY glTexCoord1xOES (GLfixed s);
4694GLAPI void APIENTRY glTexCoord1xvOES (const GLfixed *coords);
4695GLAPI void APIENTRY glTexCoord2xOES (GLfixed s, GLfixed t);
4696GLAPI void APIENTRY glTexCoord2xvOES (const GLfixed *coords);
4697GLAPI void APIENTRY glTexCoord3xOES (GLfixed s, GLfixed t, GLfixed r);
4698GLAPI void APIENTRY glTexCoord3xvOES (const GLfixed *coords);
4699GLAPI void APIENTRY glTexCoord4xOES (GLfixed s, GLfixed t, GLfixed r, GLfixed q);
4700GLAPI void APIENTRY glTexCoord4xvOES (const GLfixed *coords);
4701GLAPI void APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param);
4702GLAPI void APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params);
4703GLAPI void APIENTRY glVertex2xOES (GLfixed x);
4704GLAPI void APIENTRY glVertex2xvOES (const GLfixed *coords);
4705GLAPI void APIENTRY glVertex3xOES (GLfixed x, GLfixed y);
4706GLAPI void APIENTRY glVertex3xvOES (const GLfixed *coords);
4707GLAPI void APIENTRY glVertex4xOES (GLfixed x, GLfixed y, GLfixed z);
4708GLAPI void APIENTRY glVertex4xvOES (const GLfixed *coords);
4709#endif
4710#endif /* GL_OES_fixed_point */
4711
4712#ifndef GL_OES_query_matrix
4713#define GL_OES_query_matrix 1
4714typedef GLbitfield (APIENTRYP PFNGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent);
4715#ifdef GL_GLEXT_PROTOTYPES
4716GLAPI GLbitfield APIENTRY glQueryMatrixxOES (GLfixed *mantissa, GLint *exponent);
4717#endif
4718#endif /* GL_OES_query_matrix */
4719
4720#ifndef GL_OES_read_format
4721#define GL_OES_read_format 1
4722#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A
4723#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
4724#endif /* GL_OES_read_format */
4725
4726#ifndef GL_OES_single_precision
4727#define GL_OES_single_precision 1
4728typedef void (APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampf depth);
4729typedef void (APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation);
4730typedef void (APIENTRYP PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f);
4731typedef void (APIENTRYP PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
4732typedef void (APIENTRYP PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation);
4733typedef void (APIENTRYP PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
4734#ifdef GL_GLEXT_PROTOTYPES
4735GLAPI void APIENTRY glClearDepthfOES (GLclampf depth);
4736GLAPI void APIENTRY glClipPlanefOES (GLenum plane, const GLfloat *equation);
4737GLAPI void APIENTRY glDepthRangefOES (GLclampf n, GLclampf f);
4738GLAPI void APIENTRY glFrustumfOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
4739GLAPI void APIENTRY glGetClipPlanefOES (GLenum plane, GLfloat *equation);
4740GLAPI void APIENTRY glOrthofOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
4741#endif
4742#endif /* GL_OES_single_precision */
4743
4744#ifndef GL_3DFX_multisample
4745#define GL_3DFX_multisample 1
4746#define GL_MULTISAMPLE_3DFX 0x86B2
4747#define GL_SAMPLE_BUFFERS_3DFX 0x86B3
4748#define GL_SAMPLES_3DFX 0x86B4
4749#define GL_MULTISAMPLE_BIT_3DFX 0x20000000
4750#endif /* GL_3DFX_multisample */
4751
4752#ifndef GL_3DFX_tbuffer
4753#define GL_3DFX_tbuffer 1
4754typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
4755#ifdef GL_GLEXT_PROTOTYPES
4756GLAPI void APIENTRY glTbufferMask3DFX (GLuint mask);
4757#endif
4758#endif /* GL_3DFX_tbuffer */
4759
4760#ifndef GL_3DFX_texture_compression_FXT1
4761#define GL_3DFX_texture_compression_FXT1 1
4762#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0
4763#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1
4764#endif /* GL_3DFX_texture_compression_FXT1 */
4765
4766#ifndef GL_AMD_blend_minmax_factor
4767#define GL_AMD_blend_minmax_factor 1
4768#define GL_FACTOR_MIN_AMD 0x901C
4769#define GL_FACTOR_MAX_AMD 0x901D
4770#endif /* GL_AMD_blend_minmax_factor */
4771
4772#ifndef GL_AMD_conservative_depth
4773#define GL_AMD_conservative_depth 1
4774#endif /* GL_AMD_conservative_depth */
4775
4776#ifndef GL_AMD_debug_output
4777#define GL_AMD_debug_output 1
4778typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam);
4779#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143
4780#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144
4781#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145
4782#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146
4783#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147
4784#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148
4785#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149
4786#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A
4787#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B
4788#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C
4789#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D
4790#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E
4791#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F
4792#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150
4793typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
4794typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
4795typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam);
4796typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
4797#ifdef GL_GLEXT_PROTOTYPES
4798GLAPI void APIENTRY glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
4799GLAPI void APIENTRY glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
4800GLAPI void APIENTRY glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam);
4801GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
4802#endif
4803#endif /* GL_AMD_debug_output */
4804
4805#ifndef GL_AMD_depth_clamp_separate
4806#define GL_AMD_depth_clamp_separate 1
4807#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E
4808#define GL_DEPTH_CLAMP_FAR_AMD 0x901F
4809#endif /* GL_AMD_depth_clamp_separate */
4810
4811#ifndef GL_AMD_draw_buffers_blend
4812#define GL_AMD_draw_buffers_blend 1
4813typedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst);
4814typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
4815typedef void (APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode);
4816typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
4817#ifdef GL_GLEXT_PROTOTYPES
4818GLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint buf, GLenum src, GLenum dst);
4819GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
4820GLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint buf, GLenum mode);
4821GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
4822#endif
4823#endif /* GL_AMD_draw_buffers_blend */
4824
4825#ifndef GL_AMD_gcn_shader
4826#define GL_AMD_gcn_shader 1
4827#endif /* GL_AMD_gcn_shader */
4828
4829#ifndef GL_AMD_gpu_shader_int64
4830#define GL_AMD_gpu_shader_int64 1
4831typedef int64_t GLint64EXT;
4832#define GL_INT64_NV 0x140E
4833#define GL_UNSIGNED_INT64_NV 0x140F
4834#define GL_INT8_NV 0x8FE0
4835#define GL_INT8_VEC2_NV 0x8FE1
4836#define GL_INT8_VEC3_NV 0x8FE2
4837#define GL_INT8_VEC4_NV 0x8FE3
4838#define GL_INT16_NV 0x8FE4
4839#define GL_INT16_VEC2_NV 0x8FE5
4840#define GL_INT16_VEC3_NV 0x8FE6
4841#define GL_INT16_VEC4_NV 0x8FE7
4842#define GL_INT64_VEC2_NV 0x8FE9
4843#define GL_INT64_VEC3_NV 0x8FEA
4844#define GL_INT64_VEC4_NV 0x8FEB
4845#define GL_UNSIGNED_INT8_NV 0x8FEC
4846#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED
4847#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE
4848#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF
4849#define GL_UNSIGNED_INT16_NV 0x8FF0
4850#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1
4851#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2
4852#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3
4853#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5
4854#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6
4855#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7
4856#define GL_FLOAT16_NV 0x8FF8
4857#define GL_FLOAT16_VEC2_NV 0x8FF9
4858#define GL_FLOAT16_VEC3_NV 0x8FFA
4859#define GL_FLOAT16_VEC4_NV 0x8FFB
4860typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);
4861typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);
4862typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
4863typedef void (APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
4864typedef void (APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
4865typedef void (APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
4866typedef void (APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
4867typedef void (APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
4868typedef void (APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x);
4869typedef void (APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y);
4870typedef void (APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
4871typedef void (APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
4872typedef void (APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
4873typedef void (APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
4874typedef void (APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
4875typedef void (APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
4876typedef void (APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params);
4877typedef void (APIENTRYP PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT *params);
4878typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x);
4879typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
4880typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
4881typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
4882typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
4883typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
4884typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
4885typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
4886typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x);
4887typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
4888typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
4889typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
4890typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
4891typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
4892typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
4893typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
4894#ifdef GL_GLEXT_PROTOTYPES
4895GLAPI void APIENTRY glUniform1i64NV (GLint location, GLint64EXT x);
4896GLAPI void APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y);
4897GLAPI void APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
4898GLAPI void APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
4899GLAPI void APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
4900GLAPI void APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
4901GLAPI void APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
4902GLAPI void APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
4903GLAPI void APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x);
4904GLAPI void APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y);
4905GLAPI void APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
4906GLAPI void APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
4907GLAPI void APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
4908GLAPI void APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
4909GLAPI void APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
4910GLAPI void APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
4911GLAPI void APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params);
4912GLAPI void APIENTRY glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params);
4913GLAPI void APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x);
4914GLAPI void APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
4915GLAPI void APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
4916GLAPI void APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
4917GLAPI void APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
4918GLAPI void APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
4919GLAPI void APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
4920GLAPI void APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
4921GLAPI void APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x);
4922GLAPI void APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
4923GLAPI void APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
4924GLAPI void APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
4925GLAPI void APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
4926GLAPI void APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
4927GLAPI void APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
4928GLAPI void APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
4929#endif
4930#endif /* GL_AMD_gpu_shader_int64 */
4931
4932#ifndef GL_AMD_interleaved_elements
4933#define GL_AMD_interleaved_elements 1
4934#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4
4935#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5
4936typedef void (APIENTRYP PFNGLVERTEXATTRIBPARAMETERIAMDPROC) (GLuint index, GLenum pname, GLint param);
4937#ifdef GL_GLEXT_PROTOTYPES
4938GLAPI void APIENTRY glVertexAttribParameteriAMD (GLuint index, GLenum pname, GLint param);
4939#endif
4940#endif /* GL_AMD_interleaved_elements */
4941
4942#ifndef GL_AMD_multi_draw_indirect
4943#define GL_AMD_multi_draw_indirect 1
4944typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);
4945typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);
4946#ifdef GL_GLEXT_PROTOTYPES
4947GLAPI void APIENTRY glMultiDrawArraysIndirectAMD (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);
4948GLAPI void APIENTRY glMultiDrawElementsIndirectAMD (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);
4949#endif
4950#endif /* GL_AMD_multi_draw_indirect */
4951
4952#ifndef GL_AMD_name_gen_delete
4953#define GL_AMD_name_gen_delete 1
4954#define GL_DATA_BUFFER_AMD 0x9151
4955#define GL_PERFORMANCE_MONITOR_AMD 0x9152
4956#define GL_QUERY_OBJECT_AMD 0x9153
4957#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154
4958#define GL_SAMPLER_OBJECT_AMD 0x9155
4959typedef void (APIENTRYP PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint *names);
4960typedef void (APIENTRYP PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint *names);
4961typedef GLboolean (APIENTRYP PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name);
4962#ifdef GL_GLEXT_PROTOTYPES
4963GLAPI void APIENTRY glGenNamesAMD (GLenum identifier, GLuint num, GLuint *names);
4964GLAPI void APIENTRY glDeleteNamesAMD (GLenum identifier, GLuint num, const GLuint *names);
4965GLAPI GLboolean APIENTRY glIsNameAMD (GLenum identifier, GLuint name);
4966#endif
4967#endif /* GL_AMD_name_gen_delete */
4968
4969#ifndef GL_AMD_occlusion_query_event
4970#define GL_AMD_occlusion_query_event 1
4971#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F
4972#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001
4973#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002
4974#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004
4975#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008
4976#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF
4977typedef void (APIENTRYP PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param);
4978#ifdef GL_GLEXT_PROTOTYPES
4979GLAPI void APIENTRY glQueryObjectParameteruiAMD (GLenum target, GLuint id, GLenum pname, GLuint param);
4980#endif
4981#endif /* GL_AMD_occlusion_query_event */
4982
4983#ifndef GL_AMD_performance_monitor
4984#define GL_AMD_performance_monitor 1
4985#define GL_COUNTER_TYPE_AMD 0x8BC0
4986#define GL_COUNTER_RANGE_AMD 0x8BC1
4987#define GL_UNSIGNED_INT64_AMD 0x8BC2
4988#define GL_PERCENTAGE_AMD 0x8BC3
4989#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4
4990#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5
4991#define GL_PERFMON_RESULT_AMD 0x8BC6
4992typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
4993typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
4994typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
4995typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
4996typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data);
4997typedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
4998typedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
4999typedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
5000typedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
5001typedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
5002typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
5003#ifdef GL_GLEXT_PROTOTYPES
5004GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
5005GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
5006GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
5007GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
5008GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data);
5009GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
5010GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
5011GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
5012GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
5013GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint monitor);
5014GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
5015#endif
5016#endif /* GL_AMD_performance_monitor */
5017
5018#ifndef GL_AMD_pinned_memory
5019#define GL_AMD_pinned_memory 1
5020#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160
5021#endif /* GL_AMD_pinned_memory */
5022
5023#ifndef GL_AMD_query_buffer_object
5024#define GL_AMD_query_buffer_object 1
5025#define GL_QUERY_BUFFER_AMD 0x9192
5026#define GL_QUERY_BUFFER_BINDING_AMD 0x9193
5027#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194
5028#endif /* GL_AMD_query_buffer_object */
5029
5030#ifndef GL_AMD_sample_positions
5031#define GL_AMD_sample_positions 1
5032#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F
5033typedef void (APIENTRYP PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat *val);
5034#ifdef GL_GLEXT_PROTOTYPES
5035GLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLfloat *val);
5036#endif
5037#endif /* GL_AMD_sample_positions */
5038
5039#ifndef GL_AMD_seamless_cubemap_per_texture
5040#define GL_AMD_seamless_cubemap_per_texture 1
5041#endif /* GL_AMD_seamless_cubemap_per_texture */
5042
5043#ifndef GL_AMD_shader_atomic_counter_ops
5044#define GL_AMD_shader_atomic_counter_ops 1
5045#endif /* GL_AMD_shader_atomic_counter_ops */
5046
5047#ifndef GL_AMD_shader_stencil_export
5048#define GL_AMD_shader_stencil_export 1
5049#endif /* GL_AMD_shader_stencil_export */
5050
5051#ifndef GL_AMD_shader_trinary_minmax
5052#define GL_AMD_shader_trinary_minmax 1
5053#endif /* GL_AMD_shader_trinary_minmax */
5054
5055#ifndef GL_AMD_sparse_texture
5056#define GL_AMD_sparse_texture 1
5057#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195
5058#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196
5059#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197
5060#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198
5061#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199
5062#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A
5063#define GL_MIN_SPARSE_LEVEL_AMD 0x919B
5064#define GL_MIN_LOD_WARNING_AMD 0x919C
5065#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001
5066typedef void (APIENTRYP PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
5067typedef void (APIENTRYP PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
5068#ifdef GL_GLEXT_PROTOTYPES
5069GLAPI void APIENTRY glTexStorageSparseAMD (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
5070GLAPI void APIENTRY glTextureStorageSparseAMD (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
5071#endif
5072#endif /* GL_AMD_sparse_texture */
5073
5074#ifndef GL_AMD_stencil_operation_extended
5075#define GL_AMD_stencil_operation_extended 1
5076#define GL_SET_AMD 0x874A
5077#define GL_REPLACE_VALUE_AMD 0x874B
5078#define GL_STENCIL_OP_VALUE_AMD 0x874C
5079#define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D
5080typedef void (APIENTRYP PFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint value);
5081#ifdef GL_GLEXT_PROTOTYPES
5082GLAPI void APIENTRY glStencilOpValueAMD (GLenum face, GLuint value);
5083#endif
5084#endif /* GL_AMD_stencil_operation_extended */
5085
5086#ifndef GL_AMD_texture_texture4
5087#define GL_AMD_texture_texture4 1
5088#endif /* GL_AMD_texture_texture4 */
5089
5090#ifndef GL_AMD_transform_feedback3_lines_triangles
5091#define GL_AMD_transform_feedback3_lines_triangles 1
5092#endif /* GL_AMD_transform_feedback3_lines_triangles */
5093
5094#ifndef GL_AMD_transform_feedback4
5095#define GL_AMD_transform_feedback4 1
5096#define GL_STREAM_RASTERIZATION_AMD 0x91A0
5097#endif /* GL_AMD_transform_feedback4 */
5098
5099#ifndef GL_AMD_vertex_shader_layer
5100#define GL_AMD_vertex_shader_layer 1
5101#endif /* GL_AMD_vertex_shader_layer */
5102
5103#ifndef GL_AMD_vertex_shader_tessellator
5104#define GL_AMD_vertex_shader_tessellator 1
5105#define GL_SAMPLER_BUFFER_AMD 0x9001
5106#define GL_INT_SAMPLER_BUFFER_AMD 0x9002
5107#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003
5108#define GL_TESSELLATION_MODE_AMD 0x9004
5109#define GL_TESSELLATION_FACTOR_AMD 0x9005
5110#define GL_DISCRETE_AMD 0x9006
5111#define GL_CONTINUOUS_AMD 0x9007
5112typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor);
5113typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);
5114#ifdef GL_GLEXT_PROTOTYPES
5115GLAPI void APIENTRY glTessellationFactorAMD (GLfloat factor);
5116GLAPI void APIENTRY glTessellationModeAMD (GLenum mode);
5117#endif
5118#endif /* GL_AMD_vertex_shader_tessellator */
5119
5120#ifndef GL_AMD_vertex_shader_viewport_index
5121#define GL_AMD_vertex_shader_viewport_index 1
5122#endif /* GL_AMD_vertex_shader_viewport_index */
5123
5124#ifndef GL_APPLE_aux_depth_stencil
5125#define GL_APPLE_aux_depth_stencil 1
5126#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14
5127#endif /* GL_APPLE_aux_depth_stencil */
5128
5129#ifndef GL_APPLE_client_storage
5130#define GL_APPLE_client_storage 1
5131#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2
5132#endif /* GL_APPLE_client_storage */
5133
5134#ifndef GL_APPLE_element_array
5135#define GL_APPLE_element_array 1
5136#define GL_ELEMENT_ARRAY_APPLE 0x8A0C
5137#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D
5138#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E
5139typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void *pointer);
5140typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);
5141typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
5142typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
5143typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
5144#ifdef GL_GLEXT_PROTOTYPES
5145GLAPI void APIENTRY glElementPointerAPPLE (GLenum type, const void *pointer);
5146GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum mode, GLint first, GLsizei count);
5147GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
5148GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
5149GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
5150#endif
5151#endif /* GL_APPLE_element_array */
5152
5153#ifndef GL_APPLE_fence
5154#define GL_APPLE_fence 1
5155#define GL_DRAW_PIXELS_APPLE 0x8A0A
5156#define GL_FENCE_APPLE 0x8A0B
5157typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences);
5158typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences);
5159typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence);
5160typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence);
5161typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence);
5162typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence);
5163typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name);
5164typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);
5165#ifdef GL_GLEXT_PROTOTYPES
5166GLAPI void APIENTRY glGenFencesAPPLE (GLsizei n, GLuint *fences);
5167GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei n, const GLuint *fences);
5168GLAPI void APIENTRY glSetFenceAPPLE (GLuint fence);
5169GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint fence);
5170GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint fence);
5171GLAPI void APIENTRY glFinishFenceAPPLE (GLuint fence);
5172GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum object, GLuint name);
5173GLAPI void APIENTRY glFinishObjectAPPLE (GLenum object, GLint name);
5174#endif
5175#endif /* GL_APPLE_fence */
5176
5177#ifndef GL_APPLE_float_pixels
5178#define GL_APPLE_float_pixels 1
5179#define GL_HALF_APPLE 0x140B
5180#define GL_RGBA_FLOAT32_APPLE 0x8814
5181#define GL_RGB_FLOAT32_APPLE 0x8815
5182#define GL_ALPHA_FLOAT32_APPLE 0x8816
5183#define GL_INTENSITY_FLOAT32_APPLE 0x8817
5184#define GL_LUMINANCE_FLOAT32_APPLE 0x8818
5185#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819
5186#define GL_RGBA_FLOAT16_APPLE 0x881A
5187#define GL_RGB_FLOAT16_APPLE 0x881B
5188#define GL_ALPHA_FLOAT16_APPLE 0x881C
5189#define GL_INTENSITY_FLOAT16_APPLE 0x881D
5190#define GL_LUMINANCE_FLOAT16_APPLE 0x881E
5191#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F
5192#define GL_COLOR_FLOAT_APPLE 0x8A0F
5193#endif /* GL_APPLE_float_pixels */
5194
5195#ifndef GL_APPLE_flush_buffer_range
5196#define GL_APPLE_flush_buffer_range 1
5197#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12
5198#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13
5199typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param);
5200typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size);
5201#ifdef GL_GLEXT_PROTOTYPES
5202GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum target, GLenum pname, GLint param);
5203GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size);
5204#endif
5205#endif /* GL_APPLE_flush_buffer_range */
5206
5207#ifndef GL_APPLE_object_purgeable
5208#define GL_APPLE_object_purgeable 1
5209#define GL_BUFFER_OBJECT_APPLE 0x85B3
5210#define GL_RELEASED_APPLE 0x8A19
5211#define GL_VOLATILE_APPLE 0x8A1A
5212#define GL_RETAINED_APPLE 0x8A1B
5213#define GL_UNDEFINED_APPLE 0x8A1C
5214#define GL_PURGEABLE_APPLE 0x8A1D
5215typedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
5216typedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
5217typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint *params);
5218#ifdef GL_GLEXT_PROTOTYPES
5219GLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
5220GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
5221GLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum objectType, GLuint name, GLenum pname, GLint *params);
5222#endif
5223#endif /* GL_APPLE_object_purgeable */
5224
5225#ifndef GL_APPLE_rgb_422
5226#define GL_APPLE_rgb_422 1
5227#define GL_RGB_422_APPLE 0x8A1F
5228#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
5229#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
5230#define GL_RGB_RAW_422_APPLE 0x8A51
5231#endif /* GL_APPLE_rgb_422 */
5232
5233#ifndef GL_APPLE_row_bytes
5234#define GL_APPLE_row_bytes 1
5235#define GL_PACK_ROW_BYTES_APPLE 0x8A15
5236#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16
5237#endif /* GL_APPLE_row_bytes */
5238
5239#ifndef GL_APPLE_specular_vector
5240#define GL_APPLE_specular_vector 1
5241#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
5242#endif /* GL_APPLE_specular_vector */
5243
5244#ifndef GL_APPLE_texture_range
5245#define GL_APPLE_texture_range 1
5246#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7
5247#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8
5248#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC
5249#define GL_STORAGE_PRIVATE_APPLE 0x85BD
5250#define GL_STORAGE_CACHED_APPLE 0x85BE
5251#define GL_STORAGE_SHARED_APPLE 0x85BF
5252typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const void *pointer);
5253typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, void **params);
5254#ifdef GL_GLEXT_PROTOTYPES
5255GLAPI void APIENTRY glTextureRangeAPPLE (GLenum target, GLsizei length, const void *pointer);
5256GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, void **params);
5257#endif
5258#endif /* GL_APPLE_texture_range */
5259
5260#ifndef GL_APPLE_transform_hint
5261#define GL_APPLE_transform_hint 1
5262#define GL_TRANSFORM_HINT_APPLE 0x85B1
5263#endif /* GL_APPLE_transform_hint */
5264
5265#ifndef GL_APPLE_vertex_array_object
5266#define GL_APPLE_vertex_array_object 1
5267#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5
5268typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
5269typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);
5270typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays);
5271typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
5272#ifdef GL_GLEXT_PROTOTYPES
5273GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint array);
5274GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei n, const GLuint *arrays);
5275GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei n, GLuint *arrays);
5276GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint array);
5277#endif
5278#endif /* GL_APPLE_vertex_array_object */
5279
5280#ifndef GL_APPLE_vertex_array_range
5281#define GL_APPLE_vertex_array_range 1
5282#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D
5283#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
5284#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
5285#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
5286#define GL_STORAGE_CLIENT_APPLE 0x85B4
5287typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);
5288typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);
5289typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param);
5290#ifdef GL_GLEXT_PROTOTYPES
5291GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei length, void *pointer);
5292GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei length, void *pointer);
5293GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum pname, GLint param);
5294#endif
5295#endif /* GL_APPLE_vertex_array_range */
5296
5297#ifndef GL_APPLE_vertex_program_evaluators
5298#define GL_APPLE_vertex_program_evaluators 1
5299#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00
5300#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01
5301#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02
5302#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03
5303#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04
5304#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05
5305#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06
5306#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07
5307#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08
5308#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09
5309typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
5310typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
5311typedef GLboolean (APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname);
5312typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
5313typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
5314typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
5315typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
5316#ifdef GL_GLEXT_PROTOTYPES
5317GLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint index, GLenum pname);
5318GLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint index, GLenum pname);
5319GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint index, GLenum pname);
5320GLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
5321GLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
5322GLAPI void APIENTRY glMapVertexAttrib2dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
5323GLAPI void APIENTRY glMapVertexAttrib2fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
5324#endif
5325#endif /* GL_APPLE_vertex_program_evaluators */
5326
5327#ifndef GL_APPLE_ycbcr_422
5328#define GL_APPLE_ycbcr_422 1
5329#define GL_YCBCR_422_APPLE 0x85B9
5330#endif /* GL_APPLE_ycbcr_422 */
5331
5332#ifndef GL_ATI_draw_buffers
5333#define GL_ATI_draw_buffers 1
5334#define GL_MAX_DRAW_BUFFERS_ATI 0x8824
5335#define GL_DRAW_BUFFER0_ATI 0x8825
5336#define GL_DRAW_BUFFER1_ATI 0x8826
5337#define GL_DRAW_BUFFER2_ATI 0x8827
5338#define GL_DRAW_BUFFER3_ATI 0x8828
5339#define GL_DRAW_BUFFER4_ATI 0x8829
5340#define GL_DRAW_BUFFER5_ATI 0x882A
5341#define GL_DRAW_BUFFER6_ATI 0x882B
5342#define GL_DRAW_BUFFER7_ATI 0x882C
5343#define GL_DRAW_BUFFER8_ATI 0x882D
5344#define GL_DRAW_BUFFER9_ATI 0x882E
5345#define GL_DRAW_BUFFER10_ATI 0x882F
5346#define GL_DRAW_BUFFER11_ATI 0x8830
5347#define GL_DRAW_BUFFER12_ATI 0x8831
5348#define GL_DRAW_BUFFER13_ATI 0x8832
5349#define GL_DRAW_BUFFER14_ATI 0x8833
5350#define GL_DRAW_BUFFER15_ATI 0x8834
5351typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs);
5352#ifdef GL_GLEXT_PROTOTYPES
5353GLAPI void APIENTRY glDrawBuffersATI (GLsizei n, const GLenum *bufs);
5354#endif
5355#endif /* GL_ATI_draw_buffers */
5356
5357#ifndef GL_ATI_element_array
5358#define GL_ATI_element_array 1
5359#define GL_ELEMENT_ARRAY_ATI 0x8768
5360#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769
5361#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A
5362typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void *pointer);
5363typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
5364typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count);
5365#ifdef GL_GLEXT_PROTOTYPES
5366GLAPI void APIENTRY glElementPointerATI (GLenum type, const void *pointer);
5367GLAPI void APIENTRY glDrawElementArrayATI (GLenum mode, GLsizei count);
5368GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count);
5369#endif
5370#endif /* GL_ATI_element_array */
5371
5372#ifndef GL_ATI_envmap_bumpmap
5373#define GL_ATI_envmap_bumpmap 1
5374#define GL_BUMP_ROT_MATRIX_ATI 0x8775
5375#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776
5376#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777
5377#define GL_BUMP_TEX_UNITS_ATI 0x8778
5378#define GL_DUDV_ATI 0x8779
5379#define GL_DU8DV8_ATI 0x877A
5380#define GL_BUMP_ENVMAP_ATI 0x877B
5381#define GL_BUMP_TARGET_ATI 0x877C
5382typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param);
5383typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param);
5384typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);
5385typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);
5386#ifdef GL_GLEXT_PROTOTYPES
5387GLAPI void APIENTRY glTexBumpParameterivATI (GLenum pname, const GLint *param);
5388GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum pname, const GLfloat *param);
5389GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum pname, GLint *param);
5390GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum pname, GLfloat *param);
5391#endif
5392#endif /* GL_ATI_envmap_bumpmap */
5393
5394#ifndef GL_ATI_fragment_shader
5395#define GL_ATI_fragment_shader 1
5396#define GL_FRAGMENT_SHADER_ATI 0x8920
5397#define GL_REG_0_ATI 0x8921
5398#define GL_REG_1_ATI 0x8922
5399#define GL_REG_2_ATI 0x8923
5400#define GL_REG_3_ATI 0x8924
5401#define GL_REG_4_ATI 0x8925
5402#define GL_REG_5_ATI 0x8926
5403#define GL_REG_6_ATI 0x8927
5404#define GL_REG_7_ATI 0x8928
5405#define GL_REG_8_ATI 0x8929
5406#define GL_REG_9_ATI 0x892A
5407#define GL_REG_10_ATI 0x892B
5408#define GL_REG_11_ATI 0x892C
5409#define GL_REG_12_ATI 0x892D
5410#define GL_REG_13_ATI 0x892E
5411#define GL_REG_14_ATI 0x892F
5412#define GL_REG_15_ATI 0x8930
5413#define GL_REG_16_ATI 0x8931
5414#define GL_REG_17_ATI 0x8932
5415#define GL_REG_18_ATI 0x8933
5416#define GL_REG_19_ATI 0x8934
5417#define GL_REG_20_ATI 0x8935
5418#define GL_REG_21_ATI 0x8936
5419#define GL_REG_22_ATI 0x8937
5420#define GL_REG_23_ATI 0x8938
5421#define GL_REG_24_ATI 0x8939
5422#define GL_REG_25_ATI 0x893A
5423#define GL_REG_26_ATI 0x893B
5424#define GL_REG_27_ATI 0x893C
5425#define GL_REG_28_ATI 0x893D
5426#define GL_REG_29_ATI 0x893E
5427#define GL_REG_30_ATI 0x893F
5428#define GL_REG_31_ATI 0x8940
5429#define GL_CON_0_ATI 0x8941
5430#define GL_CON_1_ATI 0x8942
5431#define GL_CON_2_ATI 0x8943
5432#define GL_CON_3_ATI 0x8944
5433#define GL_CON_4_ATI 0x8945
5434#define GL_CON_5_ATI 0x8946
5435#define GL_CON_6_ATI 0x8947
5436#define GL_CON_7_ATI 0x8948
5437#define GL_CON_8_ATI 0x8949
5438#define GL_CON_9_ATI 0x894A
5439#define GL_CON_10_ATI 0x894B
5440#define GL_CON_11_ATI 0x894C
5441#define GL_CON_12_ATI 0x894D
5442#define GL_CON_13_ATI 0x894E
5443#define GL_CON_14_ATI 0x894F
5444#define GL_CON_15_ATI 0x8950
5445#define GL_CON_16_ATI 0x8951
5446#define GL_CON_17_ATI 0x8952
5447#define GL_CON_18_ATI 0x8953
5448#define GL_CON_19_ATI 0x8954
5449#define GL_CON_20_ATI 0x8955
5450#define GL_CON_21_ATI 0x8956
5451#define GL_CON_22_ATI 0x8957
5452#define GL_CON_23_ATI 0x8958
5453#define GL_CON_24_ATI 0x8959
5454#define GL_CON_25_ATI 0x895A
5455#define GL_CON_26_ATI 0x895B
5456#define GL_CON_27_ATI 0x895C
5457#define GL_CON_28_ATI 0x895D
5458#define GL_CON_29_ATI 0x895E
5459#define GL_CON_30_ATI 0x895F
5460#define GL_CON_31_ATI 0x8960
5461#define GL_MOV_ATI 0x8961
5462#define GL_ADD_ATI 0x8963
5463#define GL_MUL_ATI 0x8964
5464#define GL_SUB_ATI 0x8965
5465#define GL_DOT3_ATI 0x8966
5466#define GL_DOT4_ATI 0x8967
5467#define GL_MAD_ATI 0x8968
5468#define GL_LERP_ATI 0x8969
5469#define GL_CND_ATI 0x896A
5470#define GL_CND0_ATI 0x896B
5471#define GL_DOT2_ADD_ATI 0x896C
5472#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D
5473#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E
5474#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F
5475#define GL_NUM_PASSES_ATI 0x8970
5476#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971
5477#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972
5478#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
5479#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974
5480#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975
5481#define GL_SWIZZLE_STR_ATI 0x8976
5482#define GL_SWIZZLE_STQ_ATI 0x8977
5483#define GL_SWIZZLE_STR_DR_ATI 0x8978
5484#define GL_SWIZZLE_STQ_DQ_ATI 0x8979
5485#define GL_SWIZZLE_STRQ_ATI 0x897A
5486#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B
5487#define GL_RED_BIT_ATI 0x00000001
5488#define GL_GREEN_BIT_ATI 0x00000002
5489#define GL_BLUE_BIT_ATI 0x00000004
5490#define GL_2X_BIT_ATI 0x00000001
5491#define GL_4X_BIT_ATI 0x00000002
5492#define GL_8X_BIT_ATI 0x00000004
5493#define GL_HALF_BIT_ATI 0x00000008
5494#define GL_QUARTER_BIT_ATI 0x00000010
5495#define GL_EIGHTH_BIT_ATI 0x00000020
5496#define GL_SATURATE_BIT_ATI 0x00000040
5497#define GL_COMP_BIT_ATI 0x00000002
5498#define GL_NEGATE_BIT_ATI 0x00000004
5499#define GL_BIAS_BIT_ATI 0x00000008
5500typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
5501typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
5502typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id);
5503typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void);
5504typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void);
5505typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle);
5506typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle);
5507typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
5508typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
5509typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
5510typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
5511typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
5512typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
5513typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value);
5514#ifdef GL_GLEXT_PROTOTYPES
5515GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint range);
5516GLAPI void APIENTRY glBindFragmentShaderATI (GLuint id);
5517GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint id);
5518GLAPI void APIENTRY glBeginFragmentShaderATI (void);
5519GLAPI void APIENTRY glEndFragmentShaderATI (void);
5520GLAPI void APIENTRY glPassTexCoordATI (GLuint dst, GLuint coord, GLenum swizzle);
5521GLAPI void APIENTRY glSampleMapATI (GLuint dst, GLuint interp, GLenum swizzle);
5522GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
5523GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
5524GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
5525GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
5526GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
5527GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
5528GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint dst, const GLfloat *value);
5529#endif
5530#endif /* GL_ATI_fragment_shader */
5531
5532#ifndef GL_ATI_map_object_buffer
5533#define GL_ATI_map_object_buffer 1
5534typedef void *(APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer);
5535typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
5536#ifdef GL_GLEXT_PROTOTYPES
5537GLAPI void *APIENTRY glMapObjectBufferATI (GLuint buffer);
5538GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint buffer);
5539#endif
5540#endif /* GL_ATI_map_object_buffer */
5541
5542#ifndef GL_ATI_meminfo
5543#define GL_ATI_meminfo 1
5544#define GL_VBO_FREE_MEMORY_ATI 0x87FB
5545#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC
5546#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD
5547#endif /* GL_ATI_meminfo */
5548
5549#ifndef GL_ATI_pixel_format_float
5550#define GL_ATI_pixel_format_float 1
5551#define GL_RGBA_FLOAT_MODE_ATI 0x8820
5552#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
5553#endif /* GL_ATI_pixel_format_float */
5554
5555#ifndef GL_ATI_pn_triangles
5556#define GL_ATI_pn_triangles 1
5557#define GL_PN_TRIANGLES_ATI 0x87F0
5558#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
5559#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2
5560#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3
5561#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
5562#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
5563#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
5564#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
5565#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
5566typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
5567typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
5568#ifdef GL_GLEXT_PROTOTYPES
5569GLAPI void APIENTRY glPNTrianglesiATI (GLenum pname, GLint param);
5570GLAPI void APIENTRY glPNTrianglesfATI (GLenum pname, GLfloat param);
5571#endif
5572#endif /* GL_ATI_pn_triangles */
5573
5574#ifndef GL_ATI_separate_stencil
5575#define GL_ATI_separate_stencil 1
5576#define GL_STENCIL_BACK_FUNC_ATI 0x8800
5577#define GL_STENCIL_BACK_FAIL_ATI 0x8801
5578#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
5579#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
5580typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
5581typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
5582#ifdef GL_GLEXT_PROTOTYPES
5583GLAPI void APIENTRY glStencilOpSeparateATI (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
5584GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
5585#endif
5586#endif /* GL_ATI_separate_stencil */
5587
5588#ifndef GL_ATI_text_fragment_shader
5589#define GL_ATI_text_fragment_shader 1
5590#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200
5591#endif /* GL_ATI_text_fragment_shader */
5592
5593#ifndef GL_ATI_texture_env_combine3
5594#define GL_ATI_texture_env_combine3 1
5595#define GL_MODULATE_ADD_ATI 0x8744
5596#define GL_MODULATE_SIGNED_ADD_ATI 0x8745
5597#define GL_MODULATE_SUBTRACT_ATI 0x8746
5598#endif /* GL_ATI_texture_env_combine3 */
5599
5600#ifndef GL_ATI_texture_float
5601#define GL_ATI_texture_float 1
5602#define GL_RGBA_FLOAT32_ATI 0x8814
5603#define GL_RGB_FLOAT32_ATI 0x8815
5604#define GL_ALPHA_FLOAT32_ATI 0x8816
5605#define GL_INTENSITY_FLOAT32_ATI 0x8817
5606#define GL_LUMINANCE_FLOAT32_ATI 0x8818
5607#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819
5608#define GL_RGBA_FLOAT16_ATI 0x881A
5609#define GL_RGB_FLOAT16_ATI 0x881B
5610#define GL_ALPHA_FLOAT16_ATI 0x881C
5611#define GL_INTENSITY_FLOAT16_ATI 0x881D
5612#define GL_LUMINANCE_FLOAT16_ATI 0x881E
5613#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F
5614#endif /* GL_ATI_texture_float */
5615
5616#ifndef GL_ATI_texture_mirror_once
5617#define GL_ATI_texture_mirror_once 1
5618#define GL_MIRROR_CLAMP_ATI 0x8742
5619#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743
5620#endif /* GL_ATI_texture_mirror_once */
5621
5622#ifndef GL_ATI_vertex_array_object
5623#define GL_ATI_vertex_array_object 1
5624#define GL_STATIC_ATI 0x8760
5625#define GL_DYNAMIC_ATI 0x8761
5626#define GL_PRESERVE_ATI 0x8762
5627#define GL_DISCARD_ATI 0x8763
5628#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764
5629#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765
5630#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766
5631#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767
5632typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void *pointer, GLenum usage);
5633typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
5634typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve);
5635typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params);
5636typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params);
5637typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer);
5638typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
5639typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params);
5640typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params);
5641typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
5642typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params);
5643typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params);
5644#ifdef GL_GLEXT_PROTOTYPES
5645GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei size, const void *pointer, GLenum usage);
5646GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint buffer);
5647GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve);
5648GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint buffer, GLenum pname, GLfloat *params);
5649GLAPI void APIENTRY glGetObjectBufferivATI (GLuint buffer, GLenum pname, GLint *params);
5650GLAPI void APIENTRY glFreeObjectBufferATI (GLuint buffer);
5651GLAPI void APIENTRY glArrayObjectATI (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
5652GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum array, GLenum pname, GLfloat *params);
5653GLAPI void APIENTRY glGetArrayObjectivATI (GLenum array, GLenum pname, GLint *params);
5654GLAPI void APIENTRY glVariantArrayObjectATI (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
5655GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint id, GLenum pname, GLfloat *params);
5656GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint id, GLenum pname, GLint *params);
5657#endif
5658#endif /* GL_ATI_vertex_array_object */
5659
5660#ifndef GL_ATI_vertex_attrib_array_object
5661#define GL_ATI_vertex_attrib_array_object 1
5662typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
5663typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params);
5664typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params);
5665#ifdef GL_GLEXT_PROTOTYPES
5666GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
5667GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint index, GLenum pname, GLfloat *params);
5668GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint index, GLenum pname, GLint *params);
5669#endif
5670#endif /* GL_ATI_vertex_attrib_array_object */
5671
5672#ifndef GL_ATI_vertex_streams
5673#define GL_ATI_vertex_streams 1
5674#define GL_MAX_VERTEX_STREAMS_ATI 0x876B
5675#define GL_VERTEX_STREAM0_ATI 0x876C
5676#define GL_VERTEX_STREAM1_ATI 0x876D
5677#define GL_VERTEX_STREAM2_ATI 0x876E
5678#define GL_VERTEX_STREAM3_ATI 0x876F
5679#define GL_VERTEX_STREAM4_ATI 0x8770
5680#define GL_VERTEX_STREAM5_ATI 0x8771
5681#define GL_VERTEX_STREAM6_ATI 0x8772
5682#define GL_VERTEX_STREAM7_ATI 0x8773
5683#define GL_VERTEX_SOURCE_ATI 0x8774
5684typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
5685typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);
5686typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x);
5687typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords);
5688typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x);
5689typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords);
5690typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x);
5691typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords);
5692typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y);
5693typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords);
5694typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y);
5695typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords);
5696typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y);
5697typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords);
5698typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y);
5699typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords);
5700typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
5701typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
5702typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
5703typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
5704typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
5705typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
5706typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
5707typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
5708typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
5709typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords);
5710typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w);
5711typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords);
5712typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
5713typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords);
5714typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
5715typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords);
5716typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
5717typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords);
5718typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
5719typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
5720typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz);
5721typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
5722typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
5723typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
5724typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
5725typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
5726typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream);
5727typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param);
5728typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param);
5729#ifdef GL_GLEXT_PROTOTYPES
5730GLAPI void APIENTRY glVertexStream1sATI (GLenum stream, GLshort x);
5731GLAPI void APIENTRY glVertexStream1svATI (GLenum stream, const GLshort *coords);
5732GLAPI void APIENTRY glVertexStream1iATI (GLenum stream, GLint x);
5733GLAPI void APIENTRY glVertexStream1ivATI (GLenum stream, const GLint *coords);
5734GLAPI void APIENTRY glVertexStream1fATI (GLenum stream, GLfloat x);
5735GLAPI void APIENTRY glVertexStream1fvATI (GLenum stream, const GLfloat *coords);
5736GLAPI void APIENTRY glVertexStream1dATI (GLenum stream, GLdouble x);
5737GLAPI void APIENTRY glVertexStream1dvATI (GLenum stream, const GLdouble *coords);
5738GLAPI void APIENTRY glVertexStream2sATI (GLenum stream, GLshort x, GLshort y);
5739GLAPI void APIENTRY glVertexStream2svATI (GLenum stream, const GLshort *coords);
5740GLAPI void APIENTRY glVertexStream2iATI (GLenum stream, GLint x, GLint y);
5741GLAPI void APIENTRY glVertexStream2ivATI (GLenum stream, const GLint *coords);
5742GLAPI void APIENTRY glVertexStream2fATI (GLenum stream, GLfloat x, GLfloat y);
5743GLAPI void APIENTRY glVertexStream2fvATI (GLenum stream, const GLfloat *coords);
5744GLAPI void APIENTRY glVertexStream2dATI (GLenum stream, GLdouble x, GLdouble y);
5745GLAPI void APIENTRY glVertexStream2dvATI (GLenum stream, const GLdouble *coords);
5746GLAPI void APIENTRY glVertexStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z);
5747GLAPI void APIENTRY glVertexStream3svATI (GLenum stream, const GLshort *coords);
5748GLAPI void APIENTRY glVertexStream3iATI (GLenum stream, GLint x, GLint y, GLint z);
5749GLAPI void APIENTRY glVertexStream3ivATI (GLenum stream, const GLint *coords);
5750GLAPI void APIENTRY glVertexStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
5751GLAPI void APIENTRY glVertexStream3fvATI (GLenum stream, const GLfloat *coords);
5752GLAPI void APIENTRY glVertexStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
5753GLAPI void APIENTRY glVertexStream3dvATI (GLenum stream, const GLdouble *coords);
5754GLAPI void APIENTRY glVertexStream4sATI (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
5755GLAPI void APIENTRY glVertexStream4svATI (GLenum stream, const GLshort *coords);
5756GLAPI void APIENTRY glVertexStream4iATI (GLenum stream, GLint x, GLint y, GLint z, GLint w);
5757GLAPI void APIENTRY glVertexStream4ivATI (GLenum stream, const GLint *coords);
5758GLAPI void APIENTRY glVertexStream4fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
5759GLAPI void APIENTRY glVertexStream4fvATI (GLenum stream, const GLfloat *coords);
5760GLAPI void APIENTRY glVertexStream4dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
5761GLAPI void APIENTRY glVertexStream4dvATI (GLenum stream, const GLdouble *coords);
5762GLAPI void APIENTRY glNormalStream3bATI (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
5763GLAPI void APIENTRY glNormalStream3bvATI (GLenum stream, const GLbyte *coords);
5764GLAPI void APIENTRY glNormalStream3sATI (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
5765GLAPI void APIENTRY glNormalStream3svATI (GLenum stream, const GLshort *coords);
5766GLAPI void APIENTRY glNormalStream3iATI (GLenum stream, GLint nx, GLint ny, GLint nz);
5767GLAPI void APIENTRY glNormalStream3ivATI (GLenum stream, const GLint *coords);
5768GLAPI void APIENTRY glNormalStream3fATI (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
5769GLAPI void APIENTRY glNormalStream3fvATI (GLenum stream, const GLfloat *coords);
5770GLAPI void APIENTRY glNormalStream3dATI (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
5771GLAPI void APIENTRY glNormalStream3dvATI (GLenum stream, const GLdouble *coords);
5772GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum stream);
5773GLAPI void APIENTRY glVertexBlendEnviATI (GLenum pname, GLint param);
5774GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum pname, GLfloat param);
5775#endif
5776#endif /* GL_ATI_vertex_streams */
5777
5778#ifndef GL_EXT_422_pixels
5779#define GL_EXT_422_pixels 1
5780#define GL_422_EXT 0x80CC
5781#define GL_422_REV_EXT 0x80CD
5782#define GL_422_AVERAGE_EXT 0x80CE
5783#define GL_422_REV_AVERAGE_EXT 0x80CF
5784#endif /* GL_EXT_422_pixels */
5785
5786#ifndef GL_EXT_abgr
5787#define GL_EXT_abgr 1
5788#define GL_ABGR_EXT 0x8000
5789#endif /* GL_EXT_abgr */
5790
5791#ifndef GL_EXT_bgra
5792#define GL_EXT_bgra 1
5793#define GL_BGR_EXT 0x80E0
5794#define GL_BGRA_EXT 0x80E1
5795#endif /* GL_EXT_bgra */
5796
5797#ifndef GL_EXT_bindable_uniform
5798#define GL_EXT_bindable_uniform 1
5799#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2
5800#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3
5801#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4
5802#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED
5803#define GL_UNIFORM_BUFFER_EXT 0x8DEE
5804#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF
5805typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);
5806typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);
5807typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location);
5808#ifdef GL_GLEXT_PROTOTYPES
5809GLAPI void APIENTRY glUniformBufferEXT (GLuint program, GLint location, GLuint buffer);
5810GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint program, GLint location);
5811GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint program, GLint location);
5812#endif
5813#endif /* GL_EXT_bindable_uniform */
5814
5815#ifndef GL_EXT_blend_color
5816#define GL_EXT_blend_color 1
5817#define GL_CONSTANT_COLOR_EXT 0x8001
5818#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002
5819#define GL_CONSTANT_ALPHA_EXT 0x8003
5820#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004
5821#define GL_BLEND_COLOR_EXT 0x8005
5822typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
5823#ifdef GL_GLEXT_PROTOTYPES
5824GLAPI void APIENTRY glBlendColorEXT (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
5825#endif
5826#endif /* GL_EXT_blend_color */
5827
5828#ifndef GL_EXT_blend_equation_separate
5829#define GL_EXT_blend_equation_separate 1
5830#define GL_BLEND_EQUATION_RGB_EXT 0x8009
5831#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D
5832typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);
5833#ifdef GL_GLEXT_PROTOTYPES
5834GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum modeRGB, GLenum modeAlpha);
5835#endif
5836#endif /* GL_EXT_blend_equation_separate */
5837
5838#ifndef GL_EXT_blend_func_separate
5839#define GL_EXT_blend_func_separate 1
5840#define GL_BLEND_DST_RGB_EXT 0x80C8
5841#define GL_BLEND_SRC_RGB_EXT 0x80C9
5842#define GL_BLEND_DST_ALPHA_EXT 0x80CA
5843#define GL_BLEND_SRC_ALPHA_EXT 0x80CB
5844typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
5845#ifdef GL_GLEXT_PROTOTYPES
5846GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
5847#endif
5848#endif /* GL_EXT_blend_func_separate */
5849
5850#ifndef GL_EXT_blend_logic_op
5851#define GL_EXT_blend_logic_op 1
5852#endif /* GL_EXT_blend_logic_op */
5853
5854#ifndef GL_EXT_blend_minmax
5855#define GL_EXT_blend_minmax 1
5856#define GL_MIN_EXT 0x8007
5857#define GL_MAX_EXT 0x8008
5858#define GL_FUNC_ADD_EXT 0x8006
5859#define GL_BLEND_EQUATION_EXT 0x8009
5860typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
5861#ifdef GL_GLEXT_PROTOTYPES
5862GLAPI void APIENTRY glBlendEquationEXT (GLenum mode);
5863#endif
5864#endif /* GL_EXT_blend_minmax */
5865
5866#ifndef GL_EXT_blend_subtract
5867#define GL_EXT_blend_subtract 1
5868#define GL_FUNC_SUBTRACT_EXT 0x800A
5869#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B
5870#endif /* GL_EXT_blend_subtract */
5871
5872#ifndef GL_EXT_clip_volume_hint
5873#define GL_EXT_clip_volume_hint 1
5874#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0
5875#endif /* GL_EXT_clip_volume_hint */
5876
5877#ifndef GL_EXT_cmyka
5878#define GL_EXT_cmyka 1
5879#define GL_CMYK_EXT 0x800C
5880#define GL_CMYKA_EXT 0x800D
5881#define GL_PACK_CMYK_HINT_EXT 0x800E
5882#define GL_UNPACK_CMYK_HINT_EXT 0x800F
5883#endif /* GL_EXT_cmyka */
5884
5885#ifndef GL_EXT_color_subtable
5886#define GL_EXT_color_subtable 1
5887typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
5888typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
5889#ifdef GL_GLEXT_PROTOTYPES
5890GLAPI void APIENTRY glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
5891GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
5892#endif
5893#endif /* GL_EXT_color_subtable */
5894
5895#ifndef GL_EXT_compiled_vertex_array
5896#define GL_EXT_compiled_vertex_array 1
5897#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8
5898#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9
5899typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
5900typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void);
5901#ifdef GL_GLEXT_PROTOTYPES
5902GLAPI void APIENTRY glLockArraysEXT (GLint first, GLsizei count);
5903GLAPI void APIENTRY glUnlockArraysEXT (void);
5904#endif
5905#endif /* GL_EXT_compiled_vertex_array */
5906
5907#ifndef GL_EXT_convolution
5908#define GL_EXT_convolution 1
5909#define GL_CONVOLUTION_1D_EXT 0x8010
5910#define GL_CONVOLUTION_2D_EXT 0x8011
5911#define GL_SEPARABLE_2D_EXT 0x8012
5912#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013
5913#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014
5914#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015
5915#define GL_REDUCE_EXT 0x8016
5916#define GL_CONVOLUTION_FORMAT_EXT 0x8017
5917#define GL_CONVOLUTION_WIDTH_EXT 0x8018
5918#define GL_CONVOLUTION_HEIGHT_EXT 0x8019
5919#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A
5920#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B
5921#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
5922#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
5923#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
5924#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
5925#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020
5926#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
5927#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
5928#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
5929typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
5930typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
5931typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params);
5932typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
5933typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params);
5934typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
5935typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
5936typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
5937typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *image);
5938typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
5939typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
5940typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
5941typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
5942#ifdef GL_GLEXT_PROTOTYPES
5943GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
5944GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
5945GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum target, GLenum pname, GLfloat params);
5946GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
5947GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum target, GLenum pname, GLint params);
5948GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum target, GLenum pname, const GLint *params);
5949GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
5950GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
5951GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum target, GLenum format, GLenum type, void *image);
5952GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
5953GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum target, GLenum pname, GLint *params);
5954GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
5955GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
5956#endif
5957#endif /* GL_EXT_convolution */
5958
5959#ifndef GL_EXT_coordinate_frame
5960#define GL_EXT_coordinate_frame 1
5961#define GL_TANGENT_ARRAY_EXT 0x8439
5962#define GL_BINORMAL_ARRAY_EXT 0x843A
5963#define GL_CURRENT_TANGENT_EXT 0x843B
5964#define GL_CURRENT_BINORMAL_EXT 0x843C
5965#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E
5966#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F
5967#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440
5968#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441
5969#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442
5970#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443
5971#define GL_MAP1_TANGENT_EXT 0x8444
5972#define GL_MAP2_TANGENT_EXT 0x8445
5973#define GL_MAP1_BINORMAL_EXT 0x8446
5974#define GL_MAP2_BINORMAL_EXT 0x8447
5975typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);
5976typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);
5977typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz);
5978typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v);
5979typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz);
5980typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v);
5981typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz);
5982typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v);
5983typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz);
5984typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v);
5985typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz);
5986typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v);
5987typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz);
5988typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v);
5989typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz);
5990typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v);
5991typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz);
5992typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v);
5993typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz);
5994typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v);
5995typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
5996typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
5997#ifdef GL_GLEXT_PROTOTYPES
5998GLAPI void APIENTRY glTangent3bEXT (GLbyte tx, GLbyte ty, GLbyte tz);
5999GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *v);
6000GLAPI void APIENTRY glTangent3dEXT (GLdouble tx, GLdouble ty, GLdouble tz);
6001GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *v);
6002GLAPI void APIENTRY glTangent3fEXT (GLfloat tx, GLfloat ty, GLfloat tz);
6003GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *v);
6004GLAPI void APIENTRY glTangent3iEXT (GLint tx, GLint ty, GLint tz);
6005GLAPI void APIENTRY glTangent3ivEXT (const GLint *v);
6006GLAPI void APIENTRY glTangent3sEXT (GLshort tx, GLshort ty, GLshort tz);
6007GLAPI void APIENTRY glTangent3svEXT (const GLshort *v);
6008GLAPI void APIENTRY glBinormal3bEXT (GLbyte bx, GLbyte by, GLbyte bz);
6009GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *v);
6010GLAPI void APIENTRY glBinormal3dEXT (GLdouble bx, GLdouble by, GLdouble bz);
6011GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *v);
6012GLAPI void APIENTRY glBinormal3fEXT (GLfloat bx, GLfloat by, GLfloat bz);
6013GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *v);
6014GLAPI void APIENTRY glBinormal3iEXT (GLint bx, GLint by, GLint bz);
6015GLAPI void APIENTRY glBinormal3ivEXT (const GLint *v);
6016GLAPI void APIENTRY glBinormal3sEXT (GLshort bx, GLshort by, GLshort bz);
6017GLAPI void APIENTRY glBinormal3svEXT (const GLshort *v);
6018GLAPI void APIENTRY glTangentPointerEXT (GLenum type, GLsizei stride, const void *pointer);
6019GLAPI void APIENTRY glBinormalPointerEXT (GLenum type, GLsizei stride, const void *pointer);
6020#endif
6021#endif /* GL_EXT_coordinate_frame */
6022
6023#ifndef GL_EXT_copy_texture
6024#define GL_EXT_copy_texture 1
6025typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
6026typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
6027typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
6028typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
6029typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
6030#ifdef GL_GLEXT_PROTOTYPES
6031GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
6032GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
6033GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
6034GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
6035GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
6036#endif
6037#endif /* GL_EXT_copy_texture */
6038
6039#ifndef GL_EXT_cull_vertex
6040#define GL_EXT_cull_vertex 1
6041#define GL_CULL_VERTEX_EXT 0x81AA
6042#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB
6043#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
6044typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);
6045typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);
6046#ifdef GL_GLEXT_PROTOTYPES
6047GLAPI void APIENTRY glCullParameterdvEXT (GLenum pname, GLdouble *params);
6048GLAPI void APIENTRY glCullParameterfvEXT (GLenum pname, GLfloat *params);
6049#endif
6050#endif /* GL_EXT_cull_vertex */
6051
6052#ifndef GL_EXT_debug_label
6053#define GL_EXT_debug_label 1
6054#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F
6055#define GL_PROGRAM_OBJECT_EXT 0x8B40
6056#define GL_SHADER_OBJECT_EXT 0x8B48
6057#define GL_BUFFER_OBJECT_EXT 0x9151
6058#define GL_QUERY_OBJECT_EXT 0x9153
6059#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154
6060typedef void (APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);
6061typedef void (APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
6062#ifdef GL_GLEXT_PROTOTYPES
6063GLAPI void APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label);
6064GLAPI void APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
6065#endif
6066#endif /* GL_EXT_debug_label */
6067
6068#ifndef GL_EXT_debug_marker
6069#define GL_EXT_debug_marker 1
6070typedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);
6071typedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);
6072typedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void);
6073#ifdef GL_GLEXT_PROTOTYPES
6074GLAPI void APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker);
6075GLAPI void APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker);
6076GLAPI void APIENTRY glPopGroupMarkerEXT (void);
6077#endif
6078#endif /* GL_EXT_debug_marker */
6079
6080#ifndef GL_EXT_depth_bounds_test
6081#define GL_EXT_depth_bounds_test 1
6082#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890
6083#define GL_DEPTH_BOUNDS_EXT 0x8891
6084typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
6085#ifdef GL_GLEXT_PROTOTYPES
6086GLAPI void APIENTRY glDepthBoundsEXT (GLclampd zmin, GLclampd zmax);
6087#endif
6088#endif /* GL_EXT_depth_bounds_test */
6089
6090#ifndef GL_EXT_direct_state_access
6091#define GL_EXT_direct_state_access 1
6092#define GL_PROGRAM_MATRIX_EXT 0x8E2D
6093#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E
6094#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F
6095typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m);
6096typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m);
6097typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m);
6098typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m);
6099typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode);
6100typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
6101typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
6102typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
6103typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
6104typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
6105typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
6106typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
6107typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
6108typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode);
6109typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode);
6110typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
6111typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
6112typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param);
6113typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
6114typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param);
6115typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
6116typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
6117typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
6118typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
6119typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
6120typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
6121typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
6122typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
6123typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
6124typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
6125typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
6126typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
6127typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
6128typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
6129typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
6130typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
6131typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
6132typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture);
6133typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
6134typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
6135typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
6136typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
6137typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
6138typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
6139typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
6140typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
6141typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
6142typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param);
6143typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
6144typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
6145typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
6146typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
6147typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
6148typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
6149typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
6150typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
6151typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
6152typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
6153typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
6154typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
6155typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
6156typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
6157typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
6158typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
6159typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
6160typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
6161typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
6162typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
6163typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
6164typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
6165typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
6166typedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
6167typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
6168typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
6169typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
6170typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
6171typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat *data);
6172typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble *data);
6173typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, void **data);
6174typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
6175typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
6176typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index);
6177typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data);
6178typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data);
6179typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
6180typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
6181typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
6182typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
6183typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
6184typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
6185typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, void *img);
6186typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
6187typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
6188typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
6189typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
6190typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
6191typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
6192typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, void *img);
6193typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
6194typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
6195typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
6196typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
6197typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
6198typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
6199typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access);
6200typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer);
6201typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params);
6202typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void **params);
6203typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
6204typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0);
6205typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
6206typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
6207typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
6208typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0);
6209typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1);
6210typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
6211typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
6212typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
6213typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
6214typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
6215typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
6216typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
6217typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
6218typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
6219typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
6220typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6221typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6222typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6223typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6224typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6225typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6226typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6227typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6228typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6229typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
6230typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
6231typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
6232typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
6233typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
6234typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint *params);
6235typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
6236typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
6237typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
6238typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
6239typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0);
6240typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
6241typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
6242typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
6243typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
6244typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
6245typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
6246typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
6247typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
6248typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
6249typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint *params);
6250typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
6251typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
6252typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint *params);
6253typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
6254typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint *params);
6255typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint *params);
6256typedef void (APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
6257typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
6258typedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat *params);
6259typedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble *params);
6260typedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void **params);
6261typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
6262typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
6263typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble *params);
6264typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
6265typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat *params);
6266typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble *params);
6267typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat *params);
6268typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint *params);
6269typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void *string);
6270typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
6271typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params);
6272typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
6273typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
6274typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target);
6275typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
6276typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
6277typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
6278typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
6279typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
6280typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target);
6281typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target);
6282typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
6283typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs);
6284typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
6285typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
6286typedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
6287typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
6288typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
6289typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
6290typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer);
6291typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer);
6292typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
6293typedef void (APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
6294typedef void (APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
6295typedef void (APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
6296typedef void (APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
6297typedef void (APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
6298typedef void (APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
6299typedef void (APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
6300typedef void (APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
6301typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
6302typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
6303typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
6304typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
6305typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
6306typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
6307typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint *param);
6308typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, void **param);
6309typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
6310typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void **param);
6311typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
6312typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
6313typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
6314typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
6315typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
6316typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param);
6317typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
6318typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x);
6319typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y);
6320typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
6321typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
6322typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
6323typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
6324typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
6325typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
6326typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6327typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6328typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6329typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6330typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6331typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6332typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6333typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6334typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6335typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
6336typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
6337typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
6338typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
6339typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
6340typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
6341typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
6342typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
6343typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
6344typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
6345typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
6346typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
6347typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
6348typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
6349typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor);
6350#ifdef GL_GLEXT_PROTOTYPES
6351GLAPI void APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m);
6352GLAPI void APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m);
6353GLAPI void APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m);
6354GLAPI void APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m);
6355GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum mode);
6356GLAPI void APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
6357GLAPI void APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
6358GLAPI void APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
6359GLAPI void APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
6360GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
6361GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
6362GLAPI void APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
6363GLAPI void APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
6364GLAPI void APIENTRY glMatrixPopEXT (GLenum mode);
6365GLAPI void APIENTRY glMatrixPushEXT (GLenum mode);
6366GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask);
6367GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask);
6368GLAPI void APIENTRY glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param);
6369GLAPI void APIENTRY glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
6370GLAPI void APIENTRY glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param);
6371GLAPI void APIENTRY glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
6372GLAPI void APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
6373GLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
6374GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
6375GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
6376GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
6377GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
6378GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
6379GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
6380GLAPI void APIENTRY glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
6381GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
6382GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
6383GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
6384GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
6385GLAPI void APIENTRY glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
6386GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
6387GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
6388GLAPI void APIENTRY glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture);
6389GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
6390GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
6391GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
6392GLAPI void APIENTRY glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
6393GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
6394GLAPI void APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
6395GLAPI void APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
6396GLAPI void APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
6397GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
6398GLAPI void APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param);
6399GLAPI void APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
6400GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
6401GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
6402GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
6403GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
6404GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
6405GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
6406GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
6407GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
6408GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
6409GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
6410GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
6411GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
6412GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
6413GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
6414GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
6415GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
6416GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
6417GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
6418GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
6419GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
6420GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
6421GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
6422GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
6423GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
6424GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
6425GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index);
6426GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index);
6427GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat *data);
6428GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble *data);
6429GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum target, GLuint index, void **data);
6430GLAPI void APIENTRY glEnableIndexedEXT (GLenum target, GLuint index);
6431GLAPI void APIENTRY glDisableIndexedEXT (GLenum target, GLuint index);
6432GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum target, GLuint index);
6433GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *data);
6434GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data);
6435GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
6436GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
6437GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
6438GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
6439GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
6440GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
6441GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, void *img);
6442GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
6443GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
6444GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
6445GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
6446GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
6447GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
6448GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, void *img);
6449GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m);
6450GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m);
6451GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m);
6452GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m);
6453GLAPI void APIENTRY glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
6454GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
6455GLAPI void *APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access);
6456GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer);
6457GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params);
6458GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, void **params);
6459GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
6460GLAPI void APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0);
6461GLAPI void APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1);
6462GLAPI void APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
6463GLAPI void APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
6464GLAPI void APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0);
6465GLAPI void APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1);
6466GLAPI void APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
6467GLAPI void APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
6468GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
6469GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
6470GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
6471GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
6472GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
6473GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
6474GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
6475GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
6476GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6477GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6478GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6479GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6480GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6481GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6482GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6483GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6484GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6485GLAPI void APIENTRY glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
6486GLAPI void APIENTRY glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
6487GLAPI void APIENTRY glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
6488GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
6489GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
6490GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params);
6491GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
6492GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
6493GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
6494GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
6495GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0);
6496GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1);
6497GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
6498GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
6499GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
6500GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
6501GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
6502GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
6503GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
6504GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
6505GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params);
6506GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
6507GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
6508GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params);
6509GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
6510GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params);
6511GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params);
6512GLAPI void APIENTRY glEnableClientStateiEXT (GLenum array, GLuint index);
6513GLAPI void APIENTRY glDisableClientStateiEXT (GLenum array, GLuint index);
6514GLAPI void APIENTRY glGetFloati_vEXT (GLenum pname, GLuint index, GLfloat *params);
6515GLAPI void APIENTRY glGetDoublei_vEXT (GLenum pname, GLuint index, GLdouble *params);
6516GLAPI void APIENTRY glGetPointeri_vEXT (GLenum pname, GLuint index, void **params);
6517GLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
6518GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
6519GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params);
6520GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
6521GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params);
6522GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params);
6523GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params);
6524GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params);
6525GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, void *string);
6526GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
6527GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params);
6528GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
6529GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
6530GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target);
6531GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
6532GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
6533GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
6534GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
6535GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
6536GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint texture, GLenum target);
6537GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target);
6538GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode);
6539GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs);
6540GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode);
6541GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
6542GLAPI void APIENTRY glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
6543GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
6544GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
6545GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
6546GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer);
6547GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer);
6548GLAPI void APIENTRY glVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
6549GLAPI void APIENTRY glVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
6550GLAPI void APIENTRY glVertexArrayEdgeFlagOffsetEXT (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
6551GLAPI void APIENTRY glVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
6552GLAPI void APIENTRY glVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
6553GLAPI void APIENTRY glVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
6554GLAPI void APIENTRY glVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
6555GLAPI void APIENTRY glVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
6556GLAPI void APIENTRY glVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
6557GLAPI void APIENTRY glVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
6558GLAPI void APIENTRY glVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
6559GLAPI void APIENTRY glEnableVertexArrayEXT (GLuint vaobj, GLenum array);
6560GLAPI void APIENTRY glDisableVertexArrayEXT (GLuint vaobj, GLenum array);
6561GLAPI void APIENTRY glEnableVertexArrayAttribEXT (GLuint vaobj, GLuint index);
6562GLAPI void APIENTRY glDisableVertexArrayAttribEXT (GLuint vaobj, GLuint index);
6563GLAPI void APIENTRY glGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint *param);
6564GLAPI void APIENTRY glGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, void **param);
6565GLAPI void APIENTRY glGetVertexArrayIntegeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
6566GLAPI void APIENTRY glGetVertexArrayPointeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, void **param);
6567GLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
6568GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length);
6569GLAPI void APIENTRY glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
6570GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
6571GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
6572GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param);
6573GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
6574GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x);
6575GLAPI void APIENTRY glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y);
6576GLAPI void APIENTRY glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
6577GLAPI void APIENTRY glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
6578GLAPI void APIENTRY glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
6579GLAPI void APIENTRY glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
6580GLAPI void APIENTRY glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
6581GLAPI void APIENTRY glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
6582GLAPI void APIENTRY glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6583GLAPI void APIENTRY glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6584GLAPI void APIENTRY glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6585GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6586GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6587GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6588GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6589GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6590GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
6591GLAPI void APIENTRY glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
6592GLAPI void APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
6593GLAPI void APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
6594GLAPI void APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
6595GLAPI void APIENTRY glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
6596GLAPI void APIENTRY glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
6597GLAPI void APIENTRY glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
6598GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
6599GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
6600GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
6601GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
6602GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor);
6603GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
6604GLAPI void APIENTRY glTexturePageCommitmentEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
6605GLAPI void APIENTRY glVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor);
6606#endif
6607#endif /* GL_EXT_direct_state_access */
6608
6609#ifndef GL_EXT_draw_buffers2
6610#define GL_EXT_draw_buffers2 1
6611typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
6612#ifdef GL_GLEXT_PROTOTYPES
6613GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
6614#endif
6615#endif /* GL_EXT_draw_buffers2 */
6616
6617#ifndef GL_EXT_draw_instanced
6618#define GL_EXT_draw_instanced 1
6619typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
6620typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
6621#ifdef GL_GLEXT_PROTOTYPES
6622GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
6623GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
6624#endif
6625#endif /* GL_EXT_draw_instanced */
6626
6627#ifndef GL_EXT_draw_range_elements
6628#define GL_EXT_draw_range_elements 1
6629#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8
6630#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9
6631typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
6632#ifdef GL_GLEXT_PROTOTYPES
6633GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
6634#endif
6635#endif /* GL_EXT_draw_range_elements */
6636
6637#ifndef GL_EXT_fog_coord
6638#define GL_EXT_fog_coord 1
6639#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450
6640#define GL_FOG_COORDINATE_EXT 0x8451
6641#define GL_FRAGMENT_DEPTH_EXT 0x8452
6642#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453
6643#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454
6644#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
6645#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
6646#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457
6647typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
6648typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
6649typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
6650typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);
6651typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
6652#ifdef GL_GLEXT_PROTOTYPES
6653GLAPI void APIENTRY glFogCoordfEXT (GLfloat coord);
6654GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *coord);
6655GLAPI void APIENTRY glFogCoorddEXT (GLdouble coord);
6656GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *coord);
6657GLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const void *pointer);
6658#endif
6659#endif /* GL_EXT_fog_coord */
6660
6661#ifndef GL_EXT_framebuffer_blit
6662#define GL_EXT_framebuffer_blit 1
6663#define GL_READ_FRAMEBUFFER_EXT 0x8CA8
6664#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
6665#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6
6666#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA
6667typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
6668#ifdef GL_GLEXT_PROTOTYPES
6669GLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
6670#endif
6671#endif /* GL_EXT_framebuffer_blit */
6672
6673#ifndef GL_EXT_framebuffer_multisample
6674#define GL_EXT_framebuffer_multisample 1
6675#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
6676#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
6677#define GL_MAX_SAMPLES_EXT 0x8D57
6678typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
6679#ifdef GL_GLEXT_PROTOTYPES
6680GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
6681#endif
6682#endif /* GL_EXT_framebuffer_multisample */
6683
6684#ifndef GL_EXT_framebuffer_multisample_blit_scaled
6685#define GL_EXT_framebuffer_multisample_blit_scaled 1
6686#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA
6687#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB
6688#endif /* GL_EXT_framebuffer_multisample_blit_scaled */
6689
6690#ifndef GL_EXT_framebuffer_object
6691#define GL_EXT_framebuffer_object 1
6692#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
6693#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8
6694#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6
6695#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7
6696#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
6697#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
6698#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
6699#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
6700#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
6701#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5
6702#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
6703#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
6704#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
6705#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
6706#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
6707#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
6708#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD
6709#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
6710#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0
6711#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1
6712#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2
6713#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3
6714#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4
6715#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5
6716#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6
6717#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7
6718#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8
6719#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9
6720#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA
6721#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB
6722#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC
6723#define GL_COLOR_ATTACHMENT13_EXT 0x8CED
6724#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE
6725#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF
6726#define GL_DEPTH_ATTACHMENT_EXT 0x8D00
6727#define GL_STENCIL_ATTACHMENT_EXT 0x8D20
6728#define GL_FRAMEBUFFER_EXT 0x8D40
6729#define GL_RENDERBUFFER_EXT 0x8D41
6730#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42
6731#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43
6732#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
6733#define GL_STENCIL_INDEX1_EXT 0x8D46
6734#define GL_STENCIL_INDEX4_EXT 0x8D47
6735#define GL_STENCIL_INDEX8_EXT 0x8D48
6736#define GL_STENCIL_INDEX16_EXT 0x8D49
6737#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50
6738#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51
6739#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52
6740#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53
6741#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54
6742#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55
6743typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
6744typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
6745typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers);
6746typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers);
6747typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
6748typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
6749typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer);
6750typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer);
6751typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers);
6752typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers);
6753typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target);
6754typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
6755typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
6756typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
6757typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
6758typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
6759typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);
6760#ifdef GL_GLEXT_PROTOTYPES
6761GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint renderbuffer);
6762GLAPI void APIENTRY glBindRenderbufferEXT (GLenum target, GLuint renderbuffer);
6763GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei n, const GLuint *renderbuffers);
6764GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers);
6765GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
6766GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint *params);
6767GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint framebuffer);
6768GLAPI void APIENTRY glBindFramebufferEXT (GLenum target, GLuint framebuffer);
6769GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei n, const GLuint *framebuffers);
6770GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei n, GLuint *framebuffers);
6771GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum target);
6772GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
6773GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
6774GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
6775GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
6776GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum attachment, GLenum pname, GLint *params);
6777GLAPI void APIENTRY glGenerateMipmapEXT (GLenum target);
6778#endif
6779#endif /* GL_EXT_framebuffer_object */
6780
6781#ifndef GL_EXT_framebuffer_sRGB
6782#define GL_EXT_framebuffer_sRGB 1
6783#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
6784#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA
6785#endif /* GL_EXT_framebuffer_sRGB */
6786
6787#ifndef GL_EXT_geometry_shader4
6788#define GL_EXT_geometry_shader4 1
6789#define GL_GEOMETRY_SHADER_EXT 0x8DD9
6790#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA
6791#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB
6792#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC
6793#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
6794#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD
6795#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE
6796#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B
6797#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
6798#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
6799#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
6800#define GL_LINES_ADJACENCY_EXT 0x000A
6801#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B
6802#define GL_TRIANGLES_ADJACENCY_EXT 0x000C
6803#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D
6804#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
6805#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9
6806#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
6807#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
6808#define GL_PROGRAM_POINT_SIZE_EXT 0x8642
6809typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
6810#ifdef GL_GLEXT_PROTOTYPES
6811GLAPI void APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value);
6812#endif
6813#endif /* GL_EXT_geometry_shader4 */
6814
6815#ifndef GL_EXT_gpu_program_parameters
6816#define GL_EXT_gpu_program_parameters 1
6817typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
6818typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
6819#ifdef GL_GLEXT_PROTOTYPES
6820GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
6821GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
6822#endif
6823#endif /* GL_EXT_gpu_program_parameters */
6824
6825#ifndef GL_EXT_gpu_shader4
6826#define GL_EXT_gpu_shader4 1
6827#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD
6828#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0
6829#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1
6830#define GL_SAMPLER_BUFFER_EXT 0x8DC2
6831#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3
6832#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4
6833#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5
6834#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6
6835#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7
6836#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8
6837#define GL_INT_SAMPLER_1D_EXT 0x8DC9
6838#define GL_INT_SAMPLER_2D_EXT 0x8DCA
6839#define GL_INT_SAMPLER_3D_EXT 0x8DCB
6840#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC
6841#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD
6842#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE
6843#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF
6844#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
6845#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1
6846#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2
6847#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3
6848#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4
6849#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5
6850#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6
6851#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7
6852#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
6853#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904
6854#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905
6855typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params);
6856typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);
6857typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name);
6858typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0);
6859typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1);
6860typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
6861typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
6862typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
6863typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
6864typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
6865typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
6866#ifdef GL_GLEXT_PROTOTYPES
6867GLAPI void APIENTRY glGetUniformuivEXT (GLuint program, GLint location, GLuint *params);
6868GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name);
6869GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint program, const GLchar *name);
6870GLAPI void APIENTRY glUniform1uiEXT (GLint location, GLuint v0);
6871GLAPI void APIENTRY glUniform2uiEXT (GLint location, GLuint v0, GLuint v1);
6872GLAPI void APIENTRY glUniform3uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2);
6873GLAPI void APIENTRY glUniform4uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
6874GLAPI void APIENTRY glUniform1uivEXT (GLint location, GLsizei count, const GLuint *value);
6875GLAPI void APIENTRY glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value);
6876GLAPI void APIENTRY glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value);
6877GLAPI void APIENTRY glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value);
6878#endif
6879#endif /* GL_EXT_gpu_shader4 */
6880
6881#ifndef GL_EXT_histogram
6882#define GL_EXT_histogram 1
6883#define GL_HISTOGRAM_EXT 0x8024
6884#define GL_PROXY_HISTOGRAM_EXT 0x8025
6885#define GL_HISTOGRAM_WIDTH_EXT 0x8026
6886#define GL_HISTOGRAM_FORMAT_EXT 0x8027
6887#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028
6888#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029
6889#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A
6890#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B
6891#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C
6892#define GL_HISTOGRAM_SINK_EXT 0x802D
6893#define GL_MINMAX_EXT 0x802E
6894#define GL_MINMAX_FORMAT_EXT 0x802F
6895#define GL_MINMAX_SINK_EXT 0x8030
6896#define GL_TABLE_TOO_LARGE_EXT 0x8031
6897typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
6898typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
6899typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
6900typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
6901typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
6902typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
6903typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
6904typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);
6905typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);
6906typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target);
6907#ifdef GL_GLEXT_PROTOTYPES
6908GLAPI void APIENTRY glGetHistogramEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
6909GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
6910GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum target, GLenum pname, GLint *params);
6911GLAPI void APIENTRY glGetMinmaxEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
6912GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
6913GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum target, GLenum pname, GLint *params);
6914GLAPI void APIENTRY glHistogramEXT (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
6915GLAPI void APIENTRY glMinmaxEXT (GLenum target, GLenum internalformat, GLboolean sink);
6916GLAPI void APIENTRY glResetHistogramEXT (GLenum target);
6917GLAPI void APIENTRY glResetMinmaxEXT (GLenum target);
6918#endif
6919#endif /* GL_EXT_histogram */
6920
6921#ifndef GL_EXT_index_array_formats
6922#define GL_EXT_index_array_formats 1
6923#define GL_IUI_V2F_EXT 0x81AD
6924#define GL_IUI_V3F_EXT 0x81AE
6925#define GL_IUI_N3F_V2F_EXT 0x81AF
6926#define GL_IUI_N3F_V3F_EXT 0x81B0
6927#define GL_T2F_IUI_V2F_EXT 0x81B1
6928#define GL_T2F_IUI_V3F_EXT 0x81B2
6929#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3
6930#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4
6931#endif /* GL_EXT_index_array_formats */
6932
6933#ifndef GL_EXT_index_func
6934#define GL_EXT_index_func 1
6935#define GL_INDEX_TEST_EXT 0x81B5
6936#define GL_INDEX_TEST_FUNC_EXT 0x81B6
6937#define GL_INDEX_TEST_REF_EXT 0x81B7
6938typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
6939#ifdef GL_GLEXT_PROTOTYPES
6940GLAPI void APIENTRY glIndexFuncEXT (GLenum func, GLclampf ref);
6941#endif
6942#endif /* GL_EXT_index_func */
6943
6944#ifndef GL_EXT_index_material
6945#define GL_EXT_index_material 1
6946#define GL_INDEX_MATERIAL_EXT 0x81B8
6947#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9
6948#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA
6949typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
6950#ifdef GL_GLEXT_PROTOTYPES
6951GLAPI void APIENTRY glIndexMaterialEXT (GLenum face, GLenum mode);
6952#endif
6953#endif /* GL_EXT_index_material */
6954
6955#ifndef GL_EXT_index_texture
6956#define GL_EXT_index_texture 1
6957#endif /* GL_EXT_index_texture */
6958
6959#ifndef GL_EXT_light_texture
6960#define GL_EXT_light_texture 1
6961#define GL_FRAGMENT_MATERIAL_EXT 0x8349
6962#define GL_FRAGMENT_NORMAL_EXT 0x834A
6963#define GL_FRAGMENT_COLOR_EXT 0x834C
6964#define GL_ATTENUATION_EXT 0x834D
6965#define GL_SHADOW_ATTENUATION_EXT 0x834E
6966#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F
6967#define GL_TEXTURE_LIGHT_EXT 0x8350
6968#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351
6969#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
6970typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
6971typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
6972typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
6973#ifdef GL_GLEXT_PROTOTYPES
6974GLAPI void APIENTRY glApplyTextureEXT (GLenum mode);
6975GLAPI void APIENTRY glTextureLightEXT (GLenum pname);
6976GLAPI void APIENTRY glTextureMaterialEXT (GLenum face, GLenum mode);
6977#endif
6978#endif /* GL_EXT_light_texture */
6979
6980#ifndef GL_EXT_misc_attribute
6981#define GL_EXT_misc_attribute 1
6982#endif /* GL_EXT_misc_attribute */
6983
6984#ifndef GL_EXT_multi_draw_arrays
6985#define GL_EXT_multi_draw_arrays 1
6986typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
6987typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);
6988#ifdef GL_GLEXT_PROTOTYPES
6989GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
6990GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);
6991#endif
6992#endif /* GL_EXT_multi_draw_arrays */
6993
6994#ifndef GL_EXT_multisample
6995#define GL_EXT_multisample 1
6996#define GL_MULTISAMPLE_EXT 0x809D
6997#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E
6998#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
6999#define GL_SAMPLE_MASK_EXT 0x80A0
7000#define GL_1PASS_EXT 0x80A1
7001#define GL_2PASS_0_EXT 0x80A2
7002#define GL_2PASS_1_EXT 0x80A3
7003#define GL_4PASS_0_EXT 0x80A4
7004#define GL_4PASS_1_EXT 0x80A5
7005#define GL_4PASS_2_EXT 0x80A6
7006#define GL_4PASS_3_EXT 0x80A7
7007#define GL_SAMPLE_BUFFERS_EXT 0x80A8
7008#define GL_SAMPLES_EXT 0x80A9
7009#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA
7010#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB
7011#define GL_SAMPLE_PATTERN_EXT 0x80AC
7012#define GL_MULTISAMPLE_BIT_EXT 0x20000000
7013typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
7014typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
7015#ifdef GL_GLEXT_PROTOTYPES
7016GLAPI void APIENTRY glSampleMaskEXT (GLclampf value, GLboolean invert);
7017GLAPI void APIENTRY glSamplePatternEXT (GLenum pattern);
7018#endif
7019#endif /* GL_EXT_multisample */
7020
7021#ifndef GL_EXT_packed_depth_stencil
7022#define GL_EXT_packed_depth_stencil 1
7023#define GL_DEPTH_STENCIL_EXT 0x84F9
7024#define GL_UNSIGNED_INT_24_8_EXT 0x84FA
7025#define GL_DEPTH24_STENCIL8_EXT 0x88F0
7026#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1
7027#endif /* GL_EXT_packed_depth_stencil */
7028
7029#ifndef GL_EXT_packed_float
7030#define GL_EXT_packed_float 1
7031#define GL_R11F_G11F_B10F_EXT 0x8C3A
7032#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B
7033#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C
7034#endif /* GL_EXT_packed_float */
7035
7036#ifndef GL_EXT_packed_pixels
7037#define GL_EXT_packed_pixels 1
7038#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032
7039#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033
7040#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034
7041#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035
7042#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036
7043#endif /* GL_EXT_packed_pixels */
7044
7045#ifndef GL_EXT_paletted_texture
7046#define GL_EXT_paletted_texture 1
7047#define GL_COLOR_INDEX1_EXT 0x80E2
7048#define GL_COLOR_INDEX2_EXT 0x80E3
7049#define GL_COLOR_INDEX4_EXT 0x80E4
7050#define GL_COLOR_INDEX8_EXT 0x80E5
7051#define GL_COLOR_INDEX12_EXT 0x80E6
7052#define GL_COLOR_INDEX16_EXT 0x80E7
7053#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
7054typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table);
7055typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void *data);
7056typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
7057typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
7058#ifdef GL_GLEXT_PROTOTYPES
7059GLAPI void APIENTRY glColorTableEXT (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table);
7060GLAPI void APIENTRY glGetColorTableEXT (GLenum target, GLenum format, GLenum type, void *data);
7061GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params);
7062GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
7063#endif
7064#endif /* GL_EXT_paletted_texture */
7065
7066#ifndef GL_EXT_pixel_buffer_object
7067#define GL_EXT_pixel_buffer_object 1
7068#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB
7069#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC
7070#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED
7071#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF
7072#endif /* GL_EXT_pixel_buffer_object */
7073
7074#ifndef GL_EXT_pixel_transform
7075#define GL_EXT_pixel_transform 1
7076#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330
7077#define GL_PIXEL_MAG_FILTER_EXT 0x8331
7078#define GL_PIXEL_MIN_FILTER_EXT 0x8332
7079#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333
7080#define GL_CUBIC_EXT 0x8334
7081#define GL_AVERAGE_EXT 0x8335
7082#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
7083#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
7084#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338
7085typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
7086typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
7087typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
7088typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
7089typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
7090typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
7091#ifdef GL_GLEXT_PROTOTYPES
7092GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum target, GLenum pname, GLint param);
7093GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum target, GLenum pname, GLfloat param);
7094GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint *params);
7095GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
7096GLAPI void APIENTRY glGetPixelTransformParameterivEXT (GLenum target, GLenum pname, GLint *params);
7097GLAPI void APIENTRY glGetPixelTransformParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
7098#endif
7099#endif /* GL_EXT_pixel_transform */
7100
7101#ifndef GL_EXT_pixel_transform_color_table
7102#define GL_EXT_pixel_transform_color_table 1
7103#endif /* GL_EXT_pixel_transform_color_table */
7104
7105#ifndef GL_EXT_point_parameters
7106#define GL_EXT_point_parameters 1
7107#define GL_POINT_SIZE_MIN_EXT 0x8126
7108#define GL_POINT_SIZE_MAX_EXT 0x8127
7109#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128
7110#define GL_DISTANCE_ATTENUATION_EXT 0x8129
7111typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
7112typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
7113#ifdef GL_GLEXT_PROTOTYPES
7114GLAPI void APIENTRY glPointParameterfEXT (GLenum pname, GLfloat param);
7115GLAPI void APIENTRY glPointParameterfvEXT (GLenum pname, const GLfloat *params);
7116#endif
7117#endif /* GL_EXT_point_parameters */
7118
7119#ifndef GL_EXT_polygon_offset
7120#define GL_EXT_polygon_offset 1
7121#define GL_POLYGON_OFFSET_EXT 0x8037
7122#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038
7123#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039
7124typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
7125#ifdef GL_GLEXT_PROTOTYPES
7126GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat factor, GLfloat bias);
7127#endif
7128#endif /* GL_EXT_polygon_offset */
7129
7130#ifndef GL_EXT_provoking_vertex
7131#define GL_EXT_provoking_vertex 1
7132#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C
7133#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
7134#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
7135#define GL_PROVOKING_VERTEX_EXT 0x8E4F
7136typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode);
7137#ifdef GL_GLEXT_PROTOTYPES
7138GLAPI void APIENTRY glProvokingVertexEXT (GLenum mode);
7139#endif
7140#endif /* GL_EXT_provoking_vertex */
7141
7142#ifndef GL_EXT_rescale_normal
7143#define GL_EXT_rescale_normal 1
7144#define GL_RESCALE_NORMAL_EXT 0x803A
7145#endif /* GL_EXT_rescale_normal */
7146
7147#ifndef GL_EXT_secondary_color
7148#define GL_EXT_secondary_color 1
7149#define GL_COLOR_SUM_EXT 0x8458
7150#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459
7151#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
7152#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
7153#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
7154#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
7155#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E
7156typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
7157typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
7158typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
7159typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);
7160typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
7161typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
7162typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
7163typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);
7164typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
7165typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);
7166typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
7167typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);
7168typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
7169typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);
7170typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
7171typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);
7172typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
7173#ifdef GL_GLEXT_PROTOTYPES
7174GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue);
7175GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *v);
7176GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue);
7177GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *v);
7178GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue);
7179GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *v);
7180GLAPI void APIENTRY glSecondaryColor3iEXT (GLint red, GLint green, GLint blue);
7181GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *v);
7182GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue);
7183GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *v);
7184GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue);
7185GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *v);
7186GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue);
7187GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *v);
7188GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue);
7189GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *v);
7190GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer);
7191#endif
7192#endif /* GL_EXT_secondary_color */
7193
7194#ifndef GL_EXT_separate_shader_objects
7195#define GL_EXT_separate_shader_objects 1
7196#define GL_ACTIVE_PROGRAM_EXT 0x8B8D
7197typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program);
7198typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program);
7199typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar *string);
7200#ifdef GL_GLEXT_PROTOTYPES
7201GLAPI void APIENTRY glUseShaderProgramEXT (GLenum type, GLuint program);
7202GLAPI void APIENTRY glActiveProgramEXT (GLuint program);
7203GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *string);
7204#endif
7205#endif /* GL_EXT_separate_shader_objects */
7206
7207#ifndef GL_EXT_separate_specular_color
7208#define GL_EXT_separate_specular_color 1
7209#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8
7210#define GL_SINGLE_COLOR_EXT 0x81F9
7211#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA
7212#endif /* GL_EXT_separate_specular_color */
7213
7214#ifndef GL_EXT_shader_image_load_formatted
7215#define GL_EXT_shader_image_load_formatted 1
7216#endif /* GL_EXT_shader_image_load_formatted */
7217
7218#ifndef GL_EXT_shader_image_load_store
7219#define GL_EXT_shader_image_load_store 1
7220#define GL_MAX_IMAGE_UNITS_EXT 0x8F38
7221#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39
7222#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A
7223#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B
7224#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C
7225#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D
7226#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E
7227#define GL_IMAGE_1D_EXT 0x904C
7228#define GL_IMAGE_2D_EXT 0x904D
7229#define GL_IMAGE_3D_EXT 0x904E
7230#define GL_IMAGE_2D_RECT_EXT 0x904F
7231#define GL_IMAGE_CUBE_EXT 0x9050
7232#define GL_IMAGE_BUFFER_EXT 0x9051
7233#define GL_IMAGE_1D_ARRAY_EXT 0x9052
7234#define GL_IMAGE_2D_ARRAY_EXT 0x9053
7235#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054
7236#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055
7237#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056
7238#define GL_INT_IMAGE_1D_EXT 0x9057
7239#define GL_INT_IMAGE_2D_EXT 0x9058
7240#define GL_INT_IMAGE_3D_EXT 0x9059
7241#define GL_INT_IMAGE_2D_RECT_EXT 0x905A
7242#define GL_INT_IMAGE_CUBE_EXT 0x905B
7243#define GL_INT_IMAGE_BUFFER_EXT 0x905C
7244#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D
7245#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E
7246#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F
7247#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060
7248#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061
7249#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062
7250#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063
7251#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064
7252#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065
7253#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066
7254#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067
7255#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068
7256#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069
7257#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
7258#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B
7259#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C
7260#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D
7261#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E
7262#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001
7263#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002
7264#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004
7265#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008
7266#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020
7267#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040
7268#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080
7269#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100
7270#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200
7271#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400
7272#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800
7273#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000
7274#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF
7275typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
7276typedef void (APIENTRYP PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers);
7277#ifdef GL_GLEXT_PROTOTYPES
7278GLAPI void APIENTRY glBindImageTextureEXT (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
7279GLAPI void APIENTRY glMemoryBarrierEXT (GLbitfield barriers);
7280#endif
7281#endif /* GL_EXT_shader_image_load_store */
7282
7283#ifndef GL_EXT_shader_integer_mix
7284#define GL_EXT_shader_integer_mix 1
7285#endif /* GL_EXT_shader_integer_mix */
7286
7287#ifndef GL_EXT_shadow_funcs
7288#define GL_EXT_shadow_funcs 1
7289#endif /* GL_EXT_shadow_funcs */
7290
7291#ifndef GL_EXT_shared_texture_palette
7292#define GL_EXT_shared_texture_palette 1
7293#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB
7294#endif /* GL_EXT_shared_texture_palette */
7295
7296#ifndef GL_EXT_stencil_clear_tag
7297#define GL_EXT_stencil_clear_tag 1
7298#define GL_STENCIL_TAG_BITS_EXT 0x88F2
7299#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3
7300typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag);
7301#ifdef GL_GLEXT_PROTOTYPES
7302GLAPI void APIENTRY glStencilClearTagEXT (GLsizei stencilTagBits, GLuint stencilClearTag);
7303#endif
7304#endif /* GL_EXT_stencil_clear_tag */
7305
7306#ifndef GL_EXT_stencil_two_side
7307#define GL_EXT_stencil_two_side 1
7308#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910
7309#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911
7310typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
7311#ifdef GL_GLEXT_PROTOTYPES
7312GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum face);
7313#endif
7314#endif /* GL_EXT_stencil_two_side */
7315
7316#ifndef GL_EXT_stencil_wrap
7317#define GL_EXT_stencil_wrap 1
7318#define GL_INCR_WRAP_EXT 0x8507
7319#define GL_DECR_WRAP_EXT 0x8508
7320#endif /* GL_EXT_stencil_wrap */
7321
7322#ifndef GL_EXT_subtexture
7323#define GL_EXT_subtexture 1
7324typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
7325typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
7326#ifdef GL_GLEXT_PROTOTYPES
7327GLAPI void APIENTRY glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
7328GLAPI void APIENTRY glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
7329#endif
7330#endif /* GL_EXT_subtexture */
7331
7332#ifndef GL_EXT_texture
7333#define GL_EXT_texture 1
7334#define GL_ALPHA4_EXT 0x803B
7335#define GL_ALPHA8_EXT 0x803C
7336#define GL_ALPHA12_EXT 0x803D
7337#define GL_ALPHA16_EXT 0x803E
7338#define GL_LUMINANCE4_EXT 0x803F
7339#define GL_LUMINANCE8_EXT 0x8040
7340#define GL_LUMINANCE12_EXT 0x8041
7341#define GL_LUMINANCE16_EXT 0x8042
7342#define GL_LUMINANCE4_ALPHA4_EXT 0x8043
7343#define GL_LUMINANCE6_ALPHA2_EXT 0x8044
7344#define GL_LUMINANCE8_ALPHA8_EXT 0x8045
7345#define GL_LUMINANCE12_ALPHA4_EXT 0x8046
7346#define GL_LUMINANCE12_ALPHA12_EXT 0x8047
7347#define GL_LUMINANCE16_ALPHA16_EXT 0x8048
7348#define GL_INTENSITY_EXT 0x8049
7349#define GL_INTENSITY4_EXT 0x804A
7350#define GL_INTENSITY8_EXT 0x804B
7351#define GL_INTENSITY12_EXT 0x804C
7352#define GL_INTENSITY16_EXT 0x804D
7353#define GL_RGB2_EXT 0x804E
7354#define GL_RGB4_EXT 0x804F
7355#define GL_RGB5_EXT 0x8050
7356#define GL_RGB8_EXT 0x8051
7357#define GL_RGB10_EXT 0x8052
7358#define GL_RGB12_EXT 0x8053
7359#define GL_RGB16_EXT 0x8054
7360#define GL_RGBA2_EXT 0x8055
7361#define GL_RGBA4_EXT 0x8056
7362#define GL_RGB5_A1_EXT 0x8057
7363#define GL_RGBA8_EXT 0x8058
7364#define GL_RGB10_A2_EXT 0x8059
7365#define GL_RGBA12_EXT 0x805A
7366#define GL_RGBA16_EXT 0x805B
7367#define GL_TEXTURE_RED_SIZE_EXT 0x805C
7368#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D
7369#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E
7370#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F
7371#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060
7372#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061
7373#define GL_REPLACE_EXT 0x8062
7374#define GL_PROXY_TEXTURE_1D_EXT 0x8063
7375#define GL_PROXY_TEXTURE_2D_EXT 0x8064
7376#define GL_TEXTURE_TOO_LARGE_EXT 0x8065
7377#endif /* GL_EXT_texture */
7378
7379#ifndef GL_EXT_texture3D
7380#define GL_EXT_texture3D 1
7381#define GL_PACK_SKIP_IMAGES_EXT 0x806B
7382#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C
7383#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D
7384#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E
7385#define GL_TEXTURE_3D_EXT 0x806F
7386#define GL_PROXY_TEXTURE_3D_EXT 0x8070
7387#define GL_TEXTURE_DEPTH_EXT 0x8071
7388#define GL_TEXTURE_WRAP_R_EXT 0x8072
7389#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073
7390typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
7391typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
7392#ifdef GL_GLEXT_PROTOTYPES
7393GLAPI void APIENTRY glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
7394GLAPI void APIENTRY glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
7395#endif
7396#endif /* GL_EXT_texture3D */
7397
7398#ifndef GL_EXT_texture_array
7399#define GL_EXT_texture_array 1
7400#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18
7401#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19
7402#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A
7403#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B
7404#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C
7405#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D
7406#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF
7407#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
7408#endif /* GL_EXT_texture_array */
7409
7410#ifndef GL_EXT_texture_buffer_object
7411#define GL_EXT_texture_buffer_object 1
7412#define GL_TEXTURE_BUFFER_EXT 0x8C2A
7413#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
7414#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
7415#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
7416#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E
7417typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);
7418#ifdef GL_GLEXT_PROTOTYPES
7419GLAPI void APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer);
7420#endif
7421#endif /* GL_EXT_texture_buffer_object */
7422
7423#ifndef GL_EXT_texture_compression_latc
7424#define GL_EXT_texture_compression_latc 1
7425#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
7426#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
7427#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
7428#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
7429#endif /* GL_EXT_texture_compression_latc */
7430
7431#ifndef GL_EXT_texture_compression_rgtc
7432#define GL_EXT_texture_compression_rgtc 1
7433#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
7434#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
7435#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
7436#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
7437#endif /* GL_EXT_texture_compression_rgtc */
7438
7439#ifndef GL_EXT_texture_compression_s3tc
7440#define GL_EXT_texture_compression_s3tc 1
7441#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
7442#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
7443#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
7444#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
7445#endif /* GL_EXT_texture_compression_s3tc */
7446
7447#ifndef GL_EXT_texture_cube_map
7448#define GL_EXT_texture_cube_map 1
7449#define GL_NORMAL_MAP_EXT 0x8511
7450#define GL_REFLECTION_MAP_EXT 0x8512
7451#define GL_TEXTURE_CUBE_MAP_EXT 0x8513
7452#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514
7453#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
7454#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
7455#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
7456#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
7457#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
7458#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
7459#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B
7460#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C
7461#endif /* GL_EXT_texture_cube_map */
7462
7463#ifndef GL_EXT_texture_env_add
7464#define GL_EXT_texture_env_add 1
7465#endif /* GL_EXT_texture_env_add */
7466
7467#ifndef GL_EXT_texture_env_combine
7468#define GL_EXT_texture_env_combine 1
7469#define GL_COMBINE_EXT 0x8570
7470#define GL_COMBINE_RGB_EXT 0x8571
7471#define GL_COMBINE_ALPHA_EXT 0x8572
7472#define GL_RGB_SCALE_EXT 0x8573
7473#define GL_ADD_SIGNED_EXT 0x8574
7474#define GL_INTERPOLATE_EXT 0x8575
7475#define GL_CONSTANT_EXT 0x8576
7476#define GL_PRIMARY_COLOR_EXT 0x8577
7477#define GL_PREVIOUS_EXT 0x8578
7478#define GL_SOURCE0_RGB_EXT 0x8580
7479#define GL_SOURCE1_RGB_EXT 0x8581
7480#define GL_SOURCE2_RGB_EXT 0x8582
7481#define GL_SOURCE0_ALPHA_EXT 0x8588
7482#define GL_SOURCE1_ALPHA_EXT 0x8589
7483#define GL_SOURCE2_ALPHA_EXT 0x858A
7484#define GL_OPERAND0_RGB_EXT 0x8590
7485#define GL_OPERAND1_RGB_EXT 0x8591
7486#define GL_OPERAND2_RGB_EXT 0x8592
7487#define GL_OPERAND0_ALPHA_EXT 0x8598
7488#define GL_OPERAND1_ALPHA_EXT 0x8599
7489#define GL_OPERAND2_ALPHA_EXT 0x859A
7490#endif /* GL_EXT_texture_env_combine */
7491
7492#ifndef GL_EXT_texture_env_dot3
7493#define GL_EXT_texture_env_dot3 1
7494#define GL_DOT3_RGB_EXT 0x8740
7495#define GL_DOT3_RGBA_EXT 0x8741
7496#endif /* GL_EXT_texture_env_dot3 */
7497
7498#ifndef GL_EXT_texture_filter_anisotropic
7499#define GL_EXT_texture_filter_anisotropic 1
7500#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
7501#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
7502#endif /* GL_EXT_texture_filter_anisotropic */
7503
7504#ifndef GL_EXT_texture_integer
7505#define GL_EXT_texture_integer 1
7506#define GL_RGBA32UI_EXT 0x8D70
7507#define GL_RGB32UI_EXT 0x8D71
7508#define GL_ALPHA32UI_EXT 0x8D72
7509#define GL_INTENSITY32UI_EXT 0x8D73
7510#define GL_LUMINANCE32UI_EXT 0x8D74
7511#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75
7512#define GL_RGBA16UI_EXT 0x8D76
7513#define GL_RGB16UI_EXT 0x8D77
7514#define GL_ALPHA16UI_EXT 0x8D78
7515#define GL_INTENSITY16UI_EXT 0x8D79
7516#define GL_LUMINANCE16UI_EXT 0x8D7A
7517#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B
7518#define GL_RGBA8UI_EXT 0x8D7C
7519#define GL_RGB8UI_EXT 0x8D7D
7520#define GL_ALPHA8UI_EXT 0x8D7E
7521#define GL_INTENSITY8UI_EXT 0x8D7F
7522#define GL_LUMINANCE8UI_EXT 0x8D80
7523#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81
7524#define GL_RGBA32I_EXT 0x8D82
7525#define GL_RGB32I_EXT 0x8D83
7526#define GL_ALPHA32I_EXT 0x8D84
7527#define GL_INTENSITY32I_EXT 0x8D85
7528#define GL_LUMINANCE32I_EXT 0x8D86
7529#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87
7530#define GL_RGBA16I_EXT 0x8D88
7531#define GL_RGB16I_EXT 0x8D89
7532#define GL_ALPHA16I_EXT 0x8D8A
7533#define GL_INTENSITY16I_EXT 0x8D8B
7534#define GL_LUMINANCE16I_EXT 0x8D8C
7535#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D
7536#define GL_RGBA8I_EXT 0x8D8E
7537#define GL_RGB8I_EXT 0x8D8F
7538#define GL_ALPHA8I_EXT 0x8D90
7539#define GL_INTENSITY8I_EXT 0x8D91
7540#define GL_LUMINANCE8I_EXT 0x8D92
7541#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93
7542#define GL_RED_INTEGER_EXT 0x8D94
7543#define GL_GREEN_INTEGER_EXT 0x8D95
7544#define GL_BLUE_INTEGER_EXT 0x8D96
7545#define GL_ALPHA_INTEGER_EXT 0x8D97
7546#define GL_RGB_INTEGER_EXT 0x8D98
7547#define GL_RGBA_INTEGER_EXT 0x8D99
7548#define GL_BGR_INTEGER_EXT 0x8D9A
7549#define GL_BGRA_INTEGER_EXT 0x8D9B
7550#define GL_LUMINANCE_INTEGER_EXT 0x8D9C
7551#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D
7552#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E
7553typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
7554typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);
7555typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
7556typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params);
7557typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha);
7558typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
7559#ifdef GL_GLEXT_PROTOTYPES
7560GLAPI void APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params);
7561GLAPI void APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params);
7562GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params);
7563GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params);
7564GLAPI void APIENTRY glClearColorIiEXT (GLint red, GLint green, GLint blue, GLint alpha);
7565GLAPI void APIENTRY glClearColorIuiEXT (GLuint red, GLuint green, GLuint blue, GLuint alpha);
7566#endif
7567#endif /* GL_EXT_texture_integer */
7568
7569#ifndef GL_EXT_texture_lod_bias
7570#define GL_EXT_texture_lod_bias 1
7571#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD
7572#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500
7573#define GL_TEXTURE_LOD_BIAS_EXT 0x8501
7574#endif /* GL_EXT_texture_lod_bias */
7575
7576#ifndef GL_EXT_texture_mirror_clamp
7577#define GL_EXT_texture_mirror_clamp 1
7578#define GL_MIRROR_CLAMP_EXT 0x8742
7579#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
7580#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912
7581#endif /* GL_EXT_texture_mirror_clamp */
7582
7583#ifndef GL_EXT_texture_object
7584#define GL_EXT_texture_object 1
7585#define GL_TEXTURE_PRIORITY_EXT 0x8066
7586#define GL_TEXTURE_RESIDENT_EXT 0x8067
7587#define GL_TEXTURE_1D_BINDING_EXT 0x8068
7588#define GL_TEXTURE_2D_BINDING_EXT 0x8069
7589#define GL_TEXTURE_3D_BINDING_EXT 0x806A
7590typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
7591typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
7592typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures);
7593typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures);
7594typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture);
7595typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);
7596#ifdef GL_GLEXT_PROTOTYPES
7597GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei n, const GLuint *textures, GLboolean *residences);
7598GLAPI void APIENTRY glBindTextureEXT (GLenum target, GLuint texture);
7599GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei n, const GLuint *textures);
7600GLAPI void APIENTRY glGenTexturesEXT (GLsizei n, GLuint *textures);
7601GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint texture);
7602GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei n, const GLuint *textures, const GLclampf *priorities);
7603#endif
7604#endif /* GL_EXT_texture_object */
7605
7606#ifndef GL_EXT_texture_perturb_normal
7607#define GL_EXT_texture_perturb_normal 1
7608#define GL_PERTURB_EXT 0x85AE
7609#define GL_TEXTURE_NORMAL_EXT 0x85AF
7610typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
7611#ifdef GL_GLEXT_PROTOTYPES
7612GLAPI void APIENTRY glTextureNormalEXT (GLenum mode);
7613#endif
7614#endif /* GL_EXT_texture_perturb_normal */
7615
7616#ifndef GL_EXT_texture_sRGB
7617#define GL_EXT_texture_sRGB 1
7618#define GL_SRGB_EXT 0x8C40
7619#define GL_SRGB8_EXT 0x8C41
7620#define GL_SRGB_ALPHA_EXT 0x8C42
7621#define GL_SRGB8_ALPHA8_EXT 0x8C43
7622#define GL_SLUMINANCE_ALPHA_EXT 0x8C44
7623#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45
7624#define GL_SLUMINANCE_EXT 0x8C46
7625#define GL_SLUMINANCE8_EXT 0x8C47
7626#define GL_COMPRESSED_SRGB_EXT 0x8C48
7627#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49
7628#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A
7629#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B
7630#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
7631#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
7632#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
7633#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
7634#endif /* GL_EXT_texture_sRGB */
7635
7636#ifndef GL_EXT_texture_sRGB_decode
7637#define GL_EXT_texture_sRGB_decode 1
7638#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48
7639#define GL_DECODE_EXT 0x8A49
7640#define GL_SKIP_DECODE_EXT 0x8A4A
7641#endif /* GL_EXT_texture_sRGB_decode */
7642
7643#ifndef GL_EXT_texture_shared_exponent
7644#define GL_EXT_texture_shared_exponent 1
7645#define GL_RGB9_E5_EXT 0x8C3D
7646#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E
7647#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F
7648#endif /* GL_EXT_texture_shared_exponent */
7649
7650#ifndef GL_EXT_texture_snorm
7651#define GL_EXT_texture_snorm 1
7652#define GL_ALPHA_SNORM 0x9010
7653#define GL_LUMINANCE_SNORM 0x9011
7654#define GL_LUMINANCE_ALPHA_SNORM 0x9012
7655#define GL_INTENSITY_SNORM 0x9013
7656#define GL_ALPHA8_SNORM 0x9014
7657#define GL_LUMINANCE8_SNORM 0x9015
7658#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016
7659#define GL_INTENSITY8_SNORM 0x9017
7660#define GL_ALPHA16_SNORM 0x9018
7661#define GL_LUMINANCE16_SNORM 0x9019
7662#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A
7663#define GL_INTENSITY16_SNORM 0x901B
7664#define GL_RED_SNORM 0x8F90
7665#define GL_RG_SNORM 0x8F91
7666#define GL_RGB_SNORM 0x8F92
7667#define GL_RGBA_SNORM 0x8F93
7668#endif /* GL_EXT_texture_snorm */
7669
7670#ifndef GL_EXT_texture_swizzle
7671#define GL_EXT_texture_swizzle 1
7672#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42
7673#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43
7674#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44
7675#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45
7676#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46
7677#endif /* GL_EXT_texture_swizzle */
7678
7679#ifndef GL_EXT_timer_query
7680#define GL_EXT_timer_query 1
7681#define GL_TIME_ELAPSED_EXT 0x88BF
7682typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params);
7683typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params);
7684#ifdef GL_GLEXT_PROTOTYPES
7685GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params);
7686GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params);
7687#endif
7688#endif /* GL_EXT_timer_query */
7689
7690#ifndef GL_EXT_transform_feedback
7691#define GL_EXT_transform_feedback 1
7692#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E
7693#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84
7694#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85
7695#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F
7696#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C
7697#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D
7698#define GL_PRIMITIVES_GENERATED_EXT 0x8C87
7699#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88
7700#define GL_RASTERIZER_DISCARD_EXT 0x8C89
7701#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A
7702#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B
7703#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80
7704#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83
7705#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F
7706#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76
7707typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode);
7708typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void);
7709typedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
7710typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
7711typedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer);
7712typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
7713typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
7714#ifdef GL_GLEXT_PROTOTYPES
7715GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum primitiveMode);
7716GLAPI void APIENTRY glEndTransformFeedbackEXT (void);
7717GLAPI void APIENTRY glBindBufferRangeEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
7718GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
7719GLAPI void APIENTRY glBindBufferBaseEXT (GLenum target, GLuint index, GLuint buffer);
7720GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
7721GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
7722#endif
7723#endif /* GL_EXT_transform_feedback */
7724
7725#ifndef GL_EXT_vertex_array
7726#define GL_EXT_vertex_array 1
7727#define GL_VERTEX_ARRAY_EXT 0x8074
7728#define GL_NORMAL_ARRAY_EXT 0x8075
7729#define GL_COLOR_ARRAY_EXT 0x8076
7730#define GL_INDEX_ARRAY_EXT 0x8077
7731#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078
7732#define GL_EDGE_FLAG_ARRAY_EXT 0x8079
7733#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A
7734#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B
7735#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C
7736#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D
7737#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E
7738#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F
7739#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080
7740#define GL_COLOR_ARRAY_SIZE_EXT 0x8081
7741#define GL_COLOR_ARRAY_TYPE_EXT 0x8082
7742#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083
7743#define GL_COLOR_ARRAY_COUNT_EXT 0x8084
7744#define GL_INDEX_ARRAY_TYPE_EXT 0x8085
7745#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086
7746#define GL_INDEX_ARRAY_COUNT_EXT 0x8087
7747#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088
7748#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089
7749#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
7750#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B
7751#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C
7752#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D
7753#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E
7754#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F
7755#define GL_COLOR_ARRAY_POINTER_EXT 0x8090
7756#define GL_INDEX_ARRAY_POINTER_EXT 0x8091
7757#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
7758#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093
7759typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i);
7760typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
7761typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
7762typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);
7763typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, void **params);
7764typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
7765typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
7766typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
7767typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
7768#ifdef GL_GLEXT_PROTOTYPES
7769GLAPI void APIENTRY glArrayElementEXT (GLint i);
7770GLAPI void APIENTRY glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
7771GLAPI void APIENTRY glDrawArraysEXT (GLenum mode, GLint first, GLsizei count);
7772GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer);
7773GLAPI void APIENTRY glGetPointervEXT (GLenum pname, void **params);
7774GLAPI void APIENTRY glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
7775GLAPI void APIENTRY glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
7776GLAPI void APIENTRY glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
7777GLAPI void APIENTRY glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
7778#endif
7779#endif /* GL_EXT_vertex_array */
7780
7781#ifndef GL_EXT_vertex_array_bgra
7782#define GL_EXT_vertex_array_bgra 1
7783#endif /* GL_EXT_vertex_array_bgra */
7784
7785#ifndef GL_EXT_vertex_attrib_64bit
7786#define GL_EXT_vertex_attrib_64bit 1
7787#define GL_DOUBLE_VEC2_EXT 0x8FFC
7788#define GL_DOUBLE_VEC3_EXT 0x8FFD
7789#define GL_DOUBLE_VEC4_EXT 0x8FFE
7790#define GL_DOUBLE_MAT2_EXT 0x8F46
7791#define GL_DOUBLE_MAT3_EXT 0x8F47
7792#define GL_DOUBLE_MAT4_EXT 0x8F48
7793#define GL_DOUBLE_MAT2x3_EXT 0x8F49
7794#define GL_DOUBLE_MAT2x4_EXT 0x8F4A
7795#define GL_DOUBLE_MAT3x2_EXT 0x8F4B
7796#define GL_DOUBLE_MAT3x4_EXT 0x8F4C
7797#define GL_DOUBLE_MAT4x2_EXT 0x8F4D
7798#define GL_DOUBLE_MAT4x3_EXT 0x8F4E
7799typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x);
7800typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y);
7801typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
7802typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
7803typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble *v);
7804typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble *v);
7805typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble *v);
7806typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble *v);
7807typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
7808typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble *params);
7809#ifdef GL_GLEXT_PROTOTYPES
7810GLAPI void APIENTRY glVertexAttribL1dEXT (GLuint index, GLdouble x);
7811GLAPI void APIENTRY glVertexAttribL2dEXT (GLuint index, GLdouble x, GLdouble y);
7812GLAPI void APIENTRY glVertexAttribL3dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z);
7813GLAPI void APIENTRY glVertexAttribL4dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
7814GLAPI void APIENTRY glVertexAttribL1dvEXT (GLuint index, const GLdouble *v);
7815GLAPI void APIENTRY glVertexAttribL2dvEXT (GLuint index, const GLdouble *v);
7816GLAPI void APIENTRY glVertexAttribL3dvEXT (GLuint index, const GLdouble *v);
7817GLAPI void APIENTRY glVertexAttribL4dvEXT (GLuint index, const GLdouble *v);
7818GLAPI void APIENTRY glVertexAttribLPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
7819GLAPI void APIENTRY glGetVertexAttribLdvEXT (GLuint index, GLenum pname, GLdouble *params);
7820#endif
7821#endif /* GL_EXT_vertex_attrib_64bit */
7822
7823#ifndef GL_EXT_vertex_shader
7824#define GL_EXT_vertex_shader 1
7825#define GL_VERTEX_SHADER_EXT 0x8780
7826#define GL_VERTEX_SHADER_BINDING_EXT 0x8781
7827#define GL_OP_INDEX_EXT 0x8782
7828#define GL_OP_NEGATE_EXT 0x8783
7829#define GL_OP_DOT3_EXT 0x8784
7830#define GL_OP_DOT4_EXT 0x8785
7831#define GL_OP_MUL_EXT 0x8786
7832#define GL_OP_ADD_EXT 0x8787
7833#define GL_OP_MADD_EXT 0x8788
7834#define GL_OP_FRAC_EXT 0x8789
7835#define GL_OP_MAX_EXT 0x878A
7836#define GL_OP_MIN_EXT 0x878B
7837#define GL_OP_SET_GE_EXT 0x878C
7838#define GL_OP_SET_LT_EXT 0x878D
7839#define GL_OP_CLAMP_EXT 0x878E
7840#define GL_OP_FLOOR_EXT 0x878F
7841#define GL_OP_ROUND_EXT 0x8790
7842#define GL_OP_EXP_BASE_2_EXT 0x8791
7843#define GL_OP_LOG_BASE_2_EXT 0x8792
7844#define GL_OP_POWER_EXT 0x8793
7845#define GL_OP_RECIP_EXT 0x8794
7846#define GL_OP_RECIP_SQRT_EXT 0x8795
7847#define GL_OP_SUB_EXT 0x8796
7848#define GL_OP_CROSS_PRODUCT_EXT 0x8797
7849#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798
7850#define GL_OP_MOV_EXT 0x8799
7851#define GL_OUTPUT_VERTEX_EXT 0x879A
7852#define GL_OUTPUT_COLOR0_EXT 0x879B
7853#define GL_OUTPUT_COLOR1_EXT 0x879C
7854#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D
7855#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E
7856#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F
7857#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0
7858#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1
7859#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2
7860#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3
7861#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4
7862#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5
7863#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6
7864#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7
7865#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8
7866#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9
7867#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA
7868#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB
7869#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC
7870#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD
7871#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE
7872#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF
7873#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0
7874#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1
7875#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2
7876#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3
7877#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4
7878#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5
7879#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6
7880#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7
7881#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8
7882#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9
7883#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA
7884#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB
7885#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC
7886#define GL_OUTPUT_FOG_EXT 0x87BD
7887#define GL_SCALAR_EXT 0x87BE
7888#define GL_VECTOR_EXT 0x87BF
7889#define GL_MATRIX_EXT 0x87C0
7890#define GL_VARIANT_EXT 0x87C1
7891#define GL_INVARIANT_EXT 0x87C2
7892#define GL_LOCAL_CONSTANT_EXT 0x87C3
7893#define GL_LOCAL_EXT 0x87C4
7894#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
7895#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
7896#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
7897#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
7898#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9
7899#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
7900#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
7901#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC
7902#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD
7903#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
7904#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
7905#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0
7906#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1
7907#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
7908#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3
7909#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4
7910#define GL_X_EXT 0x87D5
7911#define GL_Y_EXT 0x87D6
7912#define GL_Z_EXT 0x87D7
7913#define GL_W_EXT 0x87D8
7914#define GL_NEGATIVE_X_EXT 0x87D9
7915#define GL_NEGATIVE_Y_EXT 0x87DA
7916#define GL_NEGATIVE_Z_EXT 0x87DB
7917#define GL_NEGATIVE_W_EXT 0x87DC
7918#define GL_ZERO_EXT 0x87DD
7919#define GL_ONE_EXT 0x87DE
7920#define GL_NEGATIVE_ONE_EXT 0x87DF
7921#define GL_NORMALIZED_RANGE_EXT 0x87E0
7922#define GL_FULL_RANGE_EXT 0x87E1
7923#define GL_CURRENT_VERTEX_EXT 0x87E2
7924#define GL_MVP_MATRIX_EXT 0x87E3
7925#define GL_VARIANT_VALUE_EXT 0x87E4
7926#define GL_VARIANT_DATATYPE_EXT 0x87E5
7927#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6
7928#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7
7929#define GL_VARIANT_ARRAY_EXT 0x87E8
7930#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9
7931#define GL_INVARIANT_VALUE_EXT 0x87EA
7932#define GL_INVARIANT_DATATYPE_EXT 0x87EB
7933#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC
7934#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED
7935typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void);
7936typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void);
7937typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);
7938typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);
7939typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);
7940typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);
7941typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
7942typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
7943typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
7944typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
7945typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
7946typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
7947typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
7948typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const void *addr);
7949typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const void *addr);
7950typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr);
7951typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr);
7952typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr);
7953typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr);
7954typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr);
7955typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr);
7956typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr);
7957typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr);
7958typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const void *addr);
7959typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
7960typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
7961typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);
7962typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);
7963typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value);
7964typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);
7965typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value);
7966typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);
7967typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
7968typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
7969typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
7970typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, void **data);
7971typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
7972typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
7973typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
7974typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
7975typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
7976typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
7977#ifdef GL_GLEXT_PROTOTYPES
7978GLAPI void APIENTRY glBeginVertexShaderEXT (void);
7979GLAPI void APIENTRY glEndVertexShaderEXT (void);
7980GLAPI void APIENTRY glBindVertexShaderEXT (GLuint id);
7981GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint range);
7982GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint id);
7983GLAPI void APIENTRY glShaderOp1EXT (GLenum op, GLuint res, GLuint arg1);
7984GLAPI void APIENTRY glShaderOp2EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
7985GLAPI void APIENTRY glShaderOp3EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
7986GLAPI void APIENTRY glSwizzleEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
7987GLAPI void APIENTRY glWriteMaskEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
7988GLAPI void APIENTRY glInsertComponentEXT (GLuint res, GLuint src, GLuint num);
7989GLAPI void APIENTRY glExtractComponentEXT (GLuint res, GLuint src, GLuint num);
7990GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
7991GLAPI void APIENTRY glSetInvariantEXT (GLuint id, GLenum type, const void *addr);
7992GLAPI void APIENTRY glSetLocalConstantEXT (GLuint id, GLenum type, const void *addr);
7993GLAPI void APIENTRY glVariantbvEXT (GLuint id, const GLbyte *addr);
7994GLAPI void APIENTRY glVariantsvEXT (GLuint id, const GLshort *addr);
7995GLAPI void APIENTRY glVariantivEXT (GLuint id, const GLint *addr);
7996GLAPI void APIENTRY glVariantfvEXT (GLuint id, const GLfloat *addr);
7997GLAPI void APIENTRY glVariantdvEXT (GLuint id, const GLdouble *addr);
7998GLAPI void APIENTRY glVariantubvEXT (GLuint id, const GLubyte *addr);
7999GLAPI void APIENTRY glVariantusvEXT (GLuint id, const GLushort *addr);
8000GLAPI void APIENTRY glVariantuivEXT (GLuint id, const GLuint *addr);
8001GLAPI void APIENTRY glVariantPointerEXT (GLuint id, GLenum type, GLuint stride, const void *addr);
8002GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint id);
8003GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint id);
8004GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum light, GLenum value);
8005GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum face, GLenum value);
8006GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum unit, GLenum coord, GLenum value);
8007GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum unit, GLenum value);
8008GLAPI GLuint APIENTRY glBindParameterEXT (GLenum value);
8009GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint id, GLenum cap);
8010GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
8011GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint id, GLenum value, GLint *data);
8012GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
8013GLAPI void APIENTRY glGetVariantPointervEXT (GLuint id, GLenum value, void **data);
8014GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
8015GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint id, GLenum value, GLint *data);
8016GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
8017GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
8018GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint id, GLenum value, GLint *data);
8019GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
8020#endif
8021#endif /* GL_EXT_vertex_shader */
8022
8023#ifndef GL_EXT_vertex_weighting
8024#define GL_EXT_vertex_weighting 1
8025#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3
8026#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502
8027#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6
8028#define GL_MODELVIEW1_MATRIX_EXT 0x8506
8029#define GL_VERTEX_WEIGHTING_EXT 0x8509
8030#define GL_MODELVIEW0_EXT 0x1700
8031#define GL_MODELVIEW1_EXT 0x850A
8032#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B
8033#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C
8034#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D
8035#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E
8036#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
8037#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
8038typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
8039typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
8040typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
8041#ifdef GL_GLEXT_PROTOTYPES
8042GLAPI void APIENTRY glVertexWeightfEXT (GLfloat weight);
8043GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight);
8044GLAPI void APIENTRY glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer);
8045#endif
8046#endif /* GL_EXT_vertex_weighting */
8047
8048#ifndef GL_EXT_x11_sync_object
8049#define GL_EXT_x11_sync_object 1
8050#define GL_SYNC_X11_FENCE_EXT 0x90E1
8051typedef GLsync (APIENTRYP PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
8052#ifdef GL_GLEXT_PROTOTYPES
8053GLAPI GLsync APIENTRY glImportSyncEXT (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
8054#endif
8055#endif /* GL_EXT_x11_sync_object */
8056
8057#ifndef GL_GREMEDY_frame_terminator
8058#define GL_GREMEDY_frame_terminator 1
8059typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void);
8060#ifdef GL_GLEXT_PROTOTYPES
8061GLAPI void APIENTRY glFrameTerminatorGREMEDY (void);
8062#endif
8063#endif /* GL_GREMEDY_frame_terminator */
8064
8065#ifndef GL_GREMEDY_string_marker
8066#define GL_GREMEDY_string_marker 1
8067typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void *string);
8068#ifdef GL_GLEXT_PROTOTYPES
8069GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei len, const void *string);
8070#endif
8071#endif /* GL_GREMEDY_string_marker */
8072
8073#ifndef GL_HP_convolution_border_modes
8074#define GL_HP_convolution_border_modes 1
8075#define GL_IGNORE_BORDER_HP 0x8150
8076#define GL_CONSTANT_BORDER_HP 0x8151
8077#define GL_REPLICATE_BORDER_HP 0x8153
8078#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154
8079#endif /* GL_HP_convolution_border_modes */
8080
8081#ifndef GL_HP_image_transform
8082#define GL_HP_image_transform 1
8083#define GL_IMAGE_SCALE_X_HP 0x8155
8084#define GL_IMAGE_SCALE_Y_HP 0x8156
8085#define GL_IMAGE_TRANSLATE_X_HP 0x8157
8086#define GL_IMAGE_TRANSLATE_Y_HP 0x8158
8087#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159
8088#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A
8089#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B
8090#define GL_IMAGE_MAG_FILTER_HP 0x815C
8091#define GL_IMAGE_MIN_FILTER_HP 0x815D
8092#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E
8093#define GL_CUBIC_HP 0x815F
8094#define GL_AVERAGE_HP 0x8160
8095#define GL_IMAGE_TRANSFORM_2D_HP 0x8161
8096#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162
8097#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163
8098typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);
8099typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);
8100typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params);
8101typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params);
8102typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params);
8103typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params);
8104#ifdef GL_GLEXT_PROTOTYPES
8105GLAPI void APIENTRY glImageTransformParameteriHP (GLenum target, GLenum pname, GLint param);
8106GLAPI void APIENTRY glImageTransformParameterfHP (GLenum target, GLenum pname, GLfloat param);
8107GLAPI void APIENTRY glImageTransformParameterivHP (GLenum target, GLenum pname, const GLint *params);
8108GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat *params);
8109GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum target, GLenum pname, GLint *params);
8110GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum target, GLenum pname, GLfloat *params);
8111#endif
8112#endif /* GL_HP_image_transform */
8113
8114#ifndef GL_HP_occlusion_test
8115#define GL_HP_occlusion_test 1
8116#define GL_OCCLUSION_TEST_HP 0x8165
8117#define GL_OCCLUSION_TEST_RESULT_HP 0x8166
8118#endif /* GL_HP_occlusion_test */
8119
8120#ifndef GL_HP_texture_lighting
8121#define GL_HP_texture_lighting 1
8122#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167
8123#define GL_TEXTURE_POST_SPECULAR_HP 0x8168
8124#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169
8125#endif /* GL_HP_texture_lighting */
8126
8127#ifndef GL_IBM_cull_vertex
8128#define GL_IBM_cull_vertex 1
8129#define GL_CULL_VERTEX_IBM 103050
8130#endif /* GL_IBM_cull_vertex */
8131
8132#ifndef GL_IBM_multimode_draw_arrays
8133#define GL_IBM_multimode_draw_arrays 1
8134typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
8135typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride);
8136#ifdef GL_GLEXT_PROTOTYPES
8137GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
8138GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride);
8139#endif
8140#endif /* GL_IBM_multimode_draw_arrays */
8141
8142#ifndef GL_IBM_rasterpos_clip
8143#define GL_IBM_rasterpos_clip 1
8144#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262
8145#endif /* GL_IBM_rasterpos_clip */
8146
8147#ifndef GL_IBM_static_data
8148#define GL_IBM_static_data 1
8149#define GL_ALL_STATIC_DATA_IBM 103060
8150#define GL_STATIC_VERTEX_ARRAY_IBM 103061
8151typedef void (APIENTRYP PFNGLFLUSHSTATICDATAIBMPROC) (GLenum target);
8152#ifdef GL_GLEXT_PROTOTYPES
8153GLAPI void APIENTRY glFlushStaticDataIBM (GLenum target);
8154#endif
8155#endif /* GL_IBM_static_data */
8156
8157#ifndef GL_IBM_texture_mirrored_repeat
8158#define GL_IBM_texture_mirrored_repeat 1
8159#define GL_MIRRORED_REPEAT_IBM 0x8370
8160#endif /* GL_IBM_texture_mirrored_repeat */
8161
8162#ifndef GL_IBM_vertex_array_lists
8163#define GL_IBM_vertex_array_lists 1
8164#define GL_VERTEX_ARRAY_LIST_IBM 103070
8165#define GL_NORMAL_ARRAY_LIST_IBM 103071
8166#define GL_COLOR_ARRAY_LIST_IBM 103072
8167#define GL_INDEX_ARRAY_LIST_IBM 103073
8168#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074
8169#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075
8170#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076
8171#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
8172#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080
8173#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081
8174#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082
8175#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083
8176#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
8177#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
8178#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
8179#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
8180typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
8181typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
8182typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean **pointer, GLint ptrstride);
8183typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
8184typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
8185typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
8186typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
8187typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
8188#ifdef GL_GLEXT_PROTOTYPES
8189GLAPI void APIENTRY glColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
8190GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
8191GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint stride, const GLboolean **pointer, GLint ptrstride);
8192GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
8193GLAPI void APIENTRY glIndexPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
8194GLAPI void APIENTRY glNormalPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
8195GLAPI void APIENTRY glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
8196GLAPI void APIENTRY glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
8197#endif
8198#endif /* GL_IBM_vertex_array_lists */
8199
8200#ifndef GL_INGR_blend_func_separate
8201#define GL_INGR_blend_func_separate 1
8202typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
8203#ifdef GL_GLEXT_PROTOTYPES
8204GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
8205#endif
8206#endif /* GL_INGR_blend_func_separate */
8207
8208#ifndef GL_INGR_color_clamp
8209#define GL_INGR_color_clamp 1
8210#define GL_RED_MIN_CLAMP_INGR 0x8560
8211#define GL_GREEN_MIN_CLAMP_INGR 0x8561
8212#define GL_BLUE_MIN_CLAMP_INGR 0x8562
8213#define GL_ALPHA_MIN_CLAMP_INGR 0x8563
8214#define GL_RED_MAX_CLAMP_INGR 0x8564
8215#define GL_GREEN_MAX_CLAMP_INGR 0x8565
8216#define GL_BLUE_MAX_CLAMP_INGR 0x8566
8217#define GL_ALPHA_MAX_CLAMP_INGR 0x8567
8218#endif /* GL_INGR_color_clamp */
8219
8220#ifndef GL_INGR_interlace_read
8221#define GL_INGR_interlace_read 1
8222#define GL_INTERLACE_READ_INGR 0x8568
8223#endif /* GL_INGR_interlace_read */
8224
8225#ifndef GL_INTEL_fragment_shader_ordering
8226#define GL_INTEL_fragment_shader_ordering 1
8227#endif /* GL_INTEL_fragment_shader_ordering */
8228
8229#ifndef GL_INTEL_map_texture
8230#define GL_INTEL_map_texture 1
8231#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF
8232#define GL_LAYOUT_DEFAULT_INTEL 0
8233#define GL_LAYOUT_LINEAR_INTEL 1
8234#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2
8235typedef void (APIENTRYP PFNGLSYNCTEXTUREINTELPROC) (GLuint texture);
8236typedef void (APIENTRYP PFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level);
8237typedef void *(APIENTRYP PFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout);
8238#ifdef GL_GLEXT_PROTOTYPES
8239GLAPI void APIENTRY glSyncTextureINTEL (GLuint texture);
8240GLAPI void APIENTRY glUnmapTexture2DINTEL (GLuint texture, GLint level);
8241GLAPI void *APIENTRY glMapTexture2DINTEL (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout);
8242#endif
8243#endif /* GL_INTEL_map_texture */
8244
8245#ifndef GL_INTEL_parallel_arrays
8246#define GL_INTEL_parallel_arrays 1
8247#define GL_PARALLEL_ARRAYS_INTEL 0x83F4
8248#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
8249#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
8250#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
8251#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
8252typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);
8253typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void **pointer);
8254typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);
8255typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);
8256#ifdef GL_GLEXT_PROTOTYPES
8257GLAPI void APIENTRY glVertexPointervINTEL (GLint size, GLenum type, const void **pointer);
8258GLAPI void APIENTRY glNormalPointervINTEL (GLenum type, const void **pointer);
8259GLAPI void APIENTRY glColorPointervINTEL (GLint size, GLenum type, const void **pointer);
8260GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const void **pointer);
8261#endif
8262#endif /* GL_INTEL_parallel_arrays */
8263
8264#ifndef GL_INTEL_performance_query
8265#define GL_INTEL_performance_query 1
8266#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000
8267#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001
8268#define GL_PERFQUERY_WAIT_INTEL 0x83FB
8269#define GL_PERFQUERY_FLUSH_INTEL 0x83FA
8270#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9
8271#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0
8272#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
8273#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
8274#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
8275#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4
8276#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
8277#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
8278#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
8279#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
8280#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
8281#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
8282#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
8283#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
8284#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
8285#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
8286typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);
8287typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle);
8288typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);
8289typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);
8290typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId);
8291typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId);
8292typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
8293typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
8294typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId);
8295typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
8296#ifdef GL_GLEXT_PROTOTYPES
8297GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle);
8298GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle);
8299GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle);
8300GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle);
8301GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId);
8302GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId);
8303GLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
8304GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
8305GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId);
8306GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
8307#endif
8308#endif /* GL_INTEL_performance_query */
8309
8310#ifndef GL_MESAX_texture_stack
8311#define GL_MESAX_texture_stack 1
8312#define GL_TEXTURE_1D_STACK_MESAX 0x8759
8313#define GL_TEXTURE_2D_STACK_MESAX 0x875A
8314#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B
8315#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C
8316#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
8317#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
8318#endif /* GL_MESAX_texture_stack */
8319
8320#ifndef GL_MESA_pack_invert
8321#define GL_MESA_pack_invert 1
8322#define GL_PACK_INVERT_MESA 0x8758
8323#endif /* GL_MESA_pack_invert */
8324
8325#ifndef GL_MESA_resize_buffers
8326#define GL_MESA_resize_buffers 1
8327typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void);
8328#ifdef GL_GLEXT_PROTOTYPES
8329GLAPI void APIENTRY glResizeBuffersMESA (void);
8330#endif
8331#endif /* GL_MESA_resize_buffers */
8332
8333#ifndef GL_MESA_window_pos
8334#define GL_MESA_window_pos 1
8335typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
8336typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);
8337typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);
8338typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v);
8339typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);
8340typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v);
8341typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);
8342typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v);
8343typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);
8344typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v);
8345typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);
8346typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v);
8347typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);
8348typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v);
8349typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);
8350typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v);
8351typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
8352typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v);
8353typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
8354typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v);
8355typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);
8356typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v);
8357typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
8358typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);
8359#ifdef GL_GLEXT_PROTOTYPES
8360GLAPI void APIENTRY glWindowPos2dMESA (GLdouble x, GLdouble y);
8361GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *v);
8362GLAPI void APIENTRY glWindowPos2fMESA (GLfloat x, GLfloat y);
8363GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *v);
8364GLAPI void APIENTRY glWindowPos2iMESA (GLint x, GLint y);
8365GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *v);
8366GLAPI void APIENTRY glWindowPos2sMESA (GLshort x, GLshort y);
8367GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *v);
8368GLAPI void APIENTRY glWindowPos3dMESA (GLdouble x, GLdouble y, GLdouble z);
8369GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *v);
8370GLAPI void APIENTRY glWindowPos3fMESA (GLfloat x, GLfloat y, GLfloat z);
8371GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *v);
8372GLAPI void APIENTRY glWindowPos3iMESA (GLint x, GLint y, GLint z);
8373GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *v);
8374GLAPI void APIENTRY glWindowPos3sMESA (GLshort x, GLshort y, GLshort z);
8375GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *v);
8376GLAPI void APIENTRY glWindowPos4dMESA (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
8377GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *v);
8378GLAPI void APIENTRY glWindowPos4fMESA (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
8379GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *v);
8380GLAPI void APIENTRY glWindowPos4iMESA (GLint x, GLint y, GLint z, GLint w);
8381GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *v);
8382GLAPI void APIENTRY glWindowPos4sMESA (GLshort x, GLshort y, GLshort z, GLshort w);
8383GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *v);
8384#endif
8385#endif /* GL_MESA_window_pos */
8386
8387#ifndef GL_MESA_ycbcr_texture
8388#define GL_MESA_ycbcr_texture 1
8389#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA
8390#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB
8391#define GL_YCBCR_MESA 0x8757
8392#endif /* GL_MESA_ycbcr_texture */
8393
8394#ifndef GL_NVX_conditional_render
8395#define GL_NVX_conditional_render 1
8396typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id);
8397typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVXPROC) (void);
8398#ifdef GL_GLEXT_PROTOTYPES
8399GLAPI void APIENTRY glBeginConditionalRenderNVX (GLuint id);
8400GLAPI void APIENTRY glEndConditionalRenderNVX (void);
8401#endif
8402#endif /* GL_NVX_conditional_render */
8403
8404#ifndef GL_NVX_gpu_memory_info
8405#define GL_NVX_gpu_memory_info 1
8406#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
8407#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
8408#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
8409#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A
8410#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B
8411#endif /* GL_NVX_gpu_memory_info */
8412
8413#ifndef GL_NV_bindless_multi_draw_indirect
8414#define GL_NV_bindless_multi_draw_indirect 1
8415typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
8416typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
8417#ifdef GL_GLEXT_PROTOTYPES
8418GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
8419GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
8420#endif
8421#endif /* GL_NV_bindless_multi_draw_indirect */
8422
8423#ifndef GL_NV_bindless_texture
8424#define GL_NV_bindless_texture 1
8425typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture);
8426typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler);
8427typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
8428typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle);
8429typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
8430typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access);
8431typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle);
8432typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value);
8433typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value);
8434typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value);
8435typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
8436typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
8437typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle);
8438#ifdef GL_GLEXT_PROTOTYPES
8439GLAPI GLuint64 APIENTRY glGetTextureHandleNV (GLuint texture);
8440GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler);
8441GLAPI void APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle);
8442GLAPI void APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle);
8443GLAPI GLuint64 APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
8444GLAPI void APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access);
8445GLAPI void APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle);
8446GLAPI void APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value);
8447GLAPI void APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value);
8448GLAPI void APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value);
8449GLAPI void APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
8450GLAPI GLboolean APIENTRY glIsTextureHandleResidentNV (GLuint64 handle);
8451GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
8452#endif
8453#endif /* GL_NV_bindless_texture */
8454
8455#ifndef GL_NV_blend_equation_advanced
8456#define GL_NV_blend_equation_advanced 1
8457#define GL_BLEND_OVERLAP_NV 0x9281
8458#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280
8459#define GL_BLUE_NV 0x1905
8460#define GL_COLORBURN_NV 0x929A
8461#define GL_COLORDODGE_NV 0x9299
8462#define GL_CONJOINT_NV 0x9284
8463#define GL_CONTRAST_NV 0x92A1
8464#define GL_DARKEN_NV 0x9297
8465#define GL_DIFFERENCE_NV 0x929E
8466#define GL_DISJOINT_NV 0x9283
8467#define GL_DST_ATOP_NV 0x928F
8468#define GL_DST_IN_NV 0x928B
8469#define GL_DST_NV 0x9287
8470#define GL_DST_OUT_NV 0x928D
8471#define GL_DST_OVER_NV 0x9289
8472#define GL_EXCLUSION_NV 0x92A0
8473#define GL_GREEN_NV 0x1904
8474#define GL_HARDLIGHT_NV 0x929B
8475#define GL_HARDMIX_NV 0x92A9
8476#define GL_HSL_COLOR_NV 0x92AF
8477#define GL_HSL_HUE_NV 0x92AD
8478#define GL_HSL_LUMINOSITY_NV 0x92B0
8479#define GL_HSL_SATURATION_NV 0x92AE
8480#define GL_INVERT_OVG_NV 0x92B4
8481#define GL_INVERT_RGB_NV 0x92A3
8482#define GL_LIGHTEN_NV 0x9298
8483#define GL_LINEARBURN_NV 0x92A5
8484#define GL_LINEARDODGE_NV 0x92A4
8485#define GL_LINEARLIGHT_NV 0x92A7
8486#define GL_MINUS_CLAMPED_NV 0x92B3
8487#define GL_MINUS_NV 0x929F
8488#define GL_MULTIPLY_NV 0x9294
8489#define GL_OVERLAY_NV 0x9296
8490#define GL_PINLIGHT_NV 0x92A8
8491#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2
8492#define GL_PLUS_CLAMPED_NV 0x92B1
8493#define GL_PLUS_DARKER_NV 0x9292
8494#define GL_PLUS_NV 0x9291
8495#define GL_RED_NV 0x1903
8496#define GL_SCREEN_NV 0x9295
8497#define GL_SOFTLIGHT_NV 0x929C
8498#define GL_SRC_ATOP_NV 0x928E
8499#define GL_SRC_IN_NV 0x928A
8500#define GL_SRC_NV 0x9286
8501#define GL_SRC_OUT_NV 0x928C
8502#define GL_SRC_OVER_NV 0x9288
8503#define GL_UNCORRELATED_NV 0x9282
8504#define GL_VIVIDLIGHT_NV 0x92A6
8505#define GL_XOR_NV 0x1506
8506typedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value);
8507typedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC) (void);
8508#ifdef GL_GLEXT_PROTOTYPES
8509GLAPI void APIENTRY glBlendParameteriNV (GLenum pname, GLint value);
8510GLAPI void APIENTRY glBlendBarrierNV (void);
8511#endif
8512#endif /* GL_NV_blend_equation_advanced */
8513
8514#ifndef GL_NV_blend_equation_advanced_coherent
8515#define GL_NV_blend_equation_advanced_coherent 1
8516#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285
8517#endif /* GL_NV_blend_equation_advanced_coherent */
8518
8519#ifndef GL_NV_blend_square
8520#define GL_NV_blend_square 1
8521#endif /* GL_NV_blend_square */
8522
8523#ifndef GL_NV_compute_program5
8524#define GL_NV_compute_program5 1
8525#define GL_COMPUTE_PROGRAM_NV 0x90FB
8526#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC
8527#endif /* GL_NV_compute_program5 */
8528
8529#ifndef GL_NV_conditional_render
8530#define GL_NV_conditional_render 1
8531#define GL_QUERY_WAIT_NV 0x8E13
8532#define GL_QUERY_NO_WAIT_NV 0x8E14
8533#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15
8534#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16
8535typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);
8536typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void);
8537#ifdef GL_GLEXT_PROTOTYPES
8538GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode);
8539GLAPI void APIENTRY glEndConditionalRenderNV (void);
8540#endif
8541#endif /* GL_NV_conditional_render */
8542
8543#ifndef GL_NV_copy_depth_to_color
8544#define GL_NV_copy_depth_to_color 1
8545#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E
8546#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F
8547#endif /* GL_NV_copy_depth_to_color */
8548
8549#ifndef GL_NV_copy_image
8550#define GL_NV_copy_image 1
8551typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC) (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 width, GLsizei height, GLsizei depth);
8552#ifdef GL_GLEXT_PROTOTYPES
8553GLAPI void APIENTRY glCopyImageSubDataNV (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 width, GLsizei height, GLsizei depth);
8554#endif
8555#endif /* GL_NV_copy_image */
8556
8557#ifndef GL_NV_deep_texture3D
8558#define GL_NV_deep_texture3D 1
8559#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0
8560#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1
8561#endif /* GL_NV_deep_texture3D */
8562
8563#ifndef GL_NV_depth_buffer_float
8564#define GL_NV_depth_buffer_float 1
8565#define GL_DEPTH_COMPONENT32F_NV 0x8DAB
8566#define GL_DEPTH32F_STENCIL8_NV 0x8DAC
8567#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD
8568#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF
8569typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar);
8570typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth);
8571typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax);
8572#ifdef GL_GLEXT_PROTOTYPES
8573GLAPI void APIENTRY glDepthRangedNV (GLdouble zNear, GLdouble zFar);
8574GLAPI void APIENTRY glClearDepthdNV (GLdouble depth);
8575GLAPI void APIENTRY glDepthBoundsdNV (GLdouble zmin, GLdouble zmax);
8576#endif
8577#endif /* GL_NV_depth_buffer_float */
8578
8579#ifndef GL_NV_depth_clamp
8580#define GL_NV_depth_clamp 1
8581#define GL_DEPTH_CLAMP_NV 0x864F
8582#endif /* GL_NV_depth_clamp */
8583
8584#ifndef GL_NV_draw_texture
8585#define GL_NV_draw_texture 1
8586typedef void (APIENTRYP PFNGLDRAWTEXTURENVPROC) (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
8587#ifdef GL_GLEXT_PROTOTYPES
8588GLAPI void APIENTRY glDrawTextureNV (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
8589#endif
8590#endif /* GL_NV_draw_texture */
8591
8592#ifndef GL_NV_evaluators
8593#define GL_NV_evaluators 1
8594#define GL_EVAL_2D_NV 0x86C0
8595#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1
8596#define GL_MAP_TESSELLATION_NV 0x86C2
8597#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3
8598#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4
8599#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
8600#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6
8601#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7
8602#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8
8603#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9
8604#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA
8605#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB
8606#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC
8607#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD
8608#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE
8609#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF
8610#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0
8611#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1
8612#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2
8613#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3
8614#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4
8615#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5
8616#define GL_MAX_MAP_TESSELLATION_NV 0x86D6
8617#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7
8618typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points);
8619typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params);
8620typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params);
8621typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points);
8622typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params);
8623typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params);
8624typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
8625typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
8626typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
8627#ifdef GL_GLEXT_PROTOTYPES
8628GLAPI void APIENTRY glMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points);
8629GLAPI void APIENTRY glMapParameterivNV (GLenum target, GLenum pname, const GLint *params);
8630GLAPI void APIENTRY glMapParameterfvNV (GLenum target, GLenum pname, const GLfloat *params);
8631GLAPI void APIENTRY glGetMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points);
8632GLAPI void APIENTRY glGetMapParameterivNV (GLenum target, GLenum pname, GLint *params);
8633GLAPI void APIENTRY glGetMapParameterfvNV (GLenum target, GLenum pname, GLfloat *params);
8634GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum target, GLuint index, GLenum pname, GLint *params);
8635GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
8636GLAPI void APIENTRY glEvalMapsNV (GLenum target, GLenum mode);
8637#endif
8638#endif /* GL_NV_evaluators */
8639
8640#ifndef GL_NV_explicit_multisample
8641#define GL_NV_explicit_multisample 1
8642#define GL_SAMPLE_POSITION_NV 0x8E50
8643#define GL_SAMPLE_MASK_NV 0x8E51
8644#define GL_SAMPLE_MASK_VALUE_NV 0x8E52
8645#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53
8646#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54
8647#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55
8648#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56
8649#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57
8650#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58
8651#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59
8652typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat *val);
8653typedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask);
8654typedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer);
8655#ifdef GL_GLEXT_PROTOTYPES
8656GLAPI void APIENTRY glGetMultisamplefvNV (GLenum pname, GLuint index, GLfloat *val);
8657GLAPI void APIENTRY glSampleMaskIndexedNV (GLuint index, GLbitfield mask);
8658GLAPI void APIENTRY glTexRenderbufferNV (GLenum target, GLuint renderbuffer);
8659#endif
8660#endif /* GL_NV_explicit_multisample */
8661
8662#ifndef GL_NV_fence
8663#define GL_NV_fence 1
8664#define GL_ALL_COMPLETED_NV 0x84F2
8665#define GL_FENCE_STATUS_NV 0x84F3
8666#define GL_FENCE_CONDITION_NV 0x84F4
8667typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
8668typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
8669typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
8670typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
8671typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
8672typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
8673typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
8674#ifdef GL_GLEXT_PROTOTYPES
8675GLAPI void APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);
8676GLAPI void APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);
8677GLAPI GLboolean APIENTRY glIsFenceNV (GLuint fence);
8678GLAPI GLboolean APIENTRY glTestFenceNV (GLuint fence);
8679GLAPI void APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
8680GLAPI void APIENTRY glFinishFenceNV (GLuint fence);
8681GLAPI void APIENTRY glSetFenceNV (GLuint fence, GLenum condition);
8682#endif
8683#endif /* GL_NV_fence */
8684
8685#ifndef GL_NV_float_buffer
8686#define GL_NV_float_buffer 1
8687#define GL_FLOAT_R_NV 0x8880
8688#define GL_FLOAT_RG_NV 0x8881
8689#define GL_FLOAT_RGB_NV 0x8882
8690#define GL_FLOAT_RGBA_NV 0x8883
8691#define GL_FLOAT_R16_NV 0x8884
8692#define GL_FLOAT_R32_NV 0x8885
8693#define GL_FLOAT_RG16_NV 0x8886
8694#define GL_FLOAT_RG32_NV 0x8887
8695#define GL_FLOAT_RGB16_NV 0x8888
8696#define GL_FLOAT_RGB32_NV 0x8889
8697#define GL_FLOAT_RGBA16_NV 0x888A
8698#define GL_FLOAT_RGBA32_NV 0x888B
8699#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C
8700#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D
8701#define GL_FLOAT_RGBA_MODE_NV 0x888E
8702#endif /* GL_NV_float_buffer */
8703
8704#ifndef GL_NV_fog_distance
8705#define GL_NV_fog_distance 1
8706#define GL_FOG_DISTANCE_MODE_NV 0x855A
8707#define GL_EYE_RADIAL_NV 0x855B
8708#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C
8709#endif /* GL_NV_fog_distance */
8710
8711#ifndef GL_NV_fragment_program
8712#define GL_NV_fragment_program 1
8713#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868
8714#define GL_FRAGMENT_PROGRAM_NV 0x8870
8715#define GL_MAX_TEXTURE_COORDS_NV 0x8871
8716#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872
8717#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873
8718#define GL_PROGRAM_ERROR_STRING_NV 0x8874
8719typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
8720typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
8721typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
8722typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
8723typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
8724typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
8725#ifdef GL_GLEXT_PROTOTYPES
8726GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
8727GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
8728GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
8729GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
8730GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
8731GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
8732#endif
8733#endif /* GL_NV_fragment_program */
8734
8735#ifndef GL_NV_fragment_program2
8736#define GL_NV_fragment_program2 1
8737#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
8738#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5
8739#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6
8740#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7
8741#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8
8742#endif /* GL_NV_fragment_program2 */
8743
8744#ifndef GL_NV_fragment_program4
8745#define GL_NV_fragment_program4 1
8746#endif /* GL_NV_fragment_program4 */
8747
8748#ifndef GL_NV_fragment_program_option
8749#define GL_NV_fragment_program_option 1
8750#endif /* GL_NV_fragment_program_option */
8751
8752#ifndef GL_NV_framebuffer_multisample_coverage
8753#define GL_NV_framebuffer_multisample_coverage 1
8754#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
8755#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10
8756#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
8757#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12
8758typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
8759#ifdef GL_GLEXT_PROTOTYPES
8760GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
8761#endif
8762#endif /* GL_NV_framebuffer_multisample_coverage */
8763
8764#ifndef GL_NV_geometry_program4
8765#define GL_NV_geometry_program4 1
8766#define GL_GEOMETRY_PROGRAM_NV 0x8C26
8767#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27
8768#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28
8769typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit);
8770typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
8771typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
8772typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
8773#ifdef GL_GLEXT_PROTOTYPES
8774GLAPI void APIENTRY glProgramVertexLimitNV (GLenum target, GLint limit);
8775GLAPI void APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level);
8776GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
8777GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
8778#endif
8779#endif /* GL_NV_geometry_program4 */
8780
8781#ifndef GL_NV_geometry_shader4
8782#define GL_NV_geometry_shader4 1
8783#endif /* GL_NV_geometry_shader4 */
8784
8785#ifndef GL_NV_gpu_program4
8786#define GL_NV_gpu_program4 1
8787#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904
8788#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905
8789#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906
8790#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907
8791#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908
8792#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909
8793#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5
8794#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6
8795typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
8796typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
8797typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
8798typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
8799typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
8800typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
8801typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
8802typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
8803typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
8804typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
8805typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
8806typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
8807typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
8808typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
8809typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
8810typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
8811#ifdef GL_GLEXT_PROTOTYPES
8812GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
8813GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
8814GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
8815GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
8816GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
8817GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
8818GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
8819GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
8820GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
8821GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
8822GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
8823GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
8824GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum target, GLuint index, GLint *params);
8825GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum target, GLuint index, GLuint *params);
8826GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum target, GLuint index, GLint *params);
8827GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum target, GLuint index, GLuint *params);
8828#endif
8829#endif /* GL_NV_gpu_program4 */
8830
8831#ifndef GL_NV_gpu_program5
8832#define GL_NV_gpu_program5 1
8833#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A
8834#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B
8835#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C
8836#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D
8837#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E
8838#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F
8839#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44
8840#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45
8841typedef void (APIENTRYP PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC) (GLenum target, GLsizei count, const GLuint *params);
8842typedef void (APIENTRYP PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC) (GLenum target, GLuint index, GLuint *param);
8843#ifdef GL_GLEXT_PROTOTYPES
8844GLAPI void APIENTRY glProgramSubroutineParametersuivNV (GLenum target, GLsizei count, const GLuint *params);
8845GLAPI void APIENTRY glGetProgramSubroutineParameteruivNV (GLenum target, GLuint index, GLuint *param);
8846#endif
8847#endif /* GL_NV_gpu_program5 */
8848
8849#ifndef GL_NV_gpu_program5_mem_extended
8850#define GL_NV_gpu_program5_mem_extended 1
8851#endif /* GL_NV_gpu_program5_mem_extended */
8852
8853#ifndef GL_NV_gpu_shader5
8854#define GL_NV_gpu_shader5 1
8855#endif /* GL_NV_gpu_shader5 */
8856
8857#ifndef GL_NV_half_float
8858#define GL_NV_half_float 1
8859typedef unsigned short GLhalfNV;
8860#define GL_HALF_FLOAT_NV 0x140B
8861typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y);
8862typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v);
8863typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z);
8864typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v);
8865typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
8866typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v);
8867typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
8868typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v);
8869typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
8870typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v);
8871typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
8872typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v);
8873typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s);
8874typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v);
8875typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t);
8876typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v);
8877typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r);
8878typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v);
8879typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
8880typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v);
8881typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s);
8882typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v);
8883typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t);
8884typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v);
8885typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
8886typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v);
8887typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
8888typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v);
8889typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog);
8890typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog);
8891typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
8892typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v);
8893typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight);
8894typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight);
8895typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x);
8896typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v);
8897typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y);
8898typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v);
8899typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
8900typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v);
8901typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
8902typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v);
8903typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
8904typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
8905typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
8906typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
8907#ifdef GL_GLEXT_PROTOTYPES
8908GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y);
8909GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v);
8910GLAPI void APIENTRY glVertex3hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z);
8911GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *v);
8912GLAPI void APIENTRY glVertex4hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
8913GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *v);
8914GLAPI void APIENTRY glNormal3hNV (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
8915GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *v);
8916GLAPI void APIENTRY glColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
8917GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *v);
8918GLAPI void APIENTRY glColor4hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
8919GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *v);
8920GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV s);
8921GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *v);
8922GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV s, GLhalfNV t);
8923GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *v);
8924GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r);
8925GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *v);
8926GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
8927GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *v);
8928GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum target, GLhalfNV s);
8929GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum target, const GLhalfNV *v);
8930GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum target, GLhalfNV s, GLhalfNV t);
8931GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum target, const GLhalfNV *v);
8932GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
8933GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v);
8934GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
8935GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v);
8936GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog);
8937GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog);
8938GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
8939GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v);
8940GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight);
8941GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight);
8942GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x);
8943GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v);
8944GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y);
8945GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint index, const GLhalfNV *v);
8946GLAPI void APIENTRY glVertexAttrib3hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
8947GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint index, const GLhalfNV *v);
8948GLAPI void APIENTRY glVertexAttrib4hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
8949GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint index, const GLhalfNV *v);
8950GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
8951GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
8952GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
8953GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
8954#endif
8955#endif /* GL_NV_half_float */
8956
8957#ifndef GL_NV_light_max_exponent
8958#define GL_NV_light_max_exponent 1
8959#define GL_MAX_SHININESS_NV 0x8504
8960#define GL_MAX_SPOT_EXPONENT_NV 0x8505
8961#endif /* GL_NV_light_max_exponent */
8962
8963#ifndef GL_NV_multisample_coverage
8964#define GL_NV_multisample_coverage 1
8965#define GL_COLOR_SAMPLES_NV 0x8E20
8966#endif /* GL_NV_multisample_coverage */
8967
8968#ifndef GL_NV_multisample_filter_hint
8969#define GL_NV_multisample_filter_hint 1
8970#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534
8971#endif /* GL_NV_multisample_filter_hint */
8972
8973#ifndef GL_NV_occlusion_query
8974#define GL_NV_occlusion_query 1
8975#define GL_PIXEL_COUNTER_BITS_NV 0x8864
8976#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865
8977#define GL_PIXEL_COUNT_NV 0x8866
8978#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867
8979typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);
8980typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);
8981typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);
8982typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
8983typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void);
8984typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params);
8985typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params);
8986#ifdef GL_GLEXT_PROTOTYPES
8987GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei n, GLuint *ids);
8988GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei n, const GLuint *ids);
8989GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint id);
8990GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint id);
8991GLAPI void APIENTRY glEndOcclusionQueryNV (void);
8992GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint *params);
8993GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint *params);
8994#endif
8995#endif /* GL_NV_occlusion_query */
8996
8997#ifndef GL_NV_packed_depth_stencil
8998#define GL_NV_packed_depth_stencil 1
8999#define GL_DEPTH_STENCIL_NV 0x84F9
9000#define GL_UNSIGNED_INT_24_8_NV 0x84FA
9001#endif /* GL_NV_packed_depth_stencil */
9002
9003#ifndef GL_NV_parameter_buffer_object
9004#define GL_NV_parameter_buffer_object 1
9005#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0
9006#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1
9007#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2
9008#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3
9009#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4
9010typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params);
9011typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params);
9012typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params);
9013#ifdef GL_GLEXT_PROTOTYPES
9014GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params);
9015GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params);
9016GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params);
9017#endif
9018#endif /* GL_NV_parameter_buffer_object */
9019
9020#ifndef GL_NV_parameter_buffer_object2
9021#define GL_NV_parameter_buffer_object2 1
9022#endif /* GL_NV_parameter_buffer_object2 */
9023
9024#ifndef GL_NV_path_rendering
9025#define GL_NV_path_rendering 1
9026#define GL_PATH_FORMAT_SVG_NV 0x9070
9027#define GL_PATH_FORMAT_PS_NV 0x9071
9028#define GL_STANDARD_FONT_NAME_NV 0x9072
9029#define GL_SYSTEM_FONT_NAME_NV 0x9073
9030#define GL_FILE_NAME_NV 0x9074
9031#define GL_PATH_STROKE_WIDTH_NV 0x9075
9032#define GL_PATH_END_CAPS_NV 0x9076
9033#define GL_PATH_INITIAL_END_CAP_NV 0x9077
9034#define GL_PATH_TERMINAL_END_CAP_NV 0x9078
9035#define GL_PATH_JOIN_STYLE_NV 0x9079
9036#define GL_PATH_MITER_LIMIT_NV 0x907A
9037#define GL_PATH_DASH_CAPS_NV 0x907B
9038#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C
9039#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D
9040#define GL_PATH_DASH_OFFSET_NV 0x907E
9041#define GL_PATH_CLIENT_LENGTH_NV 0x907F
9042#define GL_PATH_FILL_MODE_NV 0x9080
9043#define GL_PATH_FILL_MASK_NV 0x9081
9044#define GL_PATH_FILL_COVER_MODE_NV 0x9082
9045#define GL_PATH_STROKE_COVER_MODE_NV 0x9083
9046#define GL_PATH_STROKE_MASK_NV 0x9084
9047#define GL_COUNT_UP_NV 0x9088
9048#define GL_COUNT_DOWN_NV 0x9089
9049#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A
9050#define GL_CONVEX_HULL_NV 0x908B
9051#define GL_BOUNDING_BOX_NV 0x908D
9052#define GL_TRANSLATE_X_NV 0x908E
9053#define GL_TRANSLATE_Y_NV 0x908F
9054#define GL_TRANSLATE_2D_NV 0x9090
9055#define GL_TRANSLATE_3D_NV 0x9091
9056#define GL_AFFINE_2D_NV 0x9092
9057#define GL_AFFINE_3D_NV 0x9094
9058#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096
9059#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098
9060#define GL_UTF8_NV 0x909A
9061#define GL_UTF16_NV 0x909B
9062#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C
9063#define GL_PATH_COMMAND_COUNT_NV 0x909D
9064#define GL_PATH_COORD_COUNT_NV 0x909E
9065#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F
9066#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0
9067#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1
9068#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2
9069#define GL_SQUARE_NV 0x90A3
9070#define GL_ROUND_NV 0x90A4
9071#define GL_TRIANGULAR_NV 0x90A5
9072#define GL_BEVEL_NV 0x90A6
9073#define GL_MITER_REVERT_NV 0x90A7
9074#define GL_MITER_TRUNCATE_NV 0x90A8
9075#define GL_SKIP_MISSING_GLYPH_NV 0x90A9
9076#define GL_USE_MISSING_GLYPH_NV 0x90AA
9077#define GL_PATH_ERROR_POSITION_NV 0x90AB
9078#define GL_PATH_FOG_GEN_MODE_NV 0x90AC
9079#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD
9080#define GL_ADJACENT_PAIRS_NV 0x90AE
9081#define GL_FIRST_TO_REST_NV 0x90AF
9082#define GL_PATH_GEN_MODE_NV 0x90B0
9083#define GL_PATH_GEN_COEFF_NV 0x90B1
9084#define GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2
9085#define GL_PATH_GEN_COMPONENTS_NV 0x90B3
9086#define GL_PATH_STENCIL_FUNC_NV 0x90B7
9087#define GL_PATH_STENCIL_REF_NV 0x90B8
9088#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9
9089#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD
9090#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE
9091#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF
9092#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4
9093#define GL_MOVE_TO_RESETS_NV 0x90B5
9094#define GL_MOVE_TO_CONTINUES_NV 0x90B6
9095#define GL_CLOSE_PATH_NV 0x00
9096#define GL_MOVE_TO_NV 0x02
9097#define GL_RELATIVE_MOVE_TO_NV 0x03
9098#define GL_LINE_TO_NV 0x04
9099#define GL_RELATIVE_LINE_TO_NV 0x05
9100#define GL_HORIZONTAL_LINE_TO_NV 0x06
9101#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
9102#define GL_VERTICAL_LINE_TO_NV 0x08
9103#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09
9104#define GL_QUADRATIC_CURVE_TO_NV 0x0A
9105#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B
9106#define GL_CUBIC_CURVE_TO_NV 0x0C
9107#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D
9108#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E
9109#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F
9110#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10
9111#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11
9112#define GL_SMALL_CCW_ARC_TO_NV 0x12
9113#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13
9114#define GL_SMALL_CW_ARC_TO_NV 0x14
9115#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15
9116#define GL_LARGE_CCW_ARC_TO_NV 0x16
9117#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17
9118#define GL_LARGE_CW_ARC_TO_NV 0x18
9119#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19
9120#define GL_RESTART_PATH_NV 0xF0
9121#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2
9122#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4
9123#define GL_RECT_NV 0xF6
9124#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8
9125#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA
9126#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC
9127#define GL_ARC_TO_NV 0xFE
9128#define GL_RELATIVE_ARC_TO_NV 0xFF
9129#define GL_BOLD_BIT_NV 0x01
9130#define GL_ITALIC_BIT_NV 0x02
9131#define GL_GLYPH_WIDTH_BIT_NV 0x01
9132#define GL_GLYPH_HEIGHT_BIT_NV 0x02
9133#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
9134#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08
9135#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10
9136#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20
9137#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40
9138#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80
9139#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100
9140#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000
9141#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000
9142#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000
9143#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000
9144#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000
9145#define GL_FONT_ASCENDER_BIT_NV 0x00200000
9146#define GL_FONT_DESCENDER_BIT_NV 0x00400000
9147#define GL_FONT_HEIGHT_BIT_NV 0x00800000
9148#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000
9149#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000
9150#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000
9151#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000
9152#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000
9153#define GL_PRIMARY_COLOR_NV 0x852C
9154#define GL_SECONDARY_COLOR_NV 0x852D
9155typedef GLuint (APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range);
9156typedef void (APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range);
9157typedef GLboolean (APIENTRYP PFNGLISPATHNVPROC) (GLuint path);
9158typedef void (APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
9159typedef void (APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
9160typedef void (APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
9161typedef void (APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
9162typedef void (APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString);
9163typedef void (APIENTRYP PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
9164typedef void (APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
9165typedef void (APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
9166typedef void (APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath);
9167typedef void (APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
9168typedef void (APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
9169typedef void (APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value);
9170typedef void (APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value);
9171typedef void (APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value);
9172typedef void (APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value);
9173typedef void (APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
9174typedef void (APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask);
9175typedef void (APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units);
9176typedef void (APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask);
9177typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask);
9178typedef void (APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
9179typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
9180typedef void (APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func);
9181typedef void (APIENTRYP PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs);
9182typedef void (APIENTRYP PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs);
9183typedef void (APIENTRYP PFNGLPATHFOGGENNVPROC) (GLenum genMode);
9184typedef void (APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode);
9185typedef void (APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode);
9186typedef void (APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
9187typedef void (APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
9188typedef void (APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value);
9189typedef void (APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value);
9190typedef void (APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands);
9191typedef void (APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords);
9192typedef void (APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray);
9193typedef void (APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
9194typedef void (APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
9195typedef void (APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
9196typedef void (APIENTRYP PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint *value);
9197typedef void (APIENTRYP PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat *value);
9198typedef void (APIENTRYP PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint *value);
9199typedef void (APIENTRYP PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat *value);
9200typedef GLboolean (APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y);
9201typedef GLboolean (APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y);
9202typedef GLfloat (APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments);
9203typedef GLboolean (APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
9204#ifdef GL_GLEXT_PROTOTYPES
9205GLAPI GLuint APIENTRY glGenPathsNV (GLsizei range);
9206GLAPI void APIENTRY glDeletePathsNV (GLuint path, GLsizei range);
9207GLAPI GLboolean APIENTRY glIsPathNV (GLuint path);
9208GLAPI void APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
9209GLAPI void APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
9210GLAPI void APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
9211GLAPI void APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
9212GLAPI void APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString);
9213GLAPI void APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
9214GLAPI void APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
9215GLAPI void APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
9216GLAPI void APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath);
9217GLAPI void APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
9218GLAPI void APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
9219GLAPI void APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value);
9220GLAPI void APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value);
9221GLAPI void APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value);
9222GLAPI void APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value);
9223GLAPI void APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
9224GLAPI void APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask);
9225GLAPI void APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units);
9226GLAPI void APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask);
9227GLAPI void APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask);
9228GLAPI void APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
9229GLAPI void APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
9230GLAPI void APIENTRY glPathCoverDepthFuncNV (GLenum func);
9231GLAPI void APIENTRY glPathColorGenNV (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs);
9232GLAPI void APIENTRY glPathTexGenNV (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs);
9233GLAPI void APIENTRY glPathFogGenNV (GLenum genMode);
9234GLAPI void APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode);
9235GLAPI void APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode);
9236GLAPI void APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
9237GLAPI void APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
9238GLAPI void APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value);
9239GLAPI void APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value);
9240GLAPI void APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands);
9241GLAPI void APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords);
9242GLAPI void APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray);
9243GLAPI void APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
9244GLAPI void APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
9245GLAPI void APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
9246GLAPI void APIENTRY glGetPathColorGenivNV (GLenum color, GLenum pname, GLint *value);
9247GLAPI void APIENTRY glGetPathColorGenfvNV (GLenum color, GLenum pname, GLfloat *value);
9248GLAPI void APIENTRY glGetPathTexGenivNV (GLenum texCoordSet, GLenum pname, GLint *value);
9249GLAPI void APIENTRY glGetPathTexGenfvNV (GLenum texCoordSet, GLenum pname, GLfloat *value);
9250GLAPI GLboolean APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y);
9251GLAPI GLboolean APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y);
9252GLAPI GLfloat APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments);
9253GLAPI GLboolean APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
9254#endif
9255#endif /* GL_NV_path_rendering */
9256
9257#ifndef GL_NV_pixel_data_range
9258#define GL_NV_pixel_data_range 1
9259#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878
9260#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879
9261#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A
9262#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B
9263#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C
9264#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D
9265typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, const void *pointer);
9266typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
9267#ifdef GL_GLEXT_PROTOTYPES
9268GLAPI void APIENTRY glPixelDataRangeNV (GLenum target, GLsizei length, const void *pointer);
9269GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum target);
9270#endif
9271#endif /* GL_NV_pixel_data_range */
9272
9273#ifndef GL_NV_point_sprite
9274#define GL_NV_point_sprite 1
9275#define GL_POINT_SPRITE_NV 0x8861
9276#define GL_COORD_REPLACE_NV 0x8862
9277#define GL_POINT_SPRITE_R_MODE_NV 0x8863
9278typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
9279typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
9280#ifdef GL_GLEXT_PROTOTYPES
9281GLAPI void APIENTRY glPointParameteriNV (GLenum pname, GLint param);
9282GLAPI void APIENTRY glPointParameterivNV (GLenum pname, const GLint *params);
9283#endif
9284#endif /* GL_NV_point_sprite */
9285
9286#ifndef GL_NV_present_video
9287#define GL_NV_present_video 1
9288#define GL_FRAME_NV 0x8E26
9289#define GL_FIELDS_NV 0x8E27
9290#define GL_CURRENT_TIME_NV 0x8E28
9291#define GL_NUM_FILL_STREAMS_NV 0x8E29
9292#define GL_PRESENT_TIME_NV 0x8E2A
9293#define GL_PRESENT_DURATION_NV 0x8E2B
9294typedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
9295typedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
9296typedef void (APIENTRYP PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint *params);
9297typedef void (APIENTRYP PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint *params);
9298typedef void (APIENTRYP PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT *params);
9299typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT *params);
9300#ifdef GL_GLEXT_PROTOTYPES
9301GLAPI void APIENTRY glPresentFrameKeyedNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
9302GLAPI void APIENTRY glPresentFrameDualFillNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
9303GLAPI void APIENTRY glGetVideoivNV (GLuint video_slot, GLenum pname, GLint *params);
9304GLAPI void APIENTRY glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint *params);
9305GLAPI void APIENTRY glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT *params);
9306GLAPI void APIENTRY glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT *params);
9307#endif
9308#endif /* GL_NV_present_video */
9309
9310#ifndef GL_NV_primitive_restart
9311#define GL_NV_primitive_restart 1
9312#define GL_PRIMITIVE_RESTART_NV 0x8558
9313#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559
9314typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void);
9315typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
9316#ifdef GL_GLEXT_PROTOTYPES
9317GLAPI void APIENTRY glPrimitiveRestartNV (void);
9318GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint index);
9319#endif
9320#endif /* GL_NV_primitive_restart */
9321
9322#ifndef GL_NV_register_combiners
9323#define GL_NV_register_combiners 1
9324#define GL_REGISTER_COMBINERS_NV 0x8522
9325#define GL_VARIABLE_A_NV 0x8523
9326#define GL_VARIABLE_B_NV 0x8524
9327#define GL_VARIABLE_C_NV 0x8525
9328#define GL_VARIABLE_D_NV 0x8526
9329#define GL_VARIABLE_E_NV 0x8527
9330#define GL_VARIABLE_F_NV 0x8528
9331#define GL_VARIABLE_G_NV 0x8529
9332#define GL_CONSTANT_COLOR0_NV 0x852A
9333#define GL_CONSTANT_COLOR1_NV 0x852B
9334#define GL_SPARE0_NV 0x852E
9335#define GL_SPARE1_NV 0x852F
9336#define GL_DISCARD_NV 0x8530
9337#define GL_E_TIMES_F_NV 0x8531
9338#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
9339#define GL_UNSIGNED_IDENTITY_NV 0x8536
9340#define GL_UNSIGNED_INVERT_NV 0x8537
9341#define GL_EXPAND_NORMAL_NV 0x8538
9342#define GL_EXPAND_NEGATE_NV 0x8539
9343#define GL_HALF_BIAS_NORMAL_NV 0x853A
9344#define GL_HALF_BIAS_NEGATE_NV 0x853B
9345#define GL_SIGNED_IDENTITY_NV 0x853C
9346#define GL_SIGNED_NEGATE_NV 0x853D
9347#define GL_SCALE_BY_TWO_NV 0x853E
9348#define GL_SCALE_BY_FOUR_NV 0x853F
9349#define GL_SCALE_BY_ONE_HALF_NV 0x8540
9350#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541
9351#define GL_COMBINER_INPUT_NV 0x8542
9352#define GL_COMBINER_MAPPING_NV 0x8543
9353#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544
9354#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545
9355#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546
9356#define GL_COMBINER_MUX_SUM_NV 0x8547
9357#define GL_COMBINER_SCALE_NV 0x8548
9358#define GL_COMBINER_BIAS_NV 0x8549
9359#define GL_COMBINER_AB_OUTPUT_NV 0x854A
9360#define GL_COMBINER_CD_OUTPUT_NV 0x854B
9361#define GL_COMBINER_SUM_OUTPUT_NV 0x854C
9362#define GL_MAX_GENERAL_COMBINERS_NV 0x854D
9363#define GL_NUM_GENERAL_COMBINERS_NV 0x854E
9364#define GL_COLOR_SUM_CLAMP_NV 0x854F
9365#define GL_COMBINER0_NV 0x8550
9366#define GL_COMBINER1_NV 0x8551
9367#define GL_COMBINER2_NV 0x8552
9368#define GL_COMBINER3_NV 0x8553
9369#define GL_COMBINER4_NV 0x8554
9370#define GL_COMBINER5_NV 0x8555
9371#define GL_COMBINER6_NV 0x8556
9372#define GL_COMBINER7_NV 0x8557
9373typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);
9374typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
9375typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
9376typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
9377typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
9378typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
9379typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
9380typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
9381typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
9382typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
9383typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params);
9384typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params);
9385typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params);
9386#ifdef GL_GLEXT_PROTOTYPES
9387GLAPI void APIENTRY glCombinerParameterfvNV (GLenum pname, const GLfloat *params);
9388GLAPI void APIENTRY glCombinerParameterfNV (GLenum pname, GLfloat param);
9389GLAPI void APIENTRY glCombinerParameterivNV (GLenum pname, const GLint *params);
9390GLAPI void APIENTRY glCombinerParameteriNV (GLenum pname, GLint param);
9391GLAPI void APIENTRY glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
9392GLAPI void APIENTRY glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
9393GLAPI void APIENTRY glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
9394GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
9395GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
9396GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
9397GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint *params);
9398GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat *params);
9399GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint *params);
9400#endif
9401#endif /* GL_NV_register_combiners */
9402
9403#ifndef GL_NV_register_combiners2
9404#define GL_NV_register_combiners2 1
9405#define GL_PER_STAGE_CONSTANTS_NV 0x8535
9406typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params);
9407typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params);
9408#ifdef GL_GLEXT_PROTOTYPES
9409GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat *params);
9410GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params);
9411#endif
9412#endif /* GL_NV_register_combiners2 */
9413
9414#ifndef GL_NV_shader_atomic_counters
9415#define GL_NV_shader_atomic_counters 1
9416#endif /* GL_NV_shader_atomic_counters */
9417
9418#ifndef GL_NV_shader_atomic_float
9419#define GL_NV_shader_atomic_float 1
9420#endif /* GL_NV_shader_atomic_float */
9421
9422#ifndef GL_NV_shader_buffer_load
9423#define GL_NV_shader_buffer_load 1
9424#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D
9425#define GL_GPU_ADDRESS_NV 0x8F34
9426#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35
9427typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access);
9428typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target);
9429typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC) (GLenum target);
9430typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access);
9431typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer);
9432typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer);
9433typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT *params);
9434typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT *params);
9435typedef void (APIENTRYP PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT *result);
9436typedef void (APIENTRYP PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value);
9437typedef void (APIENTRYP PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
9438typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value);
9439typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
9440#ifdef GL_GLEXT_PROTOTYPES
9441GLAPI void APIENTRY glMakeBufferResidentNV (GLenum target, GLenum access);
9442GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum target);
9443GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum target);
9444GLAPI void APIENTRY glMakeNamedBufferResidentNV (GLuint buffer, GLenum access);
9445GLAPI void APIENTRY glMakeNamedBufferNonResidentNV (GLuint buffer);
9446GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint buffer);
9447GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT *params);
9448GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT *params);
9449GLAPI void APIENTRY glGetIntegerui64vNV (GLenum value, GLuint64EXT *result);
9450GLAPI void APIENTRY glUniformui64NV (GLint location, GLuint64EXT value);
9451GLAPI void APIENTRY glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
9452GLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value);
9453GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
9454#endif
9455#endif /* GL_NV_shader_buffer_load */
9456
9457#ifndef GL_NV_shader_buffer_store
9458#define GL_NV_shader_buffer_store 1
9459#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010
9460#endif /* GL_NV_shader_buffer_store */
9461
9462#ifndef GL_NV_shader_storage_buffer_object
9463#define GL_NV_shader_storage_buffer_object 1
9464#endif /* GL_NV_shader_storage_buffer_object */
9465
9466#ifndef GL_NV_shader_thread_group
9467#define GL_NV_shader_thread_group 1
9468#define GL_WARP_SIZE_NV 0x9339
9469#define GL_WARPS_PER_SM_NV 0x933A
9470#define GL_SM_COUNT_NV 0x933B
9471#endif /* GL_NV_shader_thread_group */
9472
9473#ifndef GL_NV_shader_thread_shuffle
9474#define GL_NV_shader_thread_shuffle 1
9475#endif /* GL_NV_shader_thread_shuffle */
9476
9477#ifndef GL_NV_tessellation_program5
9478#define GL_NV_tessellation_program5 1
9479#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8
9480#define GL_TESS_CONTROL_PROGRAM_NV 0x891E
9481#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F
9482#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74
9483#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75
9484#endif /* GL_NV_tessellation_program5 */
9485
9486#ifndef GL_NV_texgen_emboss
9487#define GL_NV_texgen_emboss 1
9488#define GL_EMBOSS_LIGHT_NV 0x855D
9489#define GL_EMBOSS_CONSTANT_NV 0x855E
9490#define GL_EMBOSS_MAP_NV 0x855F
9491#endif /* GL_NV_texgen_emboss */
9492
9493#ifndef GL_NV_texgen_reflection
9494#define GL_NV_texgen_reflection 1
9495#define GL_NORMAL_MAP_NV 0x8511
9496#define GL_REFLECTION_MAP_NV 0x8512
9497#endif /* GL_NV_texgen_reflection */
9498
9499#ifndef GL_NV_texture_barrier
9500#define GL_NV_texture_barrier 1
9501typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void);
9502#ifdef GL_GLEXT_PROTOTYPES
9503GLAPI void APIENTRY glTextureBarrierNV (void);
9504#endif
9505#endif /* GL_NV_texture_barrier */
9506
9507#ifndef GL_NV_texture_compression_vtc
9508#define GL_NV_texture_compression_vtc 1
9509#endif /* GL_NV_texture_compression_vtc */
9510
9511#ifndef GL_NV_texture_env_combine4
9512#define GL_NV_texture_env_combine4 1
9513#define GL_COMBINE4_NV 0x8503
9514#define GL_SOURCE3_RGB_NV 0x8583
9515#define GL_SOURCE3_ALPHA_NV 0x858B
9516#define GL_OPERAND3_RGB_NV 0x8593
9517#define GL_OPERAND3_ALPHA_NV 0x859B
9518#endif /* GL_NV_texture_env_combine4 */
9519
9520#ifndef GL_NV_texture_expand_normal
9521#define GL_NV_texture_expand_normal 1
9522#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F
9523#endif /* GL_NV_texture_expand_normal */
9524
9525#ifndef GL_NV_texture_multisample
9526#define GL_NV_texture_multisample 1
9527#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045
9528#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046
9529typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
9530typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
9531typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
9532typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
9533typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
9534typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
9535#ifdef GL_GLEXT_PROTOTYPES
9536GLAPI void APIENTRY glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
9537GLAPI void APIENTRY glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
9538GLAPI void APIENTRY glTextureImage2DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
9539GLAPI void APIENTRY glTextureImage3DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
9540GLAPI void APIENTRY glTextureImage2DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
9541GLAPI void APIENTRY glTextureImage3DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
9542#endif
9543#endif /* GL_NV_texture_multisample */
9544
9545#ifndef GL_NV_texture_rectangle
9546#define GL_NV_texture_rectangle 1
9547#define GL_TEXTURE_RECTANGLE_NV 0x84F5
9548#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6
9549#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7
9550#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8
9551#endif /* GL_NV_texture_rectangle */
9552
9553#ifndef GL_NV_texture_shader
9554#define GL_NV_texture_shader 1
9555#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C
9556#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
9557#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
9558#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
9559#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA
9560#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB
9561#define GL_DSDT_MAG_INTENSITY_NV 0x86DC
9562#define GL_SHADER_CONSISTENT_NV 0x86DD
9563#define GL_TEXTURE_SHADER_NV 0x86DE
9564#define GL_SHADER_OPERATION_NV 0x86DF
9565#define GL_CULL_MODES_NV 0x86E0
9566#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1
9567#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2
9568#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3
9569#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1
9570#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2
9571#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3
9572#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4
9573#define GL_CONST_EYE_NV 0x86E5
9574#define GL_PASS_THROUGH_NV 0x86E6
9575#define GL_CULL_FRAGMENT_NV 0x86E7
9576#define GL_OFFSET_TEXTURE_2D_NV 0x86E8
9577#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9
9578#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA
9579#define GL_DOT_PRODUCT_NV 0x86EC
9580#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED
9581#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE
9582#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
9583#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
9584#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
9585#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
9586#define GL_HILO_NV 0x86F4
9587#define GL_DSDT_NV 0x86F5
9588#define GL_DSDT_MAG_NV 0x86F6
9589#define GL_DSDT_MAG_VIB_NV 0x86F7
9590#define GL_HILO16_NV 0x86F8
9591#define GL_SIGNED_HILO_NV 0x86F9
9592#define GL_SIGNED_HILO16_NV 0x86FA
9593#define GL_SIGNED_RGBA_NV 0x86FB
9594#define GL_SIGNED_RGBA8_NV 0x86FC
9595#define GL_SIGNED_RGB_NV 0x86FE
9596#define GL_SIGNED_RGB8_NV 0x86FF
9597#define GL_SIGNED_LUMINANCE_NV 0x8701
9598#define GL_SIGNED_LUMINANCE8_NV 0x8702
9599#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703
9600#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704
9601#define GL_SIGNED_ALPHA_NV 0x8705
9602#define GL_SIGNED_ALPHA8_NV 0x8706
9603#define GL_SIGNED_INTENSITY_NV 0x8707
9604#define GL_SIGNED_INTENSITY8_NV 0x8708
9605#define GL_DSDT8_NV 0x8709
9606#define GL_DSDT8_MAG8_NV 0x870A
9607#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B
9608#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C
9609#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
9610#define GL_HI_SCALE_NV 0x870E
9611#define GL_LO_SCALE_NV 0x870F
9612#define GL_DS_SCALE_NV 0x8710
9613#define GL_DT_SCALE_NV 0x8711
9614#define GL_MAGNITUDE_SCALE_NV 0x8712
9615#define GL_VIBRANCE_SCALE_NV 0x8713
9616#define GL_HI_BIAS_NV 0x8714
9617#define GL_LO_BIAS_NV 0x8715
9618#define GL_DS_BIAS_NV 0x8716
9619#define GL_DT_BIAS_NV 0x8717
9620#define GL_MAGNITUDE_BIAS_NV 0x8718
9621#define GL_VIBRANCE_BIAS_NV 0x8719
9622#define GL_TEXTURE_BORDER_VALUES_NV 0x871A
9623#define GL_TEXTURE_HI_SIZE_NV 0x871B
9624#define GL_TEXTURE_LO_SIZE_NV 0x871C
9625#define GL_TEXTURE_DS_SIZE_NV 0x871D
9626#define GL_TEXTURE_DT_SIZE_NV 0x871E
9627#define GL_TEXTURE_MAG_SIZE_NV 0x871F
9628#endif /* GL_NV_texture_shader */
9629
9630#ifndef GL_NV_texture_shader2
9631#define GL_NV_texture_shader2 1
9632#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF
9633#endif /* GL_NV_texture_shader2 */
9634
9635#ifndef GL_NV_texture_shader3
9636#define GL_NV_texture_shader3 1
9637#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
9638#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
9639#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
9640#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
9641#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854
9642#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
9643#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
9644#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
9645#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858
9646#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859
9647#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
9648#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B
9649#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C
9650#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
9651#define GL_HILO8_NV 0x885E
9652#define GL_SIGNED_HILO8_NV 0x885F
9653#define GL_FORCE_BLUE_TO_ONE_NV 0x8860
9654#endif /* GL_NV_texture_shader3 */
9655
9656#ifndef GL_NV_transform_feedback
9657#define GL_NV_transform_feedback 1
9658#define GL_BACK_PRIMARY_COLOR_NV 0x8C77
9659#define GL_BACK_SECONDARY_COLOR_NV 0x8C78
9660#define GL_TEXTURE_COORD_NV 0x8C79
9661#define GL_CLIP_DISTANCE_NV 0x8C7A
9662#define GL_VERTEX_ID_NV 0x8C7B
9663#define GL_PRIMITIVE_ID_NV 0x8C7C
9664#define GL_GENERIC_ATTRIB_NV 0x8C7D
9665#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E
9666#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F
9667#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80
9668#define GL_ACTIVE_VARYINGS_NV 0x8C81
9669#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82
9670#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83
9671#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84
9672#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85
9673#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86
9674#define GL_PRIMITIVES_GENERATED_NV 0x8C87
9675#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88
9676#define GL_RASTERIZER_DISCARD_NV 0x8C89
9677#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A
9678#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B
9679#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C
9680#define GL_SEPARATE_ATTRIBS_NV 0x8C8D
9681#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E
9682#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F
9683#define GL_LAYER_NV 0x8DAA
9684#define GL_NEXT_BUFFER_NV -2
9685#define GL_SKIP_COMPONENTS4_NV -3
9686#define GL_SKIP_COMPONENTS3_NV -4
9687#define GL_SKIP_COMPONENTS2_NV -5
9688#define GL_SKIP_COMPONENTS1_NV -6
9689typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode);
9690typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void);
9691typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode);
9692typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
9693typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
9694typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer);
9695typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
9696typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name);
9697typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name);
9698typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
9699typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location);
9700typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode);
9701#ifdef GL_GLEXT_PROTOTYPES
9702GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum primitiveMode);
9703GLAPI void APIENTRY glEndTransformFeedbackNV (void);
9704GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint count, const GLint *attribs, GLenum bufferMode);
9705GLAPI void APIENTRY glBindBufferRangeNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
9706GLAPI void APIENTRY glBindBufferOffsetNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
9707GLAPI void APIENTRY glBindBufferBaseNV (GLenum target, GLuint index, GLuint buffer);
9708GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
9709GLAPI void APIENTRY glActiveVaryingNV (GLuint program, const GLchar *name);
9710GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint program, const GLchar *name);
9711GLAPI void APIENTRY glGetActiveVaryingNV (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
9712GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint program, GLuint index, GLint *location);
9713GLAPI void APIENTRY glTransformFeedbackStreamAttribsNV (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode);
9714#endif
9715#endif /* GL_NV_transform_feedback */
9716
9717#ifndef GL_NV_transform_feedback2
9718#define GL_NV_transform_feedback2 1
9719#define GL_TRANSFORM_FEEDBACK_NV 0x8E22
9720#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23
9721#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24
9722#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25
9723typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id);
9724typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint *ids);
9725typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint *ids);
9726typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id);
9727typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void);
9728typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void);
9729typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id);
9730#ifdef GL_GLEXT_PROTOTYPES
9731GLAPI void APIENTRY glBindTransformFeedbackNV (GLenum target, GLuint id);
9732GLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei n, const GLuint *ids);
9733GLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei n, GLuint *ids);
9734GLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint id);
9735GLAPI void APIENTRY glPauseTransformFeedbackNV (void);
9736GLAPI void APIENTRY glResumeTransformFeedbackNV (void);
9737GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id);
9738#endif
9739#endif /* GL_NV_transform_feedback2 */
9740
9741#ifndef GL_NV_vdpau_interop
9742#define GL_NV_vdpau_interop 1
9743typedef GLintptr GLvdpauSurfaceNV;
9744#define GL_SURFACE_STATE_NV 0x86EB
9745#define GL_SURFACE_REGISTERED_NV 0x86FD
9746#define GL_SURFACE_MAPPED_NV 0x8700
9747#define GL_WRITE_DISCARD_NV 0x88BE
9748typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const void *vdpDevice, const void *getProcAddress);
9749typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void);
9750typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
9751typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
9752typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
9753typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface);
9754typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
9755typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access);
9756typedef void (APIENTRYP PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces);
9757typedef void (APIENTRYP PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces);
9758#ifdef GL_GLEXT_PROTOTYPES
9759GLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAddress);
9760GLAPI void APIENTRY glVDPAUFiniNV (void);
9761GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
9762GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
9763GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
9764GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface);
9765GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
9766GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access);
9767GLAPI void APIENTRY glVDPAUMapSurfacesNV (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces);
9768GLAPI void APIENTRY glVDPAUUnmapSurfacesNV (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces);
9769#endif
9770#endif /* GL_NV_vdpau_interop */
9771
9772#ifndef GL_NV_vertex_array_range
9773#define GL_NV_vertex_array_range 1
9774#define GL_VERTEX_ARRAY_RANGE_NV 0x851D
9775#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E
9776#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F
9777#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
9778#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521
9779typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
9780typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const void *pointer);
9781#ifdef GL_GLEXT_PROTOTYPES
9782GLAPI void APIENTRY glFlushVertexArrayRangeNV (void);
9783GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei length, const void *pointer);
9784#endif
9785#endif /* GL_NV_vertex_array_range */
9786
9787#ifndef GL_NV_vertex_array_range2
9788#define GL_NV_vertex_array_range2 1
9789#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
9790#endif /* GL_NV_vertex_array_range2 */
9791
9792#ifndef GL_NV_vertex_attrib_integer_64bit
9793#define GL_NV_vertex_attrib_integer_64bit 1
9794typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x);
9795typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y);
9796typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
9797typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
9798typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT *v);
9799typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT *v);
9800typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT *v);
9801typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT *v);
9802typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x);
9803typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y);
9804typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
9805typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
9806typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
9807typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
9808typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
9809typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
9810typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT *params);
9811typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT *params);
9812typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
9813#ifdef GL_GLEXT_PROTOTYPES
9814GLAPI void APIENTRY glVertexAttribL1i64NV (GLuint index, GLint64EXT x);
9815GLAPI void APIENTRY glVertexAttribL2i64NV (GLuint index, GLint64EXT x, GLint64EXT y);
9816GLAPI void APIENTRY glVertexAttribL3i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
9817GLAPI void APIENTRY glVertexAttribL4i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
9818GLAPI void APIENTRY glVertexAttribL1i64vNV (GLuint index, const GLint64EXT *v);
9819GLAPI void APIENTRY glVertexAttribL2i64vNV (GLuint index, const GLint64EXT *v);
9820GLAPI void APIENTRY glVertexAttribL3i64vNV (GLuint index, const GLint64EXT *v);
9821GLAPI void APIENTRY glVertexAttribL4i64vNV (GLuint index, const GLint64EXT *v);
9822GLAPI void APIENTRY glVertexAttribL1ui64NV (GLuint index, GLuint64EXT x);
9823GLAPI void APIENTRY glVertexAttribL2ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y);
9824GLAPI void APIENTRY glVertexAttribL3ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
9825GLAPI void APIENTRY glVertexAttribL4ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
9826GLAPI void APIENTRY glVertexAttribL1ui64vNV (GLuint index, const GLuint64EXT *v);
9827GLAPI void APIENTRY glVertexAttribL2ui64vNV (GLuint index, const GLuint64EXT *v);
9828GLAPI void APIENTRY glVertexAttribL3ui64vNV (GLuint index, const GLuint64EXT *v);
9829GLAPI void APIENTRY glVertexAttribL4ui64vNV (GLuint index, const GLuint64EXT *v);
9830GLAPI void APIENTRY glGetVertexAttribLi64vNV (GLuint index, GLenum pname, GLint64EXT *params);
9831GLAPI void APIENTRY glGetVertexAttribLui64vNV (GLuint index, GLenum pname, GLuint64EXT *params);
9832GLAPI void APIENTRY glVertexAttribLFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
9833#endif
9834#endif /* GL_NV_vertex_attrib_integer_64bit */
9835
9836#ifndef GL_NV_vertex_buffer_unified_memory
9837#define GL_NV_vertex_buffer_unified_memory 1
9838#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E
9839#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F
9840#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20
9841#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21
9842#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22
9843#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23
9844#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24
9845#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25
9846#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26
9847#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27
9848#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28
9849#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29
9850#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A
9851#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B
9852#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C
9853#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D
9854#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E
9855#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F
9856#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30
9857#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31
9858#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32
9859#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33
9860#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40
9861#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41
9862#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42
9863typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
9864typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
9865typedef void (APIENTRYP PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride);
9866typedef void (APIENTRYP PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
9867typedef void (APIENTRYP PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride);
9868typedef void (APIENTRYP PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
9869typedef void (APIENTRYP PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride);
9870typedef void (APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
9871typedef void (APIENTRYP PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride);
9872typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
9873typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
9874typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT *result);
9875#ifdef GL_GLEXT_PROTOTYPES
9876GLAPI void APIENTRY glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
9877GLAPI void APIENTRY glVertexFormatNV (GLint size, GLenum type, GLsizei stride);
9878GLAPI void APIENTRY glNormalFormatNV (GLenum type, GLsizei stride);
9879GLAPI void APIENTRY glColorFormatNV (GLint size, GLenum type, GLsizei stride);
9880GLAPI void APIENTRY glIndexFormatNV (GLenum type, GLsizei stride);
9881GLAPI void APIENTRY glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride);
9882GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei stride);
9883GLAPI void APIENTRY glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride);
9884GLAPI void APIENTRY glFogCoordFormatNV (GLenum type, GLsizei stride);
9885GLAPI void APIENTRY glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
9886GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
9887GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT *result);
9888#endif
9889#endif /* GL_NV_vertex_buffer_unified_memory */
9890
9891#ifndef GL_NV_vertex_program
9892#define GL_NV_vertex_program 1
9893#define GL_VERTEX_PROGRAM_NV 0x8620
9894#define GL_VERTEX_STATE_PROGRAM_NV 0x8621
9895#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623
9896#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624
9897#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625
9898#define GL_CURRENT_ATTRIB_NV 0x8626
9899#define GL_PROGRAM_LENGTH_NV 0x8627
9900#define GL_PROGRAM_STRING_NV 0x8628
9901#define GL_MODELVIEW_PROJECTION_NV 0x8629
9902#define GL_IDENTITY_NV 0x862A
9903#define GL_INVERSE_NV 0x862B
9904#define GL_TRANSPOSE_NV 0x862C
9905#define GL_INVERSE_TRANSPOSE_NV 0x862D
9906#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
9907#define GL_MAX_TRACK_MATRICES_NV 0x862F
9908#define GL_MATRIX0_NV 0x8630
9909#define GL_MATRIX1_NV 0x8631
9910#define GL_MATRIX2_NV 0x8632
9911#define GL_MATRIX3_NV 0x8633
9912#define GL_MATRIX4_NV 0x8634
9913#define GL_MATRIX5_NV 0x8635
9914#define GL_MATRIX6_NV 0x8636
9915#define GL_MATRIX7_NV 0x8637
9916#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640
9917#define GL_CURRENT_MATRIX_NV 0x8641
9918#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642
9919#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643
9920#define GL_PROGRAM_PARAMETER_NV 0x8644
9921#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645
9922#define GL_PROGRAM_TARGET_NV 0x8646
9923#define GL_PROGRAM_RESIDENT_NV 0x8647
9924#define GL_TRACK_MATRIX_NV 0x8648
9925#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649
9926#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A
9927#define GL_PROGRAM_ERROR_POSITION_NV 0x864B
9928#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650
9929#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651
9930#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652
9931#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653
9932#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654
9933#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655
9934#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656
9935#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657
9936#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658
9937#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659
9938#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A
9939#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B
9940#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C
9941#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D
9942#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E
9943#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F
9944#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660
9945#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661
9946#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662
9947#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663
9948#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664
9949#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665
9950#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666
9951#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667
9952#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668
9953#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669
9954#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A
9955#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B
9956#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C
9957#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D
9958#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E
9959#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F
9960#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670
9961#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671
9962#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672
9963#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673
9964#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674
9965#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675
9966#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676
9967#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677
9968#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678
9969#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679
9970#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A
9971#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B
9972#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C
9973#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D
9974#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E
9975#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F
9976typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences);
9977typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
9978typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
9979typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params);
9980typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs);
9981typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params);
9982typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
9983typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params);
9984typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program);
9985typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params);
9986typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params);
9987typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params);
9988typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params);
9989typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, void **pointer);
9990typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id);
9991typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
9992typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
9993typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v);
9994typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
9995typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v);
9996typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLdouble *v);
9997typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *v);
9998typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
9999typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);
10000typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer);
10001typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);
10002typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v);
10003typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);
10004typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v);
10005typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);
10006typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v);
10007typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);
10008typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v);
10009typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);
10010typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v);
10011typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);
10012typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v);
10013typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
10014typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v);
10015typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
10016typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v);
10017typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
10018typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v);
10019typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
10020typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v);
10021typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
10022typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v);
10023typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
10024typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v);
10025typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
10026typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v);
10027typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
10028typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
10029typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
10030typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
10031typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
10032typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
10033typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
10034typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
10035typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
10036typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
10037typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
10038typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
10039typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v);
10040#ifdef GL_GLEXT_PROTOTYPES
10041GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei n, const GLuint *programs, GLboolean *residences);
10042GLAPI void APIENTRY glBindProgramNV (GLenum target, GLuint id);
10043GLAPI void APIENTRY glDeleteProgramsNV (GLsizei n, const GLuint *programs);
10044GLAPI void APIENTRY glExecuteProgramNV (GLenum target, GLuint id, const GLfloat *params);
10045GLAPI void APIENTRY glGenProgramsNV (GLsizei n, GLuint *programs);
10046GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble *params);
10047GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
10048GLAPI void APIENTRY glGetProgramivNV (GLuint id, GLenum pname, GLint *params);
10049GLAPI void APIENTRY glGetProgramStringNV (GLuint id, GLenum pname, GLubyte *program);
10050GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint *params);
10051GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble *params);
10052GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat *params);
10053GLAPI void APIENTRY glGetVertexAttribivNV (GLuint index, GLenum pname, GLint *params);
10054GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint index, GLenum pname, void **pointer);
10055GLAPI GLboolean APIENTRY glIsProgramNV (GLuint id);
10056GLAPI void APIENTRY glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
10057GLAPI void APIENTRY glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
10058GLAPI void APIENTRY glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble *v);
10059GLAPI void APIENTRY glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
10060GLAPI void APIENTRY glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat *v);
10061GLAPI void APIENTRY glProgramParameters4dvNV (GLenum target, GLuint index, GLsizei count, const GLdouble *v);
10062GLAPI void APIENTRY glProgramParameters4fvNV (GLenum target, GLuint index, GLsizei count, const GLfloat *v);
10063GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei n, const GLuint *programs);
10064GLAPI void APIENTRY glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform);
10065GLAPI void APIENTRY glVertexAttribPointerNV (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer);
10066GLAPI void APIENTRY glVertexAttrib1dNV (GLuint index, GLdouble x);
10067GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint index, const GLdouble *v);
10068GLAPI void APIENTRY glVertexAttrib1fNV (GLuint index, GLfloat x);
10069GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint index, const GLfloat *v);
10070GLAPI void APIENTRY glVertexAttrib1sNV (GLuint index, GLshort x);
10071GLAPI void APIENTRY glVertexAttrib1svNV (GLuint index, const GLshort *v);
10072GLAPI void APIENTRY glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y);
10073GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint index, const GLdouble *v);
10074GLAPI void APIENTRY glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y);
10075GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint index, const GLfloat *v);
10076GLAPI void APIENTRY glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y);
10077GLAPI void APIENTRY glVertexAttrib2svNV (GLuint index, const GLshort *v);
10078GLAPI void APIENTRY glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z);
10079GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint index, const GLdouble *v);
10080GLAPI void APIENTRY glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z);
10081GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint index, const GLfloat *v);
10082GLAPI void APIENTRY glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z);
10083GLAPI void APIENTRY glVertexAttrib3svNV (GLuint index, const GLshort *v);
10084GLAPI void APIENTRY glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
10085GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint index, const GLdouble *v);
10086GLAPI void APIENTRY glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
10087GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint index, const GLfloat *v);
10088GLAPI void APIENTRY glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
10089GLAPI void APIENTRY glVertexAttrib4svNV (GLuint index, const GLshort *v);
10090GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
10091GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint index, const GLubyte *v);
10092GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint index, GLsizei count, const GLdouble *v);
10093GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint index, GLsizei count, const GLfloat *v);
10094GLAPI void APIENTRY glVertexAttribs1svNV (GLuint index, GLsizei count, const GLshort *v);
10095GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint index, GLsizei count, const GLdouble *v);
10096GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint index, GLsizei count, const GLfloat *v);
10097GLAPI void APIENTRY glVertexAttribs2svNV (GLuint index, GLsizei count, const GLshort *v);
10098GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint index, GLsizei count, const GLdouble *v);
10099GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint index, GLsizei count, const GLfloat *v);
10100GLAPI void APIENTRY glVertexAttribs3svNV (GLuint index, GLsizei count, const GLshort *v);
10101GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint index, GLsizei count, const GLdouble *v);
10102GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint index, GLsizei count, const GLfloat *v);
10103GLAPI void APIENTRY glVertexAttribs4svNV (GLuint index, GLsizei count, const GLshort *v);
10104GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GLubyte *v);
10105#endif
10106#endif /* GL_NV_vertex_program */
10107
10108#ifndef GL_NV_vertex_program1_1
10109#define GL_NV_vertex_program1_1 1
10110#endif /* GL_NV_vertex_program1_1 */
10111
10112#ifndef GL_NV_vertex_program2
10113#define GL_NV_vertex_program2 1
10114#endif /* GL_NV_vertex_program2 */
10115
10116#ifndef GL_NV_vertex_program2_option
10117#define GL_NV_vertex_program2_option 1
10118#endif /* GL_NV_vertex_program2_option */
10119
10120#ifndef GL_NV_vertex_program3
10121#define GL_NV_vertex_program3 1
10122#endif /* GL_NV_vertex_program3 */
10123
10124#ifndef GL_NV_vertex_program4
10125#define GL_NV_vertex_program4 1
10126#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD
10127typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x);
10128typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y);
10129typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z);
10130typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
10131typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x);
10132typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y);
10133typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
10134typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
10135typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v);
10136typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v);
10137typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v);
10138typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v);
10139typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v);
10140typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v);
10141typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v);
10142typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v);
10143typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v);
10144typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v);
10145typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v);
10146typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v);
10147typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
10148typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params);
10149typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params);
10150#ifdef GL_GLEXT_PROTOTYPES
10151GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint index, GLint x);
10152GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint index, GLint x, GLint y);
10153GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z);
10154GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w);
10155GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint index, GLuint x);
10156GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y);
10157GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z);
10158GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
10159GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint index, const GLint *v);
10160GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint index, const GLint *v);
10161GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint index, const GLint *v);
10162GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint index, const GLint *v);
10163GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint index, const GLuint *v);
10164GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint index, const GLuint *v);
10165GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint index, const GLuint *v);
10166GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint index, const GLuint *v);
10167GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint index, const GLbyte *v);
10168GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint index, const GLshort *v);
10169GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v);
10170GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint index, const GLushort *v);
10171GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
10172GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params);
10173GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params);
10174#endif
10175#endif /* GL_NV_vertex_program4 */
10176
10177#ifndef GL_NV_video_capture
10178#define GL_NV_video_capture 1
10179#define GL_VIDEO_BUFFER_NV 0x9020
10180#define GL_VIDEO_BUFFER_BINDING_NV 0x9021
10181#define GL_FIELD_UPPER_NV 0x9022
10182#define GL_FIELD_LOWER_NV 0x9023
10183#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024
10184#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025
10185#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026
10186#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027
10187#define GL_VIDEO_BUFFER_PITCH_NV 0x9028
10188#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029
10189#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A
10190#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B
10191#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C
10192#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D
10193#define GL_PARTIAL_SUCCESS_NV 0x902E
10194#define GL_SUCCESS_NV 0x902F
10195#define GL_FAILURE_NV 0x9030
10196#define GL_YCBYCR8_422_NV 0x9031
10197#define GL_YCBAYCR8A_4224_NV 0x9032
10198#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033
10199#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034
10200#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035
10201#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036
10202#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037
10203#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038
10204#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039
10205#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A
10206#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B
10207#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C
10208typedef void (APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
10209typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
10210typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
10211typedef void (APIENTRYP PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
10212typedef void (APIENTRYP PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint *params);
10213typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);
10214typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);
10215typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);
10216typedef GLenum (APIENTRYP PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);
10217typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);
10218typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);
10219typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);
10220#ifdef GL_GLEXT_PROTOTYPES
10221GLAPI void APIENTRY glBeginVideoCaptureNV (GLuint video_capture_slot);
10222GLAPI void APIENTRY glBindVideoCaptureStreamBufferNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
10223GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
10224GLAPI void APIENTRY glEndVideoCaptureNV (GLuint video_capture_slot);
10225GLAPI void APIENTRY glGetVideoCaptureivNV (GLuint video_capture_slot, GLenum pname, GLint *params);
10226GLAPI void APIENTRY glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);
10227GLAPI void APIENTRY glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);
10228GLAPI void APIENTRY glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);
10229GLAPI GLenum APIENTRY glVideoCaptureNV (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);
10230GLAPI void APIENTRY glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);
10231GLAPI void APIENTRY glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);
10232GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);
10233#endif
10234#endif /* GL_NV_video_capture */
10235
10236#ifndef GL_OML_interlace
10237#define GL_OML_interlace 1
10238#define GL_INTERLACE_OML 0x8980
10239#define GL_INTERLACE_READ_OML 0x8981
10240#endif /* GL_OML_interlace */
10241
10242#ifndef GL_OML_resample
10243#define GL_OML_resample 1
10244#define GL_PACK_RESAMPLE_OML 0x8984
10245#define GL_UNPACK_RESAMPLE_OML 0x8985
10246#define GL_RESAMPLE_REPLICATE_OML 0x8986
10247#define GL_RESAMPLE_ZERO_FILL_OML 0x8987
10248#define GL_RESAMPLE_AVERAGE_OML 0x8988
10249#define GL_RESAMPLE_DECIMATE_OML 0x8989
10250#endif /* GL_OML_resample */
10251
10252#ifndef GL_OML_subsample
10253#define GL_OML_subsample 1
10254#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982
10255#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983
10256#endif /* GL_OML_subsample */
10257
10258#ifndef GL_PGI_misc_hints
10259#define GL_PGI_misc_hints 1
10260#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8
10261#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD
10262#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE
10263#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202
10264#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203
10265#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204
10266#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C
10267#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D
10268#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E
10269#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F
10270#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210
10271#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211
10272#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216
10273#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217
10274#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218
10275#define GL_FULL_STIPPLE_HINT_PGI 0x1A219
10276#define GL_CLIP_NEAR_HINT_PGI 0x1A220
10277#define GL_CLIP_FAR_HINT_PGI 0x1A221
10278#define GL_WIDE_LINE_HINT_PGI 0x1A222
10279#define GL_BACK_NORMALS_HINT_PGI 0x1A223
10280typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode);
10281#ifdef GL_GLEXT_PROTOTYPES
10282GLAPI void APIENTRY glHintPGI (GLenum target, GLint mode);
10283#endif
10284#endif /* GL_PGI_misc_hints */
10285
10286#ifndef GL_PGI_vertex_hints
10287#define GL_PGI_vertex_hints 1
10288#define GL_VERTEX_DATA_HINT_PGI 0x1A22A
10289#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B
10290#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C
10291#define GL_MAX_VERTEX_HINT_PGI 0x1A22D
10292#define GL_COLOR3_BIT_PGI 0x00010000
10293#define GL_COLOR4_BIT_PGI 0x00020000
10294#define GL_EDGEFLAG_BIT_PGI 0x00040000
10295#define GL_INDEX_BIT_PGI 0x00080000
10296#define GL_MAT_AMBIENT_BIT_PGI 0x00100000
10297#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
10298#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000
10299#define GL_MAT_EMISSION_BIT_PGI 0x00800000
10300#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000
10301#define GL_MAT_SHININESS_BIT_PGI 0x02000000
10302#define GL_MAT_SPECULAR_BIT_PGI 0x04000000
10303#define GL_NORMAL_BIT_PGI 0x08000000
10304#define GL_TEXCOORD1_BIT_PGI 0x10000000
10305#define GL_TEXCOORD2_BIT_PGI 0x20000000
10306#define GL_TEXCOORD3_BIT_PGI 0x40000000
10307#define GL_TEXCOORD4_BIT_PGI 0x80000000
10308#define GL_VERTEX23_BIT_PGI 0x00000004
10309#define GL_VERTEX4_BIT_PGI 0x00000008
10310#endif /* GL_PGI_vertex_hints */
10311
10312#ifndef GL_REND_screen_coordinates
10313#define GL_REND_screen_coordinates 1
10314#define GL_SCREEN_COORDINATES_REND 0x8490
10315#define GL_INVERTED_SCREEN_W_REND 0x8491
10316#endif /* GL_REND_screen_coordinates */
10317
10318#ifndef GL_S3_s3tc
10319#define GL_S3_s3tc 1
10320#define GL_RGB_S3TC 0x83A0
10321#define GL_RGB4_S3TC 0x83A1
10322#define GL_RGBA_S3TC 0x83A2
10323#define GL_RGBA4_S3TC 0x83A3
10324#define GL_RGBA_DXT5_S3TC 0x83A4
10325#define GL_RGBA4_DXT5_S3TC 0x83A5
10326#endif /* GL_S3_s3tc */
10327
10328#ifndef GL_SGIS_detail_texture
10329#define GL_SGIS_detail_texture 1
10330#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095
10331#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096
10332#define GL_LINEAR_DETAIL_SGIS 0x8097
10333#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098
10334#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099
10335#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A
10336#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B
10337#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C
10338typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
10339typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
10340#ifdef GL_GLEXT_PROTOTYPES
10341GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
10342GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum target, GLfloat *points);
10343#endif
10344#endif /* GL_SGIS_detail_texture */
10345
10346#ifndef GL_SGIS_fog_function
10347#define GL_SGIS_fog_function 1
10348#define GL_FOG_FUNC_SGIS 0x812A
10349#define GL_FOG_FUNC_POINTS_SGIS 0x812B
10350#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C
10351typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);
10352typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);
10353#ifdef GL_GLEXT_PROTOTYPES
10354GLAPI void APIENTRY glFogFuncSGIS (GLsizei n, const GLfloat *points);
10355GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *points);
10356#endif
10357#endif /* GL_SGIS_fog_function */
10358
10359#ifndef GL_SGIS_generate_mipmap
10360#define GL_SGIS_generate_mipmap 1
10361#define GL_GENERATE_MIPMAP_SGIS 0x8191
10362#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192
10363#endif /* GL_SGIS_generate_mipmap */
10364
10365#ifndef GL_SGIS_multisample
10366#define GL_SGIS_multisample 1
10367#define GL_MULTISAMPLE_SGIS 0x809D
10368#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E
10369#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F
10370#define GL_SAMPLE_MASK_SGIS 0x80A0
10371#define GL_1PASS_SGIS 0x80A1
10372#define GL_2PASS_0_SGIS 0x80A2
10373#define GL_2PASS_1_SGIS 0x80A3
10374#define GL_4PASS_0_SGIS 0x80A4
10375#define GL_4PASS_1_SGIS 0x80A5
10376#define GL_4PASS_2_SGIS 0x80A6
10377#define GL_4PASS_3_SGIS 0x80A7
10378#define GL_SAMPLE_BUFFERS_SGIS 0x80A8
10379#define GL_SAMPLES_SGIS 0x80A9
10380#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA
10381#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB
10382#define GL_SAMPLE_PATTERN_SGIS 0x80AC
10383typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
10384typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
10385#ifdef GL_GLEXT_PROTOTYPES
10386GLAPI void APIENTRY glSampleMaskSGIS (GLclampf value, GLboolean invert);
10387GLAPI void APIENTRY glSamplePatternSGIS (GLenum pattern);
10388#endif
10389#endif /* GL_SGIS_multisample */
10390
10391#ifndef GL_SGIS_pixel_texture
10392#define GL_SGIS_pixel_texture 1
10393#define GL_PIXEL_TEXTURE_SGIS 0x8353
10394#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354
10395#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355
10396#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356
10397typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);
10398typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);
10399typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
10400typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
10401typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params);
10402typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params);
10403#ifdef GL_GLEXT_PROTOTYPES
10404GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum pname, GLint param);
10405GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum pname, const GLint *params);
10406GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum pname, GLfloat param);
10407GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum pname, const GLfloat *params);
10408GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum pname, GLint *params);
10409GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum pname, GLfloat *params);
10410#endif
10411#endif /* GL_SGIS_pixel_texture */
10412
10413#ifndef GL_SGIS_point_line_texgen
10414#define GL_SGIS_point_line_texgen 1
10415#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0
10416#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1
10417#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2
10418#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3
10419#define GL_EYE_POINT_SGIS 0x81F4
10420#define GL_OBJECT_POINT_SGIS 0x81F5
10421#define GL_EYE_LINE_SGIS 0x81F6
10422#define GL_OBJECT_LINE_SGIS 0x81F7
10423#endif /* GL_SGIS_point_line_texgen */
10424
10425#ifndef GL_SGIS_point_parameters
10426#define GL_SGIS_point_parameters 1
10427#define GL_POINT_SIZE_MIN_SGIS 0x8126
10428#define GL_POINT_SIZE_MAX_SGIS 0x8127
10429#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128
10430#define GL_DISTANCE_ATTENUATION_SGIS 0x8129
10431typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
10432typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
10433#ifdef GL_GLEXT_PROTOTYPES
10434GLAPI void APIENTRY glPointParameterfSGIS (GLenum pname, GLfloat param);
10435GLAPI void APIENTRY glPointParameterfvSGIS (GLenum pname, const GLfloat *params);
10436#endif
10437#endif /* GL_SGIS_point_parameters */
10438
10439#ifndef GL_SGIS_sharpen_texture
10440#define GL_SGIS_sharpen_texture 1
10441#define GL_LINEAR_SHARPEN_SGIS 0x80AD
10442#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE
10443#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF
10444#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0
10445typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
10446typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
10447#ifdef GL_GLEXT_PROTOTYPES
10448GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
10449GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum target, GLfloat *points);
10450#endif
10451#endif /* GL_SGIS_sharpen_texture */
10452
10453#ifndef GL_SGIS_texture4D
10454#define GL_SGIS_texture4D 1
10455#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130
10456#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131
10457#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132
10458#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133
10459#define GL_TEXTURE_4D_SGIS 0x8134
10460#define GL_PROXY_TEXTURE_4D_SGIS 0x8135
10461#define GL_TEXTURE_4DSIZE_SGIS 0x8136
10462#define GL_TEXTURE_WRAP_Q_SGIS 0x8137
10463#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138
10464#define GL_TEXTURE_4D_BINDING_SGIS 0x814F
10465typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels);
10466typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels);
10467#ifdef GL_GLEXT_PROTOTYPES
10468GLAPI void APIENTRY glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels);
10469GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels);
10470#endif
10471#endif /* GL_SGIS_texture4D */
10472
10473#ifndef GL_SGIS_texture_border_clamp
10474#define GL_SGIS_texture_border_clamp 1
10475#define GL_CLAMP_TO_BORDER_SGIS 0x812D
10476#endif /* GL_SGIS_texture_border_clamp */
10477
10478#ifndef GL_SGIS_texture_color_mask
10479#define GL_SGIS_texture_color_mask 1
10480#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF
10481typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
10482#ifdef GL_GLEXT_PROTOTYPES
10483GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
10484#endif
10485#endif /* GL_SGIS_texture_color_mask */
10486
10487#ifndef GL_SGIS_texture_edge_clamp
10488#define GL_SGIS_texture_edge_clamp 1
10489#define GL_CLAMP_TO_EDGE_SGIS 0x812F
10490#endif /* GL_SGIS_texture_edge_clamp */
10491
10492#ifndef GL_SGIS_texture_filter4
10493#define GL_SGIS_texture_filter4 1
10494#define GL_FILTER4_SGIS 0x8146
10495#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147
10496typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);
10497typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
10498#ifdef GL_GLEXT_PROTOTYPES
10499GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum target, GLenum filter, GLfloat *weights);
10500GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
10501#endif
10502#endif /* GL_SGIS_texture_filter4 */
10503
10504#ifndef GL_SGIS_texture_lod
10505#define GL_SGIS_texture_lod 1
10506#define GL_TEXTURE_MIN_LOD_SGIS 0x813A
10507#define GL_TEXTURE_MAX_LOD_SGIS 0x813B
10508#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C
10509#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D
10510#endif /* GL_SGIS_texture_lod */
10511
10512#ifndef GL_SGIS_texture_select
10513#define GL_SGIS_texture_select 1
10514#define GL_DUAL_ALPHA4_SGIS 0x8110
10515#define GL_DUAL_ALPHA8_SGIS 0x8111
10516#define GL_DUAL_ALPHA12_SGIS 0x8112
10517#define GL_DUAL_ALPHA16_SGIS 0x8113
10518#define GL_DUAL_LUMINANCE4_SGIS 0x8114
10519#define GL_DUAL_LUMINANCE8_SGIS 0x8115
10520#define GL_DUAL_LUMINANCE12_SGIS 0x8116
10521#define GL_DUAL_LUMINANCE16_SGIS 0x8117
10522#define GL_DUAL_INTENSITY4_SGIS 0x8118
10523#define GL_DUAL_INTENSITY8_SGIS 0x8119
10524#define GL_DUAL_INTENSITY12_SGIS 0x811A
10525#define GL_DUAL_INTENSITY16_SGIS 0x811B
10526#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C
10527#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D
10528#define GL_QUAD_ALPHA4_SGIS 0x811E
10529#define GL_QUAD_ALPHA8_SGIS 0x811F
10530#define GL_QUAD_LUMINANCE4_SGIS 0x8120
10531#define GL_QUAD_LUMINANCE8_SGIS 0x8121
10532#define GL_QUAD_INTENSITY4_SGIS 0x8122
10533#define GL_QUAD_INTENSITY8_SGIS 0x8123
10534#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124
10535#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125
10536#endif /* GL_SGIS_texture_select */
10537
10538#ifndef GL_SGIX_async
10539#define GL_SGIX_async 1
10540#define GL_ASYNC_MARKER_SGIX 0x8329
10541typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
10542typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);
10543typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp);
10544typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);
10545typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);
10546typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
10547#ifdef GL_GLEXT_PROTOTYPES
10548GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint marker);
10549GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *markerp);
10550GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *markerp);
10551GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei range);
10552GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint marker, GLsizei range);
10553GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint marker);
10554#endif
10555#endif /* GL_SGIX_async */
10556
10557#ifndef GL_SGIX_async_histogram
10558#define GL_SGIX_async_histogram 1
10559#define GL_ASYNC_HISTOGRAM_SGIX 0x832C
10560#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D
10561#endif /* GL_SGIX_async_histogram */
10562
10563#ifndef GL_SGIX_async_pixel
10564#define GL_SGIX_async_pixel 1
10565#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C
10566#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D
10567#define GL_ASYNC_READ_PIXELS_SGIX 0x835E
10568#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F
10569#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360
10570#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361
10571#endif /* GL_SGIX_async_pixel */
10572
10573#ifndef GL_SGIX_blend_alpha_minmax
10574#define GL_SGIX_blend_alpha_minmax 1
10575#define GL_ALPHA_MIN_SGIX 0x8320
10576#define GL_ALPHA_MAX_SGIX 0x8321
10577#endif /* GL_SGIX_blend_alpha_minmax */
10578
10579#ifndef GL_SGIX_calligraphic_fragment
10580#define GL_SGIX_calligraphic_fragment 1
10581#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183
10582#endif /* GL_SGIX_calligraphic_fragment */
10583
10584#ifndef GL_SGIX_clipmap
10585#define GL_SGIX_clipmap 1
10586#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170
10587#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171
10588#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172
10589#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173
10590#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174
10591#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175
10592#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176
10593#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177
10594#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178
10595#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D
10596#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E
10597#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F
10598#endif /* GL_SGIX_clipmap */
10599
10600#ifndef GL_SGIX_convolution_accuracy
10601#define GL_SGIX_convolution_accuracy 1
10602#define GL_CONVOLUTION_HINT_SGIX 0x8316
10603#endif /* GL_SGIX_convolution_accuracy */
10604
10605#ifndef GL_SGIX_depth_pass_instrument
10606#define GL_SGIX_depth_pass_instrument 1
10607#endif /* GL_SGIX_depth_pass_instrument */
10608
10609#ifndef GL_SGIX_depth_texture
10610#define GL_SGIX_depth_texture 1
10611#define GL_DEPTH_COMPONENT16_SGIX 0x81A5
10612#define GL_DEPTH_COMPONENT24_SGIX 0x81A6
10613#define GL_DEPTH_COMPONENT32_SGIX 0x81A7
10614#endif /* GL_SGIX_depth_texture */
10615
10616#ifndef GL_SGIX_flush_raster
10617#define GL_SGIX_flush_raster 1
10618typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void);
10619#ifdef GL_GLEXT_PROTOTYPES
10620GLAPI void APIENTRY glFlushRasterSGIX (void);
10621#endif
10622#endif /* GL_SGIX_flush_raster */
10623
10624#ifndef GL_SGIX_fog_offset
10625#define GL_SGIX_fog_offset 1
10626#define GL_FOG_OFFSET_SGIX 0x8198
10627#define GL_FOG_OFFSET_VALUE_SGIX 0x8199
10628#endif /* GL_SGIX_fog_offset */
10629
10630#ifndef GL_SGIX_fragment_lighting
10631#define GL_SGIX_fragment_lighting 1
10632#define GL_FRAGMENT_LIGHTING_SGIX 0x8400
10633#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401
10634#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402
10635#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403
10636#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404
10637#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405
10638#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406
10639#define GL_LIGHT_ENV_MODE_SGIX 0x8407
10640#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408
10641#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409
10642#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A
10643#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B
10644#define GL_FRAGMENT_LIGHT0_SGIX 0x840C
10645#define GL_FRAGMENT_LIGHT1_SGIX 0x840D
10646#define GL_FRAGMENT_LIGHT2_SGIX 0x840E
10647#define GL_FRAGMENT_LIGHT3_SGIX 0x840F
10648#define GL_FRAGMENT_LIGHT4_SGIX 0x8410
10649#define GL_FRAGMENT_LIGHT5_SGIX 0x8411
10650#define GL_FRAGMENT_LIGHT6_SGIX 0x8412
10651#define GL_FRAGMENT_LIGHT7_SGIX 0x8413
10652typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
10653typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
10654typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params);
10655typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);
10656typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params);
10657typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);
10658typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params);
10659typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);
10660typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params);
10661typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param);
10662typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params);
10663typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param);
10664typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params);
10665typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params);
10666typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params);
10667typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params);
10668typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params);
10669typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);
10670#ifdef GL_GLEXT_PROTOTYPES
10671GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum face, GLenum mode);
10672GLAPI void APIENTRY glFragmentLightfSGIX (GLenum light, GLenum pname, GLfloat param);
10673GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum light, GLenum pname, const GLfloat *params);
10674GLAPI void APIENTRY glFragmentLightiSGIX (GLenum light, GLenum pname, GLint param);
10675GLAPI void APIENTRY glFragmentLightivSGIX (GLenum light, GLenum pname, const GLint *params);
10676GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum pname, GLfloat param);
10677GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum pname, const GLfloat *params);
10678GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum pname, GLint param);
10679GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum pname, const GLint *params);
10680GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum face, GLenum pname, GLfloat param);
10681GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum face, GLenum pname, const GLfloat *params);
10682GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum face, GLenum pname, GLint param);
10683GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum face, GLenum pname, const GLint *params);
10684GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum light, GLenum pname, GLfloat *params);
10685GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum light, GLenum pname, GLint *params);
10686GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum face, GLenum pname, GLfloat *params);
10687GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum face, GLenum pname, GLint *params);
10688GLAPI void APIENTRY glLightEnviSGIX (GLenum pname, GLint param);
10689#endif
10690#endif /* GL_SGIX_fragment_lighting */
10691
10692#ifndef GL_SGIX_framezoom
10693#define GL_SGIX_framezoom 1
10694#define GL_FRAMEZOOM_SGIX 0x818B
10695#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C
10696#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D
10697typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
10698#ifdef GL_GLEXT_PROTOTYPES
10699GLAPI void APIENTRY glFrameZoomSGIX (GLint factor);
10700#endif
10701#endif /* GL_SGIX_framezoom */
10702
10703#ifndef GL_SGIX_igloo_interface
10704#define GL_SGIX_igloo_interface 1
10705typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const void *params);
10706#ifdef GL_GLEXT_PROTOTYPES
10707GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum pname, const void *params);
10708#endif
10709#endif /* GL_SGIX_igloo_interface */
10710
10711#ifndef GL_SGIX_instruments
10712#define GL_SGIX_instruments 1
10713#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180
10714#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181
10715typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void);
10716typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);
10717typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p);
10718typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker);
10719typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void);
10720typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);
10721#ifdef GL_GLEXT_PROTOTYPES
10722GLAPI GLint APIENTRY glGetInstrumentsSGIX (void);
10723GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei size, GLint *buffer);
10724GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *marker_p);
10725GLAPI void APIENTRY glReadInstrumentsSGIX (GLint marker);
10726GLAPI void APIENTRY glStartInstrumentsSGIX (void);
10727GLAPI void APIENTRY glStopInstrumentsSGIX (GLint marker);
10728#endif
10729#endif /* GL_SGIX_instruments */
10730
10731#ifndef GL_SGIX_interlace
10732#define GL_SGIX_interlace 1
10733#define GL_INTERLACE_SGIX 0x8094
10734#endif /* GL_SGIX_interlace */
10735
10736#ifndef GL_SGIX_ir_instrument1
10737#define GL_SGIX_ir_instrument1 1
10738#define GL_IR_INSTRUMENT1_SGIX 0x817F
10739#endif /* GL_SGIX_ir_instrument1 */
10740
10741#ifndef GL_SGIX_list_priority
10742#define GL_SGIX_list_priority 1
10743#define GL_LIST_PRIORITY_SGIX 0x8182
10744typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);
10745typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);
10746typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param);
10747typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params);
10748typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param);
10749typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params);
10750#ifdef GL_GLEXT_PROTOTYPES
10751GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint list, GLenum pname, GLfloat *params);
10752GLAPI void APIENTRY glGetListParameterivSGIX (GLuint list, GLenum pname, GLint *params);
10753GLAPI void APIENTRY glListParameterfSGIX (GLuint list, GLenum pname, GLfloat param);
10754GLAPI void APIENTRY glListParameterfvSGIX (GLuint list, GLenum pname, const GLfloat *params);
10755GLAPI void APIENTRY glListParameteriSGIX (GLuint list, GLenum pname, GLint param);
10756GLAPI void APIENTRY glListParameterivSGIX (GLuint list, GLenum pname, const GLint *params);
10757#endif
10758#endif /* GL_SGIX_list_priority */
10759
10760#ifndef GL_SGIX_pixel_texture
10761#define GL_SGIX_pixel_texture 1
10762#define GL_PIXEL_TEX_GEN_SGIX 0x8139
10763#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B
10764typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
10765#ifdef GL_GLEXT_PROTOTYPES
10766GLAPI void APIENTRY glPixelTexGenSGIX (GLenum mode);
10767#endif
10768#endif /* GL_SGIX_pixel_texture */
10769
10770#ifndef GL_SGIX_pixel_tiles
10771#define GL_SGIX_pixel_tiles 1
10772#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E
10773#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F
10774#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140
10775#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141
10776#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142
10777#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143
10778#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144
10779#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145
10780#endif /* GL_SGIX_pixel_tiles */
10781
10782#ifndef GL_SGIX_polynomial_ffd
10783#define GL_SGIX_polynomial_ffd 1
10784#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001
10785#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002
10786#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194
10787#define GL_TEXTURE_DEFORMATION_SGIX 0x8195
10788#define GL_DEFORMATIONS_MASK_SGIX 0x8196
10789#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197
10790typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
10791typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
10792typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask);
10793typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);
10794#ifdef GL_GLEXT_PROTOTYPES
10795GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
10796GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
10797GLAPI void APIENTRY glDeformSGIX (GLbitfield mask);
10798GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield mask);
10799#endif
10800#endif /* GL_SGIX_polynomial_ffd */
10801
10802#ifndef GL_SGIX_reference_plane
10803#define GL_SGIX_reference_plane 1
10804#define GL_REFERENCE_PLANE_SGIX 0x817D
10805#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E
10806typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);
10807#ifdef GL_GLEXT_PROTOTYPES
10808GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *equation);
10809#endif
10810#endif /* GL_SGIX_reference_plane */
10811
10812#ifndef GL_SGIX_resample
10813#define GL_SGIX_resample 1
10814#define GL_PACK_RESAMPLE_SGIX 0x842C
10815#define GL_UNPACK_RESAMPLE_SGIX 0x842D
10816#define GL_RESAMPLE_REPLICATE_SGIX 0x842E
10817#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F
10818#define GL_RESAMPLE_DECIMATE_SGIX 0x8430
10819#endif /* GL_SGIX_resample */
10820
10821#ifndef GL_SGIX_scalebias_hint
10822#define GL_SGIX_scalebias_hint 1
10823#define GL_SCALEBIAS_HINT_SGIX 0x8322
10824#endif /* GL_SGIX_scalebias_hint */
10825
10826#ifndef GL_SGIX_shadow
10827#define GL_SGIX_shadow 1
10828#define GL_TEXTURE_COMPARE_SGIX 0x819A
10829#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B
10830#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C
10831#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D
10832#endif /* GL_SGIX_shadow */
10833
10834#ifndef GL_SGIX_shadow_ambient
10835#define GL_SGIX_shadow_ambient 1
10836#define GL_SHADOW_AMBIENT_SGIX 0x80BF
10837#endif /* GL_SGIX_shadow_ambient */
10838
10839#ifndef GL_SGIX_sprite
10840#define GL_SGIX_sprite 1
10841#define GL_SPRITE_SGIX 0x8148
10842#define GL_SPRITE_MODE_SGIX 0x8149
10843#define GL_SPRITE_AXIS_SGIX 0x814A
10844#define GL_SPRITE_TRANSLATION_SGIX 0x814B
10845#define GL_SPRITE_AXIAL_SGIX 0x814C
10846#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D
10847#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E
10848typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
10849typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);
10850typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);
10851typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params);
10852#ifdef GL_GLEXT_PROTOTYPES
10853GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum pname, GLfloat param);
10854GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum pname, const GLfloat *params);
10855GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum pname, GLint param);
10856GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum pname, const GLint *params);
10857#endif
10858#endif /* GL_SGIX_sprite */
10859
10860#ifndef GL_SGIX_subsample
10861#define GL_SGIX_subsample 1
10862#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0
10863#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1
10864#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2
10865#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3
10866#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4
10867#endif /* GL_SGIX_subsample */
10868
10869#ifndef GL_SGIX_tag_sample_buffer
10870#define GL_SGIX_tag_sample_buffer 1
10871typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
10872#ifdef GL_GLEXT_PROTOTYPES
10873GLAPI void APIENTRY glTagSampleBufferSGIX (void);
10874#endif
10875#endif /* GL_SGIX_tag_sample_buffer */
10876
10877#ifndef GL_SGIX_texture_add_env
10878#define GL_SGIX_texture_add_env 1
10879#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE
10880#endif /* GL_SGIX_texture_add_env */
10881
10882#ifndef GL_SGIX_texture_coordinate_clamp
10883#define GL_SGIX_texture_coordinate_clamp 1
10884#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369
10885#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A
10886#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B
10887#endif /* GL_SGIX_texture_coordinate_clamp */
10888
10889#ifndef GL_SGIX_texture_lod_bias
10890#define GL_SGIX_texture_lod_bias 1
10891#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E
10892#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F
10893#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190
10894#endif /* GL_SGIX_texture_lod_bias */
10895
10896#ifndef GL_SGIX_texture_multi_buffer
10897#define GL_SGIX_texture_multi_buffer 1
10898#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
10899#endif /* GL_SGIX_texture_multi_buffer */
10900
10901#ifndef GL_SGIX_texture_scale_bias
10902#define GL_SGIX_texture_scale_bias 1
10903#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179
10904#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
10905#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
10906#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
10907#endif /* GL_SGIX_texture_scale_bias */
10908
10909#ifndef GL_SGIX_vertex_preclip
10910#define GL_SGIX_vertex_preclip 1
10911#define GL_VERTEX_PRECLIP_SGIX 0x83EE
10912#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
10913#endif /* GL_SGIX_vertex_preclip */
10914
10915#ifndef GL_SGIX_ycrcb
10916#define GL_SGIX_ycrcb 1
10917#define GL_YCRCB_422_SGIX 0x81BB
10918#define GL_YCRCB_444_SGIX 0x81BC
10919#endif /* GL_SGIX_ycrcb */
10920
10921#ifndef GL_SGIX_ycrcb_subsample
10922#define GL_SGIX_ycrcb_subsample 1
10923#endif /* GL_SGIX_ycrcb_subsample */
10924
10925#ifndef GL_SGIX_ycrcba
10926#define GL_SGIX_ycrcba 1
10927#define GL_YCRCB_SGIX 0x8318
10928#define GL_YCRCBA_SGIX 0x8319
10929#endif /* GL_SGIX_ycrcba */
10930
10931#ifndef GL_SGI_color_matrix
10932#define GL_SGI_color_matrix 1
10933#define GL_COLOR_MATRIX_SGI 0x80B1
10934#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2
10935#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
10936#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
10937#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
10938#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
10939#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
10940#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
10941#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
10942#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
10943#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
10944#endif /* GL_SGI_color_matrix */
10945
10946#ifndef GL_SGI_color_table
10947#define GL_SGI_color_table 1
10948#define GL_COLOR_TABLE_SGI 0x80D0
10949#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
10950#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
10951#define GL_PROXY_COLOR_TABLE_SGI 0x80D3
10952#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
10953#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
10954#define GL_COLOR_TABLE_SCALE_SGI 0x80D6
10955#define GL_COLOR_TABLE_BIAS_SGI 0x80D7
10956#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8
10957#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9
10958#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA
10959#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB
10960#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC
10961#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD
10962#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
10963#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
10964typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
10965typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);
10966typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params);
10967typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
10968typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void *table);
10969typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params);
10970typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params);
10971#ifdef GL_GLEXT_PROTOTYPES
10972GLAPI void APIENTRY glColorTableSGI (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
10973GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum target, GLenum pname, const GLfloat *params);
10974GLAPI void APIENTRY glColorTableParameterivSGI (GLenum target, GLenum pname, const GLint *params);
10975GLAPI void APIENTRY glCopyColorTableSGI (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
10976GLAPI void APIENTRY glGetColorTableSGI (GLenum target, GLenum format, GLenum type, void *table);
10977GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat *params);
10978GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint *params);
10979#endif
10980#endif /* GL_SGI_color_table */
10981
10982#ifndef GL_SGI_texture_color_table
10983#define GL_SGI_texture_color_table 1
10984#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC
10985#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD
10986#endif /* GL_SGI_texture_color_table */
10987
10988#ifndef GL_SUNX_constant_data
10989#define GL_SUNX_constant_data 1
10990#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5
10991#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6
10992typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void);
10993#ifdef GL_GLEXT_PROTOTYPES
10994GLAPI void APIENTRY glFinishTextureSUNX (void);
10995#endif
10996#endif /* GL_SUNX_constant_data */
10997
10998#ifndef GL_SUN_convolution_border_modes
10999#define GL_SUN_convolution_border_modes 1
11000#define GL_WRAP_BORDER_SUN 0x81D4
11001#endif /* GL_SUN_convolution_border_modes */
11002
11003#ifndef GL_SUN_global_alpha
11004#define GL_SUN_global_alpha 1
11005#define GL_GLOBAL_ALPHA_SUN 0x81D9
11006#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA
11007typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
11008typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
11009typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);
11010typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);
11011typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);
11012typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);
11013typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);
11014typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
11015#ifdef GL_GLEXT_PROTOTYPES
11016GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte factor);
11017GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort factor);
11018GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint factor);
11019GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat factor);
11020GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble factor);
11021GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte factor);
11022GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort factor);
11023GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint factor);
11024#endif
11025#endif /* GL_SUN_global_alpha */
11026
11027#ifndef GL_SUN_mesh_array
11028#define GL_SUN_mesh_array 1
11029#define GL_QUAD_MESH_SUN 0x8614
11030#define GL_TRIANGLE_MESH_SUN 0x8615
11031typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width);
11032#ifdef GL_GLEXT_PROTOTYPES
11033GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum mode, GLint first, GLsizei count, GLsizei width);
11034#endif
11035#endif /* GL_SUN_mesh_array */
11036
11037#ifndef GL_SUN_slice_accum
11038#define GL_SUN_slice_accum 1
11039#define GL_SLICE_ACCUM_SUN 0x85CC
11040#endif /* GL_SUN_slice_accum */
11041
11042#ifndef GL_SUN_triangle_list
11043#define GL_SUN_triangle_list 1
11044#define GL_RESTART_SUN 0x0001
11045#define GL_REPLACE_MIDDLE_SUN 0x0002
11046#define GL_REPLACE_OLDEST_SUN 0x0003
11047#define GL_TRIANGLE_LIST_SUN 0x81D7
11048#define GL_REPLACEMENT_CODE_SUN 0x81D8
11049#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0
11050#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
11051#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
11052#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
11053#define GL_R1UI_V3F_SUN 0x85C4
11054#define GL_R1UI_C4UB_V3F_SUN 0x85C5
11055#define GL_R1UI_C3F_V3F_SUN 0x85C6
11056#define GL_R1UI_N3F_V3F_SUN 0x85C7
11057#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8
11058#define GL_R1UI_T2F_V3F_SUN 0x85C9
11059#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA
11060#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB
11061typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
11062typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
11063typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);
11064typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code);
11065typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code);
11066typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code);
11067typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void **pointer);
11068#ifdef GL_GLEXT_PROTOTYPES
11069GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint code);
11070GLAPI void APIENTRY glReplacementCodeusSUN (GLushort code);
11071GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte code);
11072GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *code);
11073GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *code);
11074GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *code);
11075GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum type, GLsizei stride, const void **pointer);
11076#endif
11077#endif /* GL_SUN_triangle_list */
11078
11079#ifndef GL_SUN_vertex
11080#define GL_SUN_vertex 1
11081typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
11082typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);
11083typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
11084typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v);
11085typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
11086typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v);
11087typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11088typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v);
11089typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11090typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v);
11091typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
11092typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
11093typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
11094typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
11095typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
11096typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
11097typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
11098typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
11099typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11100typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
11101typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11102typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
11103typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
11104typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
11105typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
11106typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v);
11107typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
11108typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v);
11109typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
11110typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v);
11111typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11112typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v);
11113typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11114typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
11115typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
11116typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
11117typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11118typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
11119typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11120typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
11121#ifdef GL_GLEXT_PROTOTYPES
11122GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
11123GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *c, const GLfloat *v);
11124GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
11125GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *c, const GLfloat *v);
11126GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
11127GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *c, const GLfloat *v);
11128GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11129GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *n, const GLfloat *v);
11130GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11131GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *c, const GLfloat *n, const GLfloat *v);
11132GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
11133GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *tc, const GLfloat *v);
11134GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
11135GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *tc, const GLfloat *v);
11136GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
11137GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
11138GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
11139GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
11140GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11141GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
11142GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11143GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
11144GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
11145GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
11146GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
11147GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *rc, const GLfloat *v);
11148GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
11149GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *rc, const GLubyte *c, const GLfloat *v);
11150GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
11151GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *v);
11152GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11153GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *n, const GLfloat *v);
11154GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11155GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
11156GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
11157GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
11158GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11159GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
11160GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
11161GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
11162#endif
11163#endif /* GL_SUN_vertex */
11164
11165#ifndef GL_WIN_phong_shading
11166#define GL_WIN_phong_shading 1
11167#define GL_PHONG_WIN 0x80EA
11168#define GL_PHONG_HINT_WIN 0x80EB
11169#endif /* GL_WIN_phong_shading */
11170
11171#ifndef GL_WIN_specular_fog
11172#define GL_WIN_specular_fog 1
11173#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC
11174#endif /* GL_WIN_specular_fog */
11175
11176#ifdef __cplusplus
11177}
11178#endif
11179
11180#endif
diff --git a/vendor/SDL2/include/SDL_opengles.h b/vendor/SDL2/include/SDL_opengles.h new file mode 100644 index 0000000..8511b96 --- /dev/null +++ b/vendor/SDL2/include/SDL_opengles.h
@@ -0,0 +1,39 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_opengles.h
24 *
25 * This is a simple file to encapsulate the OpenGL ES 1.X API headers.
26 */
27#include "SDL_config.h"
28
29#ifdef __IPHONEOS__
30#include <OpenGLES/ES1/gl.h>
31#include <OpenGLES/ES1/glext.h>
32#else
33#include <GLES/gl.h>
34#include <GLES/glext.h>
35#endif
36
37#ifndef APIENTRY
38#define APIENTRY
39#endif
diff --git a/vendor/SDL2/include/SDL_opengles2.h b/vendor/SDL2/include/SDL_opengles2.h new file mode 100644 index 0000000..172fcb3 --- /dev/null +++ b/vendor/SDL2/include/SDL_opengles2.h
@@ -0,0 +1,52 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_opengles2.h
24 *
25 * This is a simple file to encapsulate the OpenGL ES 2.0 API headers.
26 */
27#include "SDL_config.h"
28
29#if !defined(_MSC_VER) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS)
30
31#ifdef __IPHONEOS__
32#include <OpenGLES/ES2/gl.h>
33#include <OpenGLES/ES2/glext.h>
34#else
35#include <GLES2/gl2platform.h>
36#include <GLES2/gl2.h>
37#include <GLES2/gl2ext.h>
38#endif
39
40#else /* _MSC_VER */
41
42/* OpenGL ES2 headers for Visual Studio */
43#include "SDL_opengles2_khrplatform.h"
44#include "SDL_opengles2_gl2platform.h"
45#include "SDL_opengles2_gl2.h"
46#include "SDL_opengles2_gl2ext.h"
47
48#endif /* _MSC_VER */
49
50#ifndef APIENTRY
51#define APIENTRY GL_APIENTRY
52#endif
diff --git a/vendor/SDL2/include/SDL_opengles2_gl2.h b/vendor/SDL2/include/SDL_opengles2_gl2.h new file mode 100644 index 0000000..c62fb0a --- /dev/null +++ b/vendor/SDL2/include/SDL_opengles2_gl2.h
@@ -0,0 +1,621 @@
1#ifndef __gl2_h_
2#define __gl2_h_
3
4/* $Revision: 20555 $ on $Date:: 2013-02-12 14:32:47 -0800 #$ */
5
6/*#include <GLES2/gl2platform.h>*/
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
12/*
13 * This document is licensed under the SGI Free Software B License Version
14 * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
15 */
16
17/*-------------------------------------------------------------------------
18 * Data type definitions
19 *-----------------------------------------------------------------------*/
20
21typedef void GLvoid;
22typedef char GLchar;
23typedef unsigned int GLenum;
24typedef unsigned char GLboolean;
25typedef unsigned int GLbitfield;
26typedef khronos_int8_t GLbyte;
27typedef short GLshort;
28typedef int GLint;
29typedef int GLsizei;
30typedef khronos_uint8_t GLubyte;
31typedef unsigned short GLushort;
32typedef unsigned int GLuint;
33typedef khronos_float_t GLfloat;
34typedef khronos_float_t GLclampf;
35typedef khronos_int32_t GLfixed;
36
37/* GL types for handling large vertex buffer objects */
38typedef khronos_intptr_t GLintptr;
39typedef khronos_ssize_t GLsizeiptr;
40
41/* OpenGL ES core versions */
42#define GL_ES_VERSION_2_0 1
43
44/* ClearBufferMask */
45#define GL_DEPTH_BUFFER_BIT 0x00000100
46#define GL_STENCIL_BUFFER_BIT 0x00000400
47#define GL_COLOR_BUFFER_BIT 0x00004000
48
49/* Boolean */
50#define GL_FALSE 0
51#define GL_TRUE 1
52
53/* BeginMode */
54#define GL_POINTS 0x0000
55#define GL_LINES 0x0001
56#define GL_LINE_LOOP 0x0002
57#define GL_LINE_STRIP 0x0003
58#define GL_TRIANGLES 0x0004
59#define GL_TRIANGLE_STRIP 0x0005
60#define GL_TRIANGLE_FAN 0x0006
61
62/* AlphaFunction (not supported in ES20) */
63/* GL_NEVER */
64/* GL_LESS */
65/* GL_EQUAL */
66/* GL_LEQUAL */
67/* GL_GREATER */
68/* GL_NOTEQUAL */
69/* GL_GEQUAL */
70/* GL_ALWAYS */
71
72/* BlendingFactorDest */
73#define GL_ZERO 0
74#define GL_ONE 1
75#define GL_SRC_COLOR 0x0300
76#define GL_ONE_MINUS_SRC_COLOR 0x0301
77#define GL_SRC_ALPHA 0x0302
78#define GL_ONE_MINUS_SRC_ALPHA 0x0303
79#define GL_DST_ALPHA 0x0304
80#define GL_ONE_MINUS_DST_ALPHA 0x0305
81
82/* BlendingFactorSrc */
83/* GL_ZERO */
84/* GL_ONE */
85#define GL_DST_COLOR 0x0306
86#define GL_ONE_MINUS_DST_COLOR 0x0307
87#define GL_SRC_ALPHA_SATURATE 0x0308
88/* GL_SRC_ALPHA */
89/* GL_ONE_MINUS_SRC_ALPHA */
90/* GL_DST_ALPHA */
91/* GL_ONE_MINUS_DST_ALPHA */
92
93/* BlendEquationSeparate */
94#define GL_FUNC_ADD 0x8006
95#define GL_BLEND_EQUATION 0x8009
96#define GL_BLEND_EQUATION_RGB 0x8009 /* same as BLEND_EQUATION */
97#define GL_BLEND_EQUATION_ALPHA 0x883D
98
99/* BlendSubtract */
100#define GL_FUNC_SUBTRACT 0x800A
101#define GL_FUNC_REVERSE_SUBTRACT 0x800B
102
103/* Separate Blend Functions */
104#define GL_BLEND_DST_RGB 0x80C8
105#define GL_BLEND_SRC_RGB 0x80C9
106#define GL_BLEND_DST_ALPHA 0x80CA
107#define GL_BLEND_SRC_ALPHA 0x80CB
108#define GL_CONSTANT_COLOR 0x8001
109#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
110#define GL_CONSTANT_ALPHA 0x8003
111#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
112#define GL_BLEND_COLOR 0x8005
113
114/* Buffer Objects */
115#define GL_ARRAY_BUFFER 0x8892
116#define GL_ELEMENT_ARRAY_BUFFER 0x8893
117#define GL_ARRAY_BUFFER_BINDING 0x8894
118#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
119
120#define GL_STREAM_DRAW 0x88E0
121#define GL_STATIC_DRAW 0x88E4
122#define GL_DYNAMIC_DRAW 0x88E8
123
124#define GL_BUFFER_SIZE 0x8764
125#define GL_BUFFER_USAGE 0x8765
126
127#define GL_CURRENT_VERTEX_ATTRIB 0x8626
128
129/* CullFaceMode */
130#define GL_FRONT 0x0404
131#define GL_BACK 0x0405
132#define GL_FRONT_AND_BACK 0x0408
133
134/* DepthFunction */
135/* GL_NEVER */
136/* GL_LESS */
137/* GL_EQUAL */
138/* GL_LEQUAL */
139/* GL_GREATER */
140/* GL_NOTEQUAL */
141/* GL_GEQUAL */
142/* GL_ALWAYS */
143
144/* EnableCap */
145#define GL_TEXTURE_2D 0x0DE1
146#define GL_CULL_FACE 0x0B44
147#define GL_BLEND 0x0BE2
148#define GL_DITHER 0x0BD0
149#define GL_STENCIL_TEST 0x0B90
150#define GL_DEPTH_TEST 0x0B71
151#define GL_SCISSOR_TEST 0x0C11
152#define GL_POLYGON_OFFSET_FILL 0x8037
153#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
154#define GL_SAMPLE_COVERAGE 0x80A0
155
156/* ErrorCode */
157#define GL_NO_ERROR 0
158#define GL_INVALID_ENUM 0x0500
159#define GL_INVALID_VALUE 0x0501
160#define GL_INVALID_OPERATION 0x0502
161#define GL_OUT_OF_MEMORY 0x0505
162
163/* FrontFaceDirection */
164#define GL_CW 0x0900
165#define GL_CCW 0x0901
166
167/* GetPName */
168#define GL_LINE_WIDTH 0x0B21
169#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
170#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
171#define GL_CULL_FACE_MODE 0x0B45
172#define GL_FRONT_FACE 0x0B46
173#define GL_DEPTH_RANGE 0x0B70
174#define GL_DEPTH_WRITEMASK 0x0B72
175#define GL_DEPTH_CLEAR_VALUE 0x0B73
176#define GL_DEPTH_FUNC 0x0B74
177#define GL_STENCIL_CLEAR_VALUE 0x0B91
178#define GL_STENCIL_FUNC 0x0B92
179#define GL_STENCIL_FAIL 0x0B94
180#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
181#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
182#define GL_STENCIL_REF 0x0B97
183#define GL_STENCIL_VALUE_MASK 0x0B93
184#define GL_STENCIL_WRITEMASK 0x0B98
185#define GL_STENCIL_BACK_FUNC 0x8800
186#define GL_STENCIL_BACK_FAIL 0x8801
187#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
188#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
189#define GL_STENCIL_BACK_REF 0x8CA3
190#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
191#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
192#define GL_VIEWPORT 0x0BA2
193#define GL_SCISSOR_BOX 0x0C10
194/* GL_SCISSOR_TEST */
195#define GL_COLOR_CLEAR_VALUE 0x0C22
196#define GL_COLOR_WRITEMASK 0x0C23
197#define GL_UNPACK_ALIGNMENT 0x0CF5
198#define GL_PACK_ALIGNMENT 0x0D05
199#define GL_MAX_TEXTURE_SIZE 0x0D33
200#define GL_MAX_VIEWPORT_DIMS 0x0D3A
201#define GL_SUBPIXEL_BITS 0x0D50
202#define GL_RED_BITS 0x0D52
203#define GL_GREEN_BITS 0x0D53
204#define GL_BLUE_BITS 0x0D54
205#define GL_ALPHA_BITS 0x0D55
206#define GL_DEPTH_BITS 0x0D56
207#define GL_STENCIL_BITS 0x0D57
208#define GL_POLYGON_OFFSET_UNITS 0x2A00
209/* GL_POLYGON_OFFSET_FILL */
210#define GL_POLYGON_OFFSET_FACTOR 0x8038
211#define GL_TEXTURE_BINDING_2D 0x8069
212#define GL_SAMPLE_BUFFERS 0x80A8
213#define GL_SAMPLES 0x80A9
214#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
215#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
216
217/* GetTextureParameter */
218/* GL_TEXTURE_MAG_FILTER */
219/* GL_TEXTURE_MIN_FILTER */
220/* GL_TEXTURE_WRAP_S */
221/* GL_TEXTURE_WRAP_T */
222
223#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
224#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
225
226/* HintMode */
227#define GL_DONT_CARE 0x1100
228#define GL_FASTEST 0x1101
229#define GL_NICEST 0x1102
230
231/* HintTarget */
232#define GL_GENERATE_MIPMAP_HINT 0x8192
233
234/* DataType */
235#define GL_BYTE 0x1400
236#define GL_UNSIGNED_BYTE 0x1401
237#define GL_SHORT 0x1402
238#define GL_UNSIGNED_SHORT 0x1403
239#define GL_INT 0x1404
240#define GL_UNSIGNED_INT 0x1405
241#define GL_FLOAT 0x1406
242#define GL_FIXED 0x140C
243
244/* PixelFormat */
245#define GL_DEPTH_COMPONENT 0x1902
246#define GL_ALPHA 0x1906
247#define GL_RGB 0x1907
248#define GL_RGBA 0x1908
249#define GL_LUMINANCE 0x1909
250#define GL_LUMINANCE_ALPHA 0x190A
251
252/* PixelType */
253/* GL_UNSIGNED_BYTE */
254#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
255#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
256#define GL_UNSIGNED_SHORT_5_6_5 0x8363
257
258/* Shaders */
259#define GL_FRAGMENT_SHADER 0x8B30
260#define GL_VERTEX_SHADER 0x8B31
261#define GL_MAX_VERTEX_ATTRIBS 0x8869
262#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
263#define GL_MAX_VARYING_VECTORS 0x8DFC
264#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
265#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
266#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
267#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
268#define GL_SHADER_TYPE 0x8B4F
269#define GL_DELETE_STATUS 0x8B80
270#define GL_LINK_STATUS 0x8B82
271#define GL_VALIDATE_STATUS 0x8B83
272#define GL_ATTACHED_SHADERS 0x8B85
273#define GL_ACTIVE_UNIFORMS 0x8B86
274#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
275#define GL_ACTIVE_ATTRIBUTES 0x8B89
276#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
277#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
278#define GL_CURRENT_PROGRAM 0x8B8D
279
280/* StencilFunction */
281#define GL_NEVER 0x0200
282#define GL_LESS 0x0201
283#define GL_EQUAL 0x0202
284#define GL_LEQUAL 0x0203
285#define GL_GREATER 0x0204
286#define GL_NOTEQUAL 0x0205
287#define GL_GEQUAL 0x0206
288#define GL_ALWAYS 0x0207
289
290/* StencilOp */
291/* GL_ZERO */
292#define GL_KEEP 0x1E00
293#define GL_REPLACE 0x1E01
294#define GL_INCR 0x1E02
295#define GL_DECR 0x1E03
296#define GL_INVERT 0x150A
297#define GL_INCR_WRAP 0x8507
298#define GL_DECR_WRAP 0x8508
299
300/* StringName */
301#define GL_VENDOR 0x1F00
302#define GL_RENDERER 0x1F01
303#define GL_VERSION 0x1F02
304#define GL_EXTENSIONS 0x1F03
305
306/* TextureMagFilter */
307#define GL_NEAREST 0x2600
308#define GL_LINEAR 0x2601
309
310/* TextureMinFilter */
311/* GL_NEAREST */
312/* GL_LINEAR */
313#define GL_NEAREST_MIPMAP_NEAREST 0x2700
314#define GL_LINEAR_MIPMAP_NEAREST 0x2701
315#define GL_NEAREST_MIPMAP_LINEAR 0x2702
316#define GL_LINEAR_MIPMAP_LINEAR 0x2703
317
318/* TextureParameterName */
319#define GL_TEXTURE_MAG_FILTER 0x2800
320#define GL_TEXTURE_MIN_FILTER 0x2801
321#define GL_TEXTURE_WRAP_S 0x2802
322#define GL_TEXTURE_WRAP_T 0x2803
323
324/* TextureTarget */
325/* GL_TEXTURE_2D */
326#define GL_TEXTURE 0x1702
327
328#define GL_TEXTURE_CUBE_MAP 0x8513
329#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
330#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
331#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
332#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
333#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
334#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
335#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
336#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
337
338/* TextureUnit */
339#define GL_TEXTURE0 0x84C0
340#define GL_TEXTURE1 0x84C1
341#define GL_TEXTURE2 0x84C2
342#define GL_TEXTURE3 0x84C3
343#define GL_TEXTURE4 0x84C4
344#define GL_TEXTURE5 0x84C5
345#define GL_TEXTURE6 0x84C6
346#define GL_TEXTURE7 0x84C7
347#define GL_TEXTURE8 0x84C8
348#define GL_TEXTURE9 0x84C9
349#define GL_TEXTURE10 0x84CA
350#define GL_TEXTURE11 0x84CB
351#define GL_TEXTURE12 0x84CC
352#define GL_TEXTURE13 0x84CD
353#define GL_TEXTURE14 0x84CE
354#define GL_TEXTURE15 0x84CF
355#define GL_TEXTURE16 0x84D0
356#define GL_TEXTURE17 0x84D1
357#define GL_TEXTURE18 0x84D2
358#define GL_TEXTURE19 0x84D3
359#define GL_TEXTURE20 0x84D4
360#define GL_TEXTURE21 0x84D5
361#define GL_TEXTURE22 0x84D6
362#define GL_TEXTURE23 0x84D7
363#define GL_TEXTURE24 0x84D8
364#define GL_TEXTURE25 0x84D9
365#define GL_TEXTURE26 0x84DA
366#define GL_TEXTURE27 0x84DB
367#define GL_TEXTURE28 0x84DC
368#define GL_TEXTURE29 0x84DD
369#define GL_TEXTURE30 0x84DE
370#define GL_TEXTURE31 0x84DF
371#define GL_ACTIVE_TEXTURE 0x84E0
372
373/* TextureWrapMode */
374#define GL_REPEAT 0x2901
375#define GL_CLAMP_TO_EDGE 0x812F
376#define GL_MIRRORED_REPEAT 0x8370
377
378/* Uniform Types */
379#define GL_FLOAT_VEC2 0x8B50
380#define GL_FLOAT_VEC3 0x8B51
381#define GL_FLOAT_VEC4 0x8B52
382#define GL_INT_VEC2 0x8B53
383#define GL_INT_VEC3 0x8B54
384#define GL_INT_VEC4 0x8B55
385#define GL_BOOL 0x8B56
386#define GL_BOOL_VEC2 0x8B57
387#define GL_BOOL_VEC3 0x8B58
388#define GL_BOOL_VEC4 0x8B59
389#define GL_FLOAT_MAT2 0x8B5A
390#define GL_FLOAT_MAT3 0x8B5B
391#define GL_FLOAT_MAT4 0x8B5C
392#define GL_SAMPLER_2D 0x8B5E
393#define GL_SAMPLER_CUBE 0x8B60
394
395/* Vertex Arrays */
396#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
397#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
398#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
399#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
400#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
401#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
402#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
403
404/* Read Format */
405#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
406#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
407
408/* Shader Source */
409#define GL_COMPILE_STATUS 0x8B81
410#define GL_INFO_LOG_LENGTH 0x8B84
411#define GL_SHADER_SOURCE_LENGTH 0x8B88
412#define GL_SHADER_COMPILER 0x8DFA
413
414/* Shader Binary */
415#define GL_SHADER_BINARY_FORMATS 0x8DF8
416#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
417
418/* Shader Precision-Specified Types */
419#define GL_LOW_FLOAT 0x8DF0
420#define GL_MEDIUM_FLOAT 0x8DF1
421#define GL_HIGH_FLOAT 0x8DF2
422#define GL_LOW_INT 0x8DF3
423#define GL_MEDIUM_INT 0x8DF4
424#define GL_HIGH_INT 0x8DF5
425
426/* Framebuffer Object. */
427#define GL_FRAMEBUFFER 0x8D40
428#define GL_RENDERBUFFER 0x8D41
429
430#define GL_RGBA4 0x8056
431#define GL_RGB5_A1 0x8057
432#define GL_RGB565 0x8D62
433#define GL_DEPTH_COMPONENT16 0x81A5
434#define GL_STENCIL_INDEX8 0x8D48
435
436#define GL_RENDERBUFFER_WIDTH 0x8D42
437#define GL_RENDERBUFFER_HEIGHT 0x8D43
438#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
439#define GL_RENDERBUFFER_RED_SIZE 0x8D50
440#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51
441#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52
442#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
443#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
444#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
445
446#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
447#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
448#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
449#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
450
451#define GL_COLOR_ATTACHMENT0 0x8CE0
452#define GL_DEPTH_ATTACHMENT 0x8D00
453#define GL_STENCIL_ATTACHMENT 0x8D20
454
455#define GL_NONE 0
456
457#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
458#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
459#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
460#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9
461#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
462
463#define GL_FRAMEBUFFER_BINDING 0x8CA6
464#define GL_RENDERBUFFER_BINDING 0x8CA7
465#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
466
467#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
468
469/*-------------------------------------------------------------------------
470 * GL core functions.
471 *-----------------------------------------------------------------------*/
472
473GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture);
474GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader);
475GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar* name);
476GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer);
477GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
478GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
479GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture);
480GL_APICALL void GL_APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
481GL_APICALL void GL_APIENTRY glBlendEquation ( GLenum mode );
482GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
483GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
484GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
485GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
486GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
487GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target);
488GL_APICALL void GL_APIENTRY glClear (GLbitfield mask);
489GL_APICALL void GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
490GL_APICALL void GL_APIENTRY glClearDepthf (GLclampf depth);
491GL_APICALL void GL_APIENTRY glClearStencil (GLint s);
492GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
493GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader);
494GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data);
495GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data);
496GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
497GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
498GL_APICALL GLuint GL_APIENTRY glCreateProgram (void);
499GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type);
500GL_APICALL void GL_APIENTRY glCullFace (GLenum mode);
501GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint* buffers);
502GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers);
503GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program);
504GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers);
505GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader);
506GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint* textures);
507GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func);
508GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag);
509GL_APICALL void GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar);
510GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader);
511GL_APICALL void GL_APIENTRY glDisable (GLenum cap);
512GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index);
513GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
514GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
515GL_APICALL void GL_APIENTRY glEnable (GLenum cap);
516GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index);
517GL_APICALL void GL_APIENTRY glFinish (void);
518GL_APICALL void GL_APIENTRY glFlush (void);
519GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
520GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
521GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode);
522GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint* buffers);
523GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target);
524GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint* framebuffers);
525GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint* renderbuffers);
526GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint* textures);
527GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
528GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
529GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
530GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name);
531GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean* params);
532GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params);
533GL_APICALL GLenum GL_APIENTRY glGetError (void);
534GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat* params);
535GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params);
536GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint* params);
537GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint* params);
538GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
539GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params);
540GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint* params);
541GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
542GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
543GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
544GL_APICALL const GLubyte* GL_APIENTRY glGetString (GLenum name);
545GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params);
546GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint* params);
547GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat* params);
548GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint* params);
549GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar* name);
550GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params);
551GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params);
552GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer);
553GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode);
554GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer);
555GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap);
556GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer);
557GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program);
558GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer);
559GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader);
560GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture);
561GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width);
562GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program);
563GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param);
564GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
565GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
566GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void);
567GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
568GL_APICALL void GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert);
569GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
570GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
571GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length);
572GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
573GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
574GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask);
575GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
576GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
577GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
578GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
579GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
580GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params);
581GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
582GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint* params);
583GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
584GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat x);
585GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat* v);
586GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint x);
587GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint* v);
588GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat x, GLfloat y);
589GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat* v);
590GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint x, GLint y);
591GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint* v);
592GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z);
593GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat* v);
594GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint x, GLint y, GLint z);
595GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint* v);
596GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
597GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat* v);
598GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w);
599GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint* v);
600GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
601GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
602GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
603GL_APICALL void GL_APIENTRY glUseProgram (GLuint program);
604GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program);
605GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint indx, GLfloat x);
606GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint indx, const GLfloat* values);
607GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y);
608GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint indx, const GLfloat* values);
609GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z);
610GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values);
611GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
612GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values);
613GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
614GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
615
616#ifdef __cplusplus
617}
618#endif
619
620#endif /* __gl2_h_ */
621
diff --git a/vendor/SDL2/include/SDL_opengles2_gl2ext.h b/vendor/SDL2/include/SDL_opengles2_gl2ext.h new file mode 100644 index 0000000..e8ca8b1 --- /dev/null +++ b/vendor/SDL2/include/SDL_opengles2_gl2ext.h
@@ -0,0 +1,2050 @@
1#ifndef __gl2ext_h_
2#define __gl2ext_h_
3
4/* $Revision: 22801 $ on $Date:: 2013-08-21 03:20:48 -0700 #$ */
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10/*
11 * This document is licensed under the SGI Free Software B License Version
12 * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
13 */
14
15#ifndef GL_APIENTRYP
16# define GL_APIENTRYP GL_APIENTRY*
17#endif
18
19/* New types shared by several extensions */
20
21#ifndef __gl3_h_
22/* These are defined with respect to <inttypes.h> in the
23 * Apple extension spec, but they are also used by non-APPLE
24 * extensions, and in the Khronos header we use the Khronos
25 * portable types in khrplatform.h, which must be defined.
26 */
27typedef khronos_int64_t GLint64;
28typedef khronos_uint64_t GLuint64;
29typedef struct __GLsync *GLsync;
30#endif
31
32
33/*------------------------------------------------------------------------*
34 * OES extension tokens
35 *------------------------------------------------------------------------*/
36
37/* GL_OES_compressed_ETC1_RGB8_texture */
38#ifndef GL_OES_compressed_ETC1_RGB8_texture
39#define GL_ETC1_RGB8_OES 0x8D64
40#endif
41
42/* GL_OES_compressed_paletted_texture */
43#ifndef GL_OES_compressed_paletted_texture
44#define GL_PALETTE4_RGB8_OES 0x8B90
45#define GL_PALETTE4_RGBA8_OES 0x8B91
46#define GL_PALETTE4_R5_G6_B5_OES 0x8B92
47#define GL_PALETTE4_RGBA4_OES 0x8B93
48#define GL_PALETTE4_RGB5_A1_OES 0x8B94
49#define GL_PALETTE8_RGB8_OES 0x8B95
50#define GL_PALETTE8_RGBA8_OES 0x8B96
51#define GL_PALETTE8_R5_G6_B5_OES 0x8B97
52#define GL_PALETTE8_RGBA4_OES 0x8B98
53#define GL_PALETTE8_RGB5_A1_OES 0x8B99
54#endif
55
56/* GL_OES_depth24 */
57#ifndef GL_OES_depth24
58#define GL_DEPTH_COMPONENT24_OES 0x81A6
59#endif
60
61/* GL_OES_depth32 */
62#ifndef GL_OES_depth32
63#define GL_DEPTH_COMPONENT32_OES 0x81A7
64#endif
65
66/* GL_OES_depth_texture */
67/* No new tokens introduced by this extension. */
68
69/* GL_OES_EGL_image */
70#ifndef GL_OES_EGL_image
71typedef void* GLeglImageOES;
72#endif
73
74/* GL_OES_EGL_image_external */
75#ifndef GL_OES_EGL_image_external
76/* GLeglImageOES defined in GL_OES_EGL_image already. */
77#define GL_TEXTURE_EXTERNAL_OES 0x8D65
78#define GL_SAMPLER_EXTERNAL_OES 0x8D66
79#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67
80#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
81#endif
82
83/* GL_OES_element_index_uint */
84#ifndef GL_OES_element_index_uint
85#define GL_UNSIGNED_INT 0x1405
86#endif
87
88/* GL_OES_get_program_binary */
89#ifndef GL_OES_get_program_binary
90#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741
91#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE
92#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF
93#endif
94
95/* GL_OES_mapbuffer */
96#ifndef GL_OES_mapbuffer
97#define GL_WRITE_ONLY_OES 0x88B9
98#define GL_BUFFER_ACCESS_OES 0x88BB
99#define GL_BUFFER_MAPPED_OES 0x88BC
100#define GL_BUFFER_MAP_POINTER_OES 0x88BD
101#endif
102
103/* GL_OES_packed_depth_stencil */
104#ifndef GL_OES_packed_depth_stencil
105#define GL_DEPTH_STENCIL_OES 0x84F9
106#define GL_UNSIGNED_INT_24_8_OES 0x84FA
107#define GL_DEPTH24_STENCIL8_OES 0x88F0
108#endif
109
110/* GL_OES_required_internalformat */
111#ifndef GL_OES_required_internalformat
112#define GL_ALPHA8_OES 0x803C
113#define GL_DEPTH_COMPONENT16_OES 0x81A5
114/* reuse GL_DEPTH_COMPONENT24_OES */
115/* reuse GL_DEPTH24_STENCIL8_OES */
116/* reuse GL_DEPTH_COMPONENT32_OES */
117#define GL_LUMINANCE4_ALPHA4_OES 0x8043
118#define GL_LUMINANCE8_ALPHA8_OES 0x8045
119#define GL_LUMINANCE8_OES 0x8040
120#define GL_RGBA4_OES 0x8056
121#define GL_RGB5_A1_OES 0x8057
122#define GL_RGB565_OES 0x8D62
123/* reuse GL_RGB8_OES */
124/* reuse GL_RGBA8_OES */
125/* reuse GL_RGB10_EXT */
126/* reuse GL_RGB10_A2_EXT */
127#endif
128
129/* GL_OES_rgb8_rgba8 */
130#ifndef GL_OES_rgb8_rgba8
131#define GL_RGB8_OES 0x8051
132#define GL_RGBA8_OES 0x8058
133#endif
134
135/* GL_OES_standard_derivatives */
136#ifndef GL_OES_standard_derivatives
137#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B
138#endif
139
140/* GL_OES_stencil1 */
141#ifndef GL_OES_stencil1
142#define GL_STENCIL_INDEX1_OES 0x8D46
143#endif
144
145/* GL_OES_stencil4 */
146#ifndef GL_OES_stencil4
147#define GL_STENCIL_INDEX4_OES 0x8D47
148#endif
149
150#ifndef GL_OES_surfaceless_context
151#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219
152#endif
153
154/* GL_OES_texture_3D */
155#ifndef GL_OES_texture_3D
156#define GL_TEXTURE_WRAP_R_OES 0x8072
157#define GL_TEXTURE_3D_OES 0x806F
158#define GL_TEXTURE_BINDING_3D_OES 0x806A
159#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073
160#define GL_SAMPLER_3D_OES 0x8B5F
161#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4
162#endif
163
164/* GL_OES_texture_float */
165/* No new tokens introduced by this extension. */
166
167/* GL_OES_texture_float_linear */
168/* No new tokens introduced by this extension. */
169
170/* GL_OES_texture_half_float */
171#ifndef GL_OES_texture_half_float
172#define GL_HALF_FLOAT_OES 0x8D61
173#endif
174
175/* GL_OES_texture_half_float_linear */
176/* No new tokens introduced by this extension. */
177
178/* GL_OES_texture_npot */
179/* No new tokens introduced by this extension. */
180
181/* GL_OES_vertex_array_object */
182#ifndef GL_OES_vertex_array_object
183#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5
184#endif
185
186/* GL_OES_vertex_half_float */
187/* GL_HALF_FLOAT_OES defined in GL_OES_texture_half_float already. */
188
189/* GL_OES_vertex_type_10_10_10_2 */
190#ifndef GL_OES_vertex_type_10_10_10_2
191#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6
192#define GL_INT_10_10_10_2_OES 0x8DF7
193#endif
194
195/*------------------------------------------------------------------------*
196 * KHR extension tokens
197 *------------------------------------------------------------------------*/
198
199#ifndef GL_KHR_debug
200typedef void (GL_APIENTRYP GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
201#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242
202#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243
203#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244
204#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245
205#define GL_DEBUG_SOURCE_API_KHR 0x8246
206#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247
207#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248
208#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249
209#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A
210#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B
211#define GL_DEBUG_TYPE_ERROR_KHR 0x824C
212#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D
213#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E
214#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F
215#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250
216#define GL_DEBUG_TYPE_OTHER_KHR 0x8251
217#define GL_DEBUG_TYPE_MARKER_KHR 0x8268
218#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269
219#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A
220#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B
221#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C
222#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D
223#define GL_BUFFER_KHR 0x82E0
224#define GL_SHADER_KHR 0x82E1
225#define GL_PROGRAM_KHR 0x82E2
226#define GL_QUERY_KHR 0x82E3
227/* PROGRAM_PIPELINE only in GL */
228#define GL_SAMPLER_KHR 0x82E6
229/* DISPLAY_LIST only in GL */
230#define GL_MAX_LABEL_LENGTH_KHR 0x82E8
231#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143
232#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144
233#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145
234#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146
235#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147
236#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148
237#define GL_DEBUG_OUTPUT_KHR 0x92E0
238#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002
239#define GL_STACK_OVERFLOW_KHR 0x0503
240#define GL_STACK_UNDERFLOW_KHR 0x0504
241#endif
242
243#ifndef GL_KHR_texture_compression_astc_ldr
244#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
245#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
246#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
247#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
248#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
249#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
250#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
251#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
252#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
253#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
254#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
255#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
256#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
257#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
258#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
259#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
260#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
261#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
262#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
263#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
264#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
265#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
266#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
267#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
268#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
269#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
270#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
271#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
272#endif
273
274/*------------------------------------------------------------------------*
275 * AMD extension tokens
276 *------------------------------------------------------------------------*/
277
278/* GL_AMD_compressed_3DC_texture */
279#ifndef GL_AMD_compressed_3DC_texture
280#define GL_3DC_X_AMD 0x87F9
281#define GL_3DC_XY_AMD 0x87FA
282#endif
283
284/* GL_AMD_compressed_ATC_texture */
285#ifndef GL_AMD_compressed_ATC_texture
286#define GL_ATC_RGB_AMD 0x8C92
287#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93
288#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE
289#endif
290
291/* GL_AMD_performance_monitor */
292#ifndef GL_AMD_performance_monitor
293#define GL_COUNTER_TYPE_AMD 0x8BC0
294#define GL_COUNTER_RANGE_AMD 0x8BC1
295#define GL_UNSIGNED_INT64_AMD 0x8BC2
296#define GL_PERCENTAGE_AMD 0x8BC3
297#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4
298#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5
299#define GL_PERFMON_RESULT_AMD 0x8BC6
300#endif
301
302/* GL_AMD_program_binary_Z400 */
303#ifndef GL_AMD_program_binary_Z400
304#define GL_Z400_BINARY_AMD 0x8740
305#endif
306
307/*------------------------------------------------------------------------*
308 * ANGLE extension tokens
309 *------------------------------------------------------------------------*/
310
311/* GL_ANGLE_depth_texture */
312#ifndef GL_ANGLE_depth_texture
313#define GL_DEPTH_COMPONENT 0x1902
314#define GL_DEPTH_STENCIL_OES 0x84F9
315#define GL_UNSIGNED_SHORT 0x1403
316#define GL_UNSIGNED_INT 0x1405
317#define GL_UNSIGNED_INT_24_8_OES 0x84FA
318#define GL_DEPTH_COMPONENT16 0x81A5
319#define GL_DEPTH_COMPONENT32_OES 0x81A7
320#define GL_DEPTH24_STENCIL8_OES 0x88F0
321#endif
322
323/* GL_ANGLE_framebuffer_blit */
324#ifndef GL_ANGLE_framebuffer_blit
325#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8
326#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9
327#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6
328#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA
329#endif
330
331/* GL_ANGLE_framebuffer_multisample */
332#ifndef GL_ANGLE_framebuffer_multisample
333#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB
334#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56
335#define GL_MAX_SAMPLES_ANGLE 0x8D57
336#endif
337
338/* GL_ANGLE_instanced_arrays */
339#ifndef GL_ANGLE_instanced_arrays
340#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE
341#endif
342
343/* GL_ANGLE_pack_reverse_row_order */
344#ifndef GL_ANGLE_pack_reverse_row_order
345#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4
346#endif
347
348/* GL_ANGLE_program_binary */
349#ifndef GL_ANGLE_program_binary
350#define GL_PROGRAM_BINARY_ANGLE 0x93A6
351#endif
352
353/* GL_ANGLE_texture_compression_dxt3 */
354#ifndef GL_ANGLE_texture_compression_dxt3
355#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
356#endif
357
358/* GL_ANGLE_texture_compression_dxt5 */
359#ifndef GL_ANGLE_texture_compression_dxt5
360#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
361#endif
362
363/* GL_ANGLE_texture_usage */
364#ifndef GL_ANGLE_texture_usage
365#define GL_TEXTURE_USAGE_ANGLE 0x93A2
366#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3
367#endif
368
369/* GL_ANGLE_translated_shader_source */
370#ifndef GL_ANGLE_translated_shader_source
371#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0
372#endif
373
374/*------------------------------------------------------------------------*
375 * APPLE extension tokens
376 *------------------------------------------------------------------------*/
377
378/* GL_APPLE_copy_texture_levels */
379/* No new tokens introduced by this extension. */
380
381/* GL_APPLE_framebuffer_multisample */
382#ifndef GL_APPLE_framebuffer_multisample
383#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB
384#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56
385#define GL_MAX_SAMPLES_APPLE 0x8D57
386#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8
387#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9
388#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6
389#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA
390#endif
391
392/* GL_APPLE_rgb_422 */
393#ifndef GL_APPLE_rgb_422
394#define GL_RGB_422_APPLE 0x8A1F
395#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
396#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
397#endif
398
399/* GL_APPLE_sync */
400#ifndef GL_APPLE_sync
401
402#define GL_SYNC_OBJECT_APPLE 0x8A53
403#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111
404#define GL_OBJECT_TYPE_APPLE 0x9112
405#define GL_SYNC_CONDITION_APPLE 0x9113
406#define GL_SYNC_STATUS_APPLE 0x9114
407#define GL_SYNC_FLAGS_APPLE 0x9115
408#define GL_SYNC_FENCE_APPLE 0x9116
409#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117
410#define GL_UNSIGNALED_APPLE 0x9118
411#define GL_SIGNALED_APPLE 0x9119
412#define GL_ALREADY_SIGNALED_APPLE 0x911A
413#define GL_TIMEOUT_EXPIRED_APPLE 0x911B
414#define GL_CONDITION_SATISFIED_APPLE 0x911C
415#define GL_WAIT_FAILED_APPLE 0x911D
416#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001
417#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull
418#endif
419
420/* GL_APPLE_texture_format_BGRA8888 */
421#ifndef GL_APPLE_texture_format_BGRA8888
422#define GL_BGRA_EXT 0x80E1
423#endif
424
425/* GL_APPLE_texture_max_level */
426#ifndef GL_APPLE_texture_max_level
427#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D
428#endif
429
430/*------------------------------------------------------------------------*
431 * ARM extension tokens
432 *------------------------------------------------------------------------*/
433
434/* GL_ARM_mali_program_binary */
435#ifndef GL_ARM_mali_program_binary
436#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61
437#endif
438
439/* GL_ARM_mali_shader_binary */
440#ifndef GL_ARM_mali_shader_binary
441#define GL_MALI_SHADER_BINARY_ARM 0x8F60
442#endif
443
444/* GL_ARM_rgba8 */
445/* No new tokens introduced by this extension. */
446
447/*------------------------------------------------------------------------*
448 * EXT extension tokens
449 *------------------------------------------------------------------------*/
450
451/* GL_EXT_blend_minmax */
452#ifndef GL_EXT_blend_minmax
453#define GL_MIN_EXT 0x8007
454#define GL_MAX_EXT 0x8008
455#endif
456
457/* GL_EXT_color_buffer_half_float */
458#ifndef GL_EXT_color_buffer_half_float
459#define GL_RGBA16F_EXT 0x881A
460#define GL_RGB16F_EXT 0x881B
461#define GL_RG16F_EXT 0x822F
462#define GL_R16F_EXT 0x822D
463#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211
464#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17
465#endif
466
467/* GL_EXT_debug_label */
468#ifndef GL_EXT_debug_label
469#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F
470#define GL_PROGRAM_OBJECT_EXT 0x8B40
471#define GL_SHADER_OBJECT_EXT 0x8B48
472#define GL_BUFFER_OBJECT_EXT 0x9151
473#define GL_QUERY_OBJECT_EXT 0x9153
474#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154
475#endif
476
477/* GL_EXT_debug_marker */
478/* No new tokens introduced by this extension. */
479
480/* GL_EXT_discard_framebuffer */
481#ifndef GL_EXT_discard_framebuffer
482#define GL_COLOR_EXT 0x1800
483#define GL_DEPTH_EXT 0x1801
484#define GL_STENCIL_EXT 0x1802
485#endif
486
487#ifndef GL_EXT_disjoint_timer_query
488#define GL_QUERY_COUNTER_BITS_EXT 0x8864
489#define GL_CURRENT_QUERY_EXT 0x8865
490#define GL_QUERY_RESULT_EXT 0x8866
491#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867
492#define GL_TIME_ELAPSED_EXT 0x88BF
493#define GL_TIMESTAMP_EXT 0x8E28
494#define GL_GPU_DISJOINT_EXT 0x8FBB
495#endif
496
497#ifndef GL_EXT_draw_buffers
498#define GL_EXT_draw_buffers 1
499#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
500#define GL_MAX_DRAW_BUFFERS_EXT 0x8824
501#define GL_DRAW_BUFFER0_EXT 0x8825
502#define GL_DRAW_BUFFER1_EXT 0x8826
503#define GL_DRAW_BUFFER2_EXT 0x8827
504#define GL_DRAW_BUFFER3_EXT 0x8828
505#define GL_DRAW_BUFFER4_EXT 0x8829
506#define GL_DRAW_BUFFER5_EXT 0x882A
507#define GL_DRAW_BUFFER6_EXT 0x882B
508#define GL_DRAW_BUFFER7_EXT 0x882C
509#define GL_DRAW_BUFFER8_EXT 0x882D
510#define GL_DRAW_BUFFER9_EXT 0x882E
511#define GL_DRAW_BUFFER10_EXT 0x882F
512#define GL_DRAW_BUFFER11_EXT 0x8830
513#define GL_DRAW_BUFFER12_EXT 0x8831
514#define GL_DRAW_BUFFER13_EXT 0x8832
515#define GL_DRAW_BUFFER14_EXT 0x8833
516#define GL_DRAW_BUFFER15_EXT 0x8834
517#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0
518#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1
519#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2
520#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3
521#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4
522#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5
523#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6
524#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7
525#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8
526#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9
527#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA
528#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB
529#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC
530#define GL_COLOR_ATTACHMENT13_EXT 0x8CED
531#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE
532#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF
533#endif
534
535/* GL_EXT_map_buffer_range */
536#ifndef GL_EXT_map_buffer_range
537#define GL_MAP_READ_BIT_EXT 0x0001
538#define GL_MAP_WRITE_BIT_EXT 0x0002
539#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004
540#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008
541#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010
542#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020
543#endif
544
545/* GL_EXT_multisampled_render_to_texture */
546#ifndef GL_EXT_multisampled_render_to_texture
547#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C
548/* reuse values from GL_EXT_framebuffer_multisample (desktop extension) */
549#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
550#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
551#define GL_MAX_SAMPLES_EXT 0x8D57
552#endif
553
554/* GL_EXT_multiview_draw_buffers */
555#ifndef GL_EXT_multiview_draw_buffers
556#define GL_COLOR_ATTACHMENT_EXT 0x90F0
557#define GL_MULTIVIEW_EXT 0x90F1
558#define GL_DRAW_BUFFER_EXT 0x0C01
559#define GL_READ_BUFFER_EXT 0x0C02
560#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2
561#endif
562
563/* GL_EXT_multi_draw_arrays */
564/* No new tokens introduced by this extension. */
565
566/* GL_EXT_occlusion_query_boolean */
567#ifndef GL_EXT_occlusion_query_boolean
568#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F
569#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A
570#define GL_CURRENT_QUERY_EXT 0x8865
571#define GL_QUERY_RESULT_EXT 0x8866
572#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867
573#endif
574
575/* GL_EXT_read_format_bgra */
576#ifndef GL_EXT_read_format_bgra
577#define GL_BGRA_EXT 0x80E1
578#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365
579#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366
580#endif
581
582/* GL_EXT_robustness */
583#ifndef GL_EXT_robustness
584/* reuse GL_NO_ERROR */
585#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253
586#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254
587#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255
588#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3
589#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256
590#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252
591#define GL_NO_RESET_NOTIFICATION_EXT 0x8261
592#endif
593
594/* GL_EXT_separate_shader_objects */
595#ifndef GL_EXT_separate_shader_objects
596#define GL_VERTEX_SHADER_BIT_EXT 0x00000001
597#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002
598#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF
599#define GL_PROGRAM_SEPARABLE_EXT 0x8258
600#define GL_ACTIVE_PROGRAM_EXT 0x8259
601#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A
602#endif
603
604/* GL_EXT_shader_framebuffer_fetch */
605#ifndef GL_EXT_shader_framebuffer_fetch
606#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
607#endif
608
609/* GL_EXT_shader_texture_lod */
610/* No new tokens introduced by this extension. */
611
612/* GL_EXT_shadow_samplers */
613#ifndef GL_EXT_shadow_samplers
614#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C
615#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D
616#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E
617#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62
618#endif
619
620/* GL_EXT_sRGB */
621#ifndef GL_EXT_sRGB
622#define GL_SRGB_EXT 0x8C40
623#define GL_SRGB_ALPHA_EXT 0x8C42
624#define GL_SRGB8_ALPHA8_EXT 0x8C43
625#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210
626#endif
627
628/* GL_EXT_sRGB_write_control */
629#ifndef GL_EXT_sRGB_write_control
630#define GL_EXT_sRGB_write_control 1
631#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
632#endif
633
634/* GL_EXT_texture_compression_dxt1 */
635#ifndef GL_EXT_texture_compression_dxt1
636#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
637#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
638#endif
639
640/* GL_EXT_texture_filter_anisotropic */
641#ifndef GL_EXT_texture_filter_anisotropic
642#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
643#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
644#endif
645
646/* GL_EXT_texture_format_BGRA8888 */
647#ifndef GL_EXT_texture_format_BGRA8888
648#define GL_BGRA_EXT 0x80E1
649#endif
650
651/* GL_EXT_texture_rg */
652#ifndef GL_EXT_texture_rg
653#define GL_RED_EXT 0x1903
654#define GL_RG_EXT 0x8227
655#define GL_R8_EXT 0x8229
656#define GL_RG8_EXT 0x822B
657#endif
658
659/* GL_EXT_texture_sRGB_decode */
660#ifndef GL_EXT_texture_sRGB_decode
661#define GL_EXT_texture_sRGB_decode 1
662#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48
663#define GL_DECODE_EXT 0x8A49
664#define GL_SKIP_DECODE_EXT 0x8A4A
665#endif
666
667/* GL_EXT_texture_storage */
668#ifndef GL_EXT_texture_storage
669#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F
670#define GL_ALPHA8_EXT 0x803C
671#define GL_LUMINANCE8_EXT 0x8040
672#define GL_LUMINANCE8_ALPHA8_EXT 0x8045
673#define GL_RGBA32F_EXT 0x8814
674#define GL_RGB32F_EXT 0x8815
675#define GL_ALPHA32F_EXT 0x8816
676#define GL_LUMINANCE32F_EXT 0x8818
677#define GL_LUMINANCE_ALPHA32F_EXT 0x8819
678/* reuse GL_RGBA16F_EXT */
679/* reuse GL_RGB16F_EXT */
680#define GL_ALPHA16F_EXT 0x881C
681#define GL_LUMINANCE16F_EXT 0x881E
682#define GL_LUMINANCE_ALPHA16F_EXT 0x881F
683#define GL_RGB10_A2_EXT 0x8059
684#define GL_RGB10_EXT 0x8052
685#define GL_BGRA8_EXT 0x93A1
686#define GL_R8_EXT 0x8229
687#define GL_RG8_EXT 0x822B
688#define GL_R32F_EXT 0x822E
689#define GL_RG32F_EXT 0x8230
690#define GL_R16F_EXT 0x822D
691#define GL_RG16F_EXT 0x822F
692#endif
693
694/* GL_EXT_texture_type_2_10_10_10_REV */
695#ifndef GL_EXT_texture_type_2_10_10_10_REV
696#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368
697#endif
698
699/* GL_EXT_unpack_subimage */
700#ifndef GL_EXT_unpack_subimage
701#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2
702#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3
703#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4
704#endif
705
706/*------------------------------------------------------------------------*
707 * DMP extension tokens
708 *------------------------------------------------------------------------*/
709
710/* GL_DMP_shader_binary */
711#ifndef GL_DMP_shader_binary
712#define GL_SHADER_BINARY_DMP 0x9250
713#endif
714
715/*------------------------------------------------------------------------*
716 * FJ extension tokens
717 *------------------------------------------------------------------------*/
718
719/* GL_FJ_shader_binary_GCCSO */
720#ifndef GL_FJ_shader_binary_GCCSO
721#define GL_GCCSO_SHADER_BINARY_FJ 0x9260
722#endif
723
724/*------------------------------------------------------------------------*
725 * IMG extension tokens
726 *------------------------------------------------------------------------*/
727
728/* GL_IMG_program_binary */
729#ifndef GL_IMG_program_binary
730#define GL_SGX_PROGRAM_BINARY_IMG 0x9130
731#endif
732
733/* GL_IMG_read_format */
734#ifndef GL_IMG_read_format
735#define GL_BGRA_IMG 0x80E1
736#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365
737#endif
738
739/* GL_IMG_shader_binary */
740#ifndef GL_IMG_shader_binary
741#define GL_SGX_BINARY_IMG 0x8C0A
742#endif
743
744/* GL_IMG_texture_compression_pvrtc */
745#ifndef GL_IMG_texture_compression_pvrtc
746#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00
747#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01
748#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02
749#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03
750#endif
751
752/* GL_IMG_texture_compression_pvrtc2 */
753#ifndef GL_IMG_texture_compression_pvrtc2
754#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137
755#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138
756#endif
757
758/* GL_IMG_multisampled_render_to_texture */
759#ifndef GL_IMG_multisampled_render_to_texture
760#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133
761#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134
762#define GL_MAX_SAMPLES_IMG 0x9135
763#define GL_TEXTURE_SAMPLES_IMG 0x9136
764#endif
765
766/*------------------------------------------------------------------------*
767 * NV extension tokens
768 *------------------------------------------------------------------------*/
769
770/* GL_NV_coverage_sample */
771#ifndef GL_NV_coverage_sample
772#define GL_COVERAGE_COMPONENT_NV 0x8ED0
773#define GL_COVERAGE_COMPONENT4_NV 0x8ED1
774#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2
775#define GL_COVERAGE_BUFFERS_NV 0x8ED3
776#define GL_COVERAGE_SAMPLES_NV 0x8ED4
777#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5
778#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6
779#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7
780#define GL_COVERAGE_BUFFER_BIT_NV 0x00008000
781#endif
782
783/* GL_NV_depth_nonlinear */
784#ifndef GL_NV_depth_nonlinear
785#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C
786#endif
787
788/* GL_NV_draw_buffers */
789#ifndef GL_NV_draw_buffers
790#define GL_MAX_DRAW_BUFFERS_NV 0x8824
791#define GL_DRAW_BUFFER0_NV 0x8825
792#define GL_DRAW_BUFFER1_NV 0x8826
793#define GL_DRAW_BUFFER2_NV 0x8827
794#define GL_DRAW_BUFFER3_NV 0x8828
795#define GL_DRAW_BUFFER4_NV 0x8829
796#define GL_DRAW_BUFFER5_NV 0x882A
797#define GL_DRAW_BUFFER6_NV 0x882B
798#define GL_DRAW_BUFFER7_NV 0x882C
799#define GL_DRAW_BUFFER8_NV 0x882D
800#define GL_DRAW_BUFFER9_NV 0x882E
801#define GL_DRAW_BUFFER10_NV 0x882F
802#define GL_DRAW_BUFFER11_NV 0x8830
803#define GL_DRAW_BUFFER12_NV 0x8831
804#define GL_DRAW_BUFFER13_NV 0x8832
805#define GL_DRAW_BUFFER14_NV 0x8833
806#define GL_DRAW_BUFFER15_NV 0x8834
807#define GL_COLOR_ATTACHMENT0_NV 0x8CE0
808#define GL_COLOR_ATTACHMENT1_NV 0x8CE1
809#define GL_COLOR_ATTACHMENT2_NV 0x8CE2
810#define GL_COLOR_ATTACHMENT3_NV 0x8CE3
811#define GL_COLOR_ATTACHMENT4_NV 0x8CE4
812#define GL_COLOR_ATTACHMENT5_NV 0x8CE5
813#define GL_COLOR_ATTACHMENT6_NV 0x8CE6
814#define GL_COLOR_ATTACHMENT7_NV 0x8CE7
815#define GL_COLOR_ATTACHMENT8_NV 0x8CE8
816#define GL_COLOR_ATTACHMENT9_NV 0x8CE9
817#define GL_COLOR_ATTACHMENT10_NV 0x8CEA
818#define GL_COLOR_ATTACHMENT11_NV 0x8CEB
819#define GL_COLOR_ATTACHMENT12_NV 0x8CEC
820#define GL_COLOR_ATTACHMENT13_NV 0x8CED
821#define GL_COLOR_ATTACHMENT14_NV 0x8CEE
822#define GL_COLOR_ATTACHMENT15_NV 0x8CEF
823#endif
824
825/* GL_NV_draw_instanced */
826/* No new tokens introduced by this extension. */
827
828/* GL_NV_fbo_color_attachments */
829#ifndef GL_NV_fbo_color_attachments
830#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF
831/* GL_COLOR_ATTACHMENT{0-15}_NV defined in GL_NV_draw_buffers already. */
832#endif
833
834/* GL_NV_fence */
835#ifndef GL_NV_fence
836#define GL_ALL_COMPLETED_NV 0x84F2
837#define GL_FENCE_STATUS_NV 0x84F3
838#define GL_FENCE_CONDITION_NV 0x84F4
839#endif
840
841/* GL_NV_framebuffer_blit */
842#ifndef GL_NV_framebuffer_blit
843#define GL_READ_FRAMEBUFFER_NV 0x8CA8
844#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9
845#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6
846#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA
847#endif
848
849/* GL_NV_framebuffer_multisample */
850#ifndef GL_NV_framebuffer_multisample
851#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB
852#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56
853#define GL_MAX_SAMPLES_NV 0x8D57
854#endif
855
856/* GL_NV_generate_mipmap_sRGB */
857/* No new tokens introduced by this extension. */
858
859/* GL_NV_instanced_arrays */
860#ifndef GL_NV_instanced_arrays
861#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE
862#endif
863
864/* GL_NV_read_buffer */
865#ifndef GL_NV_read_buffer
866#define GL_READ_BUFFER_NV 0x0C02
867#endif
868
869/* GL_NV_read_buffer_front */
870/* No new tokens introduced by this extension. */
871
872/* GL_NV_read_depth */
873/* No new tokens introduced by this extension. */
874
875/* GL_NV_read_depth_stencil */
876/* No new tokens introduced by this extension. */
877
878/* GL_NV_read_stencil */
879/* No new tokens introduced by this extension. */
880
881/* GL_NV_shadow_samplers_array */
882#ifndef GL_NV_shadow_samplers_array
883#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4
884#endif
885
886/* GL_NV_shadow_samplers_cube */
887#ifndef GL_NV_shadow_samplers_cube
888#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5
889#endif
890
891/* GL_NV_sRGB_formats */
892#ifndef GL_NV_sRGB_formats
893#define GL_SLUMINANCE_NV 0x8C46
894#define GL_SLUMINANCE_ALPHA_NV 0x8C44
895#define GL_SRGB8_NV 0x8C41
896#define GL_SLUMINANCE8_NV 0x8C47
897#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45
898#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C
899#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D
900#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E
901#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F
902#define GL_ETC1_SRGB8_NV 0x88EE
903#endif
904
905/* GL_NV_texture_border_clamp */
906#ifndef GL_NV_texture_border_clamp
907#define GL_TEXTURE_BORDER_COLOR_NV 0x1004
908#define GL_CLAMP_TO_BORDER_NV 0x812D
909#endif
910
911/* GL_NV_texture_compression_s3tc_update */
912/* No new tokens introduced by this extension. */
913
914/* GL_NV_texture_npot_2D_mipmap */
915/* No new tokens introduced by this extension. */
916
917/*------------------------------------------------------------------------*
918 * QCOM extension tokens
919 *------------------------------------------------------------------------*/
920
921/* GL_QCOM_alpha_test */
922#ifndef GL_QCOM_alpha_test
923#define GL_ALPHA_TEST_QCOM 0x0BC0
924#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1
925#define GL_ALPHA_TEST_REF_QCOM 0x0BC2
926#endif
927
928/* GL_QCOM_binning_control */
929#ifndef GL_QCOM_binning_control
930#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0
931#define GL_CPU_OPTIMIZED_QCOM 0x8FB1
932#define GL_GPU_OPTIMIZED_QCOM 0x8FB2
933#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3
934#endif
935
936/* GL_QCOM_driver_control */
937/* No new tokens introduced by this extension. */
938
939/* GL_QCOM_extended_get */
940#ifndef GL_QCOM_extended_get
941#define GL_TEXTURE_WIDTH_QCOM 0x8BD2
942#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3
943#define GL_TEXTURE_DEPTH_QCOM 0x8BD4
944#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5
945#define GL_TEXTURE_FORMAT_QCOM 0x8BD6
946#define GL_TEXTURE_TYPE_QCOM 0x8BD7
947#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8
948#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9
949#define GL_TEXTURE_TARGET_QCOM 0x8BDA
950#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB
951#define GL_STATE_RESTORE 0x8BDC
952#endif
953
954/* GL_QCOM_extended_get2 */
955/* No new tokens introduced by this extension. */
956
957/* GL_QCOM_perfmon_global_mode */
958#ifndef GL_QCOM_perfmon_global_mode
959#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0
960#endif
961
962/* GL_QCOM_writeonly_rendering */
963#ifndef GL_QCOM_writeonly_rendering
964#define GL_WRITEONLY_RENDERING_QCOM 0x8823
965#endif
966
967/* GL_QCOM_tiled_rendering */
968#ifndef GL_QCOM_tiled_rendering
969#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001
970#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002
971#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004
972#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008
973#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010
974#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020
975#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040
976#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080
977#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100
978#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200
979#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400
980#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800
981#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000
982#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000
983#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000
984#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000
985#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000
986#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000
987#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000
988#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000
989#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000
990#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000
991#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000
992#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000
993#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000
994#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000
995#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000
996#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000
997#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000
998#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000
999#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000
1000#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000
1001#endif
1002
1003/*------------------------------------------------------------------------*
1004 * VIV extension tokens
1005 *------------------------------------------------------------------------*/
1006
1007/* GL_VIV_shader_binary */
1008#ifndef GL_VIV_shader_binary
1009#define GL_SHADER_BINARY_VIV 0x8FC4
1010#endif
1011
1012/*------------------------------------------------------------------------*
1013 * End of extension tokens, start of corresponding extension functions
1014 *------------------------------------------------------------------------*/
1015
1016/*------------------------------------------------------------------------*
1017 * OES extension functions
1018 *------------------------------------------------------------------------*/
1019
1020/* GL_OES_compressed_ETC1_RGB8_texture */
1021#ifndef GL_OES_compressed_ETC1_RGB8_texture
1022#define GL_OES_compressed_ETC1_RGB8_texture 1
1023#endif
1024
1025/* GL_OES_compressed_paletted_texture */
1026#ifndef GL_OES_compressed_paletted_texture
1027#define GL_OES_compressed_paletted_texture 1
1028#endif
1029
1030/* GL_OES_depth24 */
1031#ifndef GL_OES_depth24
1032#define GL_OES_depth24 1
1033#endif
1034
1035/* GL_OES_depth32 */
1036#ifndef GL_OES_depth32
1037#define GL_OES_depth32 1
1038#endif
1039
1040/* GL_OES_depth_texture */
1041#ifndef GL_OES_depth_texture
1042#define GL_OES_depth_texture 1
1043#endif
1044
1045/* GL_OES_EGL_image */
1046#ifndef GL_OES_EGL_image
1047#define GL_OES_EGL_image 1
1048#ifdef GL_GLEXT_PROTOTYPES
1049GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image);
1050GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image);
1051#endif
1052typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
1053typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
1054#endif
1055
1056/* GL_OES_EGL_image_external */
1057#ifndef GL_OES_EGL_image_external
1058#define GL_OES_EGL_image_external 1
1059/* glEGLImageTargetTexture2DOES defined in GL_OES_EGL_image already. */
1060#endif
1061
1062/* GL_OES_element_index_uint */
1063#ifndef GL_OES_element_index_uint
1064#define GL_OES_element_index_uint 1
1065#endif
1066
1067/* GL_OES_fbo_render_mipmap */
1068#ifndef GL_OES_fbo_render_mipmap
1069#define GL_OES_fbo_render_mipmap 1
1070#endif
1071
1072/* GL_OES_fragment_precision_high */
1073#ifndef GL_OES_fragment_precision_high
1074#define GL_OES_fragment_precision_high 1
1075#endif
1076
1077/* GL_OES_get_program_binary */
1078#ifndef GL_OES_get_program_binary
1079#define GL_OES_get_program_binary 1
1080#ifdef GL_GLEXT_PROTOTYPES
1081GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
1082GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length);
1083#endif
1084typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
1085typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length);
1086#endif
1087
1088/* GL_OES_mapbuffer */
1089#ifndef GL_OES_mapbuffer
1090#define GL_OES_mapbuffer 1
1091#ifdef GL_GLEXT_PROTOTYPES
1092GL_APICALL void* GL_APIENTRY glMapBufferOES (GLenum target, GLenum access);
1093GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target);
1094GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, GLvoid **params);
1095#endif
1096typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access);
1097typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target);
1098typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid **params);
1099#endif
1100
1101/* GL_OES_packed_depth_stencil */
1102#ifndef GL_OES_packed_depth_stencil
1103#define GL_OES_packed_depth_stencil 1
1104#endif
1105
1106/* GL_OES_required_internalformat */
1107#ifndef GL_OES_required_internalformat
1108#define GL_OES_required_internalformat 1
1109#endif
1110
1111/* GL_OES_rgb8_rgba8 */
1112#ifndef GL_OES_rgb8_rgba8
1113#define GL_OES_rgb8_rgba8 1
1114#endif
1115
1116/* GL_OES_standard_derivatives */
1117#ifndef GL_OES_standard_derivatives
1118#define GL_OES_standard_derivatives 1
1119#endif
1120
1121/* GL_OES_stencil1 */
1122#ifndef GL_OES_stencil1
1123#define GL_OES_stencil1 1
1124#endif
1125
1126/* GL_OES_stencil4 */
1127#ifndef GL_OES_stencil4
1128#define GL_OES_stencil4 1
1129#endif
1130
1131#ifndef GL_OES_surfaceless_context
1132#define GL_OES_surfaceless_context 1
1133#endif
1134
1135/* GL_OES_texture_3D */
1136#ifndef GL_OES_texture_3D
1137#define GL_OES_texture_3D 1
1138#ifdef GL_GLEXT_PROTOTYPES
1139GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
1140GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
1141GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
1142GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
1143GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
1144GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
1145#endif
1146typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
1147typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
1148typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
1149typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
1150typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
1151typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
1152#endif
1153
1154/* GL_OES_texture_float */
1155#ifndef GL_OES_texture_float
1156#define GL_OES_texture_float 1
1157#endif
1158
1159/* GL_OES_texture_float_linear */
1160#ifndef GL_OES_texture_float_linear
1161#define GL_OES_texture_float_linear 1
1162#endif
1163
1164/* GL_OES_texture_half_float */
1165#ifndef GL_OES_texture_half_float
1166#define GL_OES_texture_half_float 1
1167#endif
1168
1169/* GL_OES_texture_half_float_linear */
1170#ifndef GL_OES_texture_half_float_linear
1171#define GL_OES_texture_half_float_linear 1
1172#endif
1173
1174/* GL_OES_texture_npot */
1175#ifndef GL_OES_texture_npot
1176#define GL_OES_texture_npot 1
1177#endif
1178
1179/* GL_OES_vertex_array_object */
1180#ifndef GL_OES_vertex_array_object
1181#define GL_OES_vertex_array_object 1
1182#ifdef GL_GLEXT_PROTOTYPES
1183GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array);
1184GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays);
1185GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays);
1186GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array);
1187#endif
1188typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array);
1189typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays);
1190typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays);
1191typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array);
1192#endif
1193
1194/* GL_OES_vertex_half_float */
1195#ifndef GL_OES_vertex_half_float
1196#define GL_OES_vertex_half_float 1
1197#endif
1198
1199/* GL_OES_vertex_type_10_10_10_2 */
1200#ifndef GL_OES_vertex_type_10_10_10_2
1201#define GL_OES_vertex_type_10_10_10_2 1
1202#endif
1203
1204/*------------------------------------------------------------------------*
1205 * KHR extension functions
1206 *------------------------------------------------------------------------*/
1207
1208#ifndef GL_KHR_debug
1209#define GL_KHR_debug 1
1210#ifdef GL_GLEXT_PROTOTYPES
1211GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
1212GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
1213GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam);
1214GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
1215GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message);
1216GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void);
1217GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
1218GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
1219GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label);
1220GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
1221GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, GLvoid **params);
1222#endif
1223typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
1224typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
1225typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam);
1226typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
1227typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
1228typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void);
1229typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
1230typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
1231typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label);
1232typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
1233typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, GLvoid **params);
1234#endif
1235
1236#ifndef GL_KHR_texture_compression_astc_ldr
1237#define GL_KHR_texture_compression_astc_ldr 1
1238#endif
1239
1240
1241/*------------------------------------------------------------------------*
1242 * AMD extension functions
1243 *------------------------------------------------------------------------*/
1244
1245/* GL_AMD_compressed_3DC_texture */
1246#ifndef GL_AMD_compressed_3DC_texture
1247#define GL_AMD_compressed_3DC_texture 1
1248#endif
1249
1250/* GL_AMD_compressed_ATC_texture */
1251#ifndef GL_AMD_compressed_ATC_texture
1252#define GL_AMD_compressed_ATC_texture 1
1253#endif
1254
1255/* AMD_performance_monitor */
1256#ifndef GL_AMD_performance_monitor
1257#define GL_AMD_performance_monitor 1
1258#ifdef GL_GLEXT_PROTOTYPES
1259GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
1260GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
1261GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
1262GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
1263GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, GLvoid *data);
1264GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
1265GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
1266GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList);
1267GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
1268GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor);
1269GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
1270#endif
1271typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
1272typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
1273typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
1274typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
1275typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, GLvoid *data);
1276typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
1277typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
1278typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList);
1279typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
1280typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
1281typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
1282#endif
1283
1284/* GL_AMD_program_binary_Z400 */
1285#ifndef GL_AMD_program_binary_Z400
1286#define GL_AMD_program_binary_Z400 1
1287#endif
1288
1289/*------------------------------------------------------------------------*
1290 * ANGLE extension functions
1291 *------------------------------------------------------------------------*/
1292
1293/* GL_ANGLE_depth_texture */
1294#ifndef GL_ANGLE_depth_texture
1295#define GL_ANGLE_depth_texture 1
1296#endif
1297
1298/* GL_ANGLE_framebuffer_blit */
1299#ifndef GL_ANGLE_framebuffer_blit
1300#define GL_ANGLE_framebuffer_blit 1
1301#ifdef GL_GLEXT_PROTOTYPES
1302GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
1303#endif
1304typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
1305#endif
1306
1307/* GL_ANGLE_framebuffer_multisample */
1308#ifndef GL_ANGLE_framebuffer_multisample
1309#define GL_ANGLE_framebuffer_multisample 1
1310#ifdef GL_GLEXT_PROTOTYPES
1311GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1312#endif
1313typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1314#endif
1315
1316#ifndef GL_ANGLE_instanced_arrays
1317#define GL_ANGLE_instanced_arrays 1
1318#ifdef GL_GLEXT_PROTOTYPES
1319GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
1320GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
1321GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor);
1322#endif
1323typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
1324typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
1325typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor);
1326#endif
1327
1328/* GL_ANGLE_pack_reverse_row_order */
1329#ifndef GL_ANGLE_pack_reverse_row_order
1330#define GL_ANGLE_pack_reverse_row_order 1
1331#endif
1332
1333/* GL_ANGLE_program_binary */
1334#ifndef GL_ANGLE_program_binary
1335#define GL_ANGLE_program_binary 1
1336#endif
1337
1338/* GL_ANGLE_texture_compression_dxt3 */
1339#ifndef GL_ANGLE_texture_compression_dxt3
1340#define GL_ANGLE_texture_compression_dxt3 1
1341#endif
1342
1343/* GL_ANGLE_texture_compression_dxt5 */
1344#ifndef GL_ANGLE_texture_compression_dxt5
1345#define GL_ANGLE_texture_compression_dxt5 1
1346#endif
1347
1348/* GL_ANGLE_texture_usage */
1349#ifndef GL_ANGLE_texture_usage
1350#define GL_ANGLE_texture_usage 1
1351#endif
1352
1353#ifndef GL_ANGLE_translated_shader_source
1354#define GL_ANGLE_translated_shader_source 1
1355#ifdef GL_GLEXT_PROTOTYPES
1356GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source);
1357#endif
1358typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source);
1359#endif
1360
1361/*------------------------------------------------------------------------*
1362 * APPLE extension functions
1363 *------------------------------------------------------------------------*/
1364
1365/* GL_APPLE_copy_texture_levels */
1366#ifndef GL_APPLE_copy_texture_levels
1367#define GL_APPLE_copy_texture_levels 1
1368#ifdef GL_GLEXT_PROTOTYPES
1369GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
1370#endif
1371typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
1372#endif
1373
1374/* GL_APPLE_framebuffer_multisample */
1375#ifndef GL_APPLE_framebuffer_multisample
1376#define GL_APPLE_framebuffer_multisample 1
1377#ifdef GL_GLEXT_PROTOTYPES
1378GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1379GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void);
1380#endif /* GL_GLEXT_PROTOTYPES */
1381typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1382typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void);
1383#endif
1384
1385/* GL_APPLE_rgb_422 */
1386#ifndef GL_APPLE_rgb_422
1387#define GL_APPLE_rgb_422 1
1388#endif
1389
1390/* GL_APPLE_sync */
1391#ifndef GL_APPLE_sync
1392#define GL_APPLE_sync 1
1393#ifdef GL_GLEXT_PROTOTYPES
1394GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags);
1395GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync);
1396GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync);
1397GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout);
1398GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout);
1399GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params);
1400GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
1401#endif
1402typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags);
1403typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync);
1404typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync);
1405typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
1406typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
1407typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params);
1408typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
1409#endif
1410
1411/* GL_APPLE_texture_format_BGRA8888 */
1412#ifndef GL_APPLE_texture_format_BGRA8888
1413#define GL_APPLE_texture_format_BGRA8888 1
1414#endif
1415
1416/* GL_APPLE_texture_max_level */
1417#ifndef GL_APPLE_texture_max_level
1418#define GL_APPLE_texture_max_level 1
1419#endif
1420
1421/*------------------------------------------------------------------------*
1422 * ARM extension functions
1423 *------------------------------------------------------------------------*/
1424
1425/* GL_ARM_mali_program_binary */
1426#ifndef GL_ARM_mali_program_binary
1427#define GL_ARM_mali_program_binary 1
1428#endif
1429
1430/* GL_ARM_mali_shader_binary */
1431#ifndef GL_ARM_mali_shader_binary
1432#define GL_ARM_mali_shader_binary 1
1433#endif
1434
1435/* GL_ARM_rgba8 */
1436#ifndef GL_ARM_rgba8
1437#define GL_ARM_rgba8 1
1438#endif
1439
1440/*------------------------------------------------------------------------*
1441 * EXT extension functions
1442 *------------------------------------------------------------------------*/
1443
1444/* GL_EXT_blend_minmax */
1445#ifndef GL_EXT_blend_minmax
1446#define GL_EXT_blend_minmax 1
1447#endif
1448
1449/* GL_EXT_color_buffer_half_float */
1450#ifndef GL_EXT_color_buffer_half_float
1451#define GL_EXT_color_buffer_half_float 1
1452#endif
1453
1454/* GL_EXT_debug_label */
1455#ifndef GL_EXT_debug_label
1456#define GL_EXT_debug_label 1
1457#ifdef GL_GLEXT_PROTOTYPES
1458GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label);
1459GL_APICALL void GL_APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
1460#endif
1461typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);
1462typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
1463#endif
1464
1465/* GL_EXT_debug_marker */
1466#ifndef GL_EXT_debug_marker
1467#define GL_EXT_debug_marker 1
1468#ifdef GL_GLEXT_PROTOTYPES
1469GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker);
1470GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker);
1471GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void);
1472#endif
1473typedef void (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);
1474typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);
1475typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void);
1476#endif
1477
1478/* GL_EXT_discard_framebuffer */
1479#ifndef GL_EXT_discard_framebuffer
1480#define GL_EXT_discard_framebuffer 1
1481#ifdef GL_GLEXT_PROTOTYPES
1482GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments);
1483#endif
1484typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
1485#endif
1486
1487#ifndef GL_EXT_disjoint_timer_query
1488#define GL_EXT_disjoint_timer_query 1
1489#ifdef GL_GLEXT_PROTOTYPES
1490GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids);
1491GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids);
1492GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id);
1493GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id);
1494GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target);
1495GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target);
1496GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params);
1497GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params);
1498GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params);
1499GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params);
1500GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params);
1501#endif
1502typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids);
1503typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids);
1504typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id);
1505typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id);
1506typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target);
1507typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target);
1508typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
1509typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params);
1510typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params);
1511typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params);
1512typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params);
1513#endif /* GL_EXT_disjoint_timer_query */
1514
1515#ifndef GL_EXT_draw_buffers
1516#define GL_EXT_draw_buffers 1
1517#ifdef GL_GLEXT_PROTOTYPES
1518GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs);
1519#endif
1520typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs);
1521#endif /* GL_EXT_draw_buffers */
1522
1523/* GL_EXT_map_buffer_range */
1524#ifndef GL_EXT_map_buffer_range
1525#define GL_EXT_map_buffer_range 1
1526#ifdef GL_GLEXT_PROTOTYPES
1527GL_APICALL void* GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
1528GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length);
1529#endif
1530typedef void* (GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
1531typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
1532#endif
1533
1534/* GL_EXT_multisampled_render_to_texture */
1535#ifndef GL_EXT_multisampled_render_to_texture
1536#define GL_EXT_multisampled_render_to_texture 1
1537#ifdef GL_GLEXT_PROTOTYPES
1538GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1539GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
1540#endif
1541typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1542typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
1543#endif
1544
1545/* GL_EXT_multiview_draw_buffers */
1546#ifndef GL_EXT_multiview_draw_buffers
1547#define GL_EXT_multiview_draw_buffers 1
1548#ifdef GL_GLEXT_PROTOTYPES
1549GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index);
1550GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices);
1551GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data);
1552#endif
1553typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index);
1554typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices);
1555typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data);
1556#endif
1557
1558#ifndef GL_EXT_multi_draw_arrays
1559#define GL_EXT_multi_draw_arrays 1
1560#ifdef GL_GLEXT_PROTOTYPES
1561GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
1562GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount);
1563#endif /* GL_GLEXT_PROTOTYPES */
1564typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
1565typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount);
1566#endif
1567
1568/* GL_EXT_occlusion_query_boolean */
1569#ifndef GL_EXT_occlusion_query_boolean
1570#define GL_EXT_occlusion_query_boolean 1
1571/* All entry points also exist in GL_EXT_disjoint_timer_query */
1572#endif
1573
1574/* GL_EXT_read_format_bgra */
1575#ifndef GL_EXT_read_format_bgra
1576#define GL_EXT_read_format_bgra 1
1577#endif
1578
1579/* GL_EXT_robustness */
1580#ifndef GL_EXT_robustness
1581#define GL_EXT_robustness 1
1582#ifdef GL_GLEXT_PROTOTYPES
1583GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void);
1584GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
1585GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
1586GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params);
1587#endif
1588typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void);
1589typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
1590typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
1591typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
1592#endif
1593
1594/* GL_EXT_separate_shader_objects */
1595#ifndef GL_EXT_separate_shader_objects
1596#define GL_EXT_separate_shader_objects 1
1597#ifdef GL_GLEXT_PROTOTYPES
1598GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program);
1599GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program);
1600GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings);
1601GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline);
1602GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines);
1603GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines);
1604GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline);
1605GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value);
1606GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params);
1607GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint x);
1608GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint x, GLint y);
1609GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z);
1610GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w);
1611GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat x);
1612GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat x, GLfloat y);
1613GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z);
1614GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
1615GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
1616GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
1617GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
1618GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
1619GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1620GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1621GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1622GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1623GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1624GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1625GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1626GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline);
1627GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
1628#endif
1629typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
1630typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program);
1631typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings);
1632typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline);
1633typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines);
1634typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines);
1635typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline);
1636typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
1637typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params);
1638typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint x);
1639typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint x, GLint y);
1640typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z);
1641typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w);
1642typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat x);
1643typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y);
1644typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z);
1645typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
1646typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
1647typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
1648typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
1649typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
1650typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1651typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1652typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1653typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1654typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1655typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1656typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1657typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline);
1658typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
1659#endif
1660
1661/* GL_EXT_shader_framebuffer_fetch */
1662#ifndef GL_EXT_shader_framebuffer_fetch
1663#define GL_EXT_shader_framebuffer_fetch 1
1664#endif
1665
1666/* GL_EXT_shader_texture_lod */
1667#ifndef GL_EXT_shader_texture_lod
1668#define GL_EXT_shader_texture_lod 1
1669#endif
1670
1671/* GL_EXT_shadow_samplers */
1672#ifndef GL_EXT_shadow_samplers
1673#define GL_EXT_shadow_samplers 1
1674#endif
1675
1676/* GL_EXT_sRGB */
1677#ifndef GL_EXT_sRGB
1678#define GL_EXT_sRGB 1
1679#endif
1680
1681/* GL_EXT_texture_compression_dxt1 */
1682#ifndef GL_EXT_texture_compression_dxt1
1683#define GL_EXT_texture_compression_dxt1 1
1684#endif
1685
1686/* GL_EXT_texture_filter_anisotropic */
1687#ifndef GL_EXT_texture_filter_anisotropic
1688#define GL_EXT_texture_filter_anisotropic 1
1689#endif
1690
1691/* GL_EXT_texture_format_BGRA8888 */
1692#ifndef GL_EXT_texture_format_BGRA8888
1693#define GL_EXT_texture_format_BGRA8888 1
1694#endif
1695
1696/* GL_EXT_texture_rg */
1697#ifndef GL_EXT_texture_rg
1698#define GL_EXT_texture_rg 1
1699#endif
1700
1701/* GL_EXT_texture_storage */
1702#ifndef GL_EXT_texture_storage
1703#define GL_EXT_texture_storage 1
1704#ifdef GL_GLEXT_PROTOTYPES
1705GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
1706GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
1707GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
1708GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
1709GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
1710GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
1711#endif
1712typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
1713typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
1714typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
1715typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
1716typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
1717typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
1718#endif
1719
1720/* GL_EXT_texture_type_2_10_10_10_REV */
1721#ifndef GL_EXT_texture_type_2_10_10_10_REV
1722#define GL_EXT_texture_type_2_10_10_10_REV 1
1723#endif
1724
1725/* GL_EXT_unpack_subimage */
1726#ifndef GL_EXT_unpack_subimage
1727#define GL_EXT_unpack_subimage 1
1728#endif
1729
1730/*------------------------------------------------------------------------*
1731 * DMP extension functions
1732 *------------------------------------------------------------------------*/
1733
1734/* GL_DMP_shader_binary */
1735#ifndef GL_DMP_shader_binary
1736#define GL_DMP_shader_binary 1
1737#endif
1738
1739/*------------------------------------------------------------------------*
1740 * FJ extension functions
1741 *------------------------------------------------------------------------*/
1742
1743/* GL_FJ_shader_binary_GCCSO */
1744#ifndef GL_FJ_shader_binary_GCCSO
1745#define GL_FJ_shader_binary_GCCSO 1
1746#endif
1747
1748/*------------------------------------------------------------------------*
1749 * IMG extension functions
1750 *------------------------------------------------------------------------*/
1751
1752/* GL_IMG_program_binary */
1753#ifndef GL_IMG_program_binary
1754#define GL_IMG_program_binary 1
1755#endif
1756
1757/* GL_IMG_read_format */
1758#ifndef GL_IMG_read_format
1759#define GL_IMG_read_format 1
1760#endif
1761
1762/* GL_IMG_shader_binary */
1763#ifndef GL_IMG_shader_binary
1764#define GL_IMG_shader_binary 1
1765#endif
1766
1767/* GL_IMG_texture_compression_pvrtc */
1768#ifndef GL_IMG_texture_compression_pvrtc
1769#define GL_IMG_texture_compression_pvrtc 1
1770#endif
1771
1772/* GL_IMG_texture_compression_pvrtc2 */
1773#ifndef GL_IMG_texture_compression_pvrtc2
1774#define GL_IMG_texture_compression_pvrtc2 1
1775#endif
1776
1777/* GL_IMG_multisampled_render_to_texture */
1778#ifndef GL_IMG_multisampled_render_to_texture
1779#define GL_IMG_multisampled_render_to_texture 1
1780#ifdef GL_GLEXT_PROTOTYPES
1781GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1782GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
1783#endif
1784typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1785typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
1786#endif
1787
1788/*------------------------------------------------------------------------*
1789 * NV extension functions
1790 *------------------------------------------------------------------------*/
1791
1792/* GL_NV_coverage_sample */
1793#ifndef GL_NV_coverage_sample
1794#define GL_NV_coverage_sample 1
1795#ifdef GL_GLEXT_PROTOTYPES
1796GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask);
1797GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation);
1798#endif
1799typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask);
1800typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation);
1801#endif
1802
1803/* GL_NV_depth_nonlinear */
1804#ifndef GL_NV_depth_nonlinear
1805#define GL_NV_depth_nonlinear 1
1806#endif
1807
1808/* GL_NV_draw_buffers */
1809#ifndef GL_NV_draw_buffers
1810#define GL_NV_draw_buffers 1
1811#ifdef GL_GLEXT_PROTOTYPES
1812GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs);
1813#endif
1814typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs);
1815#endif
1816
1817/* GL_NV_draw_instanced */
1818#ifndef GL_NV_draw_instanced
1819#define GL_NV_draw_instanced 1
1820#ifdef GL_GLEXT_PROTOTYPES
1821GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
1822GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
1823#endif
1824typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
1825typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
1826#endif
1827
1828/* GL_NV_fbo_color_attachments */
1829#ifndef GL_NV_fbo_color_attachments
1830#define GL_NV_fbo_color_attachments 1
1831#endif
1832
1833/* GL_NV_fence */
1834#ifndef GL_NV_fence
1835#define GL_NV_fence 1
1836#ifdef GL_GLEXT_PROTOTYPES
1837GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);
1838GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);
1839GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence);
1840GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence);
1841GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
1842GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence);
1843GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint fence, GLenum condition);
1844#endif
1845typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
1846typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
1847typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
1848typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
1849typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
1850typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
1851typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
1852#endif
1853
1854/* GL_NV_framebuffer_blit */
1855#ifndef GL_NV_framebuffer_blit
1856#define GL_NV_framebuffer_blit 1
1857#ifdef GL_GLEXT_PROTOTYPES
1858GL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
1859#endif
1860typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
1861#endif
1862
1863/* GL_NV_framebuffer_multisample */
1864#ifndef GL_NV_framebuffer_multisample
1865#define GL_NV_framebuffer_multisample 1
1866#ifdef GL_GLEXT_PROTOTYPES
1867GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1868#endif
1869typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1870#endif
1871
1872/* GL_NV_generate_mipmap_sRGB */
1873#ifndef GL_NV_generate_mipmap_sRGB
1874#define GL_NV_generate_mipmap_sRGB 1
1875#endif
1876
1877/* GL_NV_instanced_arrays */
1878#ifndef GL_NV_instanced_arrays
1879#define GL_NV_instanced_arrays 1
1880#ifdef GL_GLEXT_PROTOTYPES
1881GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor);
1882#endif
1883typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor);
1884#endif
1885
1886/* GL_NV_read_buffer */
1887#ifndef GL_NV_read_buffer
1888#define GL_NV_read_buffer 1
1889#ifdef GL_GLEXT_PROTOTYPES
1890GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode);
1891#endif
1892typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode);
1893#endif
1894
1895/* GL_NV_read_buffer_front */
1896#ifndef GL_NV_read_buffer_front
1897#define GL_NV_read_buffer_front 1
1898#endif
1899
1900/* GL_NV_read_depth */
1901#ifndef GL_NV_read_depth
1902#define GL_NV_read_depth 1
1903#endif
1904
1905/* GL_NV_read_depth_stencil */
1906#ifndef GL_NV_read_depth_stencil
1907#define GL_NV_read_depth_stencil 1
1908#endif
1909
1910/* GL_NV_read_stencil */
1911#ifndef GL_NV_read_stencil
1912#define GL_NV_read_stencil 1
1913#endif
1914
1915/* GL_NV_shadow_samplers_array */
1916#ifndef GL_NV_shadow_samplers_array
1917#define GL_NV_shadow_samplers_array 1
1918#endif
1919
1920/* GL_NV_shadow_samplers_cube */
1921#ifndef GL_NV_shadow_samplers_cube
1922#define GL_NV_shadow_samplers_cube 1
1923#endif
1924
1925/* GL_NV_sRGB_formats */
1926#ifndef GL_NV_sRGB_formats
1927#define GL_NV_sRGB_formats 1
1928#endif
1929
1930/* GL_NV_texture_border_clamp */
1931#ifndef GL_NV_texture_border_clamp
1932#define GL_NV_texture_border_clamp 1
1933#endif
1934
1935/* GL_NV_texture_compression_s3tc_update */
1936#ifndef GL_NV_texture_compression_s3tc_update
1937#define GL_NV_texture_compression_s3tc_update 1
1938#endif
1939
1940/* GL_NV_texture_npot_2D_mipmap */
1941#ifndef GL_NV_texture_npot_2D_mipmap
1942#define GL_NV_texture_npot_2D_mipmap 1
1943#endif
1944
1945/*------------------------------------------------------------------------*
1946 * QCOM extension functions
1947 *------------------------------------------------------------------------*/
1948
1949/* GL_QCOM_alpha_test */
1950#ifndef GL_QCOM_alpha_test
1951#define GL_QCOM_alpha_test 1
1952#ifdef GL_GLEXT_PROTOTYPES
1953GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref);
1954#endif
1955typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref);
1956#endif
1957
1958/* GL_QCOM_binning_control */
1959#ifndef GL_QCOM_binning_control
1960#define GL_QCOM_binning_control 1
1961#endif
1962
1963/* GL_QCOM_driver_control */
1964#ifndef GL_QCOM_driver_control
1965#define GL_QCOM_driver_control 1
1966#ifdef GL_GLEXT_PROTOTYPES
1967GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls);
1968GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
1969GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl);
1970GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl);
1971#endif
1972typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls);
1973typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
1974typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
1975typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
1976#endif
1977
1978/* GL_QCOM_extended_get */
1979#ifndef GL_QCOM_extended_get
1980#define GL_QCOM_extended_get 1
1981#ifdef GL_GLEXT_PROTOTYPES
1982GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures);
1983GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
1984GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
1985GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
1986GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
1987GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param);
1988GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels);
1989GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, GLvoid **params);
1990#endif
1991typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures);
1992typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
1993typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
1994typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
1995typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
1996typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param);
1997typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels);
1998typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, GLvoid **params);
1999#endif
2000
2001/* GL_QCOM_extended_get2 */
2002#ifndef GL_QCOM_extended_get2
2003#define GL_QCOM_extended_get2 1
2004#ifdef GL_GLEXT_PROTOTYPES
2005GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders);
2006GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
2007GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program);
2008GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
2009#endif
2010typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders);
2011typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
2012typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program);
2013typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
2014#endif
2015
2016/* GL_QCOM_perfmon_global_mode */
2017#ifndef GL_QCOM_perfmon_global_mode
2018#define GL_QCOM_perfmon_global_mode 1
2019#endif
2020
2021/* GL_QCOM_writeonly_rendering */
2022#ifndef GL_QCOM_writeonly_rendering
2023#define GL_QCOM_writeonly_rendering 1
2024#endif
2025
2026/* GL_QCOM_tiled_rendering */
2027#ifndef GL_QCOM_tiled_rendering
2028#define GL_QCOM_tiled_rendering 1
2029#ifdef GL_GLEXT_PROTOTYPES
2030GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
2031GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask);
2032#endif
2033typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
2034typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask);
2035#endif
2036
2037/*------------------------------------------------------------------------*
2038 * VIV extension tokens
2039 *------------------------------------------------------------------------*/
2040
2041/* GL_VIV_shader_binary */
2042#ifndef GL_VIV_shader_binary
2043#define GL_VIV_shader_binary 1
2044#endif
2045
2046#ifdef __cplusplus
2047}
2048#endif
2049
2050#endif /* __gl2ext_h_ */
diff --git a/vendor/SDL2/include/SDL_opengles2_gl2platform.h b/vendor/SDL2/include/SDL_opengles2_gl2platform.h new file mode 100644 index 0000000..c325686 --- /dev/null +++ b/vendor/SDL2/include/SDL_opengles2_gl2platform.h
@@ -0,0 +1,30 @@
1#ifndef __gl2platform_h_
2#define __gl2platform_h_
3
4/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */
5
6/*
7 * This document is licensed under the SGI Free Software B License Version
8 * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
9 */
10
11/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h
12 *
13 * Adopters may modify khrplatform.h and this file to suit their platform.
14 * You are encouraged to submit all modifications to the Khronos group so that
15 * they can be included in future versions of this file. Please submit changes
16 * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
17 * by filing a bug against product "OpenGL-ES" component "Registry".
18 */
19
20/*#include <KHR/khrplatform.h>*/
21
22#ifndef GL_APICALL
23#define GL_APICALL KHRONOS_APICALL
24#endif
25
26#ifndef GL_APIENTRY
27#define GL_APIENTRY KHRONOS_APIENTRY
28#endif
29
30#endif /* __gl2platform_h_ */
diff --git a/vendor/SDL2/include/SDL_opengles2_khrplatform.h b/vendor/SDL2/include/SDL_opengles2_khrplatform.h new file mode 100644 index 0000000..c9e6f17 --- /dev/null +++ b/vendor/SDL2/include/SDL_opengles2_khrplatform.h
@@ -0,0 +1,282 @@
1#ifndef __khrplatform_h_
2#define __khrplatform_h_
3
4/*
5** Copyright (c) 2008-2009 The Khronos Group Inc.
6**
7** Permission is hereby granted, free of charge, to any person obtaining a
8** copy of this software and/or associated documentation files (the
9** "Materials"), to deal in the Materials without restriction, including
10** without limitation the rights to use, copy, modify, merge, publish,
11** distribute, sublicense, and/or sell copies of the Materials, and to
12** permit persons to whom the Materials are furnished to do so, subject to
13** the following conditions:
14**
15** The above copyright notice and this permission notice shall be included
16** in all copies or substantial portions of the Materials.
17**
18** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
22** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
25*/
26
27/* Khronos platform-specific types and definitions.
28 *
29 * $Revision: 23298 $ on $Date: 2013-09-30 17:07:13 -0700 (Mon, 30 Sep 2013) $
30 *
31 * Adopters may modify this file to suit their platform. Adopters are
32 * encouraged to submit platform specific modifications to the Khronos
33 * group so that they can be included in future versions of this file.
34 * Please submit changes by sending them to the public Khronos Bugzilla
35 * (http://khronos.org/bugzilla) by filing a bug against product
36 * "Khronos (general)" component "Registry".
37 *
38 * A predefined template which fills in some of the bug fields can be
39 * reached using http://tinyurl.com/khrplatform-h-bugreport, but you
40 * must create a Bugzilla login first.
41 *
42 *
43 * See the Implementer's Guidelines for information about where this file
44 * should be located on your system and for more details of its use:
45 * http://www.khronos.org/registry/implementers_guide.pdf
46 *
47 * This file should be included as
48 * #include <KHR/khrplatform.h>
49 * by Khronos client API header files that use its types and defines.
50 *
51 * The types in khrplatform.h should only be used to define API-specific types.
52 *
53 * Types defined in khrplatform.h:
54 * khronos_int8_t signed 8 bit
55 * khronos_uint8_t unsigned 8 bit
56 * khronos_int16_t signed 16 bit
57 * khronos_uint16_t unsigned 16 bit
58 * khronos_int32_t signed 32 bit
59 * khronos_uint32_t unsigned 32 bit
60 * khronos_int64_t signed 64 bit
61 * khronos_uint64_t unsigned 64 bit
62 * khronos_intptr_t signed same number of bits as a pointer
63 * khronos_uintptr_t unsigned same number of bits as a pointer
64 * khronos_ssize_t signed size
65 * khronos_usize_t unsigned size
66 * khronos_float_t signed 32 bit floating point
67 * khronos_time_ns_t unsigned 64 bit time in nanoseconds
68 * khronos_utime_nanoseconds_t unsigned time interval or absolute time in
69 * nanoseconds
70 * khronos_stime_nanoseconds_t signed time interval in nanoseconds
71 * khronos_boolean_enum_t enumerated boolean type. This should
72 * only be used as a base type when a client API's boolean type is
73 * an enum. Client APIs which use an integer or other type for
74 * booleans cannot use this as the base type for their boolean.
75 *
76 * Tokens defined in khrplatform.h:
77 *
78 * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
79 *
80 * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
81 * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
82 *
83 * Calling convention macros defined in this file:
84 * KHRONOS_APICALL
85 * KHRONOS_APIENTRY
86 * KHRONOS_APIATTRIBUTES
87 *
88 * These may be used in function prototypes as:
89 *
90 * KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
91 * int arg1,
92 * int arg2) KHRONOS_APIATTRIBUTES;
93 */
94
95/*-------------------------------------------------------------------------
96 * Definition of KHRONOS_APICALL
97 *-------------------------------------------------------------------------
98 * This precedes the return type of the function in the function prototype.
99 */
100#if defined(_WIN32) && !defined(__SCITECH_SNAP__)
101# define KHRONOS_APICALL __declspec(dllimport)
102#elif defined (__SYMBIAN32__)
103# define KHRONOS_APICALL IMPORT_C
104#else
105# define KHRONOS_APICALL
106#endif
107
108/*-------------------------------------------------------------------------
109 * Definition of KHRONOS_APIENTRY
110 *-------------------------------------------------------------------------
111 * This follows the return type of the function and precedes the function
112 * name in the function prototype.
113 */
114#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
115 /* Win32 but not WinCE */
116# define KHRONOS_APIENTRY __stdcall
117#else
118# define KHRONOS_APIENTRY
119#endif
120
121/*-------------------------------------------------------------------------
122 * Definition of KHRONOS_APIATTRIBUTES
123 *-------------------------------------------------------------------------
124 * This follows the closing parenthesis of the function prototype arguments.
125 */
126#if defined (__ARMCC_2__)
127#define KHRONOS_APIATTRIBUTES __softfp
128#else
129#define KHRONOS_APIATTRIBUTES
130#endif
131
132/*-------------------------------------------------------------------------
133 * basic type definitions
134 *-----------------------------------------------------------------------*/
135#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
136
137
138/*
139 * Using <stdint.h>
140 */
141#include <stdint.h>
142typedef int32_t khronos_int32_t;
143typedef uint32_t khronos_uint32_t;
144typedef int64_t khronos_int64_t;
145typedef uint64_t khronos_uint64_t;
146#define KHRONOS_SUPPORT_INT64 1
147#define KHRONOS_SUPPORT_FLOAT 1
148
149#elif defined(__VMS ) || defined(__sgi)
150
151/*
152 * Using <inttypes.h>
153 */
154#include <inttypes.h>
155typedef int32_t khronos_int32_t;
156typedef uint32_t khronos_uint32_t;
157typedef int64_t khronos_int64_t;
158typedef uint64_t khronos_uint64_t;
159#define KHRONOS_SUPPORT_INT64 1
160#define KHRONOS_SUPPORT_FLOAT 1
161
162#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
163
164/*
165 * Win32
166 */
167typedef __int32 khronos_int32_t;
168typedef unsigned __int32 khronos_uint32_t;
169typedef __int64 khronos_int64_t;
170typedef unsigned __int64 khronos_uint64_t;
171#define KHRONOS_SUPPORT_INT64 1
172#define KHRONOS_SUPPORT_FLOAT 1
173
174#elif defined(__sun__) || defined(__digital__)
175
176/*
177 * Sun or Digital
178 */
179typedef int khronos_int32_t;
180typedef unsigned int khronos_uint32_t;
181#if defined(__arch64__) || defined(_LP64)
182typedef long int khronos_int64_t;
183typedef unsigned long int khronos_uint64_t;
184#else
185typedef long long int khronos_int64_t;
186typedef unsigned long long int khronos_uint64_t;
187#endif /* __arch64__ */
188#define KHRONOS_SUPPORT_INT64 1
189#define KHRONOS_SUPPORT_FLOAT 1
190
191#elif 0
192
193/*
194 * Hypothetical platform with no float or int64 support
195 */
196typedef int khronos_int32_t;
197typedef unsigned int khronos_uint32_t;
198#define KHRONOS_SUPPORT_INT64 0
199#define KHRONOS_SUPPORT_FLOAT 0
200
201#else
202
203/*
204 * Generic fallback
205 */
206#include <stdint.h>
207typedef int32_t khronos_int32_t;
208typedef uint32_t khronos_uint32_t;
209typedef int64_t khronos_int64_t;
210typedef uint64_t khronos_uint64_t;
211#define KHRONOS_SUPPORT_INT64 1
212#define KHRONOS_SUPPORT_FLOAT 1
213
214#endif
215
216
217/*
218 * Types that are (so far) the same on all platforms
219 */
220typedef signed char khronos_int8_t;
221typedef unsigned char khronos_uint8_t;
222typedef signed short int khronos_int16_t;
223typedef unsigned short int khronos_uint16_t;
224
225/*
226 * Types that differ between LLP64 and LP64 architectures - in LLP64,
227 * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
228 * to be the only LLP64 architecture in current use.
229 */
230#ifdef _WIN64
231typedef signed long long int khronos_intptr_t;
232typedef unsigned long long int khronos_uintptr_t;
233typedef signed long long int khronos_ssize_t;
234typedef unsigned long long int khronos_usize_t;
235#else
236typedef signed long int khronos_intptr_t;
237typedef unsigned long int khronos_uintptr_t;
238typedef signed long int khronos_ssize_t;
239typedef unsigned long int khronos_usize_t;
240#endif
241
242#if KHRONOS_SUPPORT_FLOAT
243/*
244 * Float type
245 */
246typedef float khronos_float_t;
247#endif
248
249#if KHRONOS_SUPPORT_INT64
250/* Time types
251 *
252 * These types can be used to represent a time interval in nanoseconds or
253 * an absolute Unadjusted System Time. Unadjusted System Time is the number
254 * of nanoseconds since some arbitrary system event (e.g. since the last
255 * time the system booted). The Unadjusted System Time is an unsigned
256 * 64 bit value that wraps back to 0 every 584 years. Time intervals
257 * may be either signed or unsigned.
258 */
259typedef khronos_uint64_t khronos_utime_nanoseconds_t;
260typedef khronos_int64_t khronos_stime_nanoseconds_t;
261#endif
262
263/*
264 * Dummy value used to pad enum types to 32 bits.
265 */
266#ifndef KHRONOS_MAX_ENUM
267#define KHRONOS_MAX_ENUM 0x7FFFFFFF
268#endif
269
270/*
271 * Enumerated boolean type
272 *
273 * Values other than zero should be considered to be true. Therefore
274 * comparisons should not be made against KHRONOS_TRUE.
275 */
276typedef enum {
277 KHRONOS_FALSE = 0,
278 KHRONOS_TRUE = 1,
279 KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
280} khronos_boolean_enum_t;
281
282#endif /* __khrplatform_h_ */
diff --git a/vendor/SDL2/include/SDL_pixels.h b/vendor/SDL2/include/SDL_pixels.h new file mode 100644 index 0000000..5d2c0c8 --- /dev/null +++ b/vendor/SDL2/include/SDL_pixels.h
@@ -0,0 +1,644 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_pixels.h
24 *
25 * Header for the enumerated pixel format definitions.
26 */
27
28#ifndef SDL_pixels_h_
29#define SDL_pixels_h_
30
31#include "SDL_stdinc.h"
32#include "SDL_endian.h"
33
34#include "begin_code.h"
35/* Set up for C function definitions, even when using C++ */
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40/**
41 * \name Transparency definitions
42 *
43 * These define alpha as the opacity of a surface.
44 */
45/* @{ */
46#define SDL_ALPHA_OPAQUE 255
47#define SDL_ALPHA_TRANSPARENT 0
48/* @} */
49
50/** Pixel type. */
51typedef enum
52{
53 SDL_PIXELTYPE_UNKNOWN,
54 SDL_PIXELTYPE_INDEX1,
55 SDL_PIXELTYPE_INDEX4,
56 SDL_PIXELTYPE_INDEX8,
57 SDL_PIXELTYPE_PACKED8,
58 SDL_PIXELTYPE_PACKED16,
59 SDL_PIXELTYPE_PACKED32,
60 SDL_PIXELTYPE_ARRAYU8,
61 SDL_PIXELTYPE_ARRAYU16,
62 SDL_PIXELTYPE_ARRAYU32,
63 SDL_PIXELTYPE_ARRAYF16,
64 SDL_PIXELTYPE_ARRAYF32
65} SDL_PixelType;
66
67/** Bitmap pixel order, high bit -> low bit. */
68typedef enum
69{
70 SDL_BITMAPORDER_NONE,
71 SDL_BITMAPORDER_4321,
72 SDL_BITMAPORDER_1234
73} SDL_BitmapOrder;
74
75/** Packed component order, high bit -> low bit. */
76typedef enum
77{
78 SDL_PACKEDORDER_NONE,
79 SDL_PACKEDORDER_XRGB,
80 SDL_PACKEDORDER_RGBX,
81 SDL_PACKEDORDER_ARGB,
82 SDL_PACKEDORDER_RGBA,
83 SDL_PACKEDORDER_XBGR,
84 SDL_PACKEDORDER_BGRX,
85 SDL_PACKEDORDER_ABGR,
86 SDL_PACKEDORDER_BGRA
87} SDL_PackedOrder;
88
89/** Array component order, low byte -> high byte. */
90/* !!! FIXME: in 2.1, make these not overlap differently with
91 !!! FIXME: SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */
92typedef enum
93{
94 SDL_ARRAYORDER_NONE,
95 SDL_ARRAYORDER_RGB,
96 SDL_ARRAYORDER_RGBA,
97 SDL_ARRAYORDER_ARGB,
98 SDL_ARRAYORDER_BGR,
99 SDL_ARRAYORDER_BGRA,
100 SDL_ARRAYORDER_ABGR
101} SDL_ArrayOrder;
102
103/** Packed component layout. */
104typedef enum
105{
106 SDL_PACKEDLAYOUT_NONE,
107 SDL_PACKEDLAYOUT_332,
108 SDL_PACKEDLAYOUT_4444,
109 SDL_PACKEDLAYOUT_1555,
110 SDL_PACKEDLAYOUT_5551,
111 SDL_PACKEDLAYOUT_565,
112 SDL_PACKEDLAYOUT_8888,
113 SDL_PACKEDLAYOUT_2101010,
114 SDL_PACKEDLAYOUT_1010102
115} SDL_PackedLayout;
116
117#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D)
118
119#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \
120 ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \
121 ((bits) << 8) | ((bytes) << 0))
122
123#define SDL_PIXELFLAG(X) (((X) >> 28) & 0x0F)
124#define SDL_PIXELTYPE(X) (((X) >> 24) & 0x0F)
125#define SDL_PIXELORDER(X) (((X) >> 20) & 0x0F)
126#define SDL_PIXELLAYOUT(X) (((X) >> 16) & 0x0F)
127#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF)
128#define SDL_BYTESPERPIXEL(X) \
129 (SDL_ISPIXELFORMAT_FOURCC(X) ? \
130 ((((X) == SDL_PIXELFORMAT_YUY2) || \
131 ((X) == SDL_PIXELFORMAT_UYVY) || \
132 ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF))
133
134#define SDL_ISPIXELFORMAT_INDEXED(format) \
135 (!SDL_ISPIXELFORMAT_FOURCC(format) && \
136 ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \
137 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \
138 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8)))
139
140#define SDL_ISPIXELFORMAT_PACKED(format) \
141 (!SDL_ISPIXELFORMAT_FOURCC(format) && \
142 ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \
143 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \
144 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32)))
145
146#define SDL_ISPIXELFORMAT_ARRAY(format) \
147 (!SDL_ISPIXELFORMAT_FOURCC(format) && \
148 ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \
149 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \
150 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \
151 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \
152 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32)))
153
154#define SDL_ISPIXELFORMAT_ALPHA(format) \
155 ((SDL_ISPIXELFORMAT_PACKED(format) && \
156 ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \
157 (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \
158 (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \
159 (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \
160 (SDL_ISPIXELFORMAT_ARRAY(format) && \
161 ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \
162 (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \
163 (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \
164 (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA))))
165
166/* The flag is set to 1 because 0x1? is not in the printable ASCII range */
167#define SDL_ISPIXELFORMAT_FOURCC(format) \
168 ((format) && (SDL_PIXELFLAG(format) != 1))
169
170/* Note: If you modify this list, update SDL_GetPixelFormatName() */
171typedef enum
172{
173 SDL_PIXELFORMAT_UNKNOWN,
174 SDL_PIXELFORMAT_INDEX1LSB =
175 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0,
176 1, 0),
177 SDL_PIXELFORMAT_INDEX1MSB =
178 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0,
179 1, 0),
180 SDL_PIXELFORMAT_INDEX4LSB =
181 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0,
182 4, 0),
183 SDL_PIXELFORMAT_INDEX4MSB =
184 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0,
185 4, 0),
186 SDL_PIXELFORMAT_INDEX8 =
187 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1),
188 SDL_PIXELFORMAT_RGB332 =
189 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB,
190 SDL_PACKEDLAYOUT_332, 8, 1),
191 SDL_PIXELFORMAT_XRGB4444 =
192 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
193 SDL_PACKEDLAYOUT_4444, 12, 2),
194 SDL_PIXELFORMAT_RGB444 = SDL_PIXELFORMAT_XRGB4444,
195 SDL_PIXELFORMAT_XBGR4444 =
196 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
197 SDL_PACKEDLAYOUT_4444, 12, 2),
198 SDL_PIXELFORMAT_BGR444 = SDL_PIXELFORMAT_XBGR4444,
199 SDL_PIXELFORMAT_XRGB1555 =
200 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
201 SDL_PACKEDLAYOUT_1555, 15, 2),
202 SDL_PIXELFORMAT_RGB555 = SDL_PIXELFORMAT_XRGB1555,
203 SDL_PIXELFORMAT_XBGR1555 =
204 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
205 SDL_PACKEDLAYOUT_1555, 15, 2),
206 SDL_PIXELFORMAT_BGR555 = SDL_PIXELFORMAT_XBGR1555,
207 SDL_PIXELFORMAT_ARGB4444 =
208 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
209 SDL_PACKEDLAYOUT_4444, 16, 2),
210 SDL_PIXELFORMAT_RGBA4444 =
211 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
212 SDL_PACKEDLAYOUT_4444, 16, 2),
213 SDL_PIXELFORMAT_ABGR4444 =
214 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
215 SDL_PACKEDLAYOUT_4444, 16, 2),
216 SDL_PIXELFORMAT_BGRA4444 =
217 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
218 SDL_PACKEDLAYOUT_4444, 16, 2),
219 SDL_PIXELFORMAT_ARGB1555 =
220 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
221 SDL_PACKEDLAYOUT_1555, 16, 2),
222 SDL_PIXELFORMAT_RGBA5551 =
223 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
224 SDL_PACKEDLAYOUT_5551, 16, 2),
225 SDL_PIXELFORMAT_ABGR1555 =
226 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
227 SDL_PACKEDLAYOUT_1555, 16, 2),
228 SDL_PIXELFORMAT_BGRA5551 =
229 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
230 SDL_PACKEDLAYOUT_5551, 16, 2),
231 SDL_PIXELFORMAT_RGB565 =
232 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
233 SDL_PACKEDLAYOUT_565, 16, 2),
234 SDL_PIXELFORMAT_BGR565 =
235 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
236 SDL_PACKEDLAYOUT_565, 16, 2),
237 SDL_PIXELFORMAT_RGB24 =
238 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0,
239 24, 3),
240 SDL_PIXELFORMAT_BGR24 =
241 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0,
242 24, 3),
243 SDL_PIXELFORMAT_XRGB8888 =
244 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB,
245 SDL_PACKEDLAYOUT_8888, 24, 4),
246 SDL_PIXELFORMAT_RGB888 = SDL_PIXELFORMAT_XRGB8888,
247 SDL_PIXELFORMAT_RGBX8888 =
248 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX,
249 SDL_PACKEDLAYOUT_8888, 24, 4),
250 SDL_PIXELFORMAT_XBGR8888 =
251 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR,
252 SDL_PACKEDLAYOUT_8888, 24, 4),
253 SDL_PIXELFORMAT_BGR888 = SDL_PIXELFORMAT_XBGR8888,
254 SDL_PIXELFORMAT_BGRX8888 =
255 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX,
256 SDL_PACKEDLAYOUT_8888, 24, 4),
257 SDL_PIXELFORMAT_ARGB8888 =
258 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
259 SDL_PACKEDLAYOUT_8888, 32, 4),
260 SDL_PIXELFORMAT_RGBA8888 =
261 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA,
262 SDL_PACKEDLAYOUT_8888, 32, 4),
263 SDL_PIXELFORMAT_ABGR8888 =
264 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR,
265 SDL_PACKEDLAYOUT_8888, 32, 4),
266 SDL_PIXELFORMAT_BGRA8888 =
267 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA,
268 SDL_PACKEDLAYOUT_8888, 32, 4),
269 SDL_PIXELFORMAT_ARGB2101010 =
270 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
271 SDL_PACKEDLAYOUT_2101010, 32, 4),
272
273 /* Aliases for RGBA byte arrays of color data, for the current platform */
274#if SDL_BYTEORDER == SDL_BIG_ENDIAN
275 SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888,
276 SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888,
277 SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888,
278 SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888,
279#else
280 SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888,
281 SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888,
282 SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888,
283 SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888,
284#endif
285
286 SDL_PIXELFORMAT_YV12 = /**< Planar mode: Y + V + U (3 planes) */
287 SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'),
288 SDL_PIXELFORMAT_IYUV = /**< Planar mode: Y + U + V (3 planes) */
289 SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'),
290 SDL_PIXELFORMAT_YUY2 = /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */
291 SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'),
292 SDL_PIXELFORMAT_UYVY = /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */
293 SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'),
294 SDL_PIXELFORMAT_YVYU = /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */
295 SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'),
296 SDL_PIXELFORMAT_NV12 = /**< Planar mode: Y + U/V interleaved (2 planes) */
297 SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'),
298 SDL_PIXELFORMAT_NV21 = /**< Planar mode: Y + V/U interleaved (2 planes) */
299 SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'),
300 SDL_PIXELFORMAT_EXTERNAL_OES = /**< Android video texture format */
301 SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ')
302} SDL_PixelFormatEnum;
303
304/**
305 * The bits of this structure can be directly reinterpreted as an integer-packed
306 * color which uses the SDL_PIXELFORMAT_RGBA32 format (SDL_PIXELFORMAT_ABGR8888
307 * on little-endian systems and SDL_PIXELFORMAT_RGBA8888 on big-endian systems).
308 */
309typedef struct SDL_Color
310{
311 Uint8 r;
312 Uint8 g;
313 Uint8 b;
314 Uint8 a;
315} SDL_Color;
316#define SDL_Colour SDL_Color
317
318typedef struct SDL_Palette
319{
320 int ncolors;
321 SDL_Color *colors;
322 Uint32 version;
323 int refcount;
324} SDL_Palette;
325
326/**
327 * \note Everything in the pixel format structure is read-only.
328 */
329typedef struct SDL_PixelFormat
330{
331 Uint32 format;
332 SDL_Palette *palette;
333 Uint8 BitsPerPixel;
334 Uint8 BytesPerPixel;
335 Uint8 padding[2];
336 Uint32 Rmask;
337 Uint32 Gmask;
338 Uint32 Bmask;
339 Uint32 Amask;
340 Uint8 Rloss;
341 Uint8 Gloss;
342 Uint8 Bloss;
343 Uint8 Aloss;
344 Uint8 Rshift;
345 Uint8 Gshift;
346 Uint8 Bshift;
347 Uint8 Ashift;
348 int refcount;
349 struct SDL_PixelFormat *next;
350} SDL_PixelFormat;
351
352/**
353 * Get the human readable name of a pixel format.
354 *
355 * \param format the pixel format to query
356 * \returns the human readable name of the specified pixel format or
357 * `SDL_PIXELFORMAT_UNKNOWN` if the format isn't recognized.
358 *
359 * \since This function is available since SDL 2.0.0.
360 */
361extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format);
362
363/**
364 * Convert one of the enumerated pixel formats to a bpp value and RGBA masks.
365 *
366 * \param format one of the SDL_PixelFormatEnum values
367 * \param bpp a bits per pixel value; usually 15, 16, or 32
368 * \param Rmask a pointer filled in with the red mask for the format
369 * \param Gmask a pointer filled in with the green mask for the format
370 * \param Bmask a pointer filled in with the blue mask for the format
371 * \param Amask a pointer filled in with the alpha mask for the format
372 * \returns SDL_TRUE on success or SDL_FALSE if the conversion wasn't
373 * possible; call SDL_GetError() for more information.
374 *
375 * \since This function is available since SDL 2.0.0.
376 *
377 * \sa SDL_MasksToPixelFormatEnum
378 */
379extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format,
380 int *bpp,
381 Uint32 * Rmask,
382 Uint32 * Gmask,
383 Uint32 * Bmask,
384 Uint32 * Amask);
385
386/**
387 * Convert a bpp value and RGBA masks to an enumerated pixel format.
388 *
389 * This will return `SDL_PIXELFORMAT_UNKNOWN` if the conversion wasn't
390 * possible.
391 *
392 * \param bpp a bits per pixel value; usually 15, 16, or 32
393 * \param Rmask the red mask for the format
394 * \param Gmask the green mask for the format
395 * \param Bmask the blue mask for the format
396 * \param Amask the alpha mask for the format
397 * \returns one of the SDL_PixelFormatEnum values
398 *
399 * \since This function is available since SDL 2.0.0.
400 *
401 * \sa SDL_PixelFormatEnumToMasks
402 */
403extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp,
404 Uint32 Rmask,
405 Uint32 Gmask,
406 Uint32 Bmask,
407 Uint32 Amask);
408
409/**
410 * Create an SDL_PixelFormat structure corresponding to a pixel format.
411 *
412 * Returned structure may come from a shared global cache (i.e. not newly
413 * allocated), and hence should not be modified, especially the palette. Weird
414 * errors such as `Blit combination not supported` may occur.
415 *
416 * \param pixel_format one of the SDL_PixelFormatEnum values
417 * \returns the new SDL_PixelFormat structure or NULL on failure; call
418 * SDL_GetError() for more information.
419 *
420 * \since This function is available since SDL 2.0.0.
421 *
422 * \sa SDL_FreeFormat
423 */
424extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format);
425
426/**
427 * Free an SDL_PixelFormat structure allocated by SDL_AllocFormat().
428 *
429 * \param format the SDL_PixelFormat structure to free
430 *
431 * \since This function is available since SDL 2.0.0.
432 *
433 * \sa SDL_AllocFormat
434 */
435extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format);
436
437/**
438 * Create a palette structure with the specified number of color entries.
439 *
440 * The palette entries are initialized to white.
441 *
442 * \param ncolors represents the number of color entries in the color palette
443 * \returns a new SDL_Palette structure on success or NULL on failure (e.g. if
444 * there wasn't enough memory); call SDL_GetError() for more
445 * information.
446 *
447 * \since This function is available since SDL 2.0.0.
448 *
449 * \sa SDL_FreePalette
450 */
451extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors);
452
453/**
454 * Set the palette for a pixel format structure.
455 *
456 * \param format the SDL_PixelFormat structure that will use the palette
457 * \param palette the SDL_Palette structure that will be used
458 * \returns 0 on success or a negative error code on failure; call
459 * SDL_GetError() for more information.
460 *
461 * \since This function is available since SDL 2.0.0.
462 *
463 * \sa SDL_AllocPalette
464 * \sa SDL_FreePalette
465 */
466extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format,
467 SDL_Palette *palette);
468
469/**
470 * Set a range of colors in a palette.
471 *
472 * \param palette the SDL_Palette structure to modify
473 * \param colors an array of SDL_Color structures to copy into the palette
474 * \param firstcolor the index of the first palette entry to modify
475 * \param ncolors the number of entries to modify
476 * \returns 0 on success or a negative error code if not all of the colors
477 * could be set; call SDL_GetError() for more information.
478 *
479 * \since This function is available since SDL 2.0.0.
480 *
481 * \sa SDL_AllocPalette
482 * \sa SDL_CreateRGBSurface
483 */
484extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette,
485 const SDL_Color * colors,
486 int firstcolor, int ncolors);
487
488/**
489 * Free a palette created with SDL_AllocPalette().
490 *
491 * \param palette the SDL_Palette structure to be freed
492 *
493 * \since This function is available since SDL 2.0.0.
494 *
495 * \sa SDL_AllocPalette
496 */
497extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette);
498
499/**
500 * Map an RGB triple to an opaque pixel value for a given pixel format.
501 *
502 * This function maps the RGB color value to the specified pixel format and
503 * returns the pixel value best approximating the given RGB color value for
504 * the given pixel format.
505 *
506 * If the format has a palette (8-bit) the index of the closest matching color
507 * in the palette will be returned.
508 *
509 * If the specified pixel format has an alpha component it will be returned as
510 * all 1 bits (fully opaque).
511 *
512 * If the pixel format bpp (color depth) is less than 32-bpp then the unused
513 * upper bits of the return value can safely be ignored (e.g., with a 16-bpp
514 * format the return value can be assigned to a Uint16, and similarly a Uint8
515 * for an 8-bpp format).
516 *
517 * \param format an SDL_PixelFormat structure describing the pixel format
518 * \param r the red component of the pixel in the range 0-255
519 * \param g the green component of the pixel in the range 0-255
520 * \param b the blue component of the pixel in the range 0-255
521 * \returns a pixel value
522 *
523 * \since This function is available since SDL 2.0.0.
524 *
525 * \sa SDL_GetRGB
526 * \sa SDL_GetRGBA
527 * \sa SDL_MapRGBA
528 */
529extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format,
530 Uint8 r, Uint8 g, Uint8 b);
531
532/**
533 * Map an RGBA quadruple to a pixel value for a given pixel format.
534 *
535 * This function maps the RGBA color value to the specified pixel format and
536 * returns the pixel value best approximating the given RGBA color value for
537 * the given pixel format.
538 *
539 * If the specified pixel format has no alpha component the alpha value will
540 * be ignored (as it will be in formats with a palette).
541 *
542 * If the format has a palette (8-bit) the index of the closest matching color
543 * in the palette will be returned.
544 *
545 * If the pixel format bpp (color depth) is less than 32-bpp then the unused
546 * upper bits of the return value can safely be ignored (e.g., with a 16-bpp
547 * format the return value can be assigned to a Uint16, and similarly a Uint8
548 * for an 8-bpp format).
549 *
550 * \param format an SDL_PixelFormat structure describing the format of the
551 * pixel
552 * \param r the red component of the pixel in the range 0-255
553 * \param g the green component of the pixel in the range 0-255
554 * \param b the blue component of the pixel in the range 0-255
555 * \param a the alpha component of the pixel in the range 0-255
556 * \returns a pixel value
557 *
558 * \since This function is available since SDL 2.0.0.
559 *
560 * \sa SDL_GetRGB
561 * \sa SDL_GetRGBA
562 * \sa SDL_MapRGB
563 */
564extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format,
565 Uint8 r, Uint8 g, Uint8 b,
566 Uint8 a);
567
568/**
569 * Get RGB values from a pixel in the specified format.
570 *
571 * This function uses the entire 8-bit [0..255] range when converting color
572 * components from pixel formats with less than 8-bits per RGB component
573 * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff,
574 * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]).
575 *
576 * \param pixel a pixel value
577 * \param format an SDL_PixelFormat structure describing the format of the
578 * pixel
579 * \param r a pointer filled in with the red component
580 * \param g a pointer filled in with the green component
581 * \param b a pointer filled in with the blue component
582 *
583 * \since This function is available since SDL 2.0.0.
584 *
585 * \sa SDL_GetRGBA
586 * \sa SDL_MapRGB
587 * \sa SDL_MapRGBA
588 */
589extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel,
590 const SDL_PixelFormat * format,
591 Uint8 * r, Uint8 * g, Uint8 * b);
592
593/**
594 * Get RGBA values from a pixel in the specified format.
595 *
596 * This function uses the entire 8-bit [0..255] range when converting color
597 * components from pixel formats with less than 8-bits per RGB component
598 * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff,
599 * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]).
600 *
601 * If the surface has no alpha component, the alpha will be returned as 0xff
602 * (100% opaque).
603 *
604 * \param pixel a pixel value
605 * \param format an SDL_PixelFormat structure describing the format of the
606 * pixel
607 * \param r a pointer filled in with the red component
608 * \param g a pointer filled in with the green component
609 * \param b a pointer filled in with the blue component
610 * \param a a pointer filled in with the alpha component
611 *
612 * \since This function is available since SDL 2.0.0.
613 *
614 * \sa SDL_GetRGB
615 * \sa SDL_MapRGB
616 * \sa SDL_MapRGBA
617 */
618extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel,
619 const SDL_PixelFormat * format,
620 Uint8 * r, Uint8 * g, Uint8 * b,
621 Uint8 * a);
622
623/**
624 * Calculate a 256 entry gamma ramp for a gamma value.
625 *
626 * \param gamma a gamma value where 0.0 is black and 1.0 is identity
627 * \param ramp an array of 256 values filled in with the gamma ramp
628 *
629 * \since This function is available since SDL 2.0.0.
630 *
631 * \sa SDL_SetWindowGammaRamp
632 */
633extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp);
634
635
636/* Ends C function definitions when using C++ */
637#ifdef __cplusplus
638}
639#endif
640#include "close_code.h"
641
642#endif /* SDL_pixels_h_ */
643
644/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_platform.h b/vendor/SDL2/include/SDL_platform.h new file mode 100644 index 0000000..79b8b6f --- /dev/null +++ b/vendor/SDL2/include/SDL_platform.h
@@ -0,0 +1,235 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_platform.h
24 *
25 * Try to get a standard set of platform defines.
26 */
27
28#ifndef SDL_platform_h_
29#define SDL_platform_h_
30
31#if defined(_AIX)
32#undef __AIX__
33#define __AIX__ 1
34#endif
35#if defined(__HAIKU__)
36#undef __HAIKU__
37#define __HAIKU__ 1
38#endif
39#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__)
40#undef __BSDI__
41#define __BSDI__ 1
42#endif
43#if defined(_arch_dreamcast)
44#undef __DREAMCAST__
45#define __DREAMCAST__ 1
46#endif
47#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
48#undef __FREEBSD__
49#define __FREEBSD__ 1
50#endif
51#if defined(hpux) || defined(__hpux) || defined(__hpux__)
52#undef __HPUX__
53#define __HPUX__ 1
54#endif
55#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE)
56#undef __IRIX__
57#define __IRIX__ 1
58#endif
59#if (defined(linux) || defined(__linux) || defined(__linux__))
60#undef __LINUX__
61#define __LINUX__ 1
62#endif
63#if defined(ANDROID) || defined(__ANDROID__)
64#undef __ANDROID__
65#undef __LINUX__ /* do we need to do this? */
66#define __ANDROID__ 1
67#endif
68
69#if defined(__APPLE__)
70/* lets us know what version of Mac OS X we're compiling on */
71#include "AvailabilityMacros.h"
72#include "TargetConditionals.h"
73
74/* Fix building with older SDKs that don't define these
75 See this for more information:
76 https://stackoverflow.com/questions/12132933/preprocessor-macro-for-os-x-targets
77*/
78#ifndef TARGET_OS_MACCATALYST
79#define TARGET_OS_MACCATALYST 0
80#endif
81#ifndef TARGET_OS_IOS
82#define TARGET_OS_IOS 0
83#endif
84#ifndef TARGET_OS_IPHONE
85#define TARGET_OS_IPHONE 0
86#endif
87#ifndef TARGET_OS_TV
88#define TARGET_OS_TV 0
89#endif
90#ifndef TARGET_OS_SIMULATOR
91#define TARGET_OS_SIMULATOR 0
92#endif
93
94#if TARGET_OS_TV
95#undef __TVOS__
96#define __TVOS__ 1
97#endif
98#if TARGET_OS_IPHONE
99/* if compiling for iOS */
100#undef __IPHONEOS__
101#define __IPHONEOS__ 1
102#undef __MACOSX__
103#else
104/* if not compiling for iOS */
105#undef __MACOSX__
106#define __MACOSX__ 1
107#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
108# error SDL for Mac OS X only supports deploying on 10.6 and above.
109#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1060 */
110#endif /* TARGET_OS_IPHONE */
111#endif /* defined(__APPLE__) */
112
113#if defined(__NetBSD__)
114#undef __NETBSD__
115#define __NETBSD__ 1
116#endif
117#if defined(__OpenBSD__)
118#undef __OPENBSD__
119#define __OPENBSD__ 1
120#endif
121#if defined(__OS2__) || defined(__EMX__)
122#undef __OS2__
123#define __OS2__ 1
124#endif
125#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE)
126#undef __OSF__
127#define __OSF__ 1
128#endif
129#if defined(__QNXNTO__)
130#undef __QNXNTO__
131#define __QNXNTO__ 1
132#endif
133#if defined(riscos) || defined(__riscos) || defined(__riscos__)
134#undef __RISCOS__
135#define __RISCOS__ 1
136#endif
137#if defined(__sun) && defined(__SVR4)
138#undef __SOLARIS__
139#define __SOLARIS__ 1
140#endif
141
142#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
143/* Try to find out if we're compiling for WinRT or non-WinRT */
144#if defined(_MSC_VER) && defined(__has_include)
145#if __has_include(<winapifamily.h>)
146#define HAVE_WINAPIFAMILY_H 1
147#else
148#define HAVE_WINAPIFAMILY_H 0
149#endif
150
151/* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */
152#elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_) /* _MSC_VER == 1700 for Visual Studio 2012 */
153#define HAVE_WINAPIFAMILY_H 1
154#else
155#define HAVE_WINAPIFAMILY_H 0
156#endif
157
158#if HAVE_WINAPIFAMILY_H
159#include <winapifamily.h>
160#define WINAPI_FAMILY_WINRT (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP))
161#else
162#define WINAPI_FAMILY_WINRT 0
163#endif /* HAVE_WINAPIFAMILY_H */
164
165#if WINAPI_FAMILY_WINRT
166#undef __WINRT__
167#define __WINRT__ 1
168#else
169#undef __WINDOWS__
170#define __WINDOWS__ 1
171#endif
172#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */
173
174#if defined(__WINDOWS__)
175#undef __WIN32__
176#define __WIN32__ 1
177#endif
178#if defined(__PSP__)
179#undef __PSP__
180#define __PSP__ 1
181#endif
182
183/* The NACL compiler defines __native_client__ and __pnacl__
184 * Ref: http://www.chromium.org/nativeclient/pnacl/stability-of-the-pnacl-bitcode-abi
185 */
186#if defined(__native_client__)
187#undef __LINUX__
188#undef __NACL__
189#define __NACL__ 1
190#endif
191#if defined(__pnacl__)
192#undef __LINUX__
193#undef __PNACL__
194#define __PNACL__ 1
195/* PNACL with newlib supports static linking only */
196#define __SDL_NOGETPROCADDR__
197#endif
198
199#if defined(__vita__)
200#define __VITA__ 1
201#endif
202
203#include "begin_code.h"
204/* Set up for C function definitions, even when using C++ */
205#ifdef __cplusplus
206extern "C" {
207#endif
208
209/**
210 * Get the name of the platform.
211 *
212 * Here are the names returned for some (but not all) supported platforms:
213 *
214 * - "Windows"
215 * - "Mac OS X"
216 * - "Linux"
217 * - "iOS"
218 * - "Android"
219 *
220 * \returns the name of the platform. If the correct platform name is not
221 * available, returns a string beginning with the text "Unknown".
222 *
223 * \since This function is available since SDL 2.0.0.
224 */
225extern DECLSPEC const char * SDLCALL SDL_GetPlatform (void);
226
227/* Ends C function definitions when using C++ */
228#ifdef __cplusplus
229}
230#endif
231#include "close_code.h"
232
233#endif /* SDL_platform_h_ */
234
235/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_power.h b/vendor/SDL2/include/SDL_power.h new file mode 100644 index 0000000..ecb3f4b --- /dev/null +++ b/vendor/SDL2/include/SDL_power.h
@@ -0,0 +1,88 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_power_h_
23#define SDL_power_h_
24
25/**
26 * \file SDL_power.h
27 *
28 * Header for the SDL power management routines.
29 */
30
31#include "SDL_stdinc.h"
32
33#include "begin_code.h"
34/* Set up for C function definitions, even when using C++ */
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39/**
40 * The basic state for the system's power supply.
41 */
42typedef enum
43{
44 SDL_POWERSTATE_UNKNOWN, /**< cannot determine power status */
45 SDL_POWERSTATE_ON_BATTERY, /**< Not plugged in, running on the battery */
46 SDL_POWERSTATE_NO_BATTERY, /**< Plugged in, no battery available */
47 SDL_POWERSTATE_CHARGING, /**< Plugged in, charging battery */
48 SDL_POWERSTATE_CHARGED /**< Plugged in, battery charged */
49} SDL_PowerState;
50
51
52/**
53 * Get the current power supply details.
54 *
55 * You should never take a battery status as absolute truth. Batteries
56 * (especially failing batteries) are delicate hardware, and the values
57 * reported here are best estimates based on what that hardware reports. It's
58 * not uncommon for older batteries to lose stored power much faster than it
59 * reports, or completely drain when reporting it has 20 percent left, etc.
60 *
61 * Battery status can change at any time; if you are concerned with power
62 * state, you should call this function frequently, and perhaps ignore changes
63 * until they seem to be stable for a few seconds.
64 *
65 * It's possible a platform can only report battery percentage or time left
66 * but not both.
67 *
68 * \param secs seconds of battery life left, you can pass a NULL here if you
69 * don't care, will return -1 if we can't determine a value, or
70 * we're not running on a battery
71 * \param pct percentage of battery life left, between 0 and 100, you can pass
72 * a NULL here if you don't care, will return -1 if we can't
73 * determine a value, or we're not running on a battery
74 * \returns an SDL_PowerState enum representing the current battery state.
75 *
76 * \since This function is available since SDL 2.0.0.
77 */
78extern DECLSPEC SDL_PowerState SDLCALL SDL_GetPowerInfo(int *secs, int *pct);
79
80/* Ends C function definitions when using C++ */
81#ifdef __cplusplus
82}
83#endif
84#include "close_code.h"
85
86#endif /* SDL_power_h_ */
87
88/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_quit.h b/vendor/SDL2/include/SDL_quit.h new file mode 100644 index 0000000..4090f7f --- /dev/null +++ b/vendor/SDL2/include/SDL_quit.h
@@ -0,0 +1,58 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_quit.h
24 *
25 * Include file for SDL quit event handling.
26 */
27
28#ifndef SDL_quit_h_
29#define SDL_quit_h_
30
31#include "SDL_stdinc.h"
32#include "SDL_error.h"
33
34/**
35 * \file SDL_quit.h
36 *
37 * An ::SDL_QUIT event is generated when the user tries to close the application
38 * window. If it is ignored or filtered out, the window will remain open.
39 * If it is not ignored or filtered, it is queued normally and the window
40 * is allowed to close. When the window is closed, screen updates will
41 * complete, but have no effect.
42 *
43 * SDL_Init() installs signal handlers for SIGINT (keyboard interrupt)
44 * and SIGTERM (system termination request), if handlers do not already
45 * exist, that generate ::SDL_QUIT events as well. There is no way
46 * to determine the cause of an ::SDL_QUIT event, but setting a signal
47 * handler in your application will override the default generation of
48 * quit events for that signal.
49 *
50 * \sa SDL_Quit()
51 */
52
53/* There are no functions directly affecting the quit event */
54
55#define SDL_QuitRequested() \
56 (SDL_PumpEvents(), (SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUIT,SDL_QUIT) > 0))
57
58#endif /* SDL_quit_h_ */
diff --git a/vendor/SDL2/include/SDL_rect.h b/vendor/SDL2/include/SDL_rect.h new file mode 100644 index 0000000..6616ba6 --- /dev/null +++ b/vendor/SDL2/include/SDL_rect.h
@@ -0,0 +1,224 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_rect.h
24 *
25 * Header file for SDL_rect definition and management functions.
26 */
27
28#ifndef SDL_rect_h_
29#define SDL_rect_h_
30
31#include "SDL_stdinc.h"
32#include "SDL_error.h"
33#include "SDL_pixels.h"
34#include "SDL_rwops.h"
35
36#include "begin_code.h"
37/* Set up for C function definitions, even when using C++ */
38#ifdef __cplusplus
39extern "C" {
40#endif
41
42/**
43 * The structure that defines a point (integer)
44 *
45 * \sa SDL_EnclosePoints
46 * \sa SDL_PointInRect
47 */
48typedef struct SDL_Point
49{
50 int x;
51 int y;
52} SDL_Point;
53
54/**
55 * The structure that defines a point (floating point)
56 *
57 * \sa SDL_EnclosePoints
58 * \sa SDL_PointInRect
59 */
60typedef struct SDL_FPoint
61{
62 float x;
63 float y;
64} SDL_FPoint;
65
66
67/**
68 * A rectangle, with the origin at the upper left (integer).
69 *
70 * \sa SDL_RectEmpty
71 * \sa SDL_RectEquals
72 * \sa SDL_HasIntersection
73 * \sa SDL_IntersectRect
74 * \sa SDL_UnionRect
75 * \sa SDL_EnclosePoints
76 */
77typedef struct SDL_Rect
78{
79 int x, y;
80 int w, h;
81} SDL_Rect;
82
83
84/**
85 * A rectangle, with the origin at the upper left (floating point).
86 */
87typedef struct SDL_FRect
88{
89 float x;
90 float y;
91 float w;
92 float h;
93} SDL_FRect;
94
95
96/**
97 * Returns true if point resides inside a rectangle.
98 */
99SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r)
100{
101 return ( (p->x >= r->x) && (p->x < (r->x + r->w)) &&
102 (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE;
103}
104
105/**
106 * Returns true if the rectangle has no area.
107 */
108SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r)
109{
110 return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE;
111}
112
113/**
114 * Returns true if the two rectangles are equal.
115 */
116SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b)
117{
118 return (a && b && (a->x == b->x) && (a->y == b->y) &&
119 (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE;
120}
121
122/**
123 * Determine whether two rectangles intersect.
124 *
125 * If either pointer is NULL the function will return SDL_FALSE.
126 *
127 * \param A an SDL_Rect structure representing the first rectangle
128 * \param B an SDL_Rect structure representing the second rectangle
129 * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
130 *
131 * \since This function is available since SDL 2.0.0.
132 *
133 * \sa SDL_IntersectRect
134 */
135extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A,
136 const SDL_Rect * B);
137
138/**
139 * Calculate the intersection of two rectangles.
140 *
141 * If `result` is NULL then this function will return SDL_FALSE.
142 *
143 * \param A an SDL_Rect structure representing the first rectangle
144 * \param B an SDL_Rect structure representing the second rectangle
145 * \param result an SDL_Rect structure filled in with the intersection of
146 * rectangles `A` and `B`
147 * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
148 *
149 * \since This function is available since SDL 2.0.0.
150 *
151 * \sa SDL_HasIntersection
152 */
153extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A,
154 const SDL_Rect * B,
155 SDL_Rect * result);
156
157/**
158 * Calculate the union of two rectangles.
159 *
160 * \param A an SDL_Rect structure representing the first rectangle
161 * \param B an SDL_Rect structure representing the second rectangle
162 * \param result an SDL_Rect structure filled in with the union of rectangles
163 * `A` and `B`
164 *
165 * \since This function is available since SDL 2.0.0.
166 */
167extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A,
168 const SDL_Rect * B,
169 SDL_Rect * result);
170
171/**
172 * Calculate a minimal rectangle enclosing a set of points.
173 *
174 * If `clip` is not NULL then only points inside of the clipping rectangle are
175 * considered.
176 *
177 * \param points an array of SDL_Point structures representing points to be
178 * enclosed
179 * \param count the number of structures in the `points` array
180 * \param clip an SDL_Rect used for clipping or NULL to enclose all points
181 * \param result an SDL_Rect structure filled in with the minimal enclosing
182 * rectangle
183 * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the
184 * points were outside of the clipping rectangle.
185 *
186 * \since This function is available since SDL 2.0.0.
187 */
188extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points,
189 int count,
190 const SDL_Rect * clip,
191 SDL_Rect * result);
192
193/**
194 * Calculate the intersection of a rectangle and line segment.
195 *
196 * This function is used to clip a line segment to a rectangle. A line segment
197 * contained entirely within the rectangle or that does not intersect will
198 * remain unchanged. A line segment that crosses the rectangle at either or
199 * both ends will be clipped to the boundary of the rectangle and the new
200 * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary.
201 *
202 * \param rect an SDL_Rect structure representing the rectangle to intersect
203 * \param X1 a pointer to the starting X-coordinate of the line
204 * \param Y1 a pointer to the starting Y-coordinate of the line
205 * \param X2 a pointer to the ending X-coordinate of the line
206 * \param Y2 a pointer to the ending Y-coordinate of the line
207 * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
208 *
209 * \since This function is available since SDL 2.0.0.
210 */
211extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect *
212 rect, int *X1,
213 int *Y1, int *X2,
214 int *Y2);
215
216/* Ends C function definitions when using C++ */
217#ifdef __cplusplus
218}
219#endif
220#include "close_code.h"
221
222#endif /* SDL_rect_h_ */
223
224/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_render.h b/vendor/SDL2/include/SDL_render.h new file mode 100644 index 0000000..a7e4908 --- /dev/null +++ b/vendor/SDL2/include/SDL_render.h
@@ -0,0 +1,1890 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_render.h
24 *
25 * Header file for SDL 2D rendering functions.
26 *
27 * This API supports the following features:
28 * * single pixel points
29 * * single pixel lines
30 * * filled rectangles
31 * * texture images
32 *
33 * The primitives may be drawn in opaque, blended, or additive modes.
34 *
35 * The texture images may be drawn in opaque, blended, or additive modes.
36 * They can have an additional color tint or alpha modulation applied to
37 * them, and may also be stretched with linear interpolation.
38 *
39 * This API is designed to accelerate simple 2D operations. You may
40 * want more functionality such as polygons and particle effects and
41 * in that case you should use SDL's OpenGL/Direct3D support or one
42 * of the many good 3D engines.
43 *
44 * These functions must be called from the main thread.
45 * See this bug for details: http://bugzilla.libsdl.org/show_bug.cgi?id=1995
46 */
47
48#ifndef SDL_render_h_
49#define SDL_render_h_
50
51#include "SDL_stdinc.h"
52#include "SDL_rect.h"
53#include "SDL_video.h"
54
55#include "begin_code.h"
56/* Set up for C function definitions, even when using C++ */
57#ifdef __cplusplus
58extern "C" {
59#endif
60
61/**
62 * Flags used when creating a rendering context
63 */
64typedef enum
65{
66 SDL_RENDERER_SOFTWARE = 0x00000001, /**< The renderer is a software fallback */
67 SDL_RENDERER_ACCELERATED = 0x00000002, /**< The renderer uses hardware
68 acceleration */
69 SDL_RENDERER_PRESENTVSYNC = 0x00000004, /**< Present is synchronized
70 with the refresh rate */
71 SDL_RENDERER_TARGETTEXTURE = 0x00000008 /**< The renderer supports
72 rendering to texture */
73} SDL_RendererFlags;
74
75/**
76 * Information on the capabilities of a render driver or context.
77 */
78typedef struct SDL_RendererInfo
79{
80 const char *name; /**< The name of the renderer */
81 Uint32 flags; /**< Supported ::SDL_RendererFlags */
82 Uint32 num_texture_formats; /**< The number of available texture formats */
83 Uint32 texture_formats[16]; /**< The available texture formats */
84 int max_texture_width; /**< The maximum texture width */
85 int max_texture_height; /**< The maximum texture height */
86} SDL_RendererInfo;
87
88/**
89 * Vertex structure
90 */
91typedef struct SDL_Vertex
92{
93 SDL_FPoint position; /**< Vertex position, in SDL_Renderer coordinates */
94 SDL_Color color; /**< Vertex color */
95 SDL_FPoint tex_coord; /**< Normalized texture coordinates, if needed */
96} SDL_Vertex;
97
98/**
99 * The scaling mode for a texture.
100 */
101typedef enum
102{
103 SDL_ScaleModeNearest, /**< nearest pixel sampling */
104 SDL_ScaleModeLinear, /**< linear filtering */
105 SDL_ScaleModeBest /**< anisotropic filtering */
106} SDL_ScaleMode;
107
108/**
109 * The access pattern allowed for a texture.
110 */
111typedef enum
112{
113 SDL_TEXTUREACCESS_STATIC, /**< Changes rarely, not lockable */
114 SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */
115 SDL_TEXTUREACCESS_TARGET /**< Texture can be used as a render target */
116} SDL_TextureAccess;
117
118/**
119 * The texture channel modulation used in SDL_RenderCopy().
120 */
121typedef enum
122{
123 SDL_TEXTUREMODULATE_NONE = 0x00000000, /**< No modulation */
124 SDL_TEXTUREMODULATE_COLOR = 0x00000001, /**< srcC = srcC * color */
125 SDL_TEXTUREMODULATE_ALPHA = 0x00000002 /**< srcA = srcA * alpha */
126} SDL_TextureModulate;
127
128/**
129 * Flip constants for SDL_RenderCopyEx
130 */
131typedef enum
132{
133 SDL_FLIP_NONE = 0x00000000, /**< Do not flip */
134 SDL_FLIP_HORIZONTAL = 0x00000001, /**< flip horizontally */
135 SDL_FLIP_VERTICAL = 0x00000002 /**< flip vertically */
136} SDL_RendererFlip;
137
138/**
139 * A structure representing rendering state
140 */
141struct SDL_Renderer;
142typedef struct SDL_Renderer SDL_Renderer;
143
144/**
145 * An efficient driver-specific representation of pixel data
146 */
147struct SDL_Texture;
148typedef struct SDL_Texture SDL_Texture;
149
150/* Function prototypes */
151
152/**
153 * Get the number of 2D rendering drivers available for the current display.
154 *
155 * A render driver is a set of code that handles rendering and texture
156 * management on a particular display. Normally there is only one, but some
157 * drivers may have several available with different capabilities.
158 *
159 * There may be none if SDL was compiled without render support.
160 *
161 * \returns a number >= 0 on success or a negative error code on failure; call
162 * SDL_GetError() for more information.
163 *
164 * \since This function is available since SDL 2.0.0.
165 *
166 * \sa SDL_CreateRenderer
167 * \sa SDL_GetRenderDriverInfo
168 */
169extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void);
170
171/**
172 * Get info about a specific 2D rendering driver for the current display.
173 *
174 * \param index the index of the driver to query information about
175 * \param info an SDL_RendererInfo structure to be filled with information on
176 * the rendering driver
177 * \returns 0 on success or a negative error code on failure; call
178 * SDL_GetError() for more information.
179 *
180 * \since This function is available since SDL 2.0.0.
181 *
182 * \sa SDL_CreateRenderer
183 * \sa SDL_GetNumRenderDrivers
184 */
185extern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index,
186 SDL_RendererInfo * info);
187
188/**
189 * Create a window and default renderer.
190 *
191 * \param width the width of the window
192 * \param height the height of the window
193 * \param window_flags the flags used to create the window (see
194 * SDL_CreateWindow())
195 * \param window a pointer filled with the window, or NULL on error
196 * \param renderer a pointer filled with the renderer, or NULL on error
197 * \returns 0 on success, or -1 on error; call SDL_GetError() for more
198 * information.
199 *
200 * \since This function is available since SDL 2.0.0.
201 *
202 * \sa SDL_CreateRenderer
203 * \sa SDL_CreateWindow
204 */
205extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer(
206 int width, int height, Uint32 window_flags,
207 SDL_Window **window, SDL_Renderer **renderer);
208
209
210/**
211 * Create a 2D rendering context for a window.
212 *
213 * \param window the window where rendering is displayed
214 * \param index the index of the rendering driver to initialize, or -1 to
215 * initialize the first one supporting the requested flags
216 * \param flags 0, or one or more SDL_RendererFlags OR'd together
217 * \returns a valid rendering context or NULL if there was an error; call
218 * SDL_GetError() for more information.
219 *
220 * \since This function is available since SDL 2.0.0.
221 *
222 * \sa SDL_CreateSoftwareRenderer
223 * \sa SDL_DestroyRenderer
224 * \sa SDL_GetNumRenderDrivers
225 * \sa SDL_GetRendererInfo
226 */
227extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window,
228 int index, Uint32 flags);
229
230/**
231 * Create a 2D software rendering context for a surface.
232 *
233 * Two other API which can be used to create SDL_Renderer:
234 * SDL_CreateRenderer() and SDL_CreateWindowAndRenderer(). These can _also_
235 * create a software renderer, but they are intended to be used with an
236 * SDL_Window as the final destination and not an SDL_Surface.
237 *
238 * \param surface the SDL_Surface structure representing the surface where
239 * rendering is done
240 * \returns a valid rendering context or NULL if there was an error; call
241 * SDL_GetError() for more information.
242 *
243 * \since This function is available since SDL 2.0.0.
244 *
245 * \sa SDL_CreateRenderer
246 * \sa SDL_CreateWindowRenderer
247 * \sa SDL_DestroyRenderer
248 */
249extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface);
250
251/**
252 * Get the renderer associated with a window.
253 *
254 * \param window the window to query
255 * \returns the rendering context on success or NULL on failure; call
256 * SDL_GetError() for more information.
257 *
258 * \since This function is available since SDL 2.0.0.
259 *
260 * \sa SDL_CreateRenderer
261 */
262extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window);
263
264/**
265 * Get information about a rendering context.
266 *
267 * \param renderer the rendering context
268 * \param info an SDL_RendererInfo structure filled with information about the
269 * current renderer
270 * \returns 0 on success or a negative error code on failure; call
271 * SDL_GetError() for more information.
272 *
273 * \since This function is available since SDL 2.0.0.
274 *
275 * \sa SDL_CreateRenderer
276 */
277extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer,
278 SDL_RendererInfo * info);
279
280/**
281 * Get the output size in pixels of a rendering context.
282 *
283 * Due to high-dpi displays, you might end up with a rendering context that
284 * has more pixels than the window that contains it, so use this instead of
285 * SDL_GetWindowSize() to decide how much drawing area you have.
286 *
287 * \param renderer the rendering context
288 * \param w an int filled with the width
289 * \param h an int filled with the height
290 * \returns 0 on success or a negative error code on failure; call
291 * SDL_GetError() for more information.
292 *
293 * \since This function is available since SDL 2.0.0.
294 *
295 * \sa SDL_GetRenderer
296 */
297extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer,
298 int *w, int *h);
299
300/**
301 * Create a texture for a rendering context.
302 *
303 * You can set the texture scaling method by setting
304 * `SDL_HINT_RENDER_SCALE_QUALITY` before creating the texture.
305 *
306 * \param renderer the rendering context
307 * \param format one of the enumerated values in SDL_PixelFormatEnum
308 * \param access one of the enumerated values in SDL_TextureAccess
309 * \param w the width of the texture in pixels
310 * \param h the height of the texture in pixels
311 * \returns a pointer to the created texture or NULL if no rendering context
312 * was active, the format was unsupported, or the width or height
313 * were out of range; call SDL_GetError() for more information.
314 *
315 * \since This function is available since SDL 2.0.0.
316 *
317 * \sa SDL_CreateTextureFromSurface
318 * \sa SDL_DestroyTexture
319 * \sa SDL_QueryTexture
320 * \sa SDL_UpdateTexture
321 */
322extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer,
323 Uint32 format,
324 int access, int w,
325 int h);
326
327/**
328 * Create a texture from an existing surface.
329 *
330 * The surface is not modified or freed by this function.
331 *
332 * The SDL_TextureAccess hint for the created texture is
333 * `SDL_TEXTUREACCESS_STATIC`.
334 *
335 * The pixel format of the created texture may be different from the pixel
336 * format of the surface. Use SDL_QueryTexture() to query the pixel format of
337 * the texture.
338 *
339 * \param renderer the rendering context
340 * \param surface the SDL_Surface structure containing pixel data used to fill
341 * the texture
342 * \returns the created texture or NULL on failure; call SDL_GetError() for
343 * more information.
344 *
345 * \since This function is available since SDL 2.0.0.
346 *
347 * \sa SDL_CreateTexture
348 * \sa SDL_DestroyTexture
349 * \sa SDL_QueryTexture
350 */
351extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface);
352
353/**
354 * Query the attributes of a texture.
355 *
356 * \param texture the texture to query
357 * \param format a pointer filled in with the raw format of the texture; the
358 * actual format may differ, but pixel transfers will use this
359 * format (one of the SDL_PixelFormatEnum values)
360 * \param access a pointer filled in with the actual access to the texture
361 * (one of the SDL_TextureAccess values)
362 * \param w a pointer filled in with the width of the texture in pixels
363 * \param h a pointer filled in with the height of the texture in pixels
364 * \returns 0 on success or a negative error code on failure; call
365 * SDL_GetError() for more information.
366 *
367 * \since This function is available since SDL 2.0.0.
368 *
369 * \sa SDL_CreateTexture
370 */
371extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture,
372 Uint32 * format, int *access,
373 int *w, int *h);
374
375/**
376 * Set an additional color value multiplied into render copy operations.
377 *
378 * When this texture is rendered, during the copy operation each source color
379 * channel is modulated by the appropriate color value according to the
380 * following formula:
381 *
382 * `srcC = srcC * (color / 255)`
383 *
384 * Color modulation is not always supported by the renderer; it will return -1
385 * if color modulation is not supported.
386 *
387 * \param texture the texture to update
388 * \param r the red color value multiplied into copy operations
389 * \param g the green color value multiplied into copy operations
390 * \param b the blue color value multiplied into copy operations
391 * \returns 0 on success or a negative error code on failure; call
392 * SDL_GetError() for more information.
393 *
394 * \since This function is available since SDL 2.0.0.
395 *
396 * \sa SDL_GetTextureColorMod
397 * \sa SDL_SetTextureAlphaMod
398 */
399extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture,
400 Uint8 r, Uint8 g, Uint8 b);
401
402
403/**
404 * Get the additional color value multiplied into render copy operations.
405 *
406 * \param texture the texture to query
407 * \param r a pointer filled in with the current red color value
408 * \param g a pointer filled in with the current green color value
409 * \param b a pointer filled in with the current blue color value
410 * \returns 0 on success or a negative error code on failure; call
411 * SDL_GetError() for more information.
412 *
413 * \since This function is available since SDL 2.0.0.
414 *
415 * \sa SDL_GetTextureAlphaMod
416 * \sa SDL_SetTextureColorMod
417 */
418extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture,
419 Uint8 * r, Uint8 * g,
420 Uint8 * b);
421
422/**
423 * Set an additional alpha value multiplied into render copy operations.
424 *
425 * When this texture is rendered, during the copy operation the source alpha
426 * value is modulated by this alpha value according to the following formula:
427 *
428 * `srcA = srcA * (alpha / 255)`
429 *
430 * Alpha modulation is not always supported by the renderer; it will return -1
431 * if alpha modulation is not supported.
432 *
433 * \param texture the texture to update
434 * \param alpha the source alpha value multiplied into copy operations
435 * \returns 0 on success or a negative error code on failure; call
436 * SDL_GetError() for more information.
437 *
438 * \since This function is available since SDL 2.0.0.
439 *
440 * \sa SDL_GetTextureAlphaMod
441 * \sa SDL_SetTextureColorMod
442 */
443extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture,
444 Uint8 alpha);
445
446/**
447 * Get the additional alpha value multiplied into render copy operations.
448 *
449 * \param texture the texture to query
450 * \param alpha a pointer filled in with the current alpha value
451 * \returns 0 on success or a negative error code on failure; call
452 * SDL_GetError() for more information.
453 *
454 * \since This function is available since SDL 2.0.0.
455 *
456 * \sa SDL_GetTextureColorMod
457 * \sa SDL_SetTextureAlphaMod
458 */
459extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture,
460 Uint8 * alpha);
461
462/**
463 * Set the blend mode for a texture, used by SDL_RenderCopy().
464 *
465 * If the blend mode is not supported, the closest supported mode is chosen
466 * and this function returns -1.
467 *
468 * \param texture the texture to update
469 * \param blendMode the SDL_BlendMode to use for texture blending
470 * \returns 0 on success or a negative error code on failure; call
471 * SDL_GetError() for more information.
472 *
473 * \since This function is available since SDL 2.0.0.
474 *
475 * \sa SDL_GetTextureBlendMode
476 * \sa SDL_RenderCopy
477 */
478extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture,
479 SDL_BlendMode blendMode);
480
481/**
482 * Get the blend mode used for texture copy operations.
483 *
484 * \param texture the texture to query
485 * \param blendMode a pointer filled in with the current SDL_BlendMode
486 * \returns 0 on success or a negative error code on failure; call
487 * SDL_GetError() for more information.
488 *
489 * \since This function is available since SDL 2.0.0.
490 *
491 * \sa SDL_SetTextureBlendMode
492 */
493extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture,
494 SDL_BlendMode *blendMode);
495
496/**
497 * Set the scale mode used for texture scale operations.
498 *
499 * If the scale mode is not supported, the closest supported mode is chosen.
500 *
501 * \param texture The texture to update.
502 * \param scaleMode the SDL_ScaleMode to use for texture scaling.
503 * \returns 0 on success, or -1 if the texture is not valid.
504 *
505 * \since This function is available since SDL 2.0.12.
506 *
507 * \sa SDL_GetTextureScaleMode
508 */
509extern DECLSPEC int SDLCALL SDL_SetTextureScaleMode(SDL_Texture * texture,
510 SDL_ScaleMode scaleMode);
511
512/**
513 * Get the scale mode used for texture scale operations.
514 *
515 * \param texture the texture to query.
516 * \param scaleMode a pointer filled in with the current scale mode.
517 * \return 0 on success, or -1 if the texture is not valid.
518 *
519 * \since This function is available since SDL 2.0.12.
520 *
521 * \sa SDL_SetTextureScaleMode
522 */
523extern DECLSPEC int SDLCALL SDL_GetTextureScaleMode(SDL_Texture * texture,
524 SDL_ScaleMode *scaleMode);
525
526/**
527 * Associate a user-specified pointer with a texture.
528 *
529 * \param texture the texture to update.
530 * \param userdata the pointer to associate with the texture.
531 * \returns 0 on success, or -1 if the texture is not valid.
532 *
533 * \since This function is available since SDL 2.0.18.
534 *
535 * \sa SDL_GetTextureUserData
536 */
537extern DECLSPEC int SDLCALL SDL_SetTextureUserData(SDL_Texture * texture,
538 void *userdata);
539
540/**
541 * Get the user-specified pointer associated with a texture
542 *
543 * \param texture the texture to query.
544 * \return the pointer associated with the texture, or NULL if the texture is
545 * not valid.
546 *
547 * \since This function is available since SDL 2.0.18.
548 *
549 * \sa SDL_SetTextureUserData
550 */
551extern DECLSPEC void * SDLCALL SDL_GetTextureUserData(SDL_Texture * texture);
552
553/**
554 * Update the given texture rectangle with new pixel data.
555 *
556 * The pixel data must be in the pixel format of the texture. Use
557 * SDL_QueryTexture() to query the pixel format of the texture.
558 *
559 * This is a fairly slow function, intended for use with static textures that
560 * do not change often.
561 *
562 * If the texture is intended to be updated often, it is preferred to create
563 * the texture as streaming and use the locking functions referenced below.
564 * While this function will work with streaming textures, for optimization
565 * reasons you may not get the pixels back if you lock the texture afterward.
566 *
567 * \param texture the texture to update
568 * \param rect an SDL_Rect structure representing the area to update, or NULL
569 * to update the entire texture
570 * \param pixels the raw pixel data in the format of the texture
571 * \param pitch the number of bytes in a row of pixel data, including padding
572 * between lines
573 * \returns 0 on success or a negative error code on failure; call
574 * SDL_GetError() for more information.
575 *
576 * \since This function is available since SDL 2.0.0.
577 *
578 * \sa SDL_CreateTexture
579 * \sa SDL_LockTexture
580 * \sa SDL_UnlockTexture
581 */
582extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture,
583 const SDL_Rect * rect,
584 const void *pixels, int pitch);
585
586/**
587 * Update a rectangle within a planar YV12 or IYUV texture with new pixel
588 * data.
589 *
590 * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous
591 * block of Y and U/V planes in the proper order, but this function is
592 * available if your pixel data is not contiguous.
593 *
594 * \param texture the texture to update
595 * \param rect a pointer to the rectangle of pixels to update, or NULL to
596 * update the entire texture
597 * \param Yplane the raw pixel data for the Y plane
598 * \param Ypitch the number of bytes between rows of pixel data for the Y
599 * plane
600 * \param Uplane the raw pixel data for the U plane
601 * \param Upitch the number of bytes between rows of pixel data for the U
602 * plane
603 * \param Vplane the raw pixel data for the V plane
604 * \param Vpitch the number of bytes between rows of pixel data for the V
605 * plane
606 * \returns 0 on success or -1 if the texture is not valid; call
607 * SDL_GetError() for more information.
608 *
609 * \since This function is available since SDL 2.0.1.
610 *
611 * \sa SDL_UpdateTexture
612 */
613extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture,
614 const SDL_Rect * rect,
615 const Uint8 *Yplane, int Ypitch,
616 const Uint8 *Uplane, int Upitch,
617 const Uint8 *Vplane, int Vpitch);
618
619/**
620 * Update a rectangle within a planar NV12 or NV21 texture with new pixels.
621 *
622 * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous
623 * block of NV12/21 planes in the proper order, but this function is available
624 * if your pixel data is not contiguous.
625 *
626 * \param texture the texture to update
627 * \param rect a pointer to the rectangle of pixels to update, or NULL to
628 * update the entire texture.
629 * \param Yplane the raw pixel data for the Y plane.
630 * \param Ypitch the number of bytes between rows of pixel data for the Y
631 * plane.
632 * \param UVplane the raw pixel data for the UV plane.
633 * \param UVpitch the number of bytes between rows of pixel data for the UV
634 * plane.
635 * \return 0 on success, or -1 if the texture is not valid.
636 *
637 * \since This function is available since SDL 2.0.16.
638 */
639extern DECLSPEC int SDLCALL SDL_UpdateNVTexture(SDL_Texture * texture,
640 const SDL_Rect * rect,
641 const Uint8 *Yplane, int Ypitch,
642 const Uint8 *UVplane, int UVpitch);
643
644/**
645 * Lock a portion of the texture for **write-only** pixel access.
646 *
647 * As an optimization, the pixels made available for editing don't necessarily
648 * contain the old texture data. This is a write-only operation, and if you
649 * need to keep a copy of the texture data you should do that at the
650 * application level.
651 *
652 * You must use SDL_UnlockTexture() to unlock the pixels and apply any
653 * changes.
654 *
655 * \param texture the texture to lock for access, which was created with
656 * `SDL_TEXTUREACCESS_STREAMING`
657 * \param rect an SDL_Rect structure representing the area to lock for access;
658 * NULL to lock the entire texture
659 * \param pixels this is filled in with a pointer to the locked pixels,
660 * appropriately offset by the locked area
661 * \param pitch this is filled in with the pitch of the locked pixels; the
662 * pitch is the length of one row in bytes
663 * \returns 0 on success or a negative error code if the texture is not valid
664 * or was not created with `SDL_TEXTUREACCESS_STREAMING`; call
665 * SDL_GetError() for more information.
666 *
667 * \since This function is available since SDL 2.0.0.
668 *
669 * \sa SDL_UnlockTexture
670 */
671extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture,
672 const SDL_Rect * rect,
673 void **pixels, int *pitch);
674
675/**
676 * Lock a portion of the texture for **write-only** pixel access, and expose
677 * it as a SDL surface.
678 *
679 * Besides providing an SDL_Surface instead of raw pixel data, this function
680 * operates like SDL_LockTexture.
681 *
682 * As an optimization, the pixels made available for editing don't necessarily
683 * contain the old texture data. This is a write-only operation, and if you
684 * need to keep a copy of the texture data you should do that at the
685 * application level.
686 *
687 * You must use SDL_UnlockTexture() to unlock the pixels and apply any
688 * changes.
689 *
690 * The returned surface is freed internally after calling SDL_UnlockTexture()
691 * or SDL_DestroyTexture(). The caller should not free it.
692 *
693 * \param texture the texture to lock for access, which was created with
694 * `SDL_TEXTUREACCESS_STREAMING`
695 * \param rect a pointer to the rectangle to lock for access. If the rect is
696 * NULL, the entire texture will be locked
697 * \param surface this is filled in with an SDL surface representing the
698 * locked area
699 * \returns 0 on success, or -1 if the texture is not valid or was not created
700 * with `SDL_TEXTUREACCESS_STREAMING`
701 *
702 * \since This function is available since SDL 2.0.12.
703 *
704 * \sa SDL_LockTexture
705 * \sa SDL_UnlockTexture
706 */
707extern DECLSPEC int SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture,
708 const SDL_Rect *rect,
709 SDL_Surface **surface);
710
711/**
712 * Unlock a texture, uploading the changes to video memory, if needed.
713 *
714 * **Warning**: Please note that SDL_LockTexture() is intended to be
715 * write-only; it will not guarantee the previous contents of the texture will
716 * be provided. You must fully initialize any area of a texture that you lock
717 * before unlocking it, as the pixels might otherwise be uninitialized memory.
718 *
719 * Which is to say: locking and immediately unlocking a texture can result in
720 * corrupted textures, depending on the renderer in use.
721 *
722 * \param texture a texture locked by SDL_LockTexture()
723 *
724 * \since This function is available since SDL 2.0.0.
725 *
726 * \sa SDL_LockTexture
727 */
728extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture);
729
730/**
731 * Determine whether a renderer supports the use of render targets.
732 *
733 * \param renderer the renderer that will be checked
734 * \returns SDL_TRUE if supported or SDL_FALSE if not.
735 *
736 * \since This function is available since SDL 2.0.0.
737 *
738 * \sa SDL_SetRenderTarget
739 */
740extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer);
741
742/**
743 * Set a texture as the current rendering target.
744 *
745 * Before using this function, you should check the
746 * `SDL_RENDERER_TARGETTEXTURE` bit in the flags of SDL_RendererInfo to see if
747 * render targets are supported.
748 *
749 * The default render target is the window for which the renderer was created.
750 * To stop rendering to a texture and render to the window again, call this
751 * function with a NULL `texture`.
752 *
753 * \param renderer the rendering context
754 * \param texture the targeted texture, which must be created with the
755 * `SDL_TEXTUREACCESS_TARGET` flag, or NULL to render to the
756 * window instead of a texture.
757 * \returns 0 on success or a negative error code on failure; call
758 * SDL_GetError() for more information.
759 *
760 * \since This function is available since SDL 2.0.0.
761 *
762 * \sa SDL_GetRenderTarget
763 */
764extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer,
765 SDL_Texture *texture);
766
767/**
768 * Get the current render target.
769 *
770 * The default render target is the window for which the renderer was created,
771 * and is reported a NULL here.
772 *
773 * \param renderer the rendering context
774 * \returns the current render target or NULL for the default render target.
775 *
776 * \since This function is available since SDL 2.0.0.
777 *
778 * \sa SDL_SetRenderTarget
779 */
780extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer);
781
782/**
783 * Set a device independent resolution for rendering.
784 *
785 * This function uses the viewport and scaling functionality to allow a fixed
786 * logical resolution for rendering, regardless of the actual output
787 * resolution. If the actual output resolution doesn't have the same aspect
788 * ratio the output rendering will be centered within the output display.
789 *
790 * If the output display is a window, mouse and touch events in the window
791 * will be filtered and scaled so they seem to arrive within the logical
792 * resolution. The SDL_HINT_MOUSE_RELATIVE_SCALING hint controls whether
793 * relative motion events are also scaled.
794 *
795 * If this function results in scaling or subpixel drawing by the rendering
796 * backend, it will be handled using the appropriate quality hints.
797 *
798 * \param renderer the renderer for which resolution should be set
799 * \param w the width of the logical resolution
800 * \param h the height of the logical resolution
801 * \returns 0 on success or a negative error code on failure; call
802 * SDL_GetError() for more information.
803 *
804 * \since This function is available since SDL 2.0.0.
805 *
806 * \sa SDL_RenderGetLogicalSize
807 */
808extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h);
809
810/**
811 * Get device independent resolution for rendering.
812 *
813 * This may return 0 for `w` and `h` if the SDL_Renderer has never had its
814 * logical size set by SDL_RenderSetLogicalSize() and never had a render
815 * target set.
816 *
817 * \param renderer a rendering context
818 * \param w an int to be filled with the width
819 * \param h an int to be filled with the height
820 *
821 * \since This function is available since SDL 2.0.0.
822 *
823 * \sa SDL_RenderSetLogicalSize
824 */
825extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h);
826
827/**
828 * Set whether to force integer scales for resolution-independent rendering.
829 *
830 * This function restricts the logical viewport to integer values - that is,
831 * when a resolution is between two multiples of a logical size, the viewport
832 * size is rounded down to the lower multiple.
833 *
834 * \param renderer the renderer for which integer scaling should be set
835 * \param enable enable or disable the integer scaling for rendering
836 * \returns 0 on success or a negative error code on failure; call
837 * SDL_GetError() for more information.
838 *
839 * \since This function is available since SDL 2.0.5.
840 *
841 * \sa SDL_RenderGetIntegerScale
842 * \sa SDL_RenderSetLogicalSize
843 */
844extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer,
845 SDL_bool enable);
846
847/**
848 * Get whether integer scales are forced for resolution-independent rendering.
849 *
850 * \param renderer the renderer from which integer scaling should be queried
851 * \returns SDL_TRUE if integer scales are forced or SDL_FALSE if not and on
852 * failure; call SDL_GetError() for more information.
853 *
854 * \since This function is available since SDL 2.0.5.
855 *
856 * \sa SDL_RenderSetIntegerScale
857 */
858extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer);
859
860/**
861 * Set the drawing area for rendering on the current target.
862 *
863 * When the window is resized, the viewport is reset to fill the entire new
864 * window size.
865 *
866 * \param renderer the rendering context
867 * \param rect the SDL_Rect structure representing the drawing area, or NULL
868 * to set the viewport to the entire target
869 * \returns 0 on success or a negative error code on failure; call
870 * SDL_GetError() for more information.
871 *
872 * \since This function is available since SDL 2.0.0.
873 *
874 * \sa SDL_RenderGetViewport
875 */
876extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer,
877 const SDL_Rect * rect);
878
879/**
880 * Get the drawing area for the current target.
881 *
882 * \param renderer the rendering context
883 * \param rect an SDL_Rect structure filled in with the current drawing area
884 *
885 * \since This function is available since SDL 2.0.0.
886 *
887 * \sa SDL_RenderSetViewport
888 */
889extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer,
890 SDL_Rect * rect);
891
892/**
893 * Set the clip rectangle for rendering on the specified target.
894 *
895 * \param renderer the rendering context for which clip rectangle should be
896 * set
897 * \param rect an SDL_Rect structure representing the clip area, relative to
898 * the viewport, or NULL to disable clipping
899 * \returns 0 on success or a negative error code on failure; call
900 * SDL_GetError() for more information.
901 *
902 * \since This function is available since SDL 2.0.0.
903 *
904 * \sa SDL_RenderGetClipRect
905 * \sa SDL_RenderIsClipEnabled
906 */
907extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer,
908 const SDL_Rect * rect);
909
910/**
911 * Get the clip rectangle for the current target.
912 *
913 * \param renderer the rendering context from which clip rectangle should be
914 * queried
915 * \param rect an SDL_Rect structure filled in with the current clipping area
916 * or an empty rectangle if clipping is disabled
917 *
918 * \since This function is available since SDL 2.0.0.
919 *
920 * \sa SDL_RenderIsClipEnabled
921 * \sa SDL_RenderSetClipRect
922 */
923extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer,
924 SDL_Rect * rect);
925
926/**
927 * Get whether clipping is enabled on the given renderer.
928 *
929 * \param renderer the renderer from which clip state should be queried
930 * \returns SDL_TRUE if clipping is enabled or SDL_FALSE if not; call
931 * SDL_GetError() for more information.
932 *
933 * \since This function is available since SDL 2.0.4.
934 *
935 * \sa SDL_RenderGetClipRect
936 * \sa SDL_RenderSetClipRect
937 */
938extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer);
939
940
941/**
942 * Set the drawing scale for rendering on the current target.
943 *
944 * The drawing coordinates are scaled by the x/y scaling factors before they
945 * are used by the renderer. This allows resolution independent drawing with a
946 * single coordinate system.
947 *
948 * If this results in scaling or subpixel drawing by the rendering backend, it
949 * will be handled using the appropriate quality hints. For best results use
950 * integer scaling factors.
951 *
952 * \param renderer a rendering context
953 * \param scaleX the horizontal scaling factor
954 * \param scaleY the vertical scaling factor
955 * \returns 0 on success or a negative error code on failure; call
956 * SDL_GetError() for more information.
957 *
958 * \since This function is available since SDL 2.0.0.
959 *
960 * \sa SDL_RenderGetScale
961 * \sa SDL_RenderSetLogicalSize
962 */
963extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer,
964 float scaleX, float scaleY);
965
966/**
967 * Get the drawing scale for the current target.
968 *
969 * \param renderer the renderer from which drawing scale should be queried
970 * \param scaleX a pointer filled in with the horizontal scaling factor
971 * \param scaleY a pointer filled in with the vertical scaling factor
972 *
973 * \since This function is available since SDL 2.0.0.
974 *
975 * \sa SDL_RenderSetScale
976 */
977extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer,
978 float *scaleX, float *scaleY);
979
980/**
981 * Get logical coordinates of point in renderer when given real coordinates of
982 * point in window.
983 *
984 * Logical coordinates will differ from real coordinates when render is scaled
985 * and logical renderer size set
986 *
987 * \param renderer the renderer from which the logical coordinates should be
988 * calcualted
989 * \param windowX the real X coordinate in the window
990 * \param windowY the real Y coordinate in the window
991 * \param logicalX the pointer filled with the logical x coordinate
992 * \param logicalY the pointer filled with the logical y coordinate
993 *
994 * \since This function is available since SDL 2.0.18.
995 *
996 * \sa SDL_RenderGetScale
997 * \sa SDL_RenderSetScale
998 * \sa SDL_RenderGetLogicalSize
999 * \sa SDL_RenderSetLogicalSize
1000 */
1001extern DECLSPEC void SDLCALL SDL_RenderWindowToLogical(SDL_Renderer * renderer,
1002 int windowX, int windowY,
1003 float *logicalX, float *logicalY);
1004
1005 /**
1006 * Get real coordinates of point in window when given logical coordinates of point in renderer.
1007 * Logical coordinates will differ from real coordinates when render is scaled and logical renderer size set
1008 *
1009 * \param renderer the renderer from which the window coordinates should be calculated
1010 * \param logicalX the logical x coordinate
1011 * \param logicalY the logical y coordinate
1012 * \param windowX the pointer filled with the real X coordinate in the window
1013 * \param windowY the pointer filled with the real Y coordinate in the window
1014
1015 *
1016 * \since This function is available since SDL 2.0.18.
1017 *
1018 * \sa SDL_RenderGetScale
1019 * \sa SDL_RenderSetScale
1020 * \sa SDL_RenderGetLogicalSize
1021 * \sa SDL_RenderSetLogicalSize
1022 */
1023extern DECLSPEC void SDLCALL SDL_RenderLogicalToWindow(SDL_Renderer * renderer,
1024 float logicalX, float logicalY,
1025 int *windowX, int *windowY);
1026
1027/**
1028 * Set the color used for drawing operations (Rect, Line and Clear).
1029 *
1030 * Set the color for drawing or filling rectangles, lines, and points, and for
1031 * SDL_RenderClear().
1032 *
1033 * \param renderer the rendering context
1034 * \param r the red value used to draw on the rendering target
1035 * \param g the green value used to draw on the rendering target
1036 * \param b the blue value used to draw on the rendering target
1037 * \param a the alpha value used to draw on the rendering target; usually
1038 * `SDL_ALPHA_OPAQUE` (255). Use SDL_SetRenderDrawBlendMode to
1039 * specify how the alpha channel is used
1040 * \returns 0 on success or a negative error code on failure; call
1041 * SDL_GetError() for more information.
1042 *
1043 * \since This function is available since SDL 2.0.0.
1044 *
1045 * \sa SDL_GetRenderDrawColor
1046 * \sa SDL_RenderClear
1047 * \sa SDL_RenderDrawLine
1048 * \sa SDL_RenderDrawLines
1049 * \sa SDL_RenderDrawPoint
1050 * \sa SDL_RenderDrawPoints
1051 * \sa SDL_RenderDrawRect
1052 * \sa SDL_RenderDrawRects
1053 * \sa SDL_RenderFillRect
1054 * \sa SDL_RenderFillRects
1055 */
1056extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer,
1057 Uint8 r, Uint8 g, Uint8 b,
1058 Uint8 a);
1059
1060/**
1061 * Get the color used for drawing operations (Rect, Line and Clear).
1062 *
1063 * \param renderer the rendering context
1064 * \param r a pointer filled in with the red value used to draw on the
1065 * rendering target
1066 * \param g a pointer filled in with the green value used to draw on the
1067 * rendering target
1068 * \param b a pointer filled in with the blue value used to draw on the
1069 * rendering target
1070 * \param a a pointer filled in with the alpha value used to draw on the
1071 * rendering target; usually `SDL_ALPHA_OPAQUE` (255)
1072 * \returns 0 on success or a negative error code on failure; call
1073 * SDL_GetError() for more information.
1074 *
1075 * \since This function is available since SDL 2.0.0.
1076 *
1077 * \sa SDL_SetRenderDrawColor
1078 */
1079extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer,
1080 Uint8 * r, Uint8 * g, Uint8 * b,
1081 Uint8 * a);
1082
1083/**
1084 * Set the blend mode used for drawing operations (Fill and Line).
1085 *
1086 * If the blend mode is not supported, the closest supported mode is chosen.
1087 *
1088 * \param renderer the rendering context
1089 * \param blendMode the SDL_BlendMode to use for blending
1090 * \returns 0 on success or a negative error code on failure; call
1091 * SDL_GetError() for more information.
1092 *
1093 * \since This function is available since SDL 2.0.0.
1094 *
1095 * \sa SDL_GetRenderDrawBlendMode
1096 * \sa SDL_RenderDrawLine
1097 * \sa SDL_RenderDrawLines
1098 * \sa SDL_RenderDrawPoint
1099 * \sa SDL_RenderDrawPoints
1100 * \sa SDL_RenderDrawRect
1101 * \sa SDL_RenderDrawRects
1102 * \sa SDL_RenderFillRect
1103 * \sa SDL_RenderFillRects
1104 */
1105extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer,
1106 SDL_BlendMode blendMode);
1107
1108/**
1109 * Get the blend mode used for drawing operations.
1110 *
1111 * \param renderer the rendering context
1112 * \param blendMode a pointer filled in with the current SDL_BlendMode
1113 * \returns 0 on success or a negative error code on failure; call
1114 * SDL_GetError() for more information.
1115 *
1116 * \since This function is available since SDL 2.0.0.
1117 *
1118 * \sa SDL_SetRenderDrawBlendMode
1119 */
1120extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer,
1121 SDL_BlendMode *blendMode);
1122
1123/**
1124 * Clear the current rendering target with the drawing color.
1125 *
1126 * This function clears the entire rendering target, ignoring the viewport and
1127 * the clip rectangle.
1128 *
1129 * \param renderer the rendering context
1130 * \returns 0 on success or a negative error code on failure; call
1131 * SDL_GetError() for more information.
1132 *
1133 * \since This function is available since SDL 2.0.0.
1134 *
1135 * \sa SDL_SetRenderDrawColor
1136 */
1137extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer);
1138
1139/**
1140 * Draw a point on the current rendering target.
1141 *
1142 * SDL_RenderDrawPoint() draws a single point. If you want to draw multiple,
1143 * use SDL_RenderDrawPoints() instead.
1144 *
1145 * \param renderer the rendering context
1146 * \param x the x coordinate of the point
1147 * \param y the y coordinate of the point
1148 * \returns 0 on success or a negative error code on failure; call
1149 * SDL_GetError() for more information.
1150 *
1151 * \since This function is available since SDL 2.0.0.
1152 *
1153 * \sa SDL_RenderDrawLine
1154 * \sa SDL_RenderDrawLines
1155 * \sa SDL_RenderDrawPoints
1156 * \sa SDL_RenderDrawRect
1157 * \sa SDL_RenderDrawRects
1158 * \sa SDL_RenderFillRect
1159 * \sa SDL_RenderFillRects
1160 * \sa SDL_RenderPresent
1161 * \sa SDL_SetRenderDrawBlendMode
1162 * \sa SDL_SetRenderDrawColor
1163 */
1164extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer,
1165 int x, int y);
1166
1167/**
1168 * Draw multiple points on the current rendering target.
1169 *
1170 * \param renderer the rendering context
1171 * \param points an array of SDL_Point structures that represent the points to
1172 * draw
1173 * \param count the number of points to draw
1174 * \returns 0 on success or a negative error code on failure; call
1175 * SDL_GetError() for more information.
1176 *
1177 * \since This function is available since SDL 2.0.0.
1178 *
1179 * \sa SDL_RenderDrawLine
1180 * \sa SDL_RenderDrawLines
1181 * \sa SDL_RenderDrawPoint
1182 * \sa SDL_RenderDrawRect
1183 * \sa SDL_RenderDrawRects
1184 * \sa SDL_RenderFillRect
1185 * \sa SDL_RenderFillRects
1186 * \sa SDL_RenderPresent
1187 * \sa SDL_SetRenderDrawBlendMode
1188 * \sa SDL_SetRenderDrawColor
1189 */
1190extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer,
1191 const SDL_Point * points,
1192 int count);
1193
1194/**
1195 * Draw a line on the current rendering target.
1196 *
1197 * SDL_RenderDrawLine() draws the line to include both end points. If you want
1198 * to draw multiple, connecting lines use SDL_RenderDrawLines() instead.
1199 *
1200 * \param renderer the rendering context
1201 * \param x1 the x coordinate of the start point
1202 * \param y1 the y coordinate of the start point
1203 * \param x2 the x coordinate of the end point
1204 * \param y2 the y coordinate of the end point
1205 * \returns 0 on success or a negative error code on failure; call
1206 * SDL_GetError() for more information.
1207 *
1208 * \since This function is available since SDL 2.0.0.
1209 *
1210 * \sa SDL_RenderDrawLines
1211 * \sa SDL_RenderDrawPoint
1212 * \sa SDL_RenderDrawPoints
1213 * \sa SDL_RenderDrawRect
1214 * \sa SDL_RenderDrawRects
1215 * \sa SDL_RenderFillRect
1216 * \sa SDL_RenderFillRects
1217 * \sa SDL_RenderPresent
1218 * \sa SDL_SetRenderDrawBlendMode
1219 * \sa SDL_SetRenderDrawColor
1220 */
1221extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer,
1222 int x1, int y1, int x2, int y2);
1223
1224/**
1225 * Draw a series of connected lines on the current rendering target.
1226 *
1227 * \param renderer the rendering context
1228 * \param points an array of SDL_Point structures representing points along
1229 * the lines
1230 * \param count the number of points, drawing count-1 lines
1231 * \returns 0 on success or a negative error code on failure; call
1232 * SDL_GetError() for more information.
1233 *
1234 * \since This function is available since SDL 2.0.0.
1235 *
1236 * \sa SDL_RenderDrawLine
1237 * \sa SDL_RenderDrawPoint
1238 * \sa SDL_RenderDrawPoints
1239 * \sa SDL_RenderDrawRect
1240 * \sa SDL_RenderDrawRects
1241 * \sa SDL_RenderFillRect
1242 * \sa SDL_RenderFillRects
1243 * \sa SDL_RenderPresent
1244 * \sa SDL_SetRenderDrawBlendMode
1245 * \sa SDL_SetRenderDrawColor
1246 */
1247extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer,
1248 const SDL_Point * points,
1249 int count);
1250
1251/**
1252 * Draw a rectangle on the current rendering target.
1253 *
1254 * \param renderer the rendering context
1255 * \param rect an SDL_Rect structure representing the rectangle to draw, or
1256 * NULL to outline the entire rendering target
1257 * \returns 0 on success or a negative error code on failure; call
1258 * SDL_GetError() for more information.
1259 *
1260 * \since This function is available since SDL 2.0.0.
1261 *
1262 * \sa SDL_RenderDrawLine
1263 * \sa SDL_RenderDrawLines
1264 * \sa SDL_RenderDrawPoint
1265 * \sa SDL_RenderDrawPoints
1266 * \sa SDL_RenderDrawRects
1267 * \sa SDL_RenderFillRect
1268 * \sa SDL_RenderFillRects
1269 * \sa SDL_RenderPresent
1270 * \sa SDL_SetRenderDrawBlendMode
1271 * \sa SDL_SetRenderDrawColor
1272 */
1273extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer,
1274 const SDL_Rect * rect);
1275
1276/**
1277 * Draw some number of rectangles on the current rendering target.
1278 *
1279 * \param renderer the rendering context
1280 * \param rects an array of SDL_Rect structures representing the rectangles to
1281 * be drawn
1282 * \param count the number of rectangles
1283 * \returns 0 on success or a negative error code on failure; call
1284 * SDL_GetError() for more information.
1285 *
1286 * \since This function is available since SDL 2.0.0.
1287 *
1288 * \sa SDL_RenderDrawLine
1289 * \sa SDL_RenderDrawLines
1290 * \sa SDL_RenderDrawPoint
1291 * \sa SDL_RenderDrawPoints
1292 * \sa SDL_RenderDrawRect
1293 * \sa SDL_RenderFillRect
1294 * \sa SDL_RenderFillRects
1295 * \sa SDL_RenderPresent
1296 * \sa SDL_SetRenderDrawBlendMode
1297 * \sa SDL_SetRenderDrawColor
1298 */
1299extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer,
1300 const SDL_Rect * rects,
1301 int count);
1302
1303/**
1304 * Fill a rectangle on the current rendering target with the drawing color.
1305 *
1306 * The current drawing color is set by SDL_SetRenderDrawColor(), and the
1307 * color's alpha value is ignored unless blending is enabled with the
1308 * appropriate call to SDL_SetRenderDrawBlendMode().
1309 *
1310 * \param renderer the rendering context
1311 * \param rect the SDL_Rect structure representing the rectangle to fill, or
1312 * NULL for the entire rendering target
1313 * \returns 0 on success or a negative error code on failure; call
1314 * SDL_GetError() for more information.
1315 *
1316 * \since This function is available since SDL 2.0.0.
1317 *
1318 * \sa SDL_RenderDrawLine
1319 * \sa SDL_RenderDrawLines
1320 * \sa SDL_RenderDrawPoint
1321 * \sa SDL_RenderDrawPoints
1322 * \sa SDL_RenderDrawRect
1323 * \sa SDL_RenderDrawRects
1324 * \sa SDL_RenderFillRects
1325 * \sa SDL_RenderPresent
1326 * \sa SDL_SetRenderDrawBlendMode
1327 * \sa SDL_SetRenderDrawColor
1328 */
1329extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer,
1330 const SDL_Rect * rect);
1331
1332/**
1333 * Fill some number of rectangles on the current rendering target with the
1334 * drawing color.
1335 *
1336 * \param renderer the rendering context
1337 * \param rects an array of SDL_Rect structures representing the rectangles to
1338 * be filled
1339 * \param count the number of rectangles
1340 * \returns 0 on success or a negative error code on failure; call
1341 * SDL_GetError() for more information.
1342 *
1343 * \since This function is available since SDL 2.0.0.
1344 *
1345 * \sa SDL_RenderDrawLine
1346 * \sa SDL_RenderDrawLines
1347 * \sa SDL_RenderDrawPoint
1348 * \sa SDL_RenderDrawPoints
1349 * \sa SDL_RenderDrawRect
1350 * \sa SDL_RenderDrawRects
1351 * \sa SDL_RenderFillRect
1352 * \sa SDL_RenderPresent
1353 */
1354extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer,
1355 const SDL_Rect * rects,
1356 int count);
1357
1358/**
1359 * Copy a portion of the texture to the current rendering target.
1360 *
1361 * The texture is blended with the destination based on its blend mode set
1362 * with SDL_SetTextureBlendMode().
1363 *
1364 * The texture color is affected based on its color modulation set by
1365 * SDL_SetTextureColorMod().
1366 *
1367 * The texture alpha is affected based on its alpha modulation set by
1368 * SDL_SetTextureAlphaMod().
1369 *
1370 * \param renderer the rendering context
1371 * \param texture the source texture
1372 * \param srcrect the source SDL_Rect structure or NULL for the entire texture
1373 * \param dstrect the destination SDL_Rect structure or NULL for the entire
1374 * rendering target; the texture will be stretched to fill the
1375 * given rectangle
1376 * \returns 0 on success or a negative error code on failure; call
1377 * SDL_GetError() for more information.
1378 *
1379 * \since This function is available since SDL 2.0.0.
1380 *
1381 * \sa SDL_RenderCopyEx
1382 * \sa SDL_SetTextureAlphaMod
1383 * \sa SDL_SetTextureBlendMode
1384 * \sa SDL_SetTextureColorMod
1385 */
1386extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer,
1387 SDL_Texture * texture,
1388 const SDL_Rect * srcrect,
1389 const SDL_Rect * dstrect);
1390
1391/**
1392 * Copy a portion of the texture to the current rendering, with optional
1393 * rotation and flipping.
1394 *
1395 * Copy a portion of the texture to the current rendering target, optionally
1396 * rotating it by angle around the given center and also flipping it
1397 * top-bottom and/or left-right.
1398 *
1399 * The texture is blended with the destination based on its blend mode set
1400 * with SDL_SetTextureBlendMode().
1401 *
1402 * The texture color is affected based on its color modulation set by
1403 * SDL_SetTextureColorMod().
1404 *
1405 * The texture alpha is affected based on its alpha modulation set by
1406 * SDL_SetTextureAlphaMod().
1407 *
1408 * \param renderer the rendering context
1409 * \param texture the source texture
1410 * \param srcrect the source SDL_Rect structure or NULL for the entire texture
1411 * \param dstrect the destination SDL_Rect structure or NULL for the entire
1412 * rendering target
1413 * \param angle an angle in degrees that indicates the rotation that will be
1414 * applied to dstrect, rotating it in a clockwise direction
1415 * \param center a pointer to a point indicating the point around which
1416 * dstrect will be rotated (if NULL, rotation will be done
1417 * around `dstrect.w / 2`, `dstrect.h / 2`)
1418 * \param flip a SDL_RendererFlip value stating which flipping actions should
1419 * be performed on the texture
1420 * \returns 0 on success or a negative error code on failure; call
1421 * SDL_GetError() for more information.
1422 *
1423 * \since This function is available since SDL 2.0.0.
1424 *
1425 * \sa SDL_RenderCopy
1426 * \sa SDL_SetTextureAlphaMod
1427 * \sa SDL_SetTextureBlendMode
1428 * \sa SDL_SetTextureColorMod
1429 */
1430extern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer,
1431 SDL_Texture * texture,
1432 const SDL_Rect * srcrect,
1433 const SDL_Rect * dstrect,
1434 const double angle,
1435 const SDL_Point *center,
1436 const SDL_RendererFlip flip);
1437
1438
1439/**
1440 * Draw a point on the current rendering target at subpixel precision.
1441 *
1442 * \param renderer The renderer which should draw a point.
1443 * \param x The x coordinate of the point.
1444 * \param y The y coordinate of the point.
1445 * \return 0 on success, or -1 on error
1446 *
1447 * \since This function is available since SDL 2.0.10.
1448 */
1449extern DECLSPEC int SDLCALL SDL_RenderDrawPointF(SDL_Renderer * renderer,
1450 float x, float y);
1451
1452/**
1453 * Draw multiple points on the current rendering target at subpixel precision.
1454 *
1455 * \param renderer The renderer which should draw multiple points.
1456 * \param points The points to draw
1457 * \param count The number of points to draw
1458 * \return 0 on success, or -1 on error
1459 *
1460 * \since This function is available since SDL 2.0.10.
1461 */
1462extern DECLSPEC int SDLCALL SDL_RenderDrawPointsF(SDL_Renderer * renderer,
1463 const SDL_FPoint * points,
1464 int count);
1465
1466/**
1467 * Draw a line on the current rendering target at subpixel precision.
1468 *
1469 * \param renderer The renderer which should draw a line.
1470 * \param x1 The x coordinate of the start point.
1471 * \param y1 The y coordinate of the start point.
1472 * \param x2 The x coordinate of the end point.
1473 * \param y2 The y coordinate of the end point.
1474 * \return 0 on success, or -1 on error
1475 *
1476 * \since This function is available since SDL 2.0.10.
1477 */
1478extern DECLSPEC int SDLCALL SDL_RenderDrawLineF(SDL_Renderer * renderer,
1479 float x1, float y1, float x2, float y2);
1480
1481/**
1482 * Draw a series of connected lines on the current rendering target at
1483 * subpixel precision.
1484 *
1485 * \param renderer The renderer which should draw multiple lines.
1486 * \param points The points along the lines
1487 * \param count The number of points, drawing count-1 lines
1488 * \return 0 on success, or -1 on error
1489 *
1490 * \since This function is available since SDL 2.0.10.
1491 */
1492extern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer,
1493 const SDL_FPoint * points,
1494 int count);
1495
1496/**
1497 * Draw a rectangle on the current rendering target at subpixel precision.
1498 *
1499 * \param renderer The renderer which should draw a rectangle.
1500 * \param rect A pointer to the destination rectangle, or NULL to outline the
1501 * entire rendering target.
1502 * \return 0 on success, or -1 on error
1503 *
1504 * \since This function is available since SDL 2.0.10.
1505 */
1506extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer,
1507 const SDL_FRect * rect);
1508
1509/**
1510 * Draw some number of rectangles on the current rendering target at subpixel
1511 * precision.
1512 *
1513 * \param renderer The renderer which should draw multiple rectangles.
1514 * \param rects A pointer to an array of destination rectangles.
1515 * \param count The number of rectangles.
1516 * \return 0 on success, or -1 on error
1517 *
1518 * \since This function is available since SDL 2.0.10.
1519 */
1520extern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer,
1521 const SDL_FRect * rects,
1522 int count);
1523
1524/**
1525 * Fill a rectangle on the current rendering target with the drawing color at
1526 * subpixel precision.
1527 *
1528 * \param renderer The renderer which should fill a rectangle.
1529 * \param rect A pointer to the destination rectangle, or NULL for the entire
1530 * rendering target.
1531 * \return 0 on success, or -1 on error
1532 *
1533 * \since This function is available since SDL 2.0.10.
1534 */
1535extern DECLSPEC int SDLCALL SDL_RenderFillRectF(SDL_Renderer * renderer,
1536 const SDL_FRect * rect);
1537
1538/**
1539 * Fill some number of rectangles on the current rendering target with the
1540 * drawing color at subpixel precision.
1541 *
1542 * \param renderer The renderer which should fill multiple rectangles.
1543 * \param rects A pointer to an array of destination rectangles.
1544 * \param count The number of rectangles.
1545 * \return 0 on success, or -1 on error
1546 *
1547 * \since This function is available since SDL 2.0.10.
1548 */
1549extern DECLSPEC int SDLCALL SDL_RenderFillRectsF(SDL_Renderer * renderer,
1550 const SDL_FRect * rects,
1551 int count);
1552
1553/**
1554 * Copy a portion of the texture to the current rendering target at subpixel
1555 * precision.
1556 *
1557 * \param renderer The renderer which should copy parts of a texture.
1558 * \param texture The source texture.
1559 * \param srcrect A pointer to the source rectangle, or NULL for the entire
1560 * texture.
1561 * \param dstrect A pointer to the destination rectangle, or NULL for the
1562 * entire rendering target.
1563 * \return 0 on success, or -1 on error
1564 *
1565 * \since This function is available since SDL 2.0.10.
1566 */
1567extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer,
1568 SDL_Texture * texture,
1569 const SDL_Rect * srcrect,
1570 const SDL_FRect * dstrect);
1571
1572/**
1573 * Copy a portion of the source texture to the current rendering target, with
1574 * rotation and flipping, at subpixel precision.
1575 *
1576 * \param renderer The renderer which should copy parts of a texture.
1577 * \param texture The source texture.
1578 * \param srcrect A pointer to the source rectangle, or NULL for the entire
1579 * texture.
1580 * \param dstrect A pointer to the destination rectangle, or NULL for the
1581 * entire rendering target.
1582 * \param angle An angle in degrees that indicates the rotation that will be
1583 * applied to dstrect, rotating it in a clockwise direction
1584 * \param center A pointer to a point indicating the point around which
1585 * dstrect will be rotated (if NULL, rotation will be done
1586 * around dstrect.w/2, dstrect.h/2).
1587 * \param flip An SDL_RendererFlip value stating which flipping actions should
1588 * be performed on the texture
1589 * \return 0 on success, or -1 on error
1590 *
1591 * \since This function is available since SDL 2.0.10.
1592 */
1593extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer,
1594 SDL_Texture * texture,
1595 const SDL_Rect * srcrect,
1596 const SDL_FRect * dstrect,
1597 const double angle,
1598 const SDL_FPoint *center,
1599 const SDL_RendererFlip flip);
1600
1601/**
1602 * Render a list of triangles, optionally using a texture and indices into the
1603 * vertex array Color and alpha modulation is done per vertex
1604 * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored).
1605 *
1606 * \param texture (optional) The SDL texture to use.
1607 * \param vertices Vertices.
1608 * \param num_vertices Number of vertices.
1609 * \param indices (optional) An array of integer indices into the 'vertices'
1610 * array, if NULL all vertices will be rendered in sequential
1611 * order.
1612 * \param num_indices Number of indices.
1613 * \return 0 on success, or -1 if the operation is not supported
1614 *
1615 * \since This function is available since SDL 2.0.18.
1616 *
1617 * \sa SDL_RenderGeometryRaw
1618 * \sa SDL_Vertex
1619 */
1620extern DECLSPEC int SDLCALL SDL_RenderGeometry(SDL_Renderer *renderer,
1621 SDL_Texture *texture,
1622 const SDL_Vertex *vertices, int num_vertices,
1623 const int *indices, int num_indices);
1624
1625/**
1626 * Render a list of triangles, optionally using a texture and indices into the
1627 * vertex arrays Color and alpha modulation is done per vertex
1628 * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored).
1629 *
1630 * \param texture (optional) The SDL texture to use.
1631 * \param xy Vertex positions
1632 * \param xy_stride Byte size to move from one element to the next element
1633 * \param color Vertex colors (as SDL_Color)
1634 * \param color_stride Byte size to move from one element to the next element
1635 * \param uv Vertex normalized texture coordinates
1636 * \param uv_stride Byte size to move from one element to the next element
1637 * \param num_vertices Number of vertices.
1638 * \param indices (optional) An array of indices into the 'vertices' arrays,
1639 * if NULL all vertices will be rendered in sequential order.
1640 * \param num_indices Number of indices.
1641 * \param size_indices Index size: 1 (byte), 2 (short), 4 (int)
1642 * \return 0 on success, or -1 if the operation is not supported
1643 *
1644 * \since This function is available since SDL 2.0.18.
1645 *
1646 * \sa SDL_RenderGeometry
1647 * \sa SDL_Vertex
1648 */
1649extern DECLSPEC int SDLCALL SDL_RenderGeometryRaw(SDL_Renderer *renderer,
1650 SDL_Texture *texture,
1651 const float *xy, int xy_stride,
1652 const SDL_Color *color, int color_stride,
1653 const float *uv, int uv_stride,
1654 int num_vertices,
1655 const void *indices, int num_indices, int size_indices);
1656
1657/**
1658 * Read pixels from the current rendering target to an array of pixels.
1659 *
1660 * **WARNING**: This is a very slow operation, and should not be used
1661 * frequently.
1662 *
1663 * `pitch` specifies the number of bytes between rows in the destination
1664 * `pixels` data. This allows you to write to a subrectangle or have padded
1665 * rows in the destination. Generally, `pitch` should equal the number of
1666 * pixels per row in the `pixels` data times the number of bytes per pixel,
1667 * but it might contain additional padding (for example, 24bit RGB Windows
1668 * Bitmap data pads all rows to multiples of 4 bytes).
1669 *
1670 * \param renderer the rendering context
1671 * \param rect an SDL_Rect structure representing the area to read, or NULL
1672 * for the entire render target
1673 * \param format an SDL_PixelFormatEnum value of the desired format of the
1674 * pixel data, or 0 to use the format of the rendering target
1675 * \param pixels a pointer to the pixel data to copy into
1676 * \param pitch the pitch of the `pixels` parameter
1677 * \returns 0 on success or a negative error code on failure; call
1678 * SDL_GetError() for more information.
1679 *
1680 * \since This function is available since SDL 2.0.0.
1681 */
1682extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer,
1683 const SDL_Rect * rect,
1684 Uint32 format,
1685 void *pixels, int pitch);
1686
1687/**
1688 * Update the screen with any rendering performed since the previous call.
1689 *
1690 * SDL's rendering functions operate on a backbuffer; that is, calling a
1691 * rendering function such as SDL_RenderDrawLine() does not directly put a
1692 * line on the screen, but rather updates the backbuffer. As such, you compose
1693 * your entire scene and *present* the composed backbuffer to the screen as a
1694 * complete picture.
1695 *
1696 * Therefore, when using SDL's rendering API, one does all drawing intended
1697 * for the frame, and then calls this function once per frame to present the
1698 * final drawing to the user.
1699 *
1700 * The backbuffer should be considered invalidated after each present; do not
1701 * assume that previous contents will exist between frames. You are strongly
1702 * encouraged to call SDL_RenderClear() to initialize the backbuffer before
1703 * starting each new frame's drawing, even if you plan to overwrite every
1704 * pixel.
1705 *
1706 * \param renderer the rendering context
1707 *
1708 * \since This function is available since SDL 2.0.0.
1709 *
1710 * \sa SDL_RenderClear
1711 * \sa SDL_RenderDrawLine
1712 * \sa SDL_RenderDrawLines
1713 * \sa SDL_RenderDrawPoint
1714 * \sa SDL_RenderDrawPoints
1715 * \sa SDL_RenderDrawRect
1716 * \sa SDL_RenderDrawRects
1717 * \sa SDL_RenderFillRect
1718 * \sa SDL_RenderFillRects
1719 * \sa SDL_SetRenderDrawBlendMode
1720 * \sa SDL_SetRenderDrawColor
1721 */
1722extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer);
1723
1724/**
1725 * Destroy the specified texture.
1726 *
1727 * Passing NULL or an otherwise invalid texture will set the SDL error message
1728 * to "Invalid texture".
1729 *
1730 * \param texture the texture to destroy
1731 *
1732 * \since This function is available since SDL 2.0.0.
1733 *
1734 * \sa SDL_CreateTexture
1735 * \sa SDL_CreateTextureFromSurface
1736 */
1737extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture);
1738
1739/**
1740 * Destroy the rendering context for a window and free associated textures.
1741 *
1742 * \param renderer the rendering context
1743 *
1744 * \since This function is available since SDL 2.0.0.
1745 *
1746 * \sa SDL_CreateRenderer
1747 */
1748extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer);
1749
1750/**
1751 * Force the rendering context to flush any pending commands to the underlying
1752 * rendering API.
1753 *
1754 * You do not need to (and in fact, shouldn't) call this function unless you
1755 * are planning to call into OpenGL/Direct3D/Metal/whatever directly in
1756 * addition to using an SDL_Renderer.
1757 *
1758 * This is for a very-specific case: if you are using SDL's render API, you
1759 * asked for a specific renderer backend (OpenGL, Direct3D, etc), you set
1760 * SDL_HINT_RENDER_BATCHING to "1", and you plan to make OpenGL/D3D/whatever
1761 * calls in addition to SDL render API calls. If all of this applies, you
1762 * should call SDL_RenderFlush() between calls to SDL's render API and the
1763 * low-level API you're using in cooperation.
1764 *
1765 * In all other cases, you can ignore this function. This is only here to get
1766 * maximum performance out of a specific situation. In all other cases, SDL
1767 * will do the right thing, perhaps at a performance loss.
1768 *
1769 * This function is first available in SDL 2.0.10, and is not needed in 2.0.9
1770 * and earlier, as earlier versions did not queue rendering commands at all,
1771 * instead flushing them to the OS immediately.
1772 *
1773 * \param renderer the rendering context
1774 * \returns 0 on success or a negative error code on failure; call
1775 * SDL_GetError() for more information.
1776 *
1777 * \since This function is available since SDL 2.0.10.
1778 */
1779extern DECLSPEC int SDLCALL SDL_RenderFlush(SDL_Renderer * renderer);
1780
1781
1782/**
1783 * Bind an OpenGL/ES/ES2 texture to the current context.
1784 *
1785 * This is for use with OpenGL instructions when rendering OpenGL primitives
1786 * directly.
1787 *
1788 * If not NULL, `texw` and `texh` will be filled with the width and height
1789 * values suitable for the provided texture. In most cases, both will be 1.0,
1790 * however, on systems that support the GL_ARB_texture_rectangle extension,
1791 * these values will actually be the pixel width and height used to create the
1792 * texture, so this factor needs to be taken into account when providing
1793 * texture coordinates to OpenGL.
1794 *
1795 * You need a renderer to create an SDL_Texture, therefore you can only use
1796 * this function with an implicit OpenGL context from SDL_CreateRenderer(),
1797 * not with your own OpenGL context. If you need control over your OpenGL
1798 * context, you need to write your own texture-loading methods.
1799 *
1800 * Also note that SDL may upload RGB textures as BGR (or vice-versa), and
1801 * re-order the color channels in the shaders phase, so the uploaded texture
1802 * may have swapped color channels.
1803 *
1804 * \param texture the texture to bind to the current OpenGL/ES/ES2 context
1805 * \param texw a pointer to a float value which will be filled with the
1806 * texture width or NULL if you don't need that value
1807 * \param texh a pointer to a float value which will be filled with the
1808 * texture height or NULL if you don't need that value
1809 * \returns 0 on success, or -1 if the operation is not supported; call
1810 * SDL_GetError() for more information.
1811 *
1812 * \since This function is available since SDL 2.0.0.
1813 *
1814 * \sa SDL_GL_MakeCurrent
1815 * \sa SDL_GL_UnbindTexture
1816 */
1817extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh);
1818
1819/**
1820 * Unbind an OpenGL/ES/ES2 texture from the current context.
1821 *
1822 * See SDL_GL_BindTexture() for examples on how to use these functions
1823 *
1824 * \param texture the texture to unbind from the current OpenGL/ES/ES2 context
1825 * \returns 0 on success, or -1 if the operation is not supported
1826 *
1827 * \since This function is available since SDL 2.0.0.
1828 *
1829 * \sa SDL_GL_BindTexture
1830 * \sa SDL_GL_MakeCurrent
1831 */
1832extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture);
1833
1834/**
1835 * Get the CAMetalLayer associated with the given Metal renderer.
1836 *
1837 * This function returns `void *`, so SDL doesn't have to include Metal's
1838 * headers, but it can be safely cast to a `CAMetalLayer *`.
1839 *
1840 * \param renderer The renderer to query
1841 * \returns a `CAMetalLayer *` on success, or NULL if the renderer isn't a
1842 * Metal renderer
1843 *
1844 * \since This function is available since SDL 2.0.8.
1845 *
1846 * \sa SDL_RenderGetMetalCommandEncoder
1847 */
1848extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer);
1849
1850/**
1851 * Get the Metal command encoder for the current frame
1852 *
1853 * This function returns `void *`, so SDL doesn't have to include Metal's
1854 * headers, but it can be safely cast to an `id<MTLRenderCommandEncoder>`.
1855 *
1856 * Note that as of SDL 2.0.18, this will return NULL if Metal refuses to give
1857 * SDL a drawable to render to, which might happen if the window is
1858 * hidden/minimized/offscreen. This doesn't apply to command encoders for
1859 * render targets, just the window's backbacker. Check your return values!
1860 *
1861 * \param renderer The renderer to query
1862 * \returns an `id<MTLRenderCommandEncoder>` on success, or NULL if the
1863 * renderer isn't a Metal renderer or there was an error.
1864 *
1865 * \since This function is available since SDL 2.0.8.
1866 *
1867 * \sa SDL_RenderGetMetalLayer
1868 */
1869extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer);
1870
1871/**
1872 * Toggle VSync of the given renderer.
1873 *
1874 * \param renderer The renderer to toggle
1875 * \param vsync 1 for on, 0 for off. All other values are reserved
1876 * \returns a 0 int on success, or non-zero on failure
1877 *
1878 * \since This function is available since SDL 2.0.18.
1879 */
1880extern DECLSPEC int SDLCALL SDL_RenderSetVSync(SDL_Renderer* renderer, int vsync);
1881
1882/* Ends C function definitions when using C++ */
1883#ifdef __cplusplus
1884}
1885#endif
1886#include "close_code.h"
1887
1888#endif /* SDL_render_h_ */
1889
1890/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_revision.h b/vendor/SDL2/include/SDL_revision.h new file mode 100644 index 0000000..3253d6d --- /dev/null +++ b/vendor/SDL2/include/SDL_revision.h
@@ -0,0 +1,2 @@
1#define SDL_REVISION "https://github.com/libsdl-org/SDL.git@b424665e0899769b200231ba943353a5fee1b6b6"
2#define SDL_REVISION_NUMBER 0
diff --git a/vendor/SDL2/include/SDL_rwops.h b/vendor/SDL2/include/SDL_rwops.h new file mode 100644 index 0000000..71e5c8d --- /dev/null +++ b/vendor/SDL2/include/SDL_rwops.h
@@ -0,0 +1,855 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_rwops.h
24 *
25 * This file provides a general interface for SDL to read and write
26 * data streams. It can easily be extended to files, memory, etc.
27 */
28
29#ifndef SDL_rwops_h_
30#define SDL_rwops_h_
31
32#include "SDL_stdinc.h"
33#include "SDL_error.h"
34
35#include "begin_code.h"
36/* Set up for C function definitions, even when using C++ */
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41/* RWops Types */
42#define SDL_RWOPS_UNKNOWN 0U /**< Unknown stream type */
43#define SDL_RWOPS_WINFILE 1U /**< Win32 file */
44#define SDL_RWOPS_STDFILE 2U /**< Stdio file */
45#define SDL_RWOPS_JNIFILE 3U /**< Android asset */
46#define SDL_RWOPS_MEMORY 4U /**< Memory stream */
47#define SDL_RWOPS_MEMORY_RO 5U /**< Read-Only memory stream */
48#if defined(__VITA__)
49#define SDL_RWOPS_VITAFILE 6U /**< Vita file */
50#endif
51
52/**
53 * This is the read/write operation structure -- very basic.
54 */
55typedef struct SDL_RWops
56{
57 /**
58 * Return the size of the file in this rwops, or -1 if unknown
59 */
60 Sint64 (SDLCALL * size) (struct SDL_RWops * context);
61
62 /**
63 * Seek to \c offset relative to \c whence, one of stdio's whence values:
64 * RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END
65 *
66 * \return the final offset in the data stream, or -1 on error.
67 */
68 Sint64 (SDLCALL * seek) (struct SDL_RWops * context, Sint64 offset,
69 int whence);
70
71 /**
72 * Read up to \c maxnum objects each of size \c size from the data
73 * stream to the area pointed at by \c ptr.
74 *
75 * \return the number of objects read, or 0 at error or end of file.
76 */
77 size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr,
78 size_t size, size_t maxnum);
79
80 /**
81 * Write exactly \c num objects each of size \c size from the area
82 * pointed at by \c ptr to data stream.
83 *
84 * \return the number of objects written, or 0 at error or end of file.
85 */
86 size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr,
87 size_t size, size_t num);
88
89 /**
90 * Close and free an allocated SDL_RWops structure.
91 *
92 * \return 0 if successful or -1 on write error when flushing data.
93 */
94 int (SDLCALL * close) (struct SDL_RWops * context);
95
96 Uint32 type;
97 union
98 {
99#if defined(__ANDROID__)
100 struct
101 {
102 void *asset;
103 } androidio;
104#elif defined(__WIN32__)
105 struct
106 {
107 SDL_bool append;
108 void *h;
109 struct
110 {
111 void *data;
112 size_t size;
113 size_t left;
114 } buffer;
115 } windowsio;
116#elif defined(__VITA__)
117 struct
118 {
119 int h;
120 struct
121 {
122 void *data;
123 size_t size;
124 size_t left;
125 } buffer;
126 } vitaio;
127#endif
128
129#ifdef HAVE_STDIO_H
130 struct
131 {
132 SDL_bool autoclose;
133 FILE *fp;
134 } stdio;
135#endif
136 struct
137 {
138 Uint8 *base;
139 Uint8 *here;
140 Uint8 *stop;
141 } mem;
142 struct
143 {
144 void *data1;
145 void *data2;
146 } unknown;
147 } hidden;
148
149} SDL_RWops;
150
151
152/**
153 * \name RWFrom functions
154 *
155 * Functions to create SDL_RWops structures from various data streams.
156 */
157/* @{ */
158
159/**
160 * Use this function to create a new SDL_RWops structure for reading from
161 * and/or writing to a named file.
162 *
163 * The `mode` string is treated roughly the same as in a call to the C
164 * library's fopen(), even if SDL doesn't happen to use fopen() behind the
165 * scenes.
166 *
167 * Available `mode` strings:
168 *
169 * - "r": Open a file for reading. The file must exist.
170 * - "w": Create an empty file for writing. If a file with the same name
171 * already exists its content is erased and the file is treated as a new
172 * empty file.
173 * - "a": Append to a file. Writing operations append data at the end of the
174 * file. The file is created if it does not exist.
175 * - "r+": Open a file for update both reading and writing. The file must
176 * exist.
177 * - "w+": Create an empty file for both reading and writing. If a file with
178 * the same name already exists its content is erased and the file is
179 * treated as a new empty file.
180 * - "a+": Open a file for reading and appending. All writing operations are
181 * performed at the end of the file, protecting the previous content to be
182 * overwritten. You can reposition (fseek, rewind) the internal pointer to
183 * anywhere in the file for reading, but writing operations will move it
184 * back to the end of file. The file is created if it does not exist.
185 *
186 * **NOTE**: In order to open a file as a binary file, a "b" character has to
187 * be included in the `mode` string. This additional "b" character can either
188 * be appended at the end of the string (thus making the following compound
189 * modes: "rb", "wb", "ab", "r+b", "w+b", "a+b") or be inserted between the
190 * letter and the "+" sign for the mixed modes ("rb+", "wb+", "ab+").
191 * Additional characters may follow the sequence, although they should have no
192 * effect. For example, "t" is sometimes appended to make explicit the file is
193 * a text file.
194 *
195 * This function supports Unicode filenames, but they must be encoded in UTF-8
196 * format, regardless of the underlying operating system.
197 *
198 * As a fallback, SDL_RWFromFile() will transparently open a matching filename
199 * in an Android app's `assets`.
200 *
201 * Closing the SDL_RWops will close the file handle SDL is holding internally.
202 *
203 * \param file a UTF-8 string representing the filename to open
204 * \param mode an ASCII string representing the mode to be used for opening
205 * the file.
206 * \returns a pointer to the SDL_RWops structure that is created, or NULL on
207 * failure; call SDL_GetError() for more information.
208 *
209 * \since This function is available since SDL 2.0.0.
210 *
211 * \sa SDL_RWclose
212 * \sa SDL_RWFromConstMem
213 * \sa SDL_RWFromFP
214 * \sa SDL_RWFromMem
215 * \sa SDL_RWread
216 * \sa SDL_RWseek
217 * \sa SDL_RWtell
218 * \sa SDL_RWwrite
219 */
220extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file,
221 const char *mode);
222
223#ifdef HAVE_STDIO_H
224
225extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp, SDL_bool autoclose);
226
227#else
228
229/**
230 * Use this function to create an SDL_RWops structure from a standard I/O file
231 * pointer (stdio.h's `FILE*`).
232 *
233 * This function is not available on Windows, since files opened in an
234 * application on that platform cannot be used by a dynamically linked
235 * library.
236 *
237 * On some platforms, the first parameter is a `void*`, on others, it's a
238 * `FILE*`, depending on what system headers are available to SDL. It is
239 * always intended to be the `FILE*` type from the C runtime's stdio.h.
240 *
241 * \param fp the `FILE*` that feeds the SDL_RWops stream
242 * \param autoclose SDL_TRUE to close the `FILE*` when closing the SDL_RWops,
243 * SDL_FALSE to leave the `FILE*` open when the RWops is
244 * closed
245 * \returns a pointer to the SDL_RWops structure that is created, or NULL on
246 * failure; call SDL_GetError() for more information.
247 *
248 * \since This function is available since SDL 2.0.0.
249 *
250 * \sa SDL_RWclose
251 * \sa SDL_RWFromConstMem
252 * \sa SDL_RWFromFile
253 * \sa SDL_RWFromMem
254 * \sa SDL_RWread
255 * \sa SDL_RWseek
256 * \sa SDL_RWtell
257 * \sa SDL_RWwrite
258 */
259extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp,
260 SDL_bool autoclose);
261#endif
262
263/**
264 * Use this function to prepare a read-write memory buffer for use with
265 * SDL_RWops.
266 *
267 * This function sets up an SDL_RWops struct based on a memory area of a
268 * certain size, for both read and write access.
269 *
270 * This memory buffer is not copied by the RWops; the pointer you provide must
271 * remain valid until you close the stream. Closing the stream will not free
272 * the original buffer.
273 *
274 * If you need to make sure the RWops never writes to the memory buffer, you
275 * should use SDL_RWFromConstMem() with a read-only buffer of memory instead.
276 *
277 * \param mem a pointer to a buffer to feed an SDL_RWops stream
278 * \param size the buffer size, in bytes
279 * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call
280 * SDL_GetError() for more information.
281 *
282 * \since This function is available since SDL 2.0.0.
283 *
284 * \sa SDL_RWclose
285 * \sa SDL_RWFromConstMem
286 * \sa SDL_RWFromFile
287 * \sa SDL_RWFromFP
288 * \sa SDL_RWFromMem
289 * \sa SDL_RWread
290 * \sa SDL_RWseek
291 * \sa SDL_RWtell
292 * \sa SDL_RWwrite
293 */
294extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size);
295
296/**
297 * Use this function to prepare a read-only memory buffer for use with RWops.
298 *
299 * This function sets up an SDL_RWops struct based on a memory area of a
300 * certain size. It assumes the memory area is not writable.
301 *
302 * Attempting to write to this RWops stream will report an error without
303 * writing to the memory buffer.
304 *
305 * This memory buffer is not copied by the RWops; the pointer you provide must
306 * remain valid until you close the stream. Closing the stream will not free
307 * the original buffer.
308 *
309 * If you need to write to a memory buffer, you should use SDL_RWFromMem()
310 * with a writable buffer of memory instead.
311 *
312 * \param mem a pointer to a read-only buffer to feed an SDL_RWops stream
313 * \param size the buffer size, in bytes
314 * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call
315 * SDL_GetError() for more information.
316 *
317 * \since This function is available since SDL 2.0.0.
318 *
319 * \sa SDL_RWclose
320 * \sa SDL_RWFromConstMem
321 * \sa SDL_RWFromFile
322 * \sa SDL_RWFromFP
323 * \sa SDL_RWFromMem
324 * \sa SDL_RWread
325 * \sa SDL_RWseek
326 * \sa SDL_RWtell
327 */
328extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem,
329 int size);
330
331/* @} *//* RWFrom functions */
332
333
334/**
335 * Use this function to allocate an empty, unpopulated SDL_RWops structure.
336 *
337 * Applications do not need to use this function unless they are providing
338 * their own SDL_RWops implementation. If you just need a SDL_RWops to
339 * read/write a common data source, you should use the built-in
340 * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc.
341 *
342 * You must free the returned pointer with SDL_FreeRW(). Depending on your
343 * operating system and compiler, there may be a difference between the
344 * malloc() and free() your program uses and the versions SDL calls
345 * internally. Trying to mix the two can cause crashing such as segmentation
346 * faults. Since all SDL_RWops must free themselves when their **close**
347 * method is called, all SDL_RWops must be allocated through this function, so
348 * they can all be freed correctly with SDL_FreeRW().
349 *
350 * \returns a pointer to the allocated memory on success, or NULL on failure;
351 * call SDL_GetError() for more information.
352 *
353 * \since This function is available since SDL 2.0.0.
354 *
355 * \sa SDL_FreeRW
356 */
357extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void);
358
359/**
360 * Use this function to free an SDL_RWops structure allocated by
361 * SDL_AllocRW().
362 *
363 * Applications do not need to use this function unless they are providing
364 * their own SDL_RWops implementation. If you just need a SDL_RWops to
365 * read/write a common data source, you should use the built-in
366 * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc, and
367 * call the **close** method on those SDL_RWops pointers when you are done
368 * with them.
369 *
370 * Only use SDL_FreeRW() on pointers returned by SDL_AllocRW(). The pointer is
371 * invalid as soon as this function returns. Any extra memory allocated during
372 * creation of the SDL_RWops is not freed by SDL_FreeRW(); the programmer must
373 * be responsible for managing that memory in their **close** method.
374 *
375 * \param area the SDL_RWops structure to be freed
376 *
377 * \since This function is available since SDL 2.0.0.
378 *
379 * \sa SDL_AllocRW
380 */
381extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area);
382
383#define RW_SEEK_SET 0 /**< Seek from the beginning of data */
384#define RW_SEEK_CUR 1 /**< Seek relative to current read point */
385#define RW_SEEK_END 2 /**< Seek relative to the end of data */
386
387/**
388 * Use this function to get the size of the data stream in an SDL_RWops.
389 *
390 * Prior to SDL 2.0.10, this function was a macro.
391 *
392 * \param context the SDL_RWops to get the size of the data stream from
393 * \returns the size of the data stream in the SDL_RWops on success, -1 if
394 * unknown or a negative error code on failure; call SDL_GetError()
395 * for more information.
396 *
397 * \since This function is available since SDL 2.0.10.
398 */
399extern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context);
400
401/**
402 * Seek within an SDL_RWops data stream.
403 *
404 * This function seeks to byte `offset`, relative to `whence`.
405 *
406 * `whence` may be any of the following values:
407 *
408 * - `RW_SEEK_SET`: seek from the beginning of data
409 * - `RW_SEEK_CUR`: seek relative to current read point
410 * - `RW_SEEK_END`: seek relative to the end of data
411 *
412 * If this stream can not seek, it will return -1.
413 *
414 * SDL_RWseek() is actually a wrapper function that calls the SDL_RWops's
415 * `seek` method appropriately, to simplify application development.
416 *
417 * Prior to SDL 2.0.10, this function was a macro.
418 *
419 * \param context a pointer to an SDL_RWops structure
420 * \param offset an offset in bytes, relative to **whence** location; can be
421 * negative
422 * \param whence any of `RW_SEEK_SET`, `RW_SEEK_CUR`, `RW_SEEK_END`
423 * \returns the final offset in the data stream after the seek or -1 on error.
424 *
425 * \since This function is available since SDL 2.0.10.
426 *
427 * \sa SDL_RWclose
428 * \sa SDL_RWFromConstMem
429 * \sa SDL_RWFromFile
430 * \sa SDL_RWFromFP
431 * \sa SDL_RWFromMem
432 * \sa SDL_RWread
433 * \sa SDL_RWtell
434 * \sa SDL_RWwrite
435 */
436extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context,
437 Sint64 offset, int whence);
438
439/**
440 * Determine the current read/write offset in an SDL_RWops data stream.
441 *
442 * SDL_RWtell is actually a wrapper function that calls the SDL_RWops's `seek`
443 * method, with an offset of 0 bytes from `RW_SEEK_CUR`, to simplify
444 * application development.
445 *
446 * Prior to SDL 2.0.10, this function was a macro.
447 *
448 * \param context a SDL_RWops data stream object from which to get the current
449 * offset
450 * \returns the current offset in the stream, or -1 if the information can not
451 * be determined.
452 *
453 * \since This function is available since SDL 2.0.10.
454 *
455 * \sa SDL_RWclose
456 * \sa SDL_RWFromConstMem
457 * \sa SDL_RWFromFile
458 * \sa SDL_RWFromFP
459 * \sa SDL_RWFromMem
460 * \sa SDL_RWread
461 * \sa SDL_RWseek
462 * \sa SDL_RWwrite
463 */
464extern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context);
465
466/**
467 * Read from a data source.
468 *
469 * This function reads up to `maxnum` objects each of size `size` from the
470 * data source to the area pointed at by `ptr`. This function may read less
471 * objects than requested. It will return zero when there has been an error or
472 * the data stream is completely read.
473 *
474 * SDL_RWread() is actually a function wrapper that calls the SDL_RWops's
475 * `read` method appropriately, to simplify application development.
476 *
477 * Prior to SDL 2.0.10, this function was a macro.
478 *
479 * \param context a pointer to an SDL_RWops structure
480 * \param ptr a pointer to a buffer to read data into
481 * \param size the size of each object to read, in bytes
482 * \param maxnum the maximum number of objects to be read
483 * \returns the number of objects read, or 0 at error or end of file; call
484 * SDL_GetError() for more information.
485 *
486 * \since This function is available since SDL 2.0.10.
487 *
488 * \sa SDL_RWclose
489 * \sa SDL_RWFromConstMem
490 * \sa SDL_RWFromFile
491 * \sa SDL_RWFromFP
492 * \sa SDL_RWFromMem
493 * \sa SDL_RWseek
494 * \sa SDL_RWwrite
495 */
496extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context,
497 void *ptr, size_t size,
498 size_t maxnum);
499
500/**
501 * Write to an SDL_RWops data stream.
502 *
503 * This function writes exactly `num` objects each of size `size` from the
504 * area pointed at by `ptr` to the stream. If this fails for any reason, it'll
505 * return less than `num` to demonstrate how far the write progressed. On
506 * success, it returns `num`.
507 *
508 * SDL_RWwrite is actually a function wrapper that calls the SDL_RWops's
509 * `write` method appropriately, to simplify application development.
510 *
511 * Prior to SDL 2.0.10, this function was a macro.
512 *
513 * \param context a pointer to an SDL_RWops structure
514 * \param ptr a pointer to a buffer containing data to write
515 * \param size the size of an object to write, in bytes
516 * \param num the number of objects to write
517 * \returns the number of objects written, which will be less than **num** on
518 * error; call SDL_GetError() for more information.
519 *
520 * \since This function is available since SDL 2.0.10.
521 *
522 * \sa SDL_RWclose
523 * \sa SDL_RWFromConstMem
524 * \sa SDL_RWFromFile
525 * \sa SDL_RWFromFP
526 * \sa SDL_RWFromMem
527 * \sa SDL_RWread
528 * \sa SDL_RWseek
529 */
530extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context,
531 const void *ptr, size_t size,
532 size_t num);
533
534/**
535 * Close and free an allocated SDL_RWops structure.
536 *
537 * SDL_RWclose() closes and cleans up the SDL_RWops stream. It releases any
538 * resources used by the stream and frees the SDL_RWops itself with
539 * SDL_FreeRW(). This returns 0 on success, or -1 if the stream failed to
540 * flush to its output (e.g. to disk).
541 *
542 * Note that if this fails to flush the stream to disk, this function reports
543 * an error, but the SDL_RWops is still invalid once this function returns.
544 *
545 * Prior to SDL 2.0.10, this function was a macro.
546 *
547 * \param context SDL_RWops structure to close
548 * \returns 0 on success or a negative error code on failure; call
549 * SDL_GetError() for more information.
550 *
551 * \since This function is available since SDL 2.0.10.
552 *
553 * \sa SDL_RWFromConstMem
554 * \sa SDL_RWFromFile
555 * \sa SDL_RWFromFP
556 * \sa SDL_RWFromMem
557 * \sa SDL_RWread
558 * \sa SDL_RWseek
559 * \sa SDL_RWwrite
560 */
561extern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context);
562
563/**
564 * Load all the data from an SDL data stream.
565 *
566 * The data is allocated with a zero byte at the end (null terminated) for
567 * convenience. This extra byte is not included in the value reported via
568 * `datasize`.
569 *
570 * The data should be freed with SDL_free().
571 *
572 * \param src the SDL_RWops to read all available data from
573 * \param datasize if not NULL, will store the number of bytes read
574 * \param freesrc if non-zero, calls SDL_RWclose() on `src` before returning
575 * \returns the data, or NULL if there was an error.
576 *
577 * \since This function is available since SDL 2.0.6.
578 */
579extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops *src,
580 size_t *datasize,
581 int freesrc);
582
583/**
584 * Load all the data from a file path.
585 *
586 * The data is allocated with a zero byte at the end (null terminated) for
587 * convenience. This extra byte is not included in the value reported via
588 * `datasize`.
589 *
590 * The data should be freed with SDL_free().
591 *
592 * Prior to SDL 2.0.10, this function was a macro wrapping around
593 * SDL_LoadFile_RW.
594 *
595 * \param file the path to read all available data from
596 * \param datasize if not NULL, will store the number of bytes read
597 * \returns the data, or NULL if there was an error.
598 *
599 * \since This function is available since SDL 2.0.10.
600 */
601extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize);
602
603/**
604 * \name Read endian functions
605 *
606 * Read an item of the specified endianness and return in native format.
607 */
608/* @{ */
609
610/**
611 * Use this function to read a byte from an SDL_RWops.
612 *
613 * \param src the SDL_RWops to read from
614 * \returns the read byte on success or 0 on failure; call SDL_GetError() for
615 * more information.
616 *
617 * \since This function is available since SDL 2.0.0.
618 *
619 * \sa SDL_WriteU8
620 */
621extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src);
622
623/**
624 * Use this function to read 16 bits of little-endian data from an SDL_RWops
625 * and return in native format.
626 *
627 * SDL byteswaps the data only if necessary, so the data returned will be in
628 * the native byte order.
629 *
630 * \param src the stream from which to read data
631 * \returns 16 bits of data in the native byte order of the platform.
632 *
633 * \since This function is available since SDL 2.0.0.
634 *
635 * \sa SDL_ReadBE16
636 */
637extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src);
638
639/**
640 * Use this function to read 16 bits of big-endian data from an SDL_RWops and
641 * return in native format.
642 *
643 * SDL byteswaps the data only if necessary, so the data returned will be in
644 * the native byte order.
645 *
646 * \param src the stream from which to read data
647 * \returns 16 bits of data in the native byte order of the platform.
648 *
649 * \since This function is available since SDL 2.0.0.
650 *
651 * \sa SDL_ReadLE16
652 */
653extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src);
654
655/**
656 * Use this function to read 32 bits of little-endian data from an SDL_RWops
657 * and return in native format.
658 *
659 * SDL byteswaps the data only if necessary, so the data returned will be in
660 * the native byte order.
661 *
662 * \param src the stream from which to read data
663 * \returns 32 bits of data in the native byte order of the platform.
664 *
665 * \since This function is available since SDL 2.0.0.
666 *
667 * \sa SDL_ReadBE32
668 */
669extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src);
670
671/**
672 * Use this function to read 32 bits of big-endian data from an SDL_RWops and
673 * return in native format.
674 *
675 * SDL byteswaps the data only if necessary, so the data returned will be in
676 * the native byte order.
677 *
678 * \param src the stream from which to read data
679 * \returns 32 bits of data in the native byte order of the platform.
680 *
681 * \since This function is available since SDL 2.0.0.
682 *
683 * \sa SDL_ReadLE32
684 */
685extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src);
686
687/**
688 * Use this function to read 64 bits of little-endian data from an SDL_RWops
689 * and return in native format.
690 *
691 * SDL byteswaps the data only if necessary, so the data returned will be in
692 * the native byte order.
693 *
694 * \param src the stream from which to read data
695 * \returns 64 bits of data in the native byte order of the platform.
696 *
697 * \since This function is available since SDL 2.0.0.
698 *
699 * \sa SDL_ReadBE64
700 */
701extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src);
702
703/**
704 * Use this function to read 64 bits of big-endian data from an SDL_RWops and
705 * return in native format.
706 *
707 * SDL byteswaps the data only if necessary, so the data returned will be in
708 * the native byte order.
709 *
710 * \param src the stream from which to read data
711 * \returns 64 bits of data in the native byte order of the platform.
712 *
713 * \since This function is available since SDL 2.0.0.
714 *
715 * \sa SDL_ReadLE64
716 */
717extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src);
718/* @} *//* Read endian functions */
719
720/**
721 * \name Write endian functions
722 *
723 * Write an item of native format to the specified endianness.
724 */
725/* @{ */
726
727/**
728 * Use this function to write a byte to an SDL_RWops.
729 *
730 * \param dst the SDL_RWops to write to
731 * \param value the byte value to write
732 * \returns 1 on success or 0 on failure; call SDL_GetError() for more
733 * information.
734 *
735 * \since This function is available since SDL 2.0.0.
736 *
737 * \sa SDL_ReadU8
738 */
739extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value);
740
741/**
742 * Use this function to write 16 bits in native format to a SDL_RWops as
743 * little-endian data.
744 *
745 * SDL byteswaps the data only if necessary, so the application always
746 * specifies native format, and the data written will be in little-endian
747 * format.
748 *
749 * \param dst the stream to which data will be written
750 * \param value the data to be written, in native format
751 * \returns 1 on successful write, 0 on error.
752 *
753 * \since This function is available since SDL 2.0.0.
754 *
755 * \sa SDL_WriteBE16
756 */
757extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value);
758
759/**
760 * Use this function to write 16 bits in native format to a SDL_RWops as
761 * big-endian data.
762 *
763 * SDL byteswaps the data only if necessary, so the application always
764 * specifies native format, and the data written will be in big-endian format.
765 *
766 * \param dst the stream to which data will be written
767 * \param value the data to be written, in native format
768 * \returns 1 on successful write, 0 on error.
769 *
770 * \since This function is available since SDL 2.0.0.
771 *
772 * \sa SDL_WriteLE16
773 */
774extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value);
775
776/**
777 * Use this function to write 32 bits in native format to a SDL_RWops as
778 * little-endian data.
779 *
780 * SDL byteswaps the data only if necessary, so the application always
781 * specifies native format, and the data written will be in little-endian
782 * format.
783 *
784 * \param dst the stream to which data will be written
785 * \param value the data to be written, in native format
786 * \returns 1 on successful write, 0 on error.
787 *
788 * \since This function is available since SDL 2.0.0.
789 *
790 * \sa SDL_WriteBE32
791 */
792extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value);
793
794/**
795 * Use this function to write 32 bits in native format to a SDL_RWops as
796 * big-endian data.
797 *
798 * SDL byteswaps the data only if necessary, so the application always
799 * specifies native format, and the data written will be in big-endian format.
800 *
801 * \param dst the stream to which data will be written
802 * \param value the data to be written, in native format
803 * \returns 1 on successful write, 0 on error.
804 *
805 * \since This function is available since SDL 2.0.0.
806 *
807 * \sa SDL_WriteLE32
808 */
809extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value);
810
811/**
812 * Use this function to write 64 bits in native format to a SDL_RWops as
813 * little-endian data.
814 *
815 * SDL byteswaps the data only if necessary, so the application always
816 * specifies native format, and the data written will be in little-endian
817 * format.
818 *
819 * \param dst the stream to which data will be written
820 * \param value the data to be written, in native format
821 * \returns 1 on successful write, 0 on error.
822 *
823 * \since This function is available since SDL 2.0.0.
824 *
825 * \sa SDL_WriteBE64
826 */
827extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value);
828
829/**
830 * Use this function to write 64 bits in native format to a SDL_RWops as
831 * big-endian data.
832 *
833 * SDL byteswaps the data only if necessary, so the application always
834 * specifies native format, and the data written will be in big-endian format.
835 *
836 * \param dst the stream to which data will be written
837 * \param value the data to be written, in native format
838 * \returns 1 on successful write, 0 on error.
839 *
840 * \since This function is available since SDL 2.0.0.
841 *
842 * \sa SDL_WriteLE64
843 */
844extern DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops * dst, Uint64 value);
845/* @} *//* Write endian functions */
846
847/* Ends C function definitions when using C++ */
848#ifdef __cplusplus
849}
850#endif
851#include "close_code.h"
852
853#endif /* SDL_rwops_h_ */
854
855/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_scancode.h b/vendor/SDL2/include/SDL_scancode.h new file mode 100644 index 0000000..5b2c67c --- /dev/null +++ b/vendor/SDL2/include/SDL_scancode.h
@@ -0,0 +1,413 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_scancode.h
24 *
25 * Defines keyboard scancodes.
26 */
27
28#ifndef SDL_scancode_h_
29#define SDL_scancode_h_
30
31#include "SDL_stdinc.h"
32
33/**
34 * \brief The SDL keyboard scancode representation.
35 *
36 * Values of this type are used to represent keyboard keys, among other places
37 * in the \link SDL_Keysym::scancode key.keysym.scancode \endlink field of the
38 * SDL_Event structure.
39 *
40 * The values in this enumeration are based on the USB usage page standard:
41 * https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf
42 */
43typedef enum
44{
45 SDL_SCANCODE_UNKNOWN = 0,
46
47 /**
48 * \name Usage page 0x07
49 *
50 * These values are from usage page 0x07 (USB keyboard page).
51 */
52 /* @{ */
53
54 SDL_SCANCODE_A = 4,
55 SDL_SCANCODE_B = 5,
56 SDL_SCANCODE_C = 6,
57 SDL_SCANCODE_D = 7,
58 SDL_SCANCODE_E = 8,
59 SDL_SCANCODE_F = 9,
60 SDL_SCANCODE_G = 10,
61 SDL_SCANCODE_H = 11,
62 SDL_SCANCODE_I = 12,
63 SDL_SCANCODE_J = 13,
64 SDL_SCANCODE_K = 14,
65 SDL_SCANCODE_L = 15,
66 SDL_SCANCODE_M = 16,
67 SDL_SCANCODE_N = 17,
68 SDL_SCANCODE_O = 18,
69 SDL_SCANCODE_P = 19,
70 SDL_SCANCODE_Q = 20,
71 SDL_SCANCODE_R = 21,
72 SDL_SCANCODE_S = 22,
73 SDL_SCANCODE_T = 23,
74 SDL_SCANCODE_U = 24,
75 SDL_SCANCODE_V = 25,
76 SDL_SCANCODE_W = 26,
77 SDL_SCANCODE_X = 27,
78 SDL_SCANCODE_Y = 28,
79 SDL_SCANCODE_Z = 29,
80
81 SDL_SCANCODE_1 = 30,
82 SDL_SCANCODE_2 = 31,
83 SDL_SCANCODE_3 = 32,
84 SDL_SCANCODE_4 = 33,
85 SDL_SCANCODE_5 = 34,
86 SDL_SCANCODE_6 = 35,
87 SDL_SCANCODE_7 = 36,
88 SDL_SCANCODE_8 = 37,
89 SDL_SCANCODE_9 = 38,
90 SDL_SCANCODE_0 = 39,
91
92 SDL_SCANCODE_RETURN = 40,
93 SDL_SCANCODE_ESCAPE = 41,
94 SDL_SCANCODE_BACKSPACE = 42,
95 SDL_SCANCODE_TAB = 43,
96 SDL_SCANCODE_SPACE = 44,
97
98 SDL_SCANCODE_MINUS = 45,
99 SDL_SCANCODE_EQUALS = 46,
100 SDL_SCANCODE_LEFTBRACKET = 47,
101 SDL_SCANCODE_RIGHTBRACKET = 48,
102 SDL_SCANCODE_BACKSLASH = 49, /**< Located at the lower left of the return
103 * key on ISO keyboards and at the right end
104 * of the QWERTY row on ANSI keyboards.
105 * Produces REVERSE SOLIDUS (backslash) and
106 * VERTICAL LINE in a US layout, REVERSE
107 * SOLIDUS and VERTICAL LINE in a UK Mac
108 * layout, NUMBER SIGN and TILDE in a UK
109 * Windows layout, DOLLAR SIGN and POUND SIGN
110 * in a Swiss German layout, NUMBER SIGN and
111 * APOSTROPHE in a German layout, GRAVE
112 * ACCENT and POUND SIGN in a French Mac
113 * layout, and ASTERISK and MICRO SIGN in a
114 * French Windows layout.
115 */
116 SDL_SCANCODE_NONUSHASH = 50, /**< ISO USB keyboards actually use this code
117 * instead of 49 for the same key, but all
118 * OSes I've seen treat the two codes
119 * identically. So, as an implementor, unless
120 * your keyboard generates both of those
121 * codes and your OS treats them differently,
122 * you should generate SDL_SCANCODE_BACKSLASH
123 * instead of this code. As a user, you
124 * should not rely on this code because SDL
125 * will never generate it with most (all?)
126 * keyboards.
127 */
128 SDL_SCANCODE_SEMICOLON = 51,
129 SDL_SCANCODE_APOSTROPHE = 52,
130 SDL_SCANCODE_GRAVE = 53, /**< Located in the top left corner (on both ANSI
131 * and ISO keyboards). Produces GRAVE ACCENT and
132 * TILDE in a US Windows layout and in US and UK
133 * Mac layouts on ANSI keyboards, GRAVE ACCENT
134 * and NOT SIGN in a UK Windows layout, SECTION
135 * SIGN and PLUS-MINUS SIGN in US and UK Mac
136 * layouts on ISO keyboards, SECTION SIGN and
137 * DEGREE SIGN in a Swiss German layout (Mac:
138 * only on ISO keyboards), CIRCUMFLEX ACCENT and
139 * DEGREE SIGN in a German layout (Mac: only on
140 * ISO keyboards), SUPERSCRIPT TWO and TILDE in a
141 * French Windows layout, COMMERCIAL AT and
142 * NUMBER SIGN in a French Mac layout on ISO
143 * keyboards, and LESS-THAN SIGN and GREATER-THAN
144 * SIGN in a Swiss German, German, or French Mac
145 * layout on ANSI keyboards.
146 */
147 SDL_SCANCODE_COMMA = 54,
148 SDL_SCANCODE_PERIOD = 55,
149 SDL_SCANCODE_SLASH = 56,
150
151 SDL_SCANCODE_CAPSLOCK = 57,
152
153 SDL_SCANCODE_F1 = 58,
154 SDL_SCANCODE_F2 = 59,
155 SDL_SCANCODE_F3 = 60,
156 SDL_SCANCODE_F4 = 61,
157 SDL_SCANCODE_F5 = 62,
158 SDL_SCANCODE_F6 = 63,
159 SDL_SCANCODE_F7 = 64,
160 SDL_SCANCODE_F8 = 65,
161 SDL_SCANCODE_F9 = 66,
162 SDL_SCANCODE_F10 = 67,
163 SDL_SCANCODE_F11 = 68,
164 SDL_SCANCODE_F12 = 69,
165
166 SDL_SCANCODE_PRINTSCREEN = 70,
167 SDL_SCANCODE_SCROLLLOCK = 71,
168 SDL_SCANCODE_PAUSE = 72,
169 SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but
170 does send code 73, not 117) */
171 SDL_SCANCODE_HOME = 74,
172 SDL_SCANCODE_PAGEUP = 75,
173 SDL_SCANCODE_DELETE = 76,
174 SDL_SCANCODE_END = 77,
175 SDL_SCANCODE_PAGEDOWN = 78,
176 SDL_SCANCODE_RIGHT = 79,
177 SDL_SCANCODE_LEFT = 80,
178 SDL_SCANCODE_DOWN = 81,
179 SDL_SCANCODE_UP = 82,
180
181 SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards
182 */
183 SDL_SCANCODE_KP_DIVIDE = 84,
184 SDL_SCANCODE_KP_MULTIPLY = 85,
185 SDL_SCANCODE_KP_MINUS = 86,
186 SDL_SCANCODE_KP_PLUS = 87,
187 SDL_SCANCODE_KP_ENTER = 88,
188 SDL_SCANCODE_KP_1 = 89,
189 SDL_SCANCODE_KP_2 = 90,
190 SDL_SCANCODE_KP_3 = 91,
191 SDL_SCANCODE_KP_4 = 92,
192 SDL_SCANCODE_KP_5 = 93,
193 SDL_SCANCODE_KP_6 = 94,
194 SDL_SCANCODE_KP_7 = 95,
195 SDL_SCANCODE_KP_8 = 96,
196 SDL_SCANCODE_KP_9 = 97,
197 SDL_SCANCODE_KP_0 = 98,
198 SDL_SCANCODE_KP_PERIOD = 99,
199
200 SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO
201 * keyboards have over ANSI ones,
202 * located between left shift and Y.
203 * Produces GRAVE ACCENT and TILDE in a
204 * US or UK Mac layout, REVERSE SOLIDUS
205 * (backslash) and VERTICAL LINE in a
206 * US or UK Windows layout, and
207 * LESS-THAN SIGN and GREATER-THAN SIGN
208 * in a Swiss German, German, or French
209 * layout. */
210 SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */
211 SDL_SCANCODE_POWER = 102, /**< The USB document says this is a status flag,
212 * not a physical key - but some Mac keyboards
213 * do have a power key. */
214 SDL_SCANCODE_KP_EQUALS = 103,
215 SDL_SCANCODE_F13 = 104,
216 SDL_SCANCODE_F14 = 105,
217 SDL_SCANCODE_F15 = 106,
218 SDL_SCANCODE_F16 = 107,
219 SDL_SCANCODE_F17 = 108,
220 SDL_SCANCODE_F18 = 109,
221 SDL_SCANCODE_F19 = 110,
222 SDL_SCANCODE_F20 = 111,
223 SDL_SCANCODE_F21 = 112,
224 SDL_SCANCODE_F22 = 113,
225 SDL_SCANCODE_F23 = 114,
226 SDL_SCANCODE_F24 = 115,
227 SDL_SCANCODE_EXECUTE = 116,
228 SDL_SCANCODE_HELP = 117,
229 SDL_SCANCODE_MENU = 118,
230 SDL_SCANCODE_SELECT = 119,
231 SDL_SCANCODE_STOP = 120,
232 SDL_SCANCODE_AGAIN = 121, /**< redo */
233 SDL_SCANCODE_UNDO = 122,
234 SDL_SCANCODE_CUT = 123,
235 SDL_SCANCODE_COPY = 124,
236 SDL_SCANCODE_PASTE = 125,
237 SDL_SCANCODE_FIND = 126,
238 SDL_SCANCODE_MUTE = 127,
239 SDL_SCANCODE_VOLUMEUP = 128,
240 SDL_SCANCODE_VOLUMEDOWN = 129,
241/* not sure whether there's a reason to enable these */
242/* SDL_SCANCODE_LOCKINGCAPSLOCK = 130, */
243/* SDL_SCANCODE_LOCKINGNUMLOCK = 131, */
244/* SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */
245 SDL_SCANCODE_KP_COMMA = 133,
246 SDL_SCANCODE_KP_EQUALSAS400 = 134,
247
248 SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see
249 footnotes in USB doc */
250 SDL_SCANCODE_INTERNATIONAL2 = 136,
251 SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */
252 SDL_SCANCODE_INTERNATIONAL4 = 138,
253 SDL_SCANCODE_INTERNATIONAL5 = 139,
254 SDL_SCANCODE_INTERNATIONAL6 = 140,
255 SDL_SCANCODE_INTERNATIONAL7 = 141,
256 SDL_SCANCODE_INTERNATIONAL8 = 142,
257 SDL_SCANCODE_INTERNATIONAL9 = 143,
258 SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */
259 SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */
260 SDL_SCANCODE_LANG3 = 146, /**< Katakana */
261 SDL_SCANCODE_LANG4 = 147, /**< Hiragana */
262 SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */
263 SDL_SCANCODE_LANG6 = 149, /**< reserved */
264 SDL_SCANCODE_LANG7 = 150, /**< reserved */
265 SDL_SCANCODE_LANG8 = 151, /**< reserved */
266 SDL_SCANCODE_LANG9 = 152, /**< reserved */
267
268 SDL_SCANCODE_ALTERASE = 153, /**< Erase-Eaze */
269 SDL_SCANCODE_SYSREQ = 154,
270 SDL_SCANCODE_CANCEL = 155,
271 SDL_SCANCODE_CLEAR = 156,
272 SDL_SCANCODE_PRIOR = 157,
273 SDL_SCANCODE_RETURN2 = 158,
274 SDL_SCANCODE_SEPARATOR = 159,
275 SDL_SCANCODE_OUT = 160,
276 SDL_SCANCODE_OPER = 161,
277 SDL_SCANCODE_CLEARAGAIN = 162,
278 SDL_SCANCODE_CRSEL = 163,
279 SDL_SCANCODE_EXSEL = 164,
280
281 SDL_SCANCODE_KP_00 = 176,
282 SDL_SCANCODE_KP_000 = 177,
283 SDL_SCANCODE_THOUSANDSSEPARATOR = 178,
284 SDL_SCANCODE_DECIMALSEPARATOR = 179,
285 SDL_SCANCODE_CURRENCYUNIT = 180,
286 SDL_SCANCODE_CURRENCYSUBUNIT = 181,
287 SDL_SCANCODE_KP_LEFTPAREN = 182,
288 SDL_SCANCODE_KP_RIGHTPAREN = 183,
289 SDL_SCANCODE_KP_LEFTBRACE = 184,
290 SDL_SCANCODE_KP_RIGHTBRACE = 185,
291 SDL_SCANCODE_KP_TAB = 186,
292 SDL_SCANCODE_KP_BACKSPACE = 187,
293 SDL_SCANCODE_KP_A = 188,
294 SDL_SCANCODE_KP_B = 189,
295 SDL_SCANCODE_KP_C = 190,
296 SDL_SCANCODE_KP_D = 191,
297 SDL_SCANCODE_KP_E = 192,
298 SDL_SCANCODE_KP_F = 193,
299 SDL_SCANCODE_KP_XOR = 194,
300 SDL_SCANCODE_KP_POWER = 195,
301 SDL_SCANCODE_KP_PERCENT = 196,
302 SDL_SCANCODE_KP_LESS = 197,
303 SDL_SCANCODE_KP_GREATER = 198,
304 SDL_SCANCODE_KP_AMPERSAND = 199,
305 SDL_SCANCODE_KP_DBLAMPERSAND = 200,
306 SDL_SCANCODE_KP_VERTICALBAR = 201,
307 SDL_SCANCODE_KP_DBLVERTICALBAR = 202,
308 SDL_SCANCODE_KP_COLON = 203,
309 SDL_SCANCODE_KP_HASH = 204,
310 SDL_SCANCODE_KP_SPACE = 205,
311 SDL_SCANCODE_KP_AT = 206,
312 SDL_SCANCODE_KP_EXCLAM = 207,
313 SDL_SCANCODE_KP_MEMSTORE = 208,
314 SDL_SCANCODE_KP_MEMRECALL = 209,
315 SDL_SCANCODE_KP_MEMCLEAR = 210,
316 SDL_SCANCODE_KP_MEMADD = 211,
317 SDL_SCANCODE_KP_MEMSUBTRACT = 212,
318 SDL_SCANCODE_KP_MEMMULTIPLY = 213,
319 SDL_SCANCODE_KP_MEMDIVIDE = 214,
320 SDL_SCANCODE_KP_PLUSMINUS = 215,
321 SDL_SCANCODE_KP_CLEAR = 216,
322 SDL_SCANCODE_KP_CLEARENTRY = 217,
323 SDL_SCANCODE_KP_BINARY = 218,
324 SDL_SCANCODE_KP_OCTAL = 219,
325 SDL_SCANCODE_KP_DECIMAL = 220,
326 SDL_SCANCODE_KP_HEXADECIMAL = 221,
327
328 SDL_SCANCODE_LCTRL = 224,
329 SDL_SCANCODE_LSHIFT = 225,
330 SDL_SCANCODE_LALT = 226, /**< alt, option */
331 SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */
332 SDL_SCANCODE_RCTRL = 228,
333 SDL_SCANCODE_RSHIFT = 229,
334 SDL_SCANCODE_RALT = 230, /**< alt gr, option */
335 SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */
336
337 SDL_SCANCODE_MODE = 257, /**< I'm not sure if this is really not covered
338 * by any of the above, but since there's a
339 * special KMOD_MODE for it I'm adding it here
340 */
341
342 /* @} *//* Usage page 0x07 */
343
344 /**
345 * \name Usage page 0x0C
346 *
347 * These values are mapped from usage page 0x0C (USB consumer page).
348 */
349 /* @{ */
350
351 SDL_SCANCODE_AUDIONEXT = 258,
352 SDL_SCANCODE_AUDIOPREV = 259,
353 SDL_SCANCODE_AUDIOSTOP = 260,
354 SDL_SCANCODE_AUDIOPLAY = 261,
355 SDL_SCANCODE_AUDIOMUTE = 262,
356 SDL_SCANCODE_MEDIASELECT = 263,
357 SDL_SCANCODE_WWW = 264,
358 SDL_SCANCODE_MAIL = 265,
359 SDL_SCANCODE_CALCULATOR = 266,
360 SDL_SCANCODE_COMPUTER = 267,
361 SDL_SCANCODE_AC_SEARCH = 268,
362 SDL_SCANCODE_AC_HOME = 269,
363 SDL_SCANCODE_AC_BACK = 270,
364 SDL_SCANCODE_AC_FORWARD = 271,
365 SDL_SCANCODE_AC_STOP = 272,
366 SDL_SCANCODE_AC_REFRESH = 273,
367 SDL_SCANCODE_AC_BOOKMARKS = 274,
368
369 /* @} *//* Usage page 0x0C */
370
371 /**
372 * \name Walther keys
373 *
374 * These are values that Christian Walther added (for mac keyboard?).
375 */
376 /* @{ */
377
378 SDL_SCANCODE_BRIGHTNESSDOWN = 275,
379 SDL_SCANCODE_BRIGHTNESSUP = 276,
380 SDL_SCANCODE_DISPLAYSWITCH = 277, /**< display mirroring/dual display
381 switch, video mode switch */
382 SDL_SCANCODE_KBDILLUMTOGGLE = 278,
383 SDL_SCANCODE_KBDILLUMDOWN = 279,
384 SDL_SCANCODE_KBDILLUMUP = 280,
385 SDL_SCANCODE_EJECT = 281,
386 SDL_SCANCODE_SLEEP = 282,
387
388 SDL_SCANCODE_APP1 = 283,
389 SDL_SCANCODE_APP2 = 284,
390
391 /* @} *//* Walther keys */
392
393 /**
394 * \name Usage page 0x0C (additional media keys)
395 *
396 * These values are mapped from usage page 0x0C (USB consumer page).
397 */
398 /* @{ */
399
400 SDL_SCANCODE_AUDIOREWIND = 285,
401 SDL_SCANCODE_AUDIOFASTFORWARD = 286,
402
403 /* @} *//* Usage page 0x0C (additional media keys) */
404
405 /* Add any other keys here. */
406
407 SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes
408 for array bounds */
409} SDL_Scancode;
410
411#endif /* SDL_scancode_h_ */
412
413/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_sensor.h b/vendor/SDL2/include/SDL_sensor.h new file mode 100644 index 0000000..a2f30e0 --- /dev/null +++ b/vendor/SDL2/include/SDL_sensor.h
@@ -0,0 +1,301 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_sensor.h
24 *
25 * Include file for SDL sensor event handling
26 *
27 */
28
29#ifndef SDL_sensor_h_
30#define SDL_sensor_h_
31
32#include "SDL_stdinc.h"
33#include "SDL_error.h"
34
35#include "begin_code.h"
36/* Set up for C function definitions, even when using C++ */
37#ifdef __cplusplus
38/* *INDENT-OFF* */
39extern "C" {
40/* *INDENT-ON* */
41#endif
42
43/**
44 * \brief SDL_sensor.h
45 *
46 * In order to use these functions, SDL_Init() must have been called
47 * with the ::SDL_INIT_SENSOR flag. This causes SDL to scan the system
48 * for sensors, and load appropriate drivers.
49 */
50
51struct _SDL_Sensor;
52typedef struct _SDL_Sensor SDL_Sensor;
53
54/**
55 * This is a unique ID for a sensor for the time it is connected to the system,
56 * and is never reused for the lifetime of the application.
57 *
58 * The ID value starts at 0 and increments from there. The value -1 is an invalid ID.
59 */
60typedef Sint32 SDL_SensorID;
61
62/* The different sensors defined by SDL
63 *
64 * Additional sensors may be available, using platform dependent semantics.
65 *
66 * Hare are the additional Android sensors:
67 * https://developer.android.com/reference/android/hardware/SensorEvent.html#values
68 */
69typedef enum
70{
71 SDL_SENSOR_INVALID = -1, /**< Returned for an invalid sensor */
72 SDL_SENSOR_UNKNOWN, /**< Unknown sensor type */
73 SDL_SENSOR_ACCEL, /**< Accelerometer */
74 SDL_SENSOR_GYRO /**< Gyroscope */
75} SDL_SensorType;
76
77/**
78 * Accelerometer sensor
79 *
80 * The accelerometer returns the current acceleration in SI meters per
81 * second squared. This measurement includes the force of gravity, so
82 * a device at rest will have an value of SDL_STANDARD_GRAVITY away
83 * from the center of the earth.
84 *
85 * values[0]: Acceleration on the x axis
86 * values[1]: Acceleration on the y axis
87 * values[2]: Acceleration on the z axis
88 *
89 * For phones held in portrait mode and game controllers held in front of you,
90 * the axes are defined as follows:
91 * -X ... +X : left ... right
92 * -Y ... +Y : bottom ... top
93 * -Z ... +Z : farther ... closer
94 *
95 * The axis data is not changed when the phone is rotated.
96 *
97 * \sa SDL_GetDisplayOrientation()
98 */
99#define SDL_STANDARD_GRAVITY 9.80665f
100
101/**
102 * Gyroscope sensor
103 *
104 * The gyroscope returns the current rate of rotation in radians per second.
105 * The rotation is positive in the counter-clockwise direction. That is,
106 * an observer looking from a positive location on one of the axes would
107 * see positive rotation on that axis when it appeared to be rotating
108 * counter-clockwise.
109 *
110 * values[0]: Angular speed around the x axis (pitch)
111 * values[1]: Angular speed around the y axis (yaw)
112 * values[2]: Angular speed around the z axis (roll)
113 *
114 * For phones held in portrait mode and game controllers held in front of you,
115 * the axes are defined as follows:
116 * -X ... +X : left ... right
117 * -Y ... +Y : bottom ... top
118 * -Z ... +Z : farther ... closer
119 *
120 * The axis data is not changed when the phone or controller is rotated.
121 *
122 * \sa SDL_GetDisplayOrientation()
123 */
124
125/* Function prototypes */
126
127/**
128 * Locking for multi-threaded access to the sensor API
129 *
130 * If you are using the sensor API or handling events from multiple threads
131 * you should use these locking functions to protect access to the sensors.
132 *
133 * In particular, you are guaranteed that the sensor list won't change, so the
134 * API functions that take a sensor index will be valid, and sensor events
135 * will not be delivered.
136 *
137 * \since This function is available since SDL 2.0.14.
138 */
139extern DECLSPEC void SDLCALL SDL_LockSensors(void);
140extern DECLSPEC void SDLCALL SDL_UnlockSensors(void);
141
142/**
143 * Count the number of sensors attached to the system right now.
144 *
145 * \returns the number of sensors detected.
146 *
147 * \since This function is available since SDL 2.0.9.
148 */
149extern DECLSPEC int SDLCALL SDL_NumSensors(void);
150
151/**
152 * Get the implementation dependent name of a sensor.
153 *
154 * \param device_index The sensor to obtain name from
155 * \returns the sensor name, or NULL if `device_index` is out of range.
156 *
157 * \since This function is available since SDL 2.0.9.
158 */
159extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index);
160
161/**
162 * Get the type of a sensor.
163 *
164 * \param device_index The sensor to get the type from
165 * \returns the SDL_SensorType, or `SDL_SENSOR_INVALID` if `device_index` is
166 * out of range.
167 *
168 * \since This function is available since SDL 2.0.9.
169 */
170extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index);
171
172/**
173 * Get the platform dependent type of a sensor.
174 *
175 * \param device_index The sensor to check
176 * \returns the sensor platform dependent type, or -1 if `device_index` is out
177 * of range.
178 *
179 * \since This function is available since SDL 2.0.9.
180 */
181extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index);
182
183/**
184 * Get the instance ID of a sensor.
185 *
186 * \param device_index The sensor to get instance id from
187 * \returns the sensor instance ID, or -1 if `device_index` is out of range.
188 *
189 * \since This function is available since SDL 2.0.9.
190 */
191extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index);
192
193/**
194 * Open a sensor for use.
195 *
196 * \param device_index The sensor to open
197 * \returns an SDL_Sensor sensor object, or NULL if an error occurred.
198 *
199 * \since This function is available since SDL 2.0.9.
200 */
201extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index);
202
203/**
204 * Return the SDL_Sensor associated with an instance id.
205 *
206 * \param instance_id The sensor from instance id
207 * \returns an SDL_Sensor object.
208 *
209 * \since This function is available since SDL 2.0.9.
210 */
211extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id);
212
213/**
214 * Get the implementation dependent name of a sensor
215 *
216 * \param sensor The SDL_Sensor object
217 * \returns the sensor name, or NULL if `sensor` is NULL.
218 *
219 * \since This function is available since SDL 2.0.9.
220 */
221extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor);
222
223/**
224 * Get the type of a sensor.
225 *
226 * \param sensor The SDL_Sensor object to inspect
227 * \returns the SDL_SensorType type, or `SDL_SENSOR_INVALID` if `sensor` is
228 * NULL.
229 *
230 * \since This function is available since SDL 2.0.9.
231 */
232extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor);
233
234/**
235 * Get the platform dependent type of a sensor.
236 *
237 * \param sensor The SDL_Sensor object to inspect
238 * \returns the sensor platform dependent type, or -1 if `sensor` is NULL.
239 *
240 * \since This function is available since SDL 2.0.9.
241 */
242extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor);
243
244/**
245 * Get the instance ID of a sensor.
246 *
247 * \param sensor The SDL_Sensor object to inspect
248 * \returns the sensor instance ID, or -1 if `sensor` is NULL.
249 *
250 * \since This function is available since SDL 2.0.9.
251 */
252extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor);
253
254/**
255 * Get the current state of an opened sensor.
256 *
257 * The number of values and interpretation of the data is sensor dependent.
258 *
259 * \param sensor The SDL_Sensor object to query
260 * \param data A pointer filled with the current sensor state
261 * \param num_values The number of values to write to data
262 * \returns 0 or -1 if an error occurred.
263 *
264 * \since This function is available since SDL 2.0.9.
265 */
266extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor * sensor, float *data, int num_values);
267
268/**
269 * Close a sensor previously opened with SDL_SensorOpen().
270 *
271 * \param sensor The SDL_Sensor object to close
272 *
273 * \since This function is available since SDL 2.0.9.
274 */
275extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor * sensor);
276
277/**
278 * Update the current state of the open sensors.
279 *
280 * This is called automatically by the event loop if sensor events are
281 * enabled.
282 *
283 * This needs to be called from the thread that initialized the sensor
284 * subsystem.
285 *
286 * \since This function is available since SDL 2.0.9.
287 */
288extern DECLSPEC void SDLCALL SDL_SensorUpdate(void);
289
290
291/* Ends C function definitions when using C++ */
292#ifdef __cplusplus
293/* *INDENT-OFF* */
294}
295/* *INDENT-ON* */
296#endif
297#include "close_code.h"
298
299#endif /* SDL_sensor_h_ */
300
301/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_shape.h b/vendor/SDL2/include/SDL_shape.h new file mode 100644 index 0000000..1bca927 --- /dev/null +++ b/vendor/SDL2/include/SDL_shape.h
@@ -0,0 +1,155 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_shape_h_
23#define SDL_shape_h_
24
25#include "SDL_stdinc.h"
26#include "SDL_pixels.h"
27#include "SDL_rect.h"
28#include "SDL_surface.h"
29#include "SDL_video.h"
30
31#include "begin_code.h"
32/* Set up for C function definitions, even when using C++ */
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37/** \file SDL_shape.h
38 *
39 * Header file for the shaped window API.
40 */
41
42#define SDL_NONSHAPEABLE_WINDOW -1
43#define SDL_INVALID_SHAPE_ARGUMENT -2
44#define SDL_WINDOW_LACKS_SHAPE -3
45
46/**
47 * Create a window that can be shaped with the specified position, dimensions,
48 * and flags.
49 *
50 * \param title The title of the window, in UTF-8 encoding.
51 * \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or
52 * ::SDL_WINDOWPOS_UNDEFINED.
53 * \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or
54 * ::SDL_WINDOWPOS_UNDEFINED.
55 * \param w The width of the window.
56 * \param h The height of the window.
57 * \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with
58 * any of the following: ::SDL_WINDOW_OPENGL,
59 * ::SDL_WINDOW_INPUT_GRABBED, ::SDL_WINDOW_HIDDEN,
60 * ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED,
61 * ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_BORDERLESS is always set,
62 * and ::SDL_WINDOW_FULLSCREEN is always unset.
63 * \return the window created, or NULL if window creation failed.
64 *
65 * \since This function is available since SDL 2.0.0.
66 *
67 * \sa SDL_DestroyWindow
68 */
69extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags);
70
71/**
72 * Return whether the given window is a shaped window.
73 *
74 * \param window The window to query for being shaped.
75 * \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if
76 * the window is unshaped or NULL.
77 *
78 * \since This function is available since SDL 2.0.0.
79 *
80 * \sa SDL_CreateShapedWindow
81 */
82extern DECLSPEC SDL_bool SDLCALL SDL_IsShapedWindow(const SDL_Window *window);
83
84/** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */
85typedef enum {
86 /** \brief The default mode, a binarized alpha cutoff of 1. */
87 ShapeModeDefault,
88 /** \brief A binarized alpha cutoff with a given integer value. */
89 ShapeModeBinarizeAlpha,
90 /** \brief A binarized alpha cutoff with a given integer value, but with the opposite comparison. */
91 ShapeModeReverseBinarizeAlpha,
92 /** \brief A color key is applied. */
93 ShapeModeColorKey
94} WindowShapeMode;
95
96#define SDL_SHAPEMODEALPHA(mode) (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha)
97
98/** \brief A union containing parameters for shaped windows. */
99typedef union {
100 /** \brief A cutoff alpha value for binarization of the window shape's alpha channel. */
101 Uint8 binarizationCutoff;
102 SDL_Color colorKey;
103} SDL_WindowShapeParams;
104
105/** \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */
106typedef struct SDL_WindowShapeMode {
107 /** \brief The mode of these window-shape parameters. */
108 WindowShapeMode mode;
109 /** \brief Window-shape parameters. */
110 SDL_WindowShapeParams parameters;
111} SDL_WindowShapeMode;
112
113/**
114 * Set the shape and parameters of a shaped window.
115 *
116 * \param window The shaped window whose parameters should be set.
117 * \param shape A surface encoding the desired shape for the window.
118 * \param shape_mode The parameters to set for the shaped window.
119 * \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape
120 * argument, or SDL_NONSHAPEABLE_WINDOW if the SDL_Window given does
121 * not reference a valid shaped window.
122 *
123 * \since This function is available since SDL 2.0.0.
124 *
125 * \sa SDL_WindowShapeMode
126 * \sa SDL_GetShapedWindowMode
127 */
128extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode);
129
130/**
131 * Get the shape parameters of a shaped window.
132 *
133 * \param window The shaped window whose parameters should be retrieved.
134 * \param shape_mode An empty shape-mode structure to fill, or NULL to check
135 * whether the window has a shape.
136 * \return 0 if the window has a shape and, provided shape_mode was not NULL,
137 * shape_mode has been filled with the mode data,
138 * SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped
139 * window, or SDL_WINDOW_LACKS_SHAPE if the SDL_Window given is a
140 * shapeable window currently lacking a shape.
141 *
142 * \since This function is available since SDL 2.0.0.
143 *
144 * \sa SDL_WindowShapeMode
145 * \sa SDL_SetWindowShape
146 */
147extern DECLSPEC int SDLCALL SDL_GetShapedWindowMode(SDL_Window *window,SDL_WindowShapeMode *shape_mode);
148
149/* Ends C function definitions when using C++ */
150#ifdef __cplusplus
151}
152#endif
153#include "close_code.h"
154
155#endif /* SDL_shape_h_ */
diff --git a/vendor/SDL2/include/SDL_stdinc.h b/vendor/SDL2/include/SDL_stdinc.h new file mode 100644 index 0000000..c0d194c --- /dev/null +++ b/vendor/SDL2/include/SDL_stdinc.h
@@ -0,0 +1,719 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_stdinc.h
24 *
25 * This is a general header that includes C language support.
26 */
27
28#ifndef SDL_stdinc_h_
29#define SDL_stdinc_h_
30
31#include "SDL_config.h"
32
33#ifdef __APPLE__
34#ifndef _DARWIN_C_SOURCE
35#define _DARWIN_C_SOURCE 1 /* for memset_pattern4() */
36#endif
37#endif
38
39#ifdef HAVE_SYS_TYPES_H
40#include <sys/types.h>
41#endif
42#ifdef HAVE_STDIO_H
43#include <stdio.h>
44#endif
45#if defined(STDC_HEADERS)
46# include <stdlib.h>
47# include <stddef.h>
48# include <stdarg.h>
49#else
50# if defined(HAVE_STDLIB_H)
51# include <stdlib.h>
52# elif defined(HAVE_MALLOC_H)
53# include <malloc.h>
54# endif
55# if defined(HAVE_STDDEF_H)
56# include <stddef.h>
57# endif
58# if defined(HAVE_STDARG_H)
59# include <stdarg.h>
60# endif
61#endif
62#ifdef HAVE_STRING_H
63# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
64# include <memory.h>
65# endif
66# include <string.h>
67#endif
68#ifdef HAVE_STRINGS_H
69# include <strings.h>
70#endif
71#ifdef HAVE_WCHAR_H
72# include <wchar.h>
73#endif
74#if defined(HAVE_INTTYPES_H)
75# include <inttypes.h>
76#elif defined(HAVE_STDINT_H)
77# include <stdint.h>
78#endif
79#ifdef HAVE_CTYPE_H
80# include <ctype.h>
81#endif
82#ifdef HAVE_MATH_H
83# if defined(__WINRT__)
84/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on
85 WinRT. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx
86 for more information.
87*/
88# define _USE_MATH_DEFINES
89# endif
90# include <math.h>
91#endif
92#ifdef HAVE_FLOAT_H
93# include <float.h>
94#endif
95#if defined(HAVE_ALLOCA) && !defined(alloca)
96# if defined(HAVE_ALLOCA_H)
97# include <alloca.h>
98# elif defined(__GNUC__)
99# define alloca __builtin_alloca
100# elif defined(_MSC_VER)
101# include <malloc.h>
102# define alloca _alloca
103# elif defined(__WATCOMC__)
104# include <malloc.h>
105# elif defined(__BORLANDC__)
106# include <malloc.h>
107# elif defined(__DMC__)
108# include <stdlib.h>
109# elif defined(__AIX__)
110#pragma alloca
111# elif defined(__MRC__)
112void *alloca(unsigned);
113# else
114char *alloca();
115# endif
116#endif
117
118/**
119 * Check if the compiler supports a given builtin.
120 * Supported by virtually all clang versions and recent gcc. Use this
121 * instead of checking the clang version if possible.
122 */
123#ifdef __has_builtin
124#define _SDL_HAS_BUILTIN(x) __has_builtin(x)
125#else
126#define _SDL_HAS_BUILTIN(x) 0
127#endif
128
129/**
130 * The number of elements in an array.
131 */
132#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0]))
133#define SDL_TABLESIZE(table) SDL_arraysize(table)
134
135/**
136 * Macro useful for building other macros with strings in them
137 *
138 * e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n")
139 */
140#define SDL_STRINGIFY_ARG(arg) #arg
141
142/**
143 * \name Cast operators
144 *
145 * Use proper C++ casts when compiled as C++ to be compatible with the option
146 * -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above).
147 */
148/* @{ */
149#ifdef __cplusplus
150#define SDL_reinterpret_cast(type, expression) reinterpret_cast<type>(expression)
151#define SDL_static_cast(type, expression) static_cast<type>(expression)
152#define SDL_const_cast(type, expression) const_cast<type>(expression)
153#else
154#define SDL_reinterpret_cast(type, expression) ((type)(expression))
155#define SDL_static_cast(type, expression) ((type)(expression))
156#define SDL_const_cast(type, expression) ((type)(expression))
157#endif
158/* @} *//* Cast operators */
159
160/* Define a four character code as a Uint32 */
161#define SDL_FOURCC(A, B, C, D) \
162 ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \
163 (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \
164 (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \
165 (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24))
166
167/**
168 * \name Basic data types
169 */
170/* @{ */
171
172#ifdef __CC_ARM
173/* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */
174#define SDL_FALSE 0
175#define SDL_TRUE 1
176typedef int SDL_bool;
177#else
178typedef enum
179{
180 SDL_FALSE = 0,
181 SDL_TRUE = 1
182} SDL_bool;
183#endif
184
185/**
186 * \brief A signed 8-bit integer type.
187 */
188#define SDL_MAX_SINT8 ((Sint8)0x7F) /* 127 */
189#define SDL_MIN_SINT8 ((Sint8)(~0x7F)) /* -128 */
190typedef int8_t Sint8;
191/**
192 * \brief An unsigned 8-bit integer type.
193 */
194#define SDL_MAX_UINT8 ((Uint8)0xFF) /* 255 */
195#define SDL_MIN_UINT8 ((Uint8)0x00) /* 0 */
196typedef uint8_t Uint8;
197/**
198 * \brief A signed 16-bit integer type.
199 */
200#define SDL_MAX_SINT16 ((Sint16)0x7FFF) /* 32767 */
201#define SDL_MIN_SINT16 ((Sint16)(~0x7FFF)) /* -32768 */
202typedef int16_t Sint16;
203/**
204 * \brief An unsigned 16-bit integer type.
205 */
206#define SDL_MAX_UINT16 ((Uint16)0xFFFF) /* 65535 */
207#define SDL_MIN_UINT16 ((Uint16)0x0000) /* 0 */
208typedef uint16_t Uint16;
209/**
210 * \brief A signed 32-bit integer type.
211 */
212#define SDL_MAX_SINT32 ((Sint32)0x7FFFFFFF) /* 2147483647 */
213#define SDL_MIN_SINT32 ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */
214typedef int32_t Sint32;
215/**
216 * \brief An unsigned 32-bit integer type.
217 */
218#define SDL_MAX_UINT32 ((Uint32)0xFFFFFFFFu) /* 4294967295 */
219#define SDL_MIN_UINT32 ((Uint32)0x00000000) /* 0 */
220typedef uint32_t Uint32;
221
222/**
223 * \brief A signed 64-bit integer type.
224 */
225#define SDL_MAX_SINT64 ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */
226#define SDL_MIN_SINT64 ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */
227typedef int64_t Sint64;
228/**
229 * \brief An unsigned 64-bit integer type.
230 */
231#define SDL_MAX_UINT64 ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */
232#define SDL_MIN_UINT64 ((Uint64)(0x0000000000000000ull)) /* 0 */
233typedef uint64_t Uint64;
234
235/* @} *//* Basic data types */
236
237/* Make sure we have macros for printing width-based integers.
238 * <stdint.h> should define these but this is not true all platforms.
239 * (for example win32) */
240#ifndef SDL_PRIs64
241#ifdef PRIs64
242#define SDL_PRIs64 PRIs64
243#elif defined(__WIN32__)
244#define SDL_PRIs64 "I64d"
245#elif defined(__LINUX__) && defined(__LP64__)
246#define SDL_PRIs64 "ld"
247#else
248#define SDL_PRIs64 "lld"
249#endif
250#endif
251#ifndef SDL_PRIu64
252#ifdef PRIu64
253#define SDL_PRIu64 PRIu64
254#elif defined(__WIN32__)
255#define SDL_PRIu64 "I64u"
256#elif defined(__LINUX__) && defined(__LP64__)
257#define SDL_PRIu64 "lu"
258#else
259#define SDL_PRIu64 "llu"
260#endif
261#endif
262#ifndef SDL_PRIx64
263#ifdef PRIx64
264#define SDL_PRIx64 PRIx64
265#elif defined(__WIN32__)
266#define SDL_PRIx64 "I64x"
267#elif defined(__LINUX__) && defined(__LP64__)
268#define SDL_PRIx64 "lx"
269#else
270#define SDL_PRIx64 "llx"
271#endif
272#endif
273#ifndef SDL_PRIX64
274#ifdef PRIX64
275#define SDL_PRIX64 PRIX64
276#elif defined(__WIN32__)
277#define SDL_PRIX64 "I64X"
278#elif defined(__LINUX__) && defined(__LP64__)
279#define SDL_PRIX64 "lX"
280#else
281#define SDL_PRIX64 "llX"
282#endif
283#endif
284#ifndef SDL_PRIs32
285#ifdef PRId32
286#define SDL_PRIs32 PRId32
287#else
288#define SDL_PRIs32 "d"
289#endif
290#endif
291#ifndef SDL_PRIu32
292#ifdef PRIu32
293#define SDL_PRIu32 PRIu32
294#else
295#define SDL_PRIu32 "u"
296#endif
297#endif
298#ifndef SDL_PRIx32
299#ifdef PRIx32
300#define SDL_PRIx32 PRIx32
301#else
302#define SDL_PRIx32 "x"
303#endif
304#endif
305#ifndef SDL_PRIX32
306#ifdef PRIX32
307#define SDL_PRIX32 PRIX32
308#else
309#define SDL_PRIX32 "X"
310#endif
311#endif
312
313/* Annotations to help code analysis tools */
314#ifdef SDL_DISABLE_ANALYZE_MACROS
315#define SDL_IN_BYTECAP(x)
316#define SDL_INOUT_Z_CAP(x)
317#define SDL_OUT_Z_CAP(x)
318#define SDL_OUT_CAP(x)
319#define SDL_OUT_BYTECAP(x)
320#define SDL_OUT_Z_BYTECAP(x)
321#define SDL_PRINTF_FORMAT_STRING
322#define SDL_SCANF_FORMAT_STRING
323#define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
324#define SDL_SCANF_VARARG_FUNC( fmtargnumber )
325#else
326#if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */
327#include <sal.h>
328
329#define SDL_IN_BYTECAP(x) _In_bytecount_(x)
330#define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x)
331#define SDL_OUT_Z_CAP(x) _Out_z_cap_(x)
332#define SDL_OUT_CAP(x) _Out_cap_(x)
333#define SDL_OUT_BYTECAP(x) _Out_bytecap_(x)
334#define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x)
335
336#define SDL_PRINTF_FORMAT_STRING _Printf_format_string_
337#define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_
338#else
339#define SDL_IN_BYTECAP(x)
340#define SDL_INOUT_Z_CAP(x)
341#define SDL_OUT_Z_CAP(x)
342#define SDL_OUT_CAP(x)
343#define SDL_OUT_BYTECAP(x)
344#define SDL_OUT_Z_BYTECAP(x)
345#define SDL_PRINTF_FORMAT_STRING
346#define SDL_SCANF_FORMAT_STRING
347#endif
348#if defined(__GNUC__)
349#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 )))
350#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 )))
351#else
352#define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
353#define SDL_SCANF_VARARG_FUNC( fmtargnumber )
354#endif
355#endif /* SDL_DISABLE_ANALYZE_MACROS */
356
357#define SDL_COMPILE_TIME_ASSERT(name, x) \
358 typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1]
359/** \cond */
360#ifndef DOXYGEN_SHOULD_IGNORE_THIS
361SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1);
362SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1);
363SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2);
364SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2);
365SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4);
366SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4);
367SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8);
368SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
369#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
370/** \endcond */
371
372/* Check to make sure enums are the size of ints, for structure packing.
373 For both Watcom C/C++ and Borland C/C++ the compiler option that makes
374 enums having the size of an int must be enabled.
375 This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11).
376*/
377
378/** \cond */
379#ifndef DOXYGEN_SHOULD_IGNORE_THIS
380#if !defined(__ANDROID__) && !defined(__VITA__)
381 /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */
382typedef enum
383{
384 DUMMY_ENUM_VALUE
385} SDL_DUMMY_ENUM;
386
387SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int));
388#endif
389#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
390/** \endcond */
391
392#include "begin_code.h"
393/* Set up for C function definitions, even when using C++ */
394#ifdef __cplusplus
395extern "C" {
396#endif
397
398#ifdef HAVE_ALLOCA
399#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count))
400#define SDL_stack_free(data)
401#else
402#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count))
403#define SDL_stack_free(data) SDL_free(data)
404#endif
405
406extern DECLSPEC void *SDLCALL SDL_malloc(size_t size);
407extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size);
408extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size);
409extern DECLSPEC void SDLCALL SDL_free(void *mem);
410
411typedef void *(SDLCALL *SDL_malloc_func)(size_t size);
412typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size);
413typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size);
414typedef void (SDLCALL *SDL_free_func)(void *mem);
415
416/**
417 * Get the current set of SDL memory functions
418 *
419 * \since This function is available since SDL 2.0.7.
420 */
421extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func,
422 SDL_calloc_func *calloc_func,
423 SDL_realloc_func *realloc_func,
424 SDL_free_func *free_func);
425
426/**
427 * Replace SDL's memory allocation functions with a custom set
428 *
429 * \since This function is available since SDL 2.0.7.
430 */
431extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func,
432 SDL_calloc_func calloc_func,
433 SDL_realloc_func realloc_func,
434 SDL_free_func free_func);
435
436/**
437 * Get the number of outstanding (unfreed) allocations
438 *
439 * \since This function is available since SDL 2.0.7.
440 */
441extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void);
442
443extern DECLSPEC char *SDLCALL SDL_getenv(const char *name);
444extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite);
445
446extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (*compare) (const void *, const void *));
447
448extern DECLSPEC int SDLCALL SDL_abs(int x);
449
450/* NOTE: these double-evaluate their arguments, so you should never have side effects in the parameters */
451#define SDL_min(x, y) (((x) < (y)) ? (x) : (y))
452#define SDL_max(x, y) (((x) > (y)) ? (x) : (y))
453#define SDL_clamp(x, a, b) (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x)))
454
455extern DECLSPEC int SDLCALL SDL_isalpha(int x);
456extern DECLSPEC int SDLCALL SDL_isalnum(int x);
457extern DECLSPEC int SDLCALL SDL_isblank(int x);
458extern DECLSPEC int SDLCALL SDL_iscntrl(int x);
459extern DECLSPEC int SDLCALL SDL_isdigit(int x);
460extern DECLSPEC int SDLCALL SDL_isxdigit(int x);
461extern DECLSPEC int SDLCALL SDL_ispunct(int x);
462extern DECLSPEC int SDLCALL SDL_isspace(int x);
463extern DECLSPEC int SDLCALL SDL_isupper(int x);
464extern DECLSPEC int SDLCALL SDL_islower(int x);
465extern DECLSPEC int SDLCALL SDL_isprint(int x);
466extern DECLSPEC int SDLCALL SDL_isgraph(int x);
467extern DECLSPEC int SDLCALL SDL_toupper(int x);
468extern DECLSPEC int SDLCALL SDL_tolower(int x);
469
470extern DECLSPEC Uint32 SDLCALL SDL_crc32(Uint32 crc, const void *data, size_t len);
471
472extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len);
473
474#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x)))
475#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x)))
476#define SDL_zeroa(x) SDL_memset((x), 0, sizeof((x)))
477
478/* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */
479SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords)
480{
481#ifdef __APPLE__
482 memset_pattern4(dst, &val, dwords * 4);
483#elif defined(__GNUC__) && defined(__i386__)
484 int u0, u1, u2;
485 __asm__ __volatile__ (
486 "cld \n\t"
487 "rep ; stosl \n\t"
488 : "=&D" (u0), "=&a" (u1), "=&c" (u2)
489 : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, dwords))
490 : "memory"
491 );
492#else
493 size_t _n = (dwords + 3) / 4;
494 Uint32 *_p = SDL_static_cast(Uint32 *, dst);
495 Uint32 _val = (val);
496 if (dwords == 0) {
497 return;
498 }
499 switch (dwords % 4) {
500 case 0: do { *_p++ = _val; SDL_FALLTHROUGH;
501 case 3: *_p++ = _val; SDL_FALLTHROUGH;
502 case 2: *_p++ = _val; SDL_FALLTHROUGH;
503 case 1: *_p++ = _val;
504 } while ( --_n );
505 }
506#endif
507}
508
509extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
510
511extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
512extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len);
513
514extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr);
515extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
516extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
517extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr);
518extern DECLSPEC wchar_t *SDLCALL SDL_wcsstr(const wchar_t *haystack, const wchar_t *needle);
519
520extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2);
521extern DECLSPEC int SDLCALL SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen);
522extern DECLSPEC int SDLCALL SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2);
523extern DECLSPEC int SDLCALL SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t len);
524
525extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str);
526extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
527extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes);
528extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
529extern DECLSPEC char *SDLCALL SDL_strdup(const char *str);
530extern DECLSPEC char *SDLCALL SDL_strrev(char *str);
531extern DECLSPEC char *SDLCALL SDL_strupr(char *str);
532extern DECLSPEC char *SDLCALL SDL_strlwr(char *str);
533extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c);
534extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c);
535extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle);
536extern DECLSPEC char *SDLCALL SDL_strtokr(char *s1, const char *s2, char **saveptr);
537extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str);
538
539extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix);
540extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix);
541extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix);
542extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix);
543extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix);
544extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix);
545
546extern DECLSPEC int SDLCALL SDL_atoi(const char *str);
547extern DECLSPEC double SDLCALL SDL_atof(const char *str);
548extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base);
549extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base);
550extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base);
551extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base);
552extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp);
553
554extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2);
555extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen);
556extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2);
557extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len);
558
559extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2);
560extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, const char *fmt, va_list ap);
561extern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3);
562extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap);
563extern DECLSPEC int SDLCALL SDL_asprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
564extern DECLSPEC int SDLCALL SDL_vasprintf(char **strp, const char *fmt, va_list ap);
565
566#ifndef HAVE_M_PI
567#ifndef M_PI
568#define M_PI 3.14159265358979323846264338327950288 /**< pi */
569#endif
570#endif
571
572/**
573 * Use this function to compute arc cosine of `x`.
574 *
575 * The definition of `y = acos(x)` is `x = cos(y)`.
576 *
577 * Domain: `-1 <= x <= 1`
578 *
579 * Range: `0 <= y <= Pi`
580 *
581 * \param x floating point value, in radians.
582 * \returns arc cosine of `x`.
583 *
584 * \since This function is available since SDL 2.0.2.
585 */
586extern DECLSPEC double SDLCALL SDL_acos(double x);
587extern DECLSPEC float SDLCALL SDL_acosf(float x);
588extern DECLSPEC double SDLCALL SDL_asin(double x);
589extern DECLSPEC float SDLCALL SDL_asinf(float x);
590extern DECLSPEC double SDLCALL SDL_atan(double x);
591extern DECLSPEC float SDLCALL SDL_atanf(float x);
592extern DECLSPEC double SDLCALL SDL_atan2(double y, double x);
593extern DECLSPEC float SDLCALL SDL_atan2f(float y, float x);
594extern DECLSPEC double SDLCALL SDL_ceil(double x);
595extern DECLSPEC float SDLCALL SDL_ceilf(float x);
596extern DECLSPEC double SDLCALL SDL_copysign(double x, double y);
597extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y);
598extern DECLSPEC double SDLCALL SDL_cos(double x);
599extern DECLSPEC float SDLCALL SDL_cosf(float x);
600extern DECLSPEC double SDLCALL SDL_exp(double x);
601extern DECLSPEC float SDLCALL SDL_expf(float x);
602extern DECLSPEC double SDLCALL SDL_fabs(double x);
603extern DECLSPEC float SDLCALL SDL_fabsf(float x);
604extern DECLSPEC double SDLCALL SDL_floor(double x);
605extern DECLSPEC float SDLCALL SDL_floorf(float x);
606extern DECLSPEC double SDLCALL SDL_trunc(double x);
607extern DECLSPEC float SDLCALL SDL_truncf(float x);
608extern DECLSPEC double SDLCALL SDL_fmod(double x, double y);
609extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y);
610extern DECLSPEC double SDLCALL SDL_log(double x);
611extern DECLSPEC float SDLCALL SDL_logf(float x);
612extern DECLSPEC double SDLCALL SDL_log10(double x);
613extern DECLSPEC float SDLCALL SDL_log10f(float x);
614extern DECLSPEC double SDLCALL SDL_pow(double x, double y);
615extern DECLSPEC float SDLCALL SDL_powf(float x, float y);
616extern DECLSPEC double SDLCALL SDL_round(double x);
617extern DECLSPEC float SDLCALL SDL_roundf(float x);
618extern DECLSPEC long SDLCALL SDL_lround(double x);
619extern DECLSPEC long SDLCALL SDL_lroundf(float x);
620extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n);
621extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n);
622extern DECLSPEC double SDLCALL SDL_sin(double x);
623extern DECLSPEC float SDLCALL SDL_sinf(float x);
624extern DECLSPEC double SDLCALL SDL_sqrt(double x);
625extern DECLSPEC float SDLCALL SDL_sqrtf(float x);
626extern DECLSPEC double SDLCALL SDL_tan(double x);
627extern DECLSPEC float SDLCALL SDL_tanf(float x);
628
629/* The SDL implementation of iconv() returns these error codes */
630#define SDL_ICONV_ERROR (size_t)-1
631#define SDL_ICONV_E2BIG (size_t)-2
632#define SDL_ICONV_EILSEQ (size_t)-3
633#define SDL_ICONV_EINVAL (size_t)-4
634
635/* SDL_iconv_* are now always real symbols/types, not macros or inlined. */
636typedef struct _SDL_iconv_t *SDL_iconv_t;
637extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode,
638 const char *fromcode);
639extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd);
640extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf,
641 size_t * inbytesleft, char **outbuf,
642 size_t * outbytesleft);
643
644/**
645 * This function converts a string between encodings in one pass, returning a
646 * string that must be freed with SDL_free() or NULL on error.
647 *
648 * \since This function is available since SDL 2.0.0.
649 */
650extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode,
651 const char *fromcode,
652 const char *inbuf,
653 size_t inbytesleft);
654#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1)
655#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
656#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
657#define SDL_iconv_wchar_utf8(S) SDL_iconv_string("UTF-8", "WCHAR_T", (char *)S, (SDL_wcslen(S)+1)*sizeof(wchar_t))
658
659/* force builds using Clang's static analysis tools to use literal C runtime
660 here, since there are possibly tests that are ineffective otherwise. */
661#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
662
663/* The analyzer knows about strlcpy even when the system doesn't provide it */
664#ifndef HAVE_STRLCPY
665size_t strlcpy(char* dst, const char* src, size_t size);
666#endif
667
668/* The analyzer knows about strlcat even when the system doesn't provide it */
669#ifndef HAVE_STRLCAT
670size_t strlcat(char* dst, const char* src, size_t size);
671#endif
672
673#define SDL_malloc malloc
674#define SDL_calloc calloc
675#define SDL_realloc realloc
676#define SDL_free free
677#define SDL_memset memset
678#define SDL_memcpy memcpy
679#define SDL_memmove memmove
680#define SDL_memcmp memcmp
681#define SDL_strlcpy strlcpy
682#define SDL_strlcat strlcat
683#define SDL_strlen strlen
684#define SDL_wcslen wcslen
685#define SDL_wcslcpy wcslcpy
686#define SDL_wcslcat wcslcat
687#define SDL_strdup strdup
688#define SDL_wcsdup wcsdup
689#define SDL_strchr strchr
690#define SDL_strrchr strrchr
691#define SDL_strstr strstr
692#define SDL_wcsstr wcsstr
693#define SDL_strtokr strtok_r
694#define SDL_strcmp strcmp
695#define SDL_wcscmp wcscmp
696#define SDL_strncmp strncmp
697#define SDL_wcsncmp wcsncmp
698#define SDL_strcasecmp strcasecmp
699#define SDL_strncasecmp strncasecmp
700#define SDL_sscanf sscanf
701#define SDL_vsscanf vsscanf
702#define SDL_snprintf snprintf
703#define SDL_vsnprintf vsnprintf
704#endif
705
706SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords)
707{
708 return SDL_memcpy(dst, src, dwords * 4);
709}
710
711/* Ends C function definitions when using C++ */
712#ifdef __cplusplus
713}
714#endif
715#include "close_code.h"
716
717#endif /* SDL_stdinc_h_ */
718
719/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_surface.h b/vendor/SDL2/include/SDL_surface.h new file mode 100644 index 0000000..4412376 --- /dev/null +++ b/vendor/SDL2/include/SDL_surface.h
@@ -0,0 +1,995 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_surface.h
24 *
25 * Header file for ::SDL_Surface definition and management functions.
26 */
27
28#ifndef SDL_surface_h_
29#define SDL_surface_h_
30
31#include "SDL_stdinc.h"
32#include "SDL_pixels.h"
33#include "SDL_rect.h"
34#include "SDL_blendmode.h"
35#include "SDL_rwops.h"
36
37#include "begin_code.h"
38/* Set up for C function definitions, even when using C++ */
39#ifdef __cplusplus
40extern "C" {
41#endif
42
43/**
44 * \name Surface flags
45 *
46 * These are the currently supported flags for the ::SDL_Surface.
47 *
48 * \internal
49 * Used internally (read-only).
50 */
51/* @{ */
52#define SDL_SWSURFACE 0 /**< Just here for compatibility */
53#define SDL_PREALLOC 0x00000001 /**< Surface uses preallocated memory */
54#define SDL_RLEACCEL 0x00000002 /**< Surface is RLE encoded */
55#define SDL_DONTFREE 0x00000004 /**< Surface is referenced internally */
56#define SDL_SIMD_ALIGNED 0x00000008 /**< Surface uses aligned memory */
57/* @} *//* Surface flags */
58
59/**
60 * Evaluates to true if the surface needs to be locked before access.
61 */
62#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0)
63
64/**
65 * \brief A collection of pixels used in software blitting.
66 *
67 * \note This structure should be treated as read-only, except for \c pixels,
68 * which, if not NULL, contains the raw pixel data for the surface.
69 */
70typedef struct SDL_Surface
71{
72 Uint32 flags; /**< Read-only */
73 SDL_PixelFormat *format; /**< Read-only */
74 int w, h; /**< Read-only */
75 int pitch; /**< Read-only */
76 void *pixels; /**< Read-write */
77
78 /** Application data associated with the surface */
79 void *userdata; /**< Read-write */
80
81 /** information needed for surfaces requiring locks */
82 int locked; /**< Read-only */
83
84 /** list of BlitMap that hold a reference to this surface */
85 void *list_blitmap; /**< Private */
86
87 /** clipping information */
88 SDL_Rect clip_rect; /**< Read-only */
89
90 /** info for fast blit mapping to other surfaces */
91 struct SDL_BlitMap *map; /**< Private */
92
93 /** Reference count -- used when freeing surface */
94 int refcount; /**< Read-mostly */
95} SDL_Surface;
96
97/**
98 * \brief The type of function used for surface blitting functions.
99 */
100typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect,
101 struct SDL_Surface * dst, SDL_Rect * dstrect);
102
103/**
104 * \brief The formula used for converting between YUV and RGB
105 */
106typedef enum
107{
108 SDL_YUV_CONVERSION_JPEG, /**< Full range JPEG */
109 SDL_YUV_CONVERSION_BT601, /**< BT.601 (the default) */
110 SDL_YUV_CONVERSION_BT709, /**< BT.709 */
111 SDL_YUV_CONVERSION_AUTOMATIC /**< BT.601 for SD content, BT.709 for HD content */
112} SDL_YUV_CONVERSION_MODE;
113
114/**
115 * Allocate a new RGB surface.
116 *
117 * If `depth` is 4 or 8 bits, an empty palette is allocated for the surface.
118 * If `depth` is greater than 8 bits, the pixel format is set using the
119 * [RGBA]mask parameters.
120 *
121 * The [RGBA]mask parameters are the bitmasks used to extract that color from
122 * a pixel. For instance, `Rmask` being 0xFF000000 means the red data is
123 * stored in the most significant byte. Using zeros for the RGB masks sets a
124 * default value, based on the depth. For example:
125 *
126 * ```c++
127 * SDL_CreateRGBSurface(0,w,h,32,0,0,0,0);
128 * ```
129 *
130 * However, using zero for the Amask results in an Amask of 0.
131 *
132 * By default surfaces with an alpha mask are set up for blending as with:
133 *
134 * ```c++
135 * SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND)
136 * ```
137 *
138 * You can change this by calling SDL_SetSurfaceBlendMode() and selecting a
139 * different `blendMode`.
140 *
141 * \param flags the flags are unused and should be set to 0
142 * \param width the width of the surface
143 * \param height the height of the surface
144 * \param depth the depth of the surface in bits
145 * \param Rmask the red mask for the pixels
146 * \param Gmask the green mask for the pixels
147 * \param Bmask the blue mask for the pixels
148 * \param Amask the alpha mask for the pixels
149 * \returns the new SDL_Surface structure that is created or NULL if it fails;
150 * call SDL_GetError() for more information.
151 *
152 * \since This function is available since SDL 2.0.0.
153 *
154 * \sa SDL_CreateRGBSurfaceFrom
155 * \sa SDL_CreateRGBSurfaceWithFormat
156 * \sa SDL_FreeSurface
157 */
158extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface
159 (Uint32 flags, int width, int height, int depth,
160 Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);
161
162
163/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */
164
165/**
166 * Allocate a new RGB surface with a specific pixel format.
167 *
168 * This function operates mostly like SDL_CreateRGBSurface(), except instead
169 * of providing pixel color masks, you provide it with a predefined format
170 * from SDL_PixelFormatEnum.
171 *
172 * \param flags the flags are unused and should be set to 0
173 * \param width the width of the surface
174 * \param height the height of the surface
175 * \param depth the depth of the surface in bits
176 * \param format the SDL_PixelFormatEnum for the new surface's pixel format.
177 * \returns the new SDL_Surface structure that is created or NULL if it fails;
178 * call SDL_GetError() for more information.
179 *
180 * \since This function is available since SDL 2.0.5.
181 *
182 * \sa SDL_CreateRGBSurface
183 * \sa SDL_CreateRGBSurfaceFrom
184 * \sa SDL_FreeSurface
185 */
186extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat
187 (Uint32 flags, int width, int height, int depth, Uint32 format);
188
189/**
190 * Allocate a new RGB surface with existing pixel data.
191 *
192 * This function operates mostly like SDL_CreateRGBSurface(), except it does
193 * not allocate memory for the pixel data, instead the caller provides an
194 * existing buffer of data for the surface to use.
195 *
196 * No copy is made of the pixel data. Pixel data is not managed automatically;
197 * you must free the surface before you free the pixel data.
198 *
199 * \param pixels a pointer to existing pixel data
200 * \param width the width of the surface
201 * \param height the height of the surface
202 * \param depth the depth of the surface in bits
203 * \param pitch the pitch of the surface in bytes
204 * \param Rmask the red mask for the pixels
205 * \param Gmask the green mask for the pixels
206 * \param Bmask the blue mask for the pixels
207 * \param Amask the alpha mask for the pixels
208 * \returns the new SDL_Surface structure that is created or NULL if it fails;
209 * call SDL_GetError() for more information.
210 *
211 * \since This function is available since SDL 2.0.0.
212 *
213 * \sa SDL_CreateRGBSurface
214 * \sa SDL_CreateRGBSurfaceWithFormat
215 * \sa SDL_FreeSurface
216 */
217extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels,
218 int width,
219 int height,
220 int depth,
221 int pitch,
222 Uint32 Rmask,
223 Uint32 Gmask,
224 Uint32 Bmask,
225 Uint32 Amask);
226
227/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */
228
229/**
230 * Allocate a new RGB surface with with a specific pixel format and existing
231 * pixel data.
232 *
233 * This function operates mostly like SDL_CreateRGBSurfaceFrom(), except
234 * instead of providing pixel color masks, you provide it with a predefined
235 * format from SDL_PixelFormatEnum.
236 *
237 * No copy is made of the pixel data. Pixel data is not managed automatically;
238 * you must free the surface before you free the pixel data.
239 *
240 * \param pixels a pointer to existing pixel data
241 * \param width the width of the surface
242 * \param height the height of the surface
243 * \param depth the depth of the surface in bits
244 * \param pitch the pitch of the surface in bytes
245 * \param format the SDL_PixelFormatEnum for the new surface's pixel format.
246 * \returns the new SDL_Surface structure that is created or NULL if it fails;
247 * call SDL_GetError() for more information.
248 *
249 * \since This function is available since SDL 2.0.5.
250 *
251 * \sa SDL_CreateRGBSurfaceFrom
252 * \sa SDL_CreateRGBSurfaceWithFormat
253 * \sa SDL_FreeSurface
254 */
255extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom
256 (void *pixels, int width, int height, int depth, int pitch, Uint32 format);
257
258/**
259 * Free an RGB surface.
260 *
261 * It is safe to pass NULL to this function.
262 *
263 * \param surface the SDL_Surface to free.
264 *
265 * \since This function is available since SDL 2.0.0.
266 *
267 * \sa SDL_CreateRGBSurface
268 * \sa SDL_CreateRGBSurfaceFrom
269 * \sa SDL_LoadBMP
270 * \sa SDL_LoadBMP_RW
271 */
272extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface);
273
274/**
275 * Set the palette used by a surface.
276 *
277 * A single palette can be shared with many surfaces.
278 *
279 * \param surface the SDL_Surface structure to update
280 * \param palette the SDL_Palette structure to use
281 * \returns 0 on success or a negative error code on failure; call
282 * SDL_GetError() for more information.
283 *
284 * \since This function is available since SDL 2.0.0.
285 */
286extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface,
287 SDL_Palette * palette);
288
289/**
290 * Set up a surface for directly accessing the pixels.
291 *
292 * Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write to
293 * and read from `surface->pixels`, using the pixel format stored in
294 * `surface->format`. Once you are done accessing the surface, you should use
295 * SDL_UnlockSurface() to release it.
296 *
297 * Not all surfaces require locking. If `SDL_MUSTLOCK(surface)` evaluates to
298 * 0, then you can read and write to the surface at any time, and the pixel
299 * format of the surface will not change.
300 *
301 * \param surface the SDL_Surface structure to be locked
302 * \returns 0 on success or a negative error code on failure; call
303 * SDL_GetError() for more information.
304 *
305 * \since This function is available since SDL 2.0.0.
306 *
307 * \sa SDL_MUSTLOCK
308 * \sa SDL_UnlockSurface
309 */
310extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface);
311
312/**
313 * Release a surface after directly accessing the pixels.
314 *
315 * \param surface the SDL_Surface structure to be unlocked
316 *
317 * \since This function is available since SDL 2.0.0.
318 *
319 * \sa SDL_LockSurface
320 */
321extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface);
322
323/**
324 * Load a BMP image from a seekable SDL data stream.
325 *
326 * The new surface should be freed with SDL_FreeSurface(). Not doing so will
327 * result in a memory leak.
328 *
329 * src is an open SDL_RWops buffer, typically loaded with SDL_RWFromFile.
330 * Alternitavely, you might also use the macro SDL_LoadBMP to load a bitmap
331 * from a file, convert it to an SDL_Surface and then close the file.
332 *
333 * \param src the data stream for the surface
334 * \param freesrc non-zero to close the stream after being read
335 * \returns a pointer to a new SDL_Surface structure or NULL if there was an
336 * error; call SDL_GetError() for more information.
337 *
338 * \since This function is available since SDL 2.0.0.
339 *
340 * \sa SDL_FreeSurface
341 * \sa SDL_RWFromFile
342 * \sa SDL_LoadBMP
343 * \sa SDL_SaveBMP_RW
344 */
345extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src,
346 int freesrc);
347
348/**
349 * Load a surface from a file.
350 *
351 * Convenience macro.
352 */
353#define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1)
354
355/**
356 * Save a surface to a seekable SDL data stream in BMP format.
357 *
358 * Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the
359 * BMP directly. Other RGB formats with 8-bit or higher get converted to a
360 * 24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit
361 * surface before they are saved. YUV and paletted 1-bit and 4-bit formats are
362 * not supported.
363 *
364 * \param surface the SDL_Surface structure containing the image to be saved
365 * \param dst a data stream to save to
366 * \param freedst non-zero to close the stream after being written
367 * \returns 0 on success or a negative error code on failure; call
368 * SDL_GetError() for more information.
369 *
370 * \since This function is available since SDL 2.0.0.
371 *
372 * \sa SDL_LoadBMP_RW
373 * \sa SDL_SaveBMP
374 */
375extern DECLSPEC int SDLCALL SDL_SaveBMP_RW
376 (SDL_Surface * surface, SDL_RWops * dst, int freedst);
377
378/**
379 * Save a surface to a file.
380 *
381 * Convenience macro.
382 */
383#define SDL_SaveBMP(surface, file) \
384 SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1)
385
386/**
387 * Set the RLE acceleration hint for a surface.
388 *
389 * If RLE is enabled, color key and alpha blending blits are much faster, but
390 * the surface must be locked before directly accessing the pixels.
391 *
392 * \param surface the SDL_Surface structure to optimize
393 * \param flag 0 to disable, non-zero to enable RLE acceleration
394 * \returns 0 on success or a negative error code on failure; call
395 * SDL_GetError() for more information.
396 *
397 * \since This function is available since SDL 2.0.0.
398 *
399 * \sa SDL_BlitSurface
400 * \sa SDL_LockSurface
401 * \sa SDL_UnlockSurface
402 */
403extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface,
404 int flag);
405
406/**
407 * Returns whether the surface is RLE enabled
408 *
409 * It is safe to pass a NULL `surface` here; it will return SDL_FALSE.
410 *
411 * \param surface the SDL_Surface structure to query
412 * \returns SDL_TRUE if the surface is RLE enabled, SDL_FALSE otherwise.
413 *
414 * \since This function is available since SDL 2.0.14.
415 *
416 * \sa SDL_SetSurfaceRLE
417 */
418extern DECLSPEC SDL_bool SDLCALL SDL_HasSurfaceRLE(SDL_Surface * surface);
419
420/**
421 * Set the color key (transparent pixel) in a surface.
422 *
423 * The color key defines a pixel value that will be treated as transparent in
424 * a blit. For example, one can use this to specify that cyan pixels should be
425 * considered transparent, and therefore not rendered.
426 *
427 * It is a pixel of the format used by the surface, as generated by
428 * SDL_MapRGB().
429 *
430 * RLE acceleration can substantially speed up blitting of images with large
431 * horizontal runs of transparent pixels. See SDL_SetSurfaceRLE() for details.
432 *
433 * \param surface the SDL_Surface structure to update
434 * \param flag SDL_TRUE to enable color key, SDL_FALSE to disable color key
435 * \param key the transparent pixel
436 * \returns 0 on success or a negative error code on failure; call
437 * SDL_GetError() for more information.
438 *
439 * \since This function is available since SDL 2.0.0.
440 *
441 * \sa SDL_BlitSurface
442 * \sa SDL_GetColorKey
443 */
444extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface,
445 int flag, Uint32 key);
446
447/**
448 * Returns whether the surface has a color key
449 *
450 * It is safe to pass a NULL `surface` here; it will return SDL_FALSE.
451 *
452 * \param surface the SDL_Surface structure to query
453 * \return SDL_TRUE if the surface has a color key, SDL_FALSE otherwise.
454 *
455 * \since This function is available since SDL 2.0.9.
456 *
457 * \sa SDL_SetColorKey
458 * \sa SDL_GetColorKey
459 */
460extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface);
461
462/**
463 * Get the color key (transparent pixel) for a surface.
464 *
465 * The color key is a pixel of the format used by the surface, as generated by
466 * SDL_MapRGB().
467 *
468 * If the surface doesn't have color key enabled this function returns -1.
469 *
470 * \param surface the SDL_Surface structure to query
471 * \param key a pointer filled in with the transparent pixel
472 * \returns 0 on success or a negative error code on failure; call
473 * SDL_GetError() for more information.
474 *
475 * \since This function is available since SDL 2.0.0.
476 *
477 * \sa SDL_BlitSurface
478 * \sa SDL_SetColorKey
479 */
480extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface,
481 Uint32 * key);
482
483/**
484 * Set an additional color value multiplied into blit operations.
485 *
486 * When this surface is blitted, during the blit operation each source color
487 * channel is modulated by the appropriate color value according to the
488 * following formula:
489 *
490 * `srcC = srcC * (color / 255)`
491 *
492 * \param surface the SDL_Surface structure to update
493 * \param r the red color value multiplied into blit operations
494 * \param g the green color value multiplied into blit operations
495 * \param b the blue color value multiplied into blit operations
496 * \returns 0 on success or a negative error code on failure; call
497 * SDL_GetError() for more information.
498 *
499 * \since This function is available since SDL 2.0.0.
500 *
501 * \sa SDL_GetSurfaceColorMod
502 * \sa SDL_SetSurfaceAlphaMod
503 */
504extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface,
505 Uint8 r, Uint8 g, Uint8 b);
506
507
508/**
509 * Get the additional color value multiplied into blit operations.
510 *
511 * \param surface the SDL_Surface structure to query
512 * \param r a pointer filled in with the current red color value
513 * \param g a pointer filled in with the current green color value
514 * \param b a pointer filled in with the current blue color value
515 * \returns 0 on success or a negative error code on failure; call
516 * SDL_GetError() for more information.
517 *
518 * \since This function is available since SDL 2.0.0.
519 *
520 * \sa SDL_GetSurfaceAlphaMod
521 * \sa SDL_SetSurfaceColorMod
522 */
523extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface,
524 Uint8 * r, Uint8 * g,
525 Uint8 * b);
526
527/**
528 * Set an additional alpha value used in blit operations.
529 *
530 * When this surface is blitted, during the blit operation the source alpha
531 * value is modulated by this alpha value according to the following formula:
532 *
533 * `srcA = srcA * (alpha / 255)`
534 *
535 * \param surface the SDL_Surface structure to update
536 * \param alpha the alpha value multiplied into blit operations
537 * \returns 0 on success or a negative error code on failure; call
538 * SDL_GetError() for more information.
539 *
540 * \since This function is available since SDL 2.0.0.
541 *
542 * \sa SDL_GetSurfaceAlphaMod
543 * \sa SDL_SetSurfaceColorMod
544 */
545extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface,
546 Uint8 alpha);
547
548/**
549 * Get the additional alpha value used in blit operations.
550 *
551 * \param surface the SDL_Surface structure to query
552 * \param alpha a pointer filled in with the current alpha value
553 * \returns 0 on success or a negative error code on failure; call
554 * SDL_GetError() for more information.
555 *
556 * \since This function is available since SDL 2.0.0.
557 *
558 * \sa SDL_GetSurfaceColorMod
559 * \sa SDL_SetSurfaceAlphaMod
560 */
561extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface,
562 Uint8 * alpha);
563
564/**
565 * Set the blend mode used for blit operations.
566 *
567 * To copy a surface to another surface (or texture) without blending with the
568 * existing data, the blendmode of the SOURCE surface should be set to
569 * `SDL_BLENDMODE_NONE`.
570 *
571 * \param surface the SDL_Surface structure to update
572 * \param blendMode the SDL_BlendMode to use for blit blending
573 * \returns 0 on success or a negative error code on failure; call
574 * SDL_GetError() for more information.
575 *
576 * \since This function is available since SDL 2.0.0.
577 *
578 * \sa SDL_GetSurfaceBlendMode
579 */
580extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface,
581 SDL_BlendMode blendMode);
582
583/**
584 * Get the blend mode used for blit operations.
585 *
586 * \param surface the SDL_Surface structure to query
587 * \param blendMode a pointer filled in with the current SDL_BlendMode
588 * \returns 0 on success or a negative error code on failure; call
589 * SDL_GetError() for more information.
590 *
591 * \since This function is available since SDL 2.0.0.
592 *
593 * \sa SDL_SetSurfaceBlendMode
594 */
595extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface,
596 SDL_BlendMode *blendMode);
597
598/**
599 * Set the clipping rectangle for a surface.
600 *
601 * When `surface` is the destination of a blit, only the area within the clip
602 * rectangle is drawn into.
603 *
604 * Note that blits are automatically clipped to the edges of the source and
605 * destination surfaces.
606 *
607 * \param surface the SDL_Surface structure to be clipped
608 * \param rect the SDL_Rect structure representing the clipping rectangle, or
609 * NULL to disable clipping
610 * \returns SDL_TRUE if the rectangle intersects the surface, otherwise
611 * SDL_FALSE and blits will be completely clipped.
612 *
613 * \since This function is available since SDL 2.0.0.
614 *
615 * \sa SDL_BlitSurface
616 * \sa SDL_GetClipRect
617 */
618extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface,
619 const SDL_Rect * rect);
620
621/**
622 * Get the clipping rectangle for a surface.
623 *
624 * When `surface` is the destination of a blit, only the area within the clip
625 * rectangle is drawn into.
626 *
627 * \param surface the SDL_Surface structure representing the surface to be
628 * clipped
629 * \param rect an SDL_Rect structure filled in with the clipping rectangle for
630 * the surface
631 *
632 * \since This function is available since SDL 2.0.0.
633 *
634 * \sa SDL_BlitSurface
635 * \sa SDL_SetClipRect
636 */
637extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface,
638 SDL_Rect * rect);
639
640/*
641 * Creates a new surface identical to the existing surface.
642 *
643 * The returned surface should be freed with SDL_FreeSurface().
644 *
645 * \param surface the surface to duplicate.
646 * \returns a copy of the surface, or NULL on failure; call SDL_GetError() for
647 * more information.
648 */
649extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface);
650
651/**
652 * Copy an existing surface to a new surface of the specified format.
653 *
654 * This function is used to optimize images for faster *repeat* blitting. This
655 * is accomplished by converting the original and storing the result as a new
656 * surface. The new, optimized surface can then be used as the source for
657 * future blits, making them faster.
658 *
659 * \param src the existing SDL_Surface structure to convert
660 * \param fmt the SDL_PixelFormat structure that the new surface is optimized
661 * for
662 * \param flags the flags are unused and should be set to 0; this is a
663 * leftover from SDL 1.2's API
664 * \returns the new SDL_Surface structure that is created or NULL if it fails;
665 * call SDL_GetError() for more information.
666 *
667 * \since This function is available since SDL 2.0.0.
668 *
669 * \sa SDL_AllocFormat
670 * \sa SDL_ConvertSurfaceFormat
671 * \sa SDL_CreateRGBSurface
672 */
673extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface
674 (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags);
675
676/**
677 * Copy an existing surface to a new surface of the specified format enum.
678 *
679 * This function operates just like SDL_ConvertSurface(), but accepts an
680 * SDL_PixelFormatEnum value instead of an SDL_PixelFormat structure. As such,
681 * it might be easier to call but it doesn't have access to palette
682 * information for the destination surface, in case that would be important.
683 *
684 * \param src the existing SDL_Surface structure to convert
685 * \param pixel_format the SDL_PixelFormatEnum that the new surface is
686 * optimized for
687 * \param flags the flags are unused and should be set to 0; this is a
688 * leftover from SDL 1.2's API
689 * \returns the new SDL_Surface structure that is created or NULL if it fails;
690 * call SDL_GetError() for more information.
691 *
692 * \since This function is available since SDL 2.0.0.
693 *
694 * \sa SDL_AllocFormat
695 * \sa SDL_ConvertSurface
696 * \sa SDL_CreateRGBSurface
697 */
698extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat
699 (SDL_Surface * src, Uint32 pixel_format, Uint32 flags);
700
701/**
702 * Copy a block of pixels of one format to another format.
703 *
704 * \param width the width of the block to copy, in pixels
705 * \param height the height of the block to copy, in pixels
706 * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format
707 * \param src a pointer to the source pixels
708 * \param src_pitch the pitch of the source pixels, in bytes
709 * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format
710 * \param dst a pointer to be filled in with new pixel data
711 * \param dst_pitch the pitch of the destination pixels, in bytes
712 * \returns 0 on success or a negative error code on failure; call
713 * SDL_GetError() for more information.
714 *
715 * \since This function is available since SDL 2.0.0.
716 */
717extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height,
718 Uint32 src_format,
719 const void * src, int src_pitch,
720 Uint32 dst_format,
721 void * dst, int dst_pitch);
722
723/**
724 * Premultiply the alpha on a block of pixels.
725 *
726 * This is safe to use with src == dst, but not for other overlapping areas.
727 *
728 * This function is currently only implemented for SDL_PIXELFORMAT_ARGB8888.
729 *
730 * \param width the width of the block to convert, in pixels
731 * \param height the height of the block to convert, in pixels
732 * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format
733 * \param src a pointer to the source pixels
734 * \param src_pitch the pitch of the source pixels, in bytes
735 * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format
736 * \param dst a pointer to be filled in with premultiplied pixel data
737 * \param dst_pitch the pitch of the destination pixels, in bytes
738 * \returns 0 on success or a negative error code on failure; call
739 * SDL_GetError() for more information.
740 *
741 * \since This function is available since SDL 2.0.18.
742 */
743extern DECLSPEC int SDLCALL SDL_PremultiplyAlpha(int width, int height,
744 Uint32 src_format,
745 const void * src, int src_pitch,
746 Uint32 dst_format,
747 void * dst, int dst_pitch);
748
749/**
750 * Perform a fast fill of a rectangle with a specific color.
751 *
752 * `color` should be a pixel of the format used by the surface, and can be
753 * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an
754 * alpha component then the destination is simply filled with that alpha
755 * information, no blending takes place.
756 *
757 * If there is a clip rectangle set on the destination (set via
758 * SDL_SetClipRect()), then this function will fill based on the intersection
759 * of the clip rectangle and `rect`.
760 *
761 * \param dst the SDL_Surface structure that is the drawing target
762 * \param rect the SDL_Rect structure representing the rectangle to fill, or
763 * NULL to fill the entire surface
764 * \param color the color to fill with
765 * \returns 0 on success or a negative error code on failure; call
766 * SDL_GetError() for more information.
767 *
768 * \since This function is available since SDL 2.0.0.
769 *
770 * \sa SDL_FillRects
771 */
772extern DECLSPEC int SDLCALL SDL_FillRect
773 (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color);
774
775/**
776 * Perform a fast fill of a set of rectangles with a specific color.
777 *
778 * `color` should be a pixel of the format used by the surface, and can be
779 * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an
780 * alpha component then the destination is simply filled with that alpha
781 * information, no blending takes place.
782 *
783 * If there is a clip rectangle set on the destination (set via
784 * SDL_SetClipRect()), then this function will fill based on the intersection
785 * of the clip rectangle and `rect`.
786 *
787 * \param dst the SDL_Surface structure that is the drawing target
788 * \param rects an array of SDL_Rects representing the rectangles to fill.
789 * \param count the number of rectangles in the array
790 * \param color the color to fill with
791 * \returns 0 on success or a negative error code on failure; call
792 * SDL_GetError() for more information.
793 *
794 * \since This function is available since SDL 2.0.0.
795 *
796 * \sa SDL_FillRect
797 */
798extern DECLSPEC int SDLCALL SDL_FillRects
799 (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color);
800
801/* !!! FIXME: merge this documentation with the wiki */
802/**
803 * Performs a fast blit from the source surface to the destination surface.
804 *
805 * This assumes that the source and destination rectangles are
806 * the same size. If either \c srcrect or \c dstrect are NULL, the entire
807 * surface (\c src or \c dst) is copied. The final blit rectangles are saved
808 * in \c srcrect and \c dstrect after all clipping is performed.
809 *
810 * \returns 0 if the blit is successful, otherwise it returns -1.
811 *
812 * The blit function should not be called on a locked surface.
813 *
814 * The blit semantics for surfaces with and without blending and colorkey
815 * are defined as follows:
816 * \verbatim
817 RGBA->RGB:
818 Source surface blend mode set to SDL_BLENDMODE_BLEND:
819 alpha-blend (using the source alpha-channel and per-surface alpha)
820 SDL_SRCCOLORKEY ignored.
821 Source surface blend mode set to SDL_BLENDMODE_NONE:
822 copy RGB.
823 if SDL_SRCCOLORKEY set, only copy the pixels matching the
824 RGB values of the source color key, ignoring alpha in the
825 comparison.
826
827 RGB->RGBA:
828 Source surface blend mode set to SDL_BLENDMODE_BLEND:
829 alpha-blend (using the source per-surface alpha)
830 Source surface blend mode set to SDL_BLENDMODE_NONE:
831 copy RGB, set destination alpha to source per-surface alpha value.
832 both:
833 if SDL_SRCCOLORKEY set, only copy the pixels matching the
834 source color key.
835
836 RGBA->RGBA:
837 Source surface blend mode set to SDL_BLENDMODE_BLEND:
838 alpha-blend (using the source alpha-channel and per-surface alpha)
839 SDL_SRCCOLORKEY ignored.
840 Source surface blend mode set to SDL_BLENDMODE_NONE:
841 copy all of RGBA to the destination.
842 if SDL_SRCCOLORKEY set, only copy the pixels matching the
843 RGB values of the source color key, ignoring alpha in the
844 comparison.
845
846 RGB->RGB:
847 Source surface blend mode set to SDL_BLENDMODE_BLEND:
848 alpha-blend (using the source per-surface alpha)
849 Source surface blend mode set to SDL_BLENDMODE_NONE:
850 copy RGB.
851 both:
852 if SDL_SRCCOLORKEY set, only copy the pixels matching the
853 source color key.
854 \endverbatim
855 *
856 * You should call SDL_BlitSurface() unless you know exactly how SDL
857 * blitting works internally and how to use the other blit functions.
858 */
859#define SDL_BlitSurface SDL_UpperBlit
860
861/**
862 * Perform a fast blit from the source surface to the destination surface.
863 *
864 * SDL_UpperBlit() has been replaced by SDL_BlitSurface(), which is merely a
865 * macro for this function with a less confusing name.
866 *
867 * \since This function is available since SDL 2.0.0.
868 *
869 * \sa SDL_BlitSurface
870 */
871extern DECLSPEC int SDLCALL SDL_UpperBlit
872 (SDL_Surface * src, const SDL_Rect * srcrect,
873 SDL_Surface * dst, SDL_Rect * dstrect);
874
875/**
876 * Perform low-level surface blitting only.
877 *
878 * This is a semi-private blit function and it performs low-level surface
879 * blitting, assuming the input rectangles have already been clipped.
880 *
881 * Unless you know what you're doing, you should be using SDL_BlitSurface()
882 * instead.
883 *
884 * \param src the SDL_Surface structure to be copied from
885 * \param srcrect the SDL_Rect structure representing the rectangle to be
886 * copied, or NULL to copy the entire surface
887 * \param dst the SDL_Surface structure that is the blit target
888 * \param dstrect the SDL_Rect structure representing the rectangle that is
889 * copied into
890 * \returns 0 on success or a negative error code on failure; call
891 * SDL_GetError() for more information.
892 *
893 * \since This function is available since SDL 2.0.0.
894 *
895 * \sa SDL_BlitSurface
896 */
897extern DECLSPEC int SDLCALL SDL_LowerBlit
898 (SDL_Surface * src, SDL_Rect * srcrect,
899 SDL_Surface * dst, SDL_Rect * dstrect);
900
901
902/**
903 * Perform a fast, low quality, stretch blit between two surfaces of the same
904 * format.
905 *
906 * Please use SDL_BlitScaled() instead.
907 *
908 * \since This function is available since SDL 2.0.0.
909 */
910extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src,
911 const SDL_Rect * srcrect,
912 SDL_Surface * dst,
913 const SDL_Rect * dstrect);
914
915/**
916 * Perform bilinear scaling between two surfaces of the same format, 32BPP.
917 *
918 * \since This function is available since SDL 2.0.16.
919 */
920extern DECLSPEC int SDLCALL SDL_SoftStretchLinear(SDL_Surface * src,
921 const SDL_Rect * srcrect,
922 SDL_Surface * dst,
923 const SDL_Rect * dstrect);
924
925
926#define SDL_BlitScaled SDL_UpperBlitScaled
927
928/**
929 * Perform a scaled surface copy to a destination surface.
930 *
931 * SDL_UpperBlitScaled() has been replaced by SDL_BlitScaled(), which is
932 * merely a macro for this function with a less confusing name.
933 *
934 * \since This function is available since SDL 2.0.0.
935 *
936 * \sa SDL_BlitScaled
937 */
938extern DECLSPEC int SDLCALL SDL_UpperBlitScaled
939 (SDL_Surface * src, const SDL_Rect * srcrect,
940 SDL_Surface * dst, SDL_Rect * dstrect);
941
942/**
943 * Perform low-level surface scaled blitting only.
944 *
945 * This is a semi-private function and it performs low-level surface blitting,
946 * assuming the input rectangles have already been clipped.
947 *
948 * \param src the SDL_Surface structure to be copied from
949 * \param srcrect the SDL_Rect structure representing the rectangle to be
950 * copied
951 * \param dst the SDL_Surface structure that is the blit target
952 * \param dstrect the SDL_Rect structure representing the rectangle that is
953 * copied into
954 * \returns 0 on success or a negative error code on failure; call
955 * SDL_GetError() for more information.
956 *
957 * \since This function is available since SDL 2.0.0.
958 *
959 * \sa SDL_BlitScaled
960 */
961extern DECLSPEC int SDLCALL SDL_LowerBlitScaled
962 (SDL_Surface * src, SDL_Rect * srcrect,
963 SDL_Surface * dst, SDL_Rect * dstrect);
964
965/**
966 * Set the YUV conversion mode
967 *
968 * \since This function is available since SDL 2.0.8.
969 */
970extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode);
971
972/**
973 * Get the YUV conversion mode
974 *
975 * \since This function is available since SDL 2.0.8.
976 */
977extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void);
978
979/**
980 * Get the YUV conversion mode, returning the correct mode for the resolution
981 * when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC
982 *
983 * \since This function is available since SDL 2.0.8.
984 */
985extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height);
986
987/* Ends C function definitions when using C++ */
988#ifdef __cplusplus
989}
990#endif
991#include "close_code.h"
992
993#endif /* SDL_surface_h_ */
994
995/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_system.h b/vendor/SDL2/include/SDL_system.h new file mode 100644 index 0000000..e2fa7b5 --- /dev/null +++ b/vendor/SDL2/include/SDL_system.h
@@ -0,0 +1,563 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_system.h
24 *
25 * Include file for platform specific SDL API functions
26 */
27
28#ifndef SDL_system_h_
29#define SDL_system_h_
30
31#include "SDL_stdinc.h"
32#include "SDL_keyboard.h"
33#include "SDL_render.h"
34#include "SDL_video.h"
35
36#include "begin_code.h"
37/* Set up for C function definitions, even when using C++ */
38#ifdef __cplusplus
39extern "C" {
40#endif
41
42
43/* Platform specific functions for Windows */
44#ifdef __WIN32__
45
46typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam);
47
48/**
49 * Set a callback for every Windows message, run before TranslateMessage().
50 *
51 * \param callback The SDL_WindowsMessageHook function to call.
52 * \param userdata a pointer to pass to every iteration of `callback`
53 *
54 * \since This function is available since SDL 2.0.4.
55 */
56extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata);
57
58/**
59 * Get the D3D9 adapter index that matches the specified display index.
60 *
61 * The returned adapter index can be passed to `IDirect3D9::CreateDevice` and
62 * controls on which monitor a full screen application will appear.
63 *
64 * \param displayIndex the display index for which to get the D3D9 adapter
65 * index
66 * \returns the D3D9 adapter index on success or a negative error code on
67 * failure; call SDL_GetError() for more information.
68 *
69 * \since This function is available since SDL 2.0.1.
70 */
71extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex );
72
73typedef struct IDirect3DDevice9 IDirect3DDevice9;
74
75/**
76 * Get the D3D9 device associated with a renderer.
77 *
78 * Once you are done using the device, you should release it to avoid a
79 * resource leak.
80 *
81 * \param renderer the renderer from which to get the associated D3D device
82 * \returns the D3D9 device associated with given renderer or NULL if it is
83 * not a D3D9 renderer; call SDL_GetError() for more information.
84 *
85 * \since This function is available since SDL 2.0.1.
86 */
87extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer);
88
89typedef struct ID3D11Device ID3D11Device;
90
91/**
92 * Get the D3D11 device associated with a renderer.
93 *
94 * Once you are done using the device, you should release it to avoid a
95 * resource leak.
96 *
97 * \param renderer the renderer from which to get the associated D3D11 device
98 * \returns the D3D11 device associated with given renderer or NULL if it is
99 * not a D3D11 renderer; call SDL_GetError() for more information.
100 *
101 * \since This function is available since SDL 2.0.16.
102 */
103extern DECLSPEC ID3D11Device* SDLCALL SDL_RenderGetD3D11Device(SDL_Renderer * renderer);
104
105/**
106 * Get the DXGI Adapter and Output indices for the specified display index.
107 *
108 * The DXGI Adapter and Output indices can be passed to `EnumAdapters` and
109 * `EnumOutputs` respectively to get the objects required to create a DX10 or
110 * DX11 device and swap chain.
111 *
112 * Before SDL 2.0.4 this function did not return a value. Since SDL 2.0.4 it
113 * returns an SDL_bool.
114 *
115 * \param displayIndex the display index for which to get both indices
116 * \param adapterIndex a pointer to be filled in with the adapter index
117 * \param outputIndex a pointer to be filled in with the output index
118 * \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError()
119 * for more information.
120 *
121 * \since This function is available since SDL 2.0.2.
122 */
123extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex );
124
125#endif /* __WIN32__ */
126
127
128/* Platform specific functions for Linux */
129#ifdef __LINUX__
130
131/**
132 * Sets the UNIX nice value for a thread.
133 *
134 * This uses setpriority() if possible, and RealtimeKit if available.
135 *
136 * \param threadID the Unix thread ID to change priority of.
137 * \param priority The new, Unix-specific, priority value.
138 * \returns 0 on success, or -1 on error.
139 *
140 * \since This function is available since SDL 2.0.9.
141 */
142extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority);
143
144/**
145 * Sets the priority (not nice level) and scheduling policy for a thread.
146 *
147 * This uses setpriority() if possible, and RealtimeKit if available.
148 *
149 * \param threadID The Unix thread ID to change priority of.
150 * \param sdlPriority The new SDL_ThreadPriority value.
151 * \param schedPolicy The new scheduling policy (SCHED_FIFO, SCHED_RR,
152 * SCHED_OTHER, etc...)
153 * \returns 0 on success, or -1 on error.
154 *
155 * \since This function is available since SDL 2.0.18.
156 */
157extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID, int sdlPriority, int schedPolicy);
158
159#endif /* __LINUX__ */
160
161/* Platform specific functions for iOS */
162#ifdef __IPHONEOS__
163
164#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam)
165
166/**
167 * Use this function to set the animation callback on Apple iOS.
168 *
169 * The function prototype for `callback` is:
170 *
171 * ```c
172 * void callback(void* callbackParam);
173 * ```
174 *
175 * Where its parameter, `callbackParam`, is what was passed as `callbackParam`
176 * to SDL_iPhoneSetAnimationCallback().
177 *
178 * This function is only available on Apple iOS.
179 *
180 * For more information see:
181 * [README-ios.md](https://hg.libsdl.org/SDL/file/default/docs/README-ios.md)
182 *
183 * This functions is also accessible using the macro
184 * SDL_iOSSetAnimationCallback() since SDL 2.0.4.
185 *
186 * \param window the window for which the animation callback should be set
187 * \param interval the number of frames after which **callback** will be
188 * called
189 * \param callback the function to call for every frame.
190 * \param callbackParam a pointer that is passed to `callback`.
191 * \returns 0 on success or a negative error code on failure; call
192 * SDL_GetError() for more information.
193 *
194 * \since This function is available since SDL 2.0.0.
195 *
196 * \sa SDL_iPhoneSetEventPump
197 */
198extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
199
200#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled)
201
202/**
203 * Use this function to enable or disable the SDL event pump on Apple iOS.
204 *
205 * This function is only available on Apple iOS.
206 *
207 * This functions is also accessible using the macro SDL_iOSSetEventPump()
208 * since SDL 2.0.4.
209 *
210 * \param enabled SDL_TRUE to enable the event pump, SDL_FALSE to disable it
211 *
212 * \since This function is available since SDL 2.0.0.
213 *
214 * \sa SDL_iPhoneSetAnimationCallback
215 */
216extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled);
217
218#endif /* __IPHONEOS__ */
219
220
221/* Platform specific functions for Android */
222#ifdef __ANDROID__
223
224/**
225 * Get the Android Java Native Interface Environment of the current thread.
226 *
227 * This is the JNIEnv one needs to access the Java virtual machine from native
228 * code, and is needed for many Android APIs to be usable from C.
229 *
230 * The prototype of the function in SDL's code actually declare a void* return
231 * type, even if the implementation returns a pointer to a JNIEnv. The
232 * rationale being that the SDL headers can avoid including jni.h.
233 *
234 * \returns a pointer to Java native interface object (JNIEnv) to which the
235 * current thread is attached, or 0 on error.
236 *
237 * \since This function is available since SDL 2.0.0.
238 *
239 * \sa SDL_AndroidGetActivity
240 */
241extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void);
242
243/**
244 * Retrieve the Java instance of the Android activity class.
245 *
246 * The prototype of the function in SDL's code actually declares a void*
247 * return type, even if the implementation returns a jobject. The rationale
248 * being that the SDL headers can avoid including jni.h.
249 *
250 * The jobject returned by the function is a local reference and must be
251 * released by the caller. See the PushLocalFrame() and PopLocalFrame() or
252 * DeleteLocalRef() functions of the Java native interface:
253 *
254 * https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
255 *
256 * \returns the jobject representing the instance of the Activity class of the
257 * Android application, or NULL on error.
258 *
259 * \since This function is available since SDL 2.0.0.
260 *
261 * \sa SDL_AndroidGetJNIEnv
262 */
263extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void);
264
265/**
266 * Query Android API level of the current device.
267 *
268 * - API level 31: Android 12
269 * - API level 30: Android 11
270 * - API level 29: Android 10
271 * - API level 28: Android 9
272 * - API level 27: Android 8.1
273 * - API level 26: Android 8.0
274 * - API level 25: Android 7.1
275 * - API level 24: Android 7.0
276 * - API level 23: Android 6.0
277 * - API level 22: Android 5.1
278 * - API level 21: Android 5.0
279 * - API level 20: Android 4.4W
280 * - API level 19: Android 4.4
281 * - API level 18: Android 4.3
282 * - API level 17: Android 4.2
283 * - API level 16: Android 4.1
284 * - API level 15: Android 4.0.3
285 * - API level 14: Android 4.0
286 * - API level 13: Android 3.2
287 * - API level 12: Android 3.1
288 * - API level 11: Android 3.0
289 * - API level 10: Android 2.3.3
290 *
291 * \returns the Android API level.
292 *
293 * \since This function is available since SDL 2.0.12.
294 */
295extern DECLSPEC int SDLCALL SDL_GetAndroidSDKVersion(void);
296
297/**
298 * Query if the application is running on Android TV.
299 *
300 * \returns SDL_TRUE if this is Android TV, SDL_FALSE otherwise.
301 *
302 * \since This function is available since SDL 2.0.8.
303 */
304extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void);
305
306/**
307 * Query if the application is running on a Chromebook.
308 *
309 * \returns SDL_TRUE if this is a Chromebook, SDL_FALSE otherwise.
310 *
311 * \since This function is available since SDL 2.0.9.
312 */
313extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void);
314
315/**
316 * Query if the application is running on a Samsung DeX docking station.
317 *
318 * \returns SDL_TRUE if this is a DeX docking station, SDL_FALSE otherwise.
319 *
320 * \since This function is available since SDL 2.0.9.
321 */
322extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void);
323
324/**
325 * Trigger the Android system back button behavior.
326 *
327 * \since This function is available since SDL 2.0.9.
328 */
329extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void);
330
331/**
332 See the official Android developer guide for more information:
333 http://developer.android.com/guide/topics/data/data-storage.html
334*/
335#define SDL_ANDROID_EXTERNAL_STORAGE_READ 0x01
336#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE 0x02
337
338/**
339 * Get the path used for internal storage for this application.
340 *
341 * This path is unique to your application and cannot be written to by other
342 * applications.
343 *
344 * Your internal storage path is typically:
345 * `/data/data/your.app.package/files`.
346 *
347 * \returns the path used for internal storage or NULL on failure; call
348 * SDL_GetError() for more information.
349 *
350 * \since This function is available since SDL 2.0.0.
351 *
352 * \sa SDL_AndroidGetExternalStorageState
353 */
354extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void);
355
356/**
357 * Get the current state of external storage.
358 *
359 * The current state of external storage, a bitmask of these values:
360 * `SDL_ANDROID_EXTERNAL_STORAGE_READ`, `SDL_ANDROID_EXTERNAL_STORAGE_WRITE`.
361 *
362 * If external storage is currently unavailable, this will return 0.
363 *
364 * \returns the current state of external storage on success or 0 on failure;
365 * call SDL_GetError() for more information.
366 *
367 * \since This function is available since SDL 2.0.0.
368 *
369 * \sa SDL_AndroidGetExternalStoragePath
370 */
371extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void);
372
373/**
374 * Get the path used for external storage for this application.
375 *
376 * This path is unique to your application, but is public and can be written
377 * to by other applications.
378 *
379 * Your external storage path is typically:
380 * `/storage/sdcard0/Android/data/your.app.package/files`.
381 *
382 * \returns the path used for external storage for this application on success
383 * or NULL on failure; call SDL_GetError() for more information.
384 *
385 * \since This function is available since SDL 2.0.0.
386 *
387 * \sa SDL_AndroidGetExternalStorageState
388 */
389extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void);
390
391/**
392 * Request permissions at runtime.
393 *
394 * This blocks the calling thread until the permission is granted or denied.
395 *
396 * \param permission The permission to request.
397 * \returns SDL_TRUE if the permission was granted, SDL_FALSE otherwise.
398 *
399 * \since This function is available since SDL 2.0.14.
400 */
401extern DECLSPEC SDL_bool SDLCALL SDL_AndroidRequestPermission(const char *permission);
402
403/**
404 * Shows an Android toast notification.
405 *
406 * Toasts are a sort of lightweight notification that are unique to Android.
407 *
408 * https://developer.android.com/guide/topics/ui/notifiers/toasts
409 *
410 * Shows toast in UI thread.
411 *
412 * For the `gravity` parameter, choose a value from here, or -1 if you don't
413 * have a preference:
414 *
415 * https://developer.android.com/reference/android/view/Gravity
416 *
417 * \param message text message to be shown
418 * \param duration 0=short, 1=long
419 * \param gravity where the notification should appear on the screen.
420 * \param xoffset set this parameter only when gravity >=0
421 * \param yoffset set this parameter only when gravity >=0
422 * \returns 0 if success, -1 if any error occurs.
423 *
424 * \since This function is available since SDL 2.0.16.
425 */
426extern DECLSPEC int SDLCALL SDL_AndroidShowToast(const char* message, int duration, int gravity, int xoffset, int yoffset);
427
428#endif /* __ANDROID__ */
429
430/* Platform specific functions for WinRT */
431#ifdef __WINRT__
432
433/**
434 * \brief WinRT / Windows Phone path types
435 */
436typedef enum
437{
438 /** \brief The installed app's root directory.
439 Files here are likely to be read-only. */
440 SDL_WINRT_PATH_INSTALLED_LOCATION,
441
442 /** \brief The app's local data store. Files may be written here */
443 SDL_WINRT_PATH_LOCAL_FOLDER,
444
445 /** \brief The app's roaming data store. Unsupported on Windows Phone.
446 Files written here may be copied to other machines via a network
447 connection.
448 */
449 SDL_WINRT_PATH_ROAMING_FOLDER,
450
451 /** \brief The app's temporary data store. Unsupported on Windows Phone.
452 Files written here may be deleted at any time. */
453 SDL_WINRT_PATH_TEMP_FOLDER
454} SDL_WinRT_Path;
455
456
457/**
458 * \brief WinRT Device Family
459 */
460typedef enum
461{
462 /** \brief Unknown family */
463 SDL_WINRT_DEVICEFAMILY_UNKNOWN,
464
465 /** \brief Desktop family*/
466 SDL_WINRT_DEVICEFAMILY_DESKTOP,
467
468 /** \brief Mobile family (for example smartphone) */
469 SDL_WINRT_DEVICEFAMILY_MOBILE,
470
471 /** \brief XBox family */
472 SDL_WINRT_DEVICEFAMILY_XBOX,
473} SDL_WinRT_DeviceFamily;
474
475
476/**
477 * Retrieve a WinRT defined path on the local file system.
478 *
479 * Not all paths are available on all versions of Windows. This is especially
480 * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path
481 * for more information on which path types are supported where.
482 *
483 * Documentation on most app-specific path types on WinRT can be found on
484 * MSDN, at the URL:
485 *
486 * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
487 *
488 * \param pathType the type of path to retrieve, one of SDL_WinRT_Path
489 * \returns a UCS-2 string (16-bit, wide-char) containing the path, or NULL if
490 * the path is not available for any reason; call SDL_GetError() for
491 * more information.
492 *
493 * \since This function is available since SDL 2.0.3.
494 *
495 * \sa SDL_WinRTGetFSPathUTF8
496 */
497extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType);
498
499/**
500 * Retrieve a WinRT defined path on the local file system.
501 *
502 * Not all paths are available on all versions of Windows. This is especially
503 * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path
504 * for more information on which path types are supported where.
505 *
506 * Documentation on most app-specific path types on WinRT can be found on
507 * MSDN, at the URL:
508 *
509 * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
510 *
511 * \param pathType the type of path to retrieve, one of SDL_WinRT_Path
512 * \returns a UTF-8 string (8-bit, multi-byte) containing the path, or NULL if
513 * the path is not available for any reason; call SDL_GetError() for
514 * more information.
515 *
516 * \since This function is available since SDL 2.0.3.
517 *
518 * \sa SDL_WinRTGetFSPathUNICODE
519 */
520extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType);
521
522/**
523 * Detects the device family of WinRT plattform at runtime.
524 *
525 * \returns a value from the SDL_WinRT_DeviceFamily enum.
526 *
527 * \since This function is available since SDL 2.0.8.
528 */
529extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily();
530
531#endif /* __WINRT__ */
532
533/**
534 * Query if the current device is a tablet.
535 *
536 * If SDL can't determine this, it will return SDL_FALSE.
537 *
538 * \returns SDL_TRUE if the device is a tablet, SDL_FALSE otherwise.
539 *
540 * \since This function is available since SDL 2.0.9.
541 */
542extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void);
543
544/* Functions used by iOS application delegates to notify SDL about state changes */
545extern DECLSPEC void SDLCALL SDL_OnApplicationWillTerminate(void);
546extern DECLSPEC void SDLCALL SDL_OnApplicationDidReceiveMemoryWarning(void);
547extern DECLSPEC void SDLCALL SDL_OnApplicationWillResignActive(void);
548extern DECLSPEC void SDLCALL SDL_OnApplicationDidEnterBackground(void);
549extern DECLSPEC void SDLCALL SDL_OnApplicationWillEnterForeground(void);
550extern DECLSPEC void SDLCALL SDL_OnApplicationDidBecomeActive(void);
551#ifdef __IPHONEOS__
552extern DECLSPEC void SDLCALL SDL_OnApplicationDidChangeStatusBarOrientation(void);
553#endif
554
555/* Ends C function definitions when using C++ */
556#ifdef __cplusplus
557}
558#endif
559#include "close_code.h"
560
561#endif /* SDL_system_h_ */
562
563/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_syswm.h b/vendor/SDL2/include/SDL_syswm.h new file mode 100644 index 0000000..f7cd670 --- /dev/null +++ b/vendor/SDL2/include/SDL_syswm.h
@@ -0,0 +1,384 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_syswm.h
24 *
25 * Include file for SDL custom system window manager hooks.
26 */
27
28#ifndef SDL_syswm_h_
29#define SDL_syswm_h_
30
31#include "SDL_stdinc.h"
32#include "SDL_error.h"
33#include "SDL_video.h"
34#include "SDL_version.h"
35
36/**
37 * \brief SDL_syswm.h
38 *
39 * Your application has access to a special type of event ::SDL_SYSWMEVENT,
40 * which contains window-manager specific information and arrives whenever
41 * an unhandled window event occurs. This event is ignored by default, but
42 * you can enable it with SDL_EventState().
43 */
44struct SDL_SysWMinfo;
45
46#if !defined(SDL_PROTOTYPES_ONLY)
47
48#if defined(SDL_VIDEO_DRIVER_WINDOWS)
49#ifndef WIN32_LEAN_AND_MEAN
50#define WIN32_LEAN_AND_MEAN
51#endif
52#ifndef NOMINMAX /* don't define min() and max(). */
53#define NOMINMAX
54#endif
55#include <windows.h>
56#endif
57
58#if defined(SDL_VIDEO_DRIVER_WINRT)
59#include <Inspectable.h>
60#endif
61
62/* This is the structure for custom window manager events */
63#if defined(SDL_VIDEO_DRIVER_X11)
64#if defined(__APPLE__) && defined(__MACH__)
65/* conflicts with Quickdraw.h */
66#define Cursor X11Cursor
67#endif
68
69#include <X11/Xlib.h>
70#include <X11/Xatom.h>
71
72#if defined(__APPLE__) && defined(__MACH__)
73/* matches the re-define above */
74#undef Cursor
75#endif
76
77#endif /* defined(SDL_VIDEO_DRIVER_X11) */
78
79#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
80#include <directfb.h>
81#endif
82
83#if defined(SDL_VIDEO_DRIVER_COCOA)
84#ifdef __OBJC__
85@class NSWindow;
86#else
87typedef struct _NSWindow NSWindow;
88#endif
89#endif
90
91#if defined(SDL_VIDEO_DRIVER_UIKIT)
92#ifdef __OBJC__
93#include <UIKit/UIKit.h>
94#else
95typedef struct _UIWindow UIWindow;
96typedef struct _UIViewController UIViewController;
97#endif
98typedef Uint32 GLuint;
99#endif
100
101#if defined(SDL_VIDEO_VULKAN) || defined(SDL_VIDEO_METAL)
102#define SDL_METALVIEW_TAG 255
103#endif
104
105#if defined(SDL_VIDEO_DRIVER_ANDROID)
106typedef struct ANativeWindow ANativeWindow;
107typedef void *EGLSurface;
108#endif
109
110#if defined(SDL_VIDEO_DRIVER_VIVANTE)
111#include "SDL_egl.h"
112#endif
113
114#if defined(SDL_VIDEO_DRIVER_OS2)
115#define INCL_WIN
116#include <os2.h>
117#endif
118#endif /* SDL_PROTOTYPES_ONLY */
119
120#if defined(SDL_VIDEO_DRIVER_KMSDRM)
121struct gbm_device;
122#endif
123
124
125#include "begin_code.h"
126/* Set up for C function definitions, even when using C++ */
127#ifdef __cplusplus
128extern "C" {
129#endif
130
131#if !defined(SDL_PROTOTYPES_ONLY)
132/**
133 * These are the various supported windowing subsystems
134 */
135typedef enum
136{
137 SDL_SYSWM_UNKNOWN,
138 SDL_SYSWM_WINDOWS,
139 SDL_SYSWM_X11,
140 SDL_SYSWM_DIRECTFB,
141 SDL_SYSWM_COCOA,
142 SDL_SYSWM_UIKIT,
143 SDL_SYSWM_WAYLAND,
144 SDL_SYSWM_MIR, /* no longer available, left for API/ABI compatibility. Remove in 2.1! */
145 SDL_SYSWM_WINRT,
146 SDL_SYSWM_ANDROID,
147 SDL_SYSWM_VIVANTE,
148 SDL_SYSWM_OS2,
149 SDL_SYSWM_HAIKU,
150 SDL_SYSWM_KMSDRM,
151 SDL_SYSWM_RISCOS
152} SDL_SYSWM_TYPE;
153
154/**
155 * The custom event structure.
156 */
157struct SDL_SysWMmsg
158{
159 SDL_version version;
160 SDL_SYSWM_TYPE subsystem;
161 union
162 {
163#if defined(SDL_VIDEO_DRIVER_WINDOWS)
164 struct {
165 HWND hwnd; /**< The window for the message */
166 UINT msg; /**< The type of message */
167 WPARAM wParam; /**< WORD message parameter */
168 LPARAM lParam; /**< LONG message parameter */
169 } win;
170#endif
171#if defined(SDL_VIDEO_DRIVER_X11)
172 struct {
173 XEvent event;
174 } x11;
175#endif
176#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
177 struct {
178 DFBEvent event;
179 } dfb;
180#endif
181#if defined(SDL_VIDEO_DRIVER_COCOA)
182 struct
183 {
184 /* Latest version of Xcode clang complains about empty structs in C v. C++:
185 error: empty struct has size 0 in C, size 1 in C++
186 */
187 int dummy;
188 /* No Cocoa window events yet */
189 } cocoa;
190#endif
191#if defined(SDL_VIDEO_DRIVER_UIKIT)
192 struct
193 {
194 int dummy;
195 /* No UIKit window events yet */
196 } uikit;
197#endif
198#if defined(SDL_VIDEO_DRIVER_VIVANTE)
199 struct
200 {
201 int dummy;
202 /* No Vivante window events yet */
203 } vivante;
204#endif
205#if defined(SDL_VIDEO_DRIVER_OS2)
206 struct
207 {
208 BOOL fFrame; /**< TRUE if hwnd is a frame window */
209 HWND hwnd; /**< The window receiving the message */
210 ULONG msg; /**< The message identifier */
211 MPARAM mp1; /**< The first first message parameter */
212 MPARAM mp2; /**< The second first message parameter */
213 } os2;
214#endif
215 /* Can't have an empty union */
216 int dummy;
217 } msg;
218};
219
220/**
221 * The custom window manager information structure.
222 *
223 * When this structure is returned, it holds information about which
224 * low level system it is using, and will be one of SDL_SYSWM_TYPE.
225 */
226struct SDL_SysWMinfo
227{
228 SDL_version version;
229 SDL_SYSWM_TYPE subsystem;
230 union
231 {
232#if defined(SDL_VIDEO_DRIVER_WINDOWS)
233 struct
234 {
235 HWND window; /**< The window handle */
236 HDC hdc; /**< The window device context */
237 HINSTANCE hinstance; /**< The instance handle */
238 } win;
239#endif
240#if defined(SDL_VIDEO_DRIVER_WINRT)
241 struct
242 {
243 IInspectable * window; /**< The WinRT CoreWindow */
244 } winrt;
245#endif
246#if defined(SDL_VIDEO_DRIVER_X11)
247 struct
248 {
249 Display *display; /**< The X11 display */
250 Window window; /**< The X11 window */
251 } x11;
252#endif
253#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
254 struct
255 {
256 IDirectFB *dfb; /**< The directfb main interface */
257 IDirectFBWindow *window; /**< The directfb window handle */
258 IDirectFBSurface *surface; /**< The directfb client surface */
259 } dfb;
260#endif
261#if defined(SDL_VIDEO_DRIVER_COCOA)
262 struct
263 {
264#if defined(__OBJC__) && defined(__has_feature)
265 #if __has_feature(objc_arc)
266 NSWindow __unsafe_unretained *window; /**< The Cocoa window */
267 #else
268 NSWindow *window; /**< The Cocoa window */
269 #endif
270#else
271 NSWindow *window; /**< The Cocoa window */
272#endif
273 } cocoa;
274#endif
275#if defined(SDL_VIDEO_DRIVER_UIKIT)
276 struct
277 {
278#if defined(__OBJC__) && defined(__has_feature)
279 #if __has_feature(objc_arc)
280 UIWindow __unsafe_unretained *window; /**< The UIKit window */
281 #else
282 UIWindow *window; /**< The UIKit window */
283 #endif
284#else
285 UIWindow *window; /**< The UIKit window */
286#endif
287 GLuint framebuffer; /**< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. */
288 GLuint colorbuffer; /**< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. */
289 GLuint resolveFramebuffer; /**< The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. */
290 } uikit;
291#endif
292#if defined(SDL_VIDEO_DRIVER_WAYLAND)
293 struct
294 {
295 struct wl_display *display; /**< Wayland display */
296 struct wl_surface *surface; /**< Wayland surface */
297 void *shell_surface; /**< DEPRECATED Wayland shell_surface (window manager handle) */
298 struct wl_egl_window *egl_window; /**< Wayland EGL window (native window) */
299 struct xdg_surface *xdg_surface; /**< Wayland xdg surface (window manager handle) */
300 struct xdg_toplevel *xdg_toplevel; /**< Wayland xdg toplevel role */
301 } wl;
302#endif
303#if defined(SDL_VIDEO_DRIVER_MIR) /* no longer available, left for API/ABI compatibility. Remove in 2.1! */
304 struct
305 {
306 void *connection; /**< Mir display server connection */
307 void *surface; /**< Mir surface */
308 } mir;
309#endif
310
311#if defined(SDL_VIDEO_DRIVER_ANDROID)
312 struct
313 {
314 ANativeWindow *window;
315 EGLSurface surface;
316 } android;
317#endif
318
319#if defined(SDL_VIDEO_DRIVER_OS2)
320 struct
321 {
322 HWND hwnd; /**< The window handle */
323 HWND hwndFrame; /**< The frame window handle */
324 } os2;
325#endif
326
327#if defined(SDL_VIDEO_DRIVER_VIVANTE)
328 struct
329 {
330 EGLNativeDisplayType display;
331 EGLNativeWindowType window;
332 } vivante;
333#endif
334
335#if defined(SDL_VIDEO_DRIVER_KMSDRM)
336 struct
337 {
338 int dev_index; /**< Device index (ex: the X in /dev/dri/cardX) */
339 int drm_fd; /**< DRM FD (unavailable on Vulkan windows) */
340 struct gbm_device *gbm_dev; /**< GBM device (unavailable on Vulkan windows) */
341 } kmsdrm;
342#endif
343
344 /* Make sure this union is always 64 bytes (8 64-bit pointers). */
345 /* Be careful not to overflow this if you add a new target! */
346 Uint8 dummy[64];
347 } info;
348};
349
350#endif /* SDL_PROTOTYPES_ONLY */
351
352typedef struct SDL_SysWMinfo SDL_SysWMinfo;
353
354
355/**
356 * Get driver-specific information about a window.
357 *
358 * You must include SDL_syswm.h for the declaration of SDL_SysWMinfo.
359 *
360 * The caller must initialize the `info` structure's version by using
361 * `SDL_VERSION(&info.version)`, and then this function will fill in the rest
362 * of the structure with information about the given window.
363 *
364 * \param window the window about which information is being requested
365 * \param info an SDL_SysWMinfo structure filled in with window information
366 * \returns SDL_TRUE if the function is implemented and the `version` member
367 * of the `info` struct is valid, or SDL_FALSE if the information
368 * could not be retrieved; call SDL_GetError() for more information.
369 *
370 * \since This function is available since SDL 2.0.0.
371 */
372extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window,
373 SDL_SysWMinfo * info);
374
375
376/* Ends C function definitions when using C++ */
377#ifdef __cplusplus
378}
379#endif
380#include "close_code.h"
381
382#endif /* SDL_syswm_h_ */
383
384/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_test.h b/vendor/SDL2/include/SDL_test.h new file mode 100644 index 0000000..8cc9d61 --- /dev/null +++ b/vendor/SDL2/include/SDL_test.h
@@ -0,0 +1,69 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_test.h
24 *
25 * Include file for SDL test framework.
26 *
27 * This code is a part of the SDL2_test library, not the main SDL library.
28 */
29
30#ifndef SDL_test_h_
31#define SDL_test_h_
32
33#include "SDL.h"
34#include "SDL_test_assert.h"
35#include "SDL_test_common.h"
36#include "SDL_test_compare.h"
37#include "SDL_test_crc32.h"
38#include "SDL_test_font.h"
39#include "SDL_test_fuzzer.h"
40#include "SDL_test_harness.h"
41#include "SDL_test_images.h"
42#include "SDL_test_log.h"
43#include "SDL_test_md5.h"
44#include "SDL_test_memory.h"
45#include "SDL_test_random.h"
46
47#include "begin_code.h"
48/* Set up for C function definitions, even when using C++ */
49#ifdef __cplusplus
50extern "C" {
51#endif
52
53/* Global definitions */
54
55/*
56 * Note: Maximum size of SDLTest log message is less than SDL's limit
57 * to ensure we can fit additional information such as the timestamp.
58 */
59#define SDLTEST_MAX_LOGMESSAGE_LENGTH 3584
60
61/* Ends C function definitions when using C++ */
62#ifdef __cplusplus
63}
64#endif
65#include "close_code.h"
66
67#endif /* SDL_test_h_ */
68
69/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_test_assert.h b/vendor/SDL2/include/SDL_test_assert.h new file mode 100644 index 0000000..7342305 --- /dev/null +++ b/vendor/SDL2/include/SDL_test_assert.h
@@ -0,0 +1,105 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_test_assert.h
24 *
25 * Include file for SDL test framework.
26 *
27 * This code is a part of the SDL2_test library, not the main SDL library.
28 */
29
30/*
31 *
32 * Assert API for test code and test cases
33 *
34 */
35
36#ifndef SDL_test_assert_h_
37#define SDL_test_assert_h_
38
39#include "begin_code.h"
40/* Set up for C function definitions, even when using C++ */
41#ifdef __cplusplus
42extern "C" {
43#endif
44
45/**
46 * \brief Fails the assert.
47 */
48#define ASSERT_FAIL 0
49
50/**
51 * \brief Passes the assert.
52 */
53#define ASSERT_PASS 1
54
55/**
56 * \brief Assert that logs and break execution flow on failures.
57 *
58 * \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0).
59 * \param assertDescription Message to log with the assert describing it.
60 */
61void SDLTest_Assert(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2);
62
63/**
64 * \brief Assert for test cases that logs but does not break execution flow on failures. Updates assertion counters.
65 *
66 * \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0).
67 * \param assertDescription Message to log with the assert describing it.
68 *
69 * \returns the assertCondition so it can be used to externally to break execution flow if desired.
70 */
71int SDLTest_AssertCheck(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2);
72
73/**
74 * \brief Explicitly pass without checking an assertion condition. Updates assertion counter.
75 *
76 * \param assertDescription Message to log with the assert describing it.
77 */
78void SDLTest_AssertPass(SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(1);
79
80/**
81 * \brief Resets the assert summary counters to zero.
82 */
83void SDLTest_ResetAssertSummary(void);
84
85/**
86 * \brief Logs summary of all assertions (total, pass, fail) since last reset as INFO or ERROR.
87 */
88void SDLTest_LogAssertSummary(void);
89
90
91/**
92 * \brief Converts the current assert summary state to a test result.
93 *
94 * \returns TEST_RESULT_PASSED, TEST_RESULT_FAILED, or TEST_RESULT_NO_ASSERT
95 */
96int SDLTest_AssertSummaryToTestResult(void);
97
98#ifdef __cplusplus
99}
100#endif
101#include "close_code.h"
102
103#endif /* SDL_test_assert_h_ */
104
105/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_test_common.h b/vendor/SDL2/include/SDL_test_common.h new file mode 100644 index 0000000..0f50967 --- /dev/null +++ b/vendor/SDL2/include/SDL_test_common.h
@@ -0,0 +1,235 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_test_common.h
24 *
25 * Include file for SDL test framework.
26 *
27 * This code is a part of the SDL2_test library, not the main SDL library.
28 */
29
30/* Ported from original test\common.h file. */
31
32#ifndef SDL_test_common_h_
33#define SDL_test_common_h_
34
35#include "SDL.h"
36
37#if defined(__PSP__)
38#define DEFAULT_WINDOW_WIDTH 480
39#define DEFAULT_WINDOW_HEIGHT 272
40#elif defined(__VITA__)
41#define DEFAULT_WINDOW_WIDTH 960
42#define DEFAULT_WINDOW_HEIGHT 544
43#else
44#define DEFAULT_WINDOW_WIDTH 640
45#define DEFAULT_WINDOW_HEIGHT 480
46#endif
47
48#define VERBOSE_VIDEO 0x00000001
49#define VERBOSE_MODES 0x00000002
50#define VERBOSE_RENDER 0x00000004
51#define VERBOSE_EVENT 0x00000008
52#define VERBOSE_AUDIO 0x00000010
53
54typedef struct
55{
56 /* SDL init flags */
57 char **argv;
58 Uint32 flags;
59 Uint32 verbose;
60
61 /* Video info */
62 const char *videodriver;
63 int display;
64 const char *window_title;
65 const char *window_icon;
66 Uint32 window_flags;
67 SDL_bool flash_on_focus_loss;
68 int window_x;
69 int window_y;
70 int window_w;
71 int window_h;
72 int window_minW;
73 int window_minH;
74 int window_maxW;
75 int window_maxH;
76 int logical_w;
77 int logical_h;
78 float scale;
79 int depth;
80 int refresh_rate;
81 int num_windows;
82 SDL_Window **windows;
83
84 /* Renderer info */
85 const char *renderdriver;
86 Uint32 render_flags;
87 SDL_bool skip_renderer;
88 SDL_Renderer **renderers;
89 SDL_Texture **targets;
90
91 /* Audio info */
92 const char *audiodriver;
93 SDL_AudioSpec audiospec;
94
95 /* GL settings */
96 int gl_red_size;
97 int gl_green_size;
98 int gl_blue_size;
99 int gl_alpha_size;
100 int gl_buffer_size;
101 int gl_depth_size;
102 int gl_stencil_size;
103 int gl_double_buffer;
104 int gl_accum_red_size;
105 int gl_accum_green_size;
106 int gl_accum_blue_size;
107 int gl_accum_alpha_size;
108 int gl_stereo;
109 int gl_multisamplebuffers;
110 int gl_multisamplesamples;
111 int gl_retained_backing;
112 int gl_accelerated;
113 int gl_major_version;
114 int gl_minor_version;
115 int gl_debug;
116 int gl_profile_mask;
117
118 /* Additional fields added in 2.0.18 */
119 SDL_Rect confine;
120
121} SDLTest_CommonState;
122
123#include "begin_code.h"
124/* Set up for C function definitions, even when using C++ */
125#ifdef __cplusplus
126extern "C" {
127#endif
128
129/* Function prototypes */
130
131/**
132 * \brief Parse command line parameters and create common state.
133 *
134 * \param argv Array of command line parameters
135 * \param flags Flags indicating which subsystem to initialize (i.e. SDL_INIT_VIDEO | SDL_INIT_AUDIO)
136 *
137 * \returns a newly allocated common state object.
138 */
139SDLTest_CommonState *SDLTest_CommonCreateState(char **argv, Uint32 flags);
140
141/**
142 * \brief Process one common argument.
143 *
144 * \param state The common state describing the test window to create.
145 * \param index The index of the argument to process in argv[].
146 *
147 * \returns the number of arguments processed (i.e. 1 for --fullscreen, 2 for --video [videodriver], or -1 on error.
148 */
149int SDLTest_CommonArg(SDLTest_CommonState * state, int index);
150
151
152/**
153 * \brief Logs command line usage info.
154 *
155 * This logs the appropriate command line options for the subsystems in use
156 * plus other common options, and then any application-specific options.
157 * This uses the SDL_Log() function and splits up output to be friendly to
158 * 80-character-wide terminals.
159 *
160 * \param state The common state describing the test window for the app.
161 * \param argv0 argv[0], as passed to main/SDL_main.
162 * \param options an array of strings for application specific options. The last element of the array should be NULL.
163 */
164void SDLTest_CommonLogUsage(SDLTest_CommonState * state, const char *argv0, const char **options);
165
166/**
167 * \brief Returns common usage information
168 *
169 * You should (probably) be using SDLTest_CommonLogUsage() instead, but this
170 * function remains for binary compatibility. Strings returned from this
171 * function are valid until SDLTest_CommonQuit() is called, in which case
172 * those strings' memory is freed and can no longer be used.
173 *
174 * \param state The common state describing the test window to create.
175 * \returns a string with usage information
176 */
177const char *SDLTest_CommonUsage(SDLTest_CommonState * state);
178
179/**
180 * \brief Open test window.
181 *
182 * \param state The common state describing the test window to create.
183 *
184 * \returns SDL_TRUE if initialization succeeded, false otherwise
185 */
186SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state);
187
188/**
189 * \brief Easy argument handling when test app doesn't need any custom args.
190 *
191 * \param state The common state describing the test window to create.
192 * \param argc argc, as supplied to SDL_main
193 * \param argv argv, as supplied to SDL_main
194 *
195 * \returns SDL_FALSE if app should quit, true otherwise.
196 */
197SDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState * state, const int argc, char **argv);
198
199/**
200 * \brief Common event handler for test windows.
201 *
202 * \param state The common state used to create test window.
203 * \param event The event to handle.
204 * \param done Flag indicating we are done.
205 *
206 */
207void SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done);
208
209/**
210 * \brief Close test window.
211 *
212 * \param state The common state used to create test window.
213 *
214 */
215void SDLTest_CommonQuit(SDLTest_CommonState * state);
216
217/**
218 * \brief Draws various window information (position, size, etc.) to the renderer.
219 *
220 * \param renderer The renderer to draw to.
221 * \param window The window whose information should be displayed.
222 * \param usedHeight Returns the height used, so the caller can draw more below.
223 *
224 */
225void SDLTest_CommonDrawWindowInfo(SDL_Renderer * renderer, SDL_Window * window, int * usedHeight);
226
227/* Ends C function definitions when using C++ */
228#ifdef __cplusplus
229}
230#endif
231#include "close_code.h"
232
233#endif /* SDL_test_common_h_ */
234
235/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_test_compare.h b/vendor/SDL2/include/SDL_test_compare.h new file mode 100644 index 0000000..8a7a070 --- /dev/null +++ b/vendor/SDL2/include/SDL_test_compare.h
@@ -0,0 +1,69 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_test_compare.h
24 *
25 * Include file for SDL test framework.
26 *
27 * This code is a part of the SDL2_test library, not the main SDL library.
28 */
29
30/*
31
32 Defines comparison functions (i.e. for surfaces).
33
34*/
35
36#ifndef SDL_test_compare_h_
37#define SDL_test_compare_h_
38
39#include "SDL.h"
40
41#include "SDL_test_images.h"
42
43#include "begin_code.h"
44/* Set up for C function definitions, even when using C++ */
45#ifdef __cplusplus
46extern "C" {
47#endif
48
49/**
50 * \brief Compares a surface and with reference image data for equality
51 *
52 * \param surface Surface used in comparison
53 * \param referenceSurface Test Surface used in comparison
54 * \param allowable_error Allowable difference (=sum of squared difference for each RGB component) in blending accuracy.
55 *
56 * \returns 0 if comparison succeeded, >0 (=number of pixels for which the comparison failed) if comparison failed, -1 if any of the surfaces were NULL, -2 if the surface sizes differ.
57 */
58int SDLTest_CompareSurfaces(SDL_Surface *surface, SDL_Surface *referenceSurface, int allowable_error);
59
60
61/* Ends C function definitions when using C++ */
62#ifdef __cplusplus
63}
64#endif
65#include "close_code.h"
66
67#endif /* SDL_test_compare_h_ */
68
69/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_test_crc32.h b/vendor/SDL2/include/SDL_test_crc32.h new file mode 100644 index 0000000..049da74 --- /dev/null +++ b/vendor/SDL2/include/SDL_test_crc32.h
@@ -0,0 +1,124 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_test_crc32.h
24 *
25 * Include file for SDL test framework.
26 *
27 * This code is a part of the SDL2_test library, not the main SDL library.
28 */
29
30/*
31
32 Implements CRC32 calculations (default output is Perl String::CRC32 compatible).
33
34*/
35
36#ifndef SDL_test_crc32_h_
37#define SDL_test_crc32_h_
38
39#include "begin_code.h"
40/* Set up for C function definitions, even when using C++ */
41#ifdef __cplusplus
42extern "C" {
43#endif
44
45
46/* ------------ Definitions --------- */
47
48/* Definition shared by all CRC routines */
49
50#ifndef CrcUint32
51 #define CrcUint32 unsigned int
52#endif
53#ifndef CrcUint8
54 #define CrcUint8 unsigned char
55#endif
56
57#ifdef ORIGINAL_METHOD
58 #define CRC32_POLY 0x04c11db7 /* AUTODIN II, Ethernet, & FDDI */
59#else
60 #define CRC32_POLY 0xEDB88320 /* Perl String::CRC32 compatible */
61#endif
62
63/**
64 * Data structure for CRC32 (checksum) computation
65 */
66 typedef struct {
67 CrcUint32 crc32_table[256]; /* CRC table */
68 } SDLTest_Crc32Context;
69
70/* ---------- Function Prototypes ------------- */
71
72/**
73 * \brief Initialize the CRC context
74 *
75 * Note: The function initializes the crc table required for all crc calculations.
76 *
77 * \param crcContext pointer to context variable
78 *
79 * \returns 0 for OK, -1 on error
80 *
81 */
82 int SDLTest_Crc32Init(SDLTest_Crc32Context * crcContext);
83
84
85/**
86 * \brief calculate a crc32 from a data block
87 *
88 * \param crcContext pointer to context variable
89 * \param inBuf input buffer to checksum
90 * \param inLen length of input buffer
91 * \param crc32 pointer to Uint32 to store the final CRC into
92 *
93 * \returns 0 for OK, -1 on error
94 *
95 */
96int SDLTest_Crc32Calc(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32);
97
98/* Same routine broken down into three steps */
99int SDLTest_Crc32CalcStart(SDLTest_Crc32Context * crcContext, CrcUint32 *crc32);
100int SDLTest_Crc32CalcEnd(SDLTest_Crc32Context * crcContext, CrcUint32 *crc32);
101int SDLTest_Crc32CalcBuffer(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32);
102
103
104/**
105 * \brief clean up CRC context
106 *
107 * \param crcContext pointer to context variable
108 *
109 * \returns 0 for OK, -1 on error
110 *
111*/
112
113int SDLTest_Crc32Done(SDLTest_Crc32Context * crcContext);
114
115
116/* Ends C function definitions when using C++ */
117#ifdef __cplusplus
118}
119#endif
120#include "close_code.h"
121
122#endif /* SDL_test_crc32_h_ */
123
124/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_test_font.h b/vendor/SDL2/include/SDL_test_font.h new file mode 100644 index 0000000..c5cbbbb --- /dev/null +++ b/vendor/SDL2/include/SDL_test_font.h
@@ -0,0 +1,81 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_test_font.h
24 *
25 * Include file for SDL test framework.
26 *
27 * This code is a part of the SDL2_test library, not the main SDL library.
28 */
29
30#ifndef SDL_test_font_h_
31#define SDL_test_font_h_
32
33#include "begin_code.h"
34/* Set up for C function definitions, even when using C++ */
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39/* Function prototypes */
40
41#define FONT_CHARACTER_SIZE 8
42
43/**
44 * \brief Draw a string in the currently set font.
45 *
46 * \param renderer The renderer to draw on.
47 * \param x The X coordinate of the upper left corner of the character.
48 * \param y The Y coordinate of the upper left corner of the character.
49 * \param c The character to draw.
50 *
51 * \returns 0 on success, -1 on failure.
52 */
53int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, char c);
54
55/**
56 * \brief Draw a string in the currently set font.
57 *
58 * \param renderer The renderer to draw on.
59 * \param x The X coordinate of the upper left corner of the string.
60 * \param y The Y coordinate of the upper left corner of the string.
61 * \param s The string to draw.
62 *
63 * \returns 0 on success, -1 on failure.
64 */
65int SDLTest_DrawString(SDL_Renderer *renderer, int x, int y, const char *s);
66
67
68/**
69 * \brief Cleanup textures used by font drawing functions.
70 */
71void SDLTest_CleanupTextDrawing(void);
72
73/* Ends C function definitions when using C++ */
74#ifdef __cplusplus
75}
76#endif
77#include "close_code.h"
78
79#endif /* SDL_test_font_h_ */
80
81/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_test_fuzzer.h b/vendor/SDL2/include/SDL_test_fuzzer.h new file mode 100644 index 0000000..bbe8eb8 --- /dev/null +++ b/vendor/SDL2/include/SDL_test_fuzzer.h
@@ -0,0 +1,386 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_test_fuzzer.h
24 *
25 * Include file for SDL test framework.
26 *
27 * This code is a part of the SDL2_test library, not the main SDL library.
28 */
29
30/*
31
32 Data generators for fuzzing test data in a reproducible way.
33
34*/
35
36#ifndef SDL_test_fuzzer_h_
37#define SDL_test_fuzzer_h_
38
39#include "begin_code.h"
40/* Set up for C function definitions, even when using C++ */
41#ifdef __cplusplus
42extern "C" {
43#endif
44
45
46/*
47 Based on GSOC code by Markus Kauppila <markus.kauppila@gmail.com>
48*/
49
50
51/**
52 * \file
53 * Note: The fuzzer implementation uses a static instance of random context
54 * internally which makes it thread-UNsafe.
55 */
56
57/**
58 * Initializes the fuzzer for a test
59 *
60 * \param execKey Execution "Key" that initializes the random number generator uniquely for the test.
61 *
62 */
63void SDLTest_FuzzerInit(Uint64 execKey);
64
65
66/**
67 * Returns a random Uint8
68 *
69 * \returns a generated integer
70 */
71Uint8 SDLTest_RandomUint8(void);
72
73/**
74 * Returns a random Sint8
75 *
76 * \returns a generated signed integer
77 */
78Sint8 SDLTest_RandomSint8(void);
79
80
81/**
82 * Returns a random Uint16
83 *
84 * \returns a generated integer
85 */
86Uint16 SDLTest_RandomUint16(void);
87
88/**
89 * Returns a random Sint16
90 *
91 * \returns a generated signed integer
92 */
93Sint16 SDLTest_RandomSint16(void);
94
95
96/**
97 * Returns a random integer
98 *
99 * \returns a generated integer
100 */
101Sint32 SDLTest_RandomSint32(void);
102
103
104/**
105 * Returns a random positive integer
106 *
107 * \returns a generated integer
108 */
109Uint32 SDLTest_RandomUint32(void);
110
111/**
112 * Returns random Uint64.
113 *
114 * \returns a generated integer
115 */
116Uint64 SDLTest_RandomUint64(void);
117
118
119/**
120 * Returns random Sint64.
121 *
122 * \returns a generated signed integer
123 */
124Sint64 SDLTest_RandomSint64(void);
125
126/**
127 * \returns a random float in range [0.0 - 1.0]
128 */
129float SDLTest_RandomUnitFloat(void);
130
131/**
132 * \returns a random double in range [0.0 - 1.0]
133 */
134double SDLTest_RandomUnitDouble(void);
135
136/**
137 * \returns a random float.
138 *
139 */
140float SDLTest_RandomFloat(void);
141
142/**
143 * \returns a random double.
144 *
145 */
146double SDLTest_RandomDouble(void);
147
148/**
149 * Returns a random boundary value for Uint8 within the given boundaries.
150 * Boundaries are inclusive, see the usage examples below. If validDomain
151 * is true, the function will only return valid boundaries, otherwise non-valid
152 * boundaries are also possible.
153 * If boundary1 > boundary2, the values are swapped
154 *
155 * Usage examples:
156 * RandomUint8BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
157 * RandomUint8BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
158 * RandomUint8BoundaryValue(0, 99, SDL_FALSE) returns 100
159 * RandomUint8BoundaryValue(0, 255, SDL_FALSE) returns 0 (error set)
160 *
161 * \param boundary1 Lower boundary limit
162 * \param boundary2 Upper boundary limit
163 * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
164 *
165 * \returns a random boundary value for the given range and domain or 0 with error set
166 */
167Uint8 SDLTest_RandomUint8BoundaryValue(Uint8 boundary1, Uint8 boundary2, SDL_bool validDomain);
168
169/**
170 * Returns a random boundary value for Uint16 within the given boundaries.
171 * Boundaries are inclusive, see the usage examples below. If validDomain
172 * is true, the function will only return valid boundaries, otherwise non-valid
173 * boundaries are also possible.
174 * If boundary1 > boundary2, the values are swapped
175 *
176 * Usage examples:
177 * RandomUint16BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
178 * RandomUint16BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
179 * RandomUint16BoundaryValue(0, 99, SDL_FALSE) returns 100
180 * RandomUint16BoundaryValue(0, 0xFFFF, SDL_FALSE) returns 0 (error set)
181 *
182 * \param boundary1 Lower boundary limit
183 * \param boundary2 Upper boundary limit
184 * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
185 *
186 * \returns a random boundary value for the given range and domain or 0 with error set
187 */
188Uint16 SDLTest_RandomUint16BoundaryValue(Uint16 boundary1, Uint16 boundary2, SDL_bool validDomain);
189
190/**
191 * Returns a random boundary value for Uint32 within the given boundaries.
192 * Boundaries are inclusive, see the usage examples below. If validDomain
193 * is true, the function will only return valid boundaries, otherwise non-valid
194 * boundaries are also possible.
195 * If boundary1 > boundary2, the values are swapped
196 *
197 * Usage examples:
198 * RandomUint32BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
199 * RandomUint32BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
200 * RandomUint32BoundaryValue(0, 99, SDL_FALSE) returns 100
201 * RandomUint32BoundaryValue(0, 0xFFFFFFFF, SDL_FALSE) returns 0 (with error set)
202 *
203 * \param boundary1 Lower boundary limit
204 * \param boundary2 Upper boundary limit
205 * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
206 *
207 * \returns a random boundary value for the given range and domain or 0 with error set
208 */
209Uint32 SDLTest_RandomUint32BoundaryValue(Uint32 boundary1, Uint32 boundary2, SDL_bool validDomain);
210
211/**
212 * Returns a random boundary value for Uint64 within the given boundaries.
213 * Boundaries are inclusive, see the usage examples below. If validDomain
214 * is true, the function will only return valid boundaries, otherwise non-valid
215 * boundaries are also possible.
216 * If boundary1 > boundary2, the values are swapped
217 *
218 * Usage examples:
219 * RandomUint64BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
220 * RandomUint64BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
221 * RandomUint64BoundaryValue(0, 99, SDL_FALSE) returns 100
222 * RandomUint64BoundaryValue(0, 0xFFFFFFFFFFFFFFFF, SDL_FALSE) returns 0 (with error set)
223 *
224 * \param boundary1 Lower boundary limit
225 * \param boundary2 Upper boundary limit
226 * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
227 *
228 * \returns a random boundary value for the given range and domain or 0 with error set
229 */
230Uint64 SDLTest_RandomUint64BoundaryValue(Uint64 boundary1, Uint64 boundary2, SDL_bool validDomain);
231
232/**
233 * Returns a random boundary value for Sint8 within the given boundaries.
234 * Boundaries are inclusive, see the usage examples below. If validDomain
235 * is true, the function will only return valid boundaries, otherwise non-valid
236 * boundaries are also possible.
237 * If boundary1 > boundary2, the values are swapped
238 *
239 * Usage examples:
240 * RandomSint8BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
241 * RandomSint8BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
242 * RandomSint8BoundaryValue(SINT8_MIN, 99, SDL_FALSE) returns 100
243 * RandomSint8BoundaryValue(SINT8_MIN, SINT8_MAX, SDL_FALSE) returns SINT8_MIN (== error value) with error set
244 *
245 * \param boundary1 Lower boundary limit
246 * \param boundary2 Upper boundary limit
247 * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
248 *
249 * \returns a random boundary value for the given range and domain or SINT8_MIN with error set
250 */
251Sint8 SDLTest_RandomSint8BoundaryValue(Sint8 boundary1, Sint8 boundary2, SDL_bool validDomain);
252
253
254/**
255 * Returns a random boundary value for Sint16 within the given boundaries.
256 * Boundaries are inclusive, see the usage examples below. If validDomain
257 * is true, the function will only return valid boundaries, otherwise non-valid
258 * boundaries are also possible.
259 * If boundary1 > boundary2, the values are swapped
260 *
261 * Usage examples:
262 * RandomSint16BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
263 * RandomSint16BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
264 * RandomSint16BoundaryValue(SINT16_MIN, 99, SDL_FALSE) returns 100
265 * RandomSint16BoundaryValue(SINT16_MIN, SINT16_MAX, SDL_FALSE) returns SINT16_MIN (== error value) with error set
266 *
267 * \param boundary1 Lower boundary limit
268 * \param boundary2 Upper boundary limit
269 * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
270 *
271 * \returns a random boundary value for the given range and domain or SINT16_MIN with error set
272 */
273Sint16 SDLTest_RandomSint16BoundaryValue(Sint16 boundary1, Sint16 boundary2, SDL_bool validDomain);
274
275/**
276 * Returns a random boundary value for Sint32 within the given boundaries.
277 * Boundaries are inclusive, see the usage examples below. If validDomain
278 * is true, the function will only return valid boundaries, otherwise non-valid
279 * boundaries are also possible.
280 * If boundary1 > boundary2, the values are swapped
281 *
282 * Usage examples:
283 * RandomSint32BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
284 * RandomSint32BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
285 * RandomSint32BoundaryValue(SINT32_MIN, 99, SDL_FALSE) returns 100
286 * RandomSint32BoundaryValue(SINT32_MIN, SINT32_MAX, SDL_FALSE) returns SINT32_MIN (== error value)
287 *
288 * \param boundary1 Lower boundary limit
289 * \param boundary2 Upper boundary limit
290 * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
291 *
292 * \returns a random boundary value for the given range and domain or SINT32_MIN with error set
293 */
294Sint32 SDLTest_RandomSint32BoundaryValue(Sint32 boundary1, Sint32 boundary2, SDL_bool validDomain);
295
296/**
297 * Returns a random boundary value for Sint64 within the given boundaries.
298 * Boundaries are inclusive, see the usage examples below. If validDomain
299 * is true, the function will only return valid boundaries, otherwise non-valid
300 * boundaries are also possible.
301 * If boundary1 > boundary2, the values are swapped
302 *
303 * Usage examples:
304 * RandomSint64BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
305 * RandomSint64BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
306 * RandomSint64BoundaryValue(SINT64_MIN, 99, SDL_FALSE) returns 100
307 * RandomSint64BoundaryValue(SINT64_MIN, SINT64_MAX, SDL_FALSE) returns SINT64_MIN (== error value) and error set
308 *
309 * \param boundary1 Lower boundary limit
310 * \param boundary2 Upper boundary limit
311 * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
312 *
313 * \returns a random boundary value for the given range and domain or SINT64_MIN with error set
314 */
315Sint64 SDLTest_RandomSint64BoundaryValue(Sint64 boundary1, Sint64 boundary2, SDL_bool validDomain);
316
317
318/**
319 * Returns integer in range [min, max] (inclusive).
320 * Min and max values can be negative values.
321 * If Max in smaller than min, then the values are swapped.
322 * Min and max are the same value, that value will be returned.
323 *
324 * \param min Minimum inclusive value of returned random number
325 * \param max Maximum inclusive value of returned random number
326 *
327 * \returns a generated random integer in range
328 */
329Sint32 SDLTest_RandomIntegerInRange(Sint32 min, Sint32 max);
330
331
332/**
333 * Generates random null-terminated string. The minimum length for
334 * the string is 1 character, maximum length for the string is 255
335 * characters and it can contain ASCII characters from 32 to 126.
336 *
337 * Note: Returned string needs to be deallocated.
338 *
339 * \returns a newly allocated random string; or NULL if length was invalid or string could not be allocated.
340 */
341char * SDLTest_RandomAsciiString(void);
342
343
344/**
345 * Generates random null-terminated string. The maximum length for
346 * the string is defined by the maxLength parameter.
347 * String can contain ASCII characters from 32 to 126.
348 *
349 * Note: Returned string needs to be deallocated.
350 *
351 * \param maxLength The maximum length of the generated string.
352 *
353 * \returns a newly allocated random string; or NULL if maxLength was invalid or string could not be allocated.
354 */
355char * SDLTest_RandomAsciiStringWithMaximumLength(int maxLength);
356
357
358/**
359 * Generates random null-terminated string. The length for
360 * the string is defined by the size parameter.
361 * String can contain ASCII characters from 32 to 126.
362 *
363 * Note: Returned string needs to be deallocated.
364 *
365 * \param size The length of the generated string
366 *
367 * \returns a newly allocated random string; or NULL if size was invalid or string could not be allocated.
368 */
369char * SDLTest_RandomAsciiStringOfSize(int size);
370
371/**
372 * Get the invocation count for the fuzzer since last ...FuzzerInit.
373 *
374 * \returns the invocation count.
375 */
376int SDLTest_GetFuzzerInvocationCount(void);
377
378/* Ends C function definitions when using C++ */
379#ifdef __cplusplus
380}
381#endif
382#include "close_code.h"
383
384#endif /* SDL_test_fuzzer_h_ */
385
386/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_test_harness.h b/vendor/SDL2/include/SDL_test_harness.h new file mode 100644 index 0000000..1fd4236 --- /dev/null +++ b/vendor/SDL2/include/SDL_test_harness.h
@@ -0,0 +1,134 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_test_harness.h
24 *
25 * Include file for SDL test framework.
26 *
27 * This code is a part of the SDL2_test library, not the main SDL library.
28 */
29
30/*
31 Defines types for test case definitions and the test execution harness API.
32
33 Based on original GSOC code by Markus Kauppila <markus.kauppila@gmail.com>
34*/
35
36#ifndef SDL_test_h_arness_h
37#define SDL_test_h_arness_h
38
39#include "begin_code.h"
40/* Set up for C function definitions, even when using C++ */
41#ifdef __cplusplus
42extern "C" {
43#endif
44
45
46/* ! Definitions for test case structures */
47#define TEST_ENABLED 1
48#define TEST_DISABLED 0
49
50/* ! Definition of all the possible test return values of the test case method */
51#define TEST_ABORTED -1
52#define TEST_STARTED 0
53#define TEST_COMPLETED 1
54#define TEST_SKIPPED 2
55
56/* ! Definition of all the possible test results for the harness */
57#define TEST_RESULT_PASSED 0
58#define TEST_RESULT_FAILED 1
59#define TEST_RESULT_NO_ASSERT 2
60#define TEST_RESULT_SKIPPED 3
61#define TEST_RESULT_SETUP_FAILURE 4
62
63/* !< Function pointer to a test case setup function (run before every test) */
64typedef void (*SDLTest_TestCaseSetUpFp)(void *arg);
65
66/* !< Function pointer to a test case function */
67typedef int (*SDLTest_TestCaseFp)(void *arg);
68
69/* !< Function pointer to a test case teardown function (run after every test) */
70typedef void (*SDLTest_TestCaseTearDownFp)(void *arg);
71
72/**
73 * Holds information about a single test case.
74 */
75typedef struct SDLTest_TestCaseReference {
76 /* !< Func2Stress */
77 SDLTest_TestCaseFp testCase;
78 /* !< Short name (or function name) "Func2Stress" */
79 const char *name;
80 /* !< Long name or full description "This test pushes func2() to the limit." */
81 const char *description;
82 /* !< Set to TEST_ENABLED or TEST_DISABLED (test won't be run) */
83 int enabled;
84} SDLTest_TestCaseReference;
85
86/**
87 * Holds information about a test suite (multiple test cases).
88 */
89typedef struct SDLTest_TestSuiteReference {
90 /* !< "PlatformSuite" */
91 const char *name;
92 /* !< The function that is run before each test. NULL skips. */
93 SDLTest_TestCaseSetUpFp testSetUp;
94 /* !< The test cases that are run as part of the suite. Last item should be NULL. */
95 const SDLTest_TestCaseReference **testCases;
96 /* !< The function that is run after each test. NULL skips. */
97 SDLTest_TestCaseTearDownFp testTearDown;
98} SDLTest_TestSuiteReference;
99
100
101/**
102 * \brief Generates a random run seed string for the harness. The generated seed will contain alphanumeric characters (0-9A-Z).
103 *
104 * Note: The returned string needs to be deallocated by the caller.
105 *
106 * \param length The length of the seed string to generate
107 *
108 * \returns the generated seed string
109 */
110char *SDLTest_GenerateRunSeed(const int length);
111
112/**
113 * \brief Execute a test suite using the given run seed and execution key.
114 *
115 * \param testSuites Suites containing the test case.
116 * \param userRunSeed Custom run seed provided by user, or NULL to autogenerate one.
117 * \param userExecKey Custom execution key provided by user, or 0 to autogenerate one.
118 * \param filter Filter specification. NULL disables. Case sensitive.
119 * \param testIterations Number of iterations to run each test case.
120 *
121 * \returns the test run result: 0 when all tests passed, 1 if any tests failed.
122 */
123int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *userRunSeed, Uint64 userExecKey, const char *filter, int testIterations);
124
125
126/* Ends C function definitions when using C++ */
127#ifdef __cplusplus
128}
129#endif
130#include "close_code.h"
131
132#endif /* SDL_test_h_arness_h */
133
134/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_test_images.h b/vendor/SDL2/include/SDL_test_images.h new file mode 100644 index 0000000..e2bfc36 --- /dev/null +++ b/vendor/SDL2/include/SDL_test_images.h
@@ -0,0 +1,78 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_test_images.h
24 *
25 * Include file for SDL test framework.
26 *
27 * This code is a part of the SDL2_test library, not the main SDL library.
28 */
29
30/*
31
32 Defines some images for tests.
33
34*/
35
36#ifndef SDL_test_images_h_
37#define SDL_test_images_h_
38
39#include "SDL.h"
40
41#include "begin_code.h"
42/* Set up for C function definitions, even when using C++ */
43#ifdef __cplusplus
44extern "C" {
45#endif
46
47/**
48 *Type for test images.
49 */
50typedef struct SDLTest_SurfaceImage_s {
51 int width;
52 int height;
53 unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */
54 const char *pixel_data;
55} SDLTest_SurfaceImage_t;
56
57/* Test images */
58SDL_Surface *SDLTest_ImageBlit(void);
59SDL_Surface *SDLTest_ImageBlitColor(void);
60SDL_Surface *SDLTest_ImageBlitAlpha(void);
61SDL_Surface *SDLTest_ImageBlitBlendAdd(void);
62SDL_Surface *SDLTest_ImageBlitBlend(void);
63SDL_Surface *SDLTest_ImageBlitBlendMod(void);
64SDL_Surface *SDLTest_ImageBlitBlendNone(void);
65SDL_Surface *SDLTest_ImageBlitBlendAll(void);
66SDL_Surface *SDLTest_ImageFace(void);
67SDL_Surface *SDLTest_ImagePrimitives(void);
68SDL_Surface *SDLTest_ImagePrimitivesBlend(void);
69
70/* Ends C function definitions when using C++ */
71#ifdef __cplusplus
72}
73#endif
74#include "close_code.h"
75
76#endif /* SDL_test_images_h_ */
77
78/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_test_log.h b/vendor/SDL2/include/SDL_test_log.h new file mode 100644 index 0000000..e3d39ad --- /dev/null +++ b/vendor/SDL2/include/SDL_test_log.h
@@ -0,0 +1,67 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_test_log.h
24 *
25 * Include file for SDL test framework.
26 *
27 * This code is a part of the SDL2_test library, not the main SDL library.
28 */
29
30/*
31 *
32 * Wrapper to log in the TEST category
33 *
34 */
35
36#ifndef SDL_test_log_h_
37#define SDL_test_log_h_
38
39#include "begin_code.h"
40/* Set up for C function definitions, even when using C++ */
41#ifdef __cplusplus
42extern "C" {
43#endif
44
45/**
46 * \brief Prints given message with a timestamp in the TEST category and INFO priority.
47 *
48 * \param fmt Message to be logged
49 */
50void SDLTest_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
51
52/**
53 * \brief Prints given message with a timestamp in the TEST category and the ERROR priority.
54 *
55 * \param fmt Message to be logged
56 */
57void SDLTest_LogError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
58
59/* Ends C function definitions when using C++ */
60#ifdef __cplusplus
61}
62#endif
63#include "close_code.h"
64
65#endif /* SDL_test_log_h_ */
66
67/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_test_md5.h b/vendor/SDL2/include/SDL_test_md5.h new file mode 100644 index 0000000..17b1d2b --- /dev/null +++ b/vendor/SDL2/include/SDL_test_md5.h
@@ -0,0 +1,129 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_test_md5.h
24 *
25 * Include file for SDL test framework.
26 *
27 * This code is a part of the SDL2_test library, not the main SDL library.
28 */
29
30/*
31 ***********************************************************************
32 ** Header file for implementation of MD5 **
33 ** RSA Data Security, Inc. MD5 Message-Digest Algorithm **
34 ** Created: 2/17/90 RLR **
35 ** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version **
36 ** Revised (for MD5): RLR 4/27/91 **
37 ** -- G modified to have y&~z instead of y&z **
38 ** -- FF, GG, HH modified to add in last register done **
39 ** -- Access pattern: round 2 works mod 5, round 3 works mod 3 **
40 ** -- distinct additive constant for each step **
41 ** -- round 4 added, working mod 7 **
42 ***********************************************************************
43*/
44
45/*
46 ***********************************************************************
47 ** Message-digest routines: **
48 ** To form the message digest for a message M **
49 ** (1) Initialize a context buffer mdContext using MD5Init **
50 ** (2) Call MD5Update on mdContext and M **
51 ** (3) Call MD5Final on mdContext **
52 ** The message digest is now in mdContext->digest[0...15] **
53 ***********************************************************************
54*/
55
56#ifndef SDL_test_md5_h_
57#define SDL_test_md5_h_
58
59#include "begin_code.h"
60/* Set up for C function definitions, even when using C++ */
61#ifdef __cplusplus
62extern "C" {
63#endif
64
65/* ------------ Definitions --------- */
66
67/* typedef a 32-bit type */
68 typedef unsigned long int MD5UINT4;
69
70/* Data structure for MD5 (Message-Digest) computation */
71 typedef struct {
72 MD5UINT4 i[2]; /* number of _bits_ handled mod 2^64 */
73 MD5UINT4 buf[4]; /* scratch buffer */
74 unsigned char in[64]; /* input buffer */
75 unsigned char digest[16]; /* actual digest after Md5Final call */
76 } SDLTest_Md5Context;
77
78/* ---------- Function Prototypes ------------- */
79
80/**
81 * \brief initialize the context
82 *
83 * \param mdContext pointer to context variable
84 *
85 * Note: The function initializes the message-digest context
86 * mdContext. Call before each new use of the context -
87 * all fields are set to zero.
88 */
89 void SDLTest_Md5Init(SDLTest_Md5Context * mdContext);
90
91
92/**
93 * \brief update digest from variable length data
94 *
95 * \param mdContext pointer to context variable
96 * \param inBuf pointer to data array/string
97 * \param inLen length of data array/string
98 *
99 * Note: The function updates the message-digest context to account
100 * for the presence of each of the characters inBuf[0..inLen-1]
101 * in the message whose digest is being computed.
102*/
103
104 void SDLTest_Md5Update(SDLTest_Md5Context * mdContext, unsigned char *inBuf,
105 unsigned int inLen);
106
107
108/**
109 * \brief complete digest computation
110 *
111 * \param mdContext pointer to context variable
112 *
113 * Note: The function terminates the message-digest computation and
114 * ends with the desired message digest in mdContext.digest[0..15].
115 * Always call before using the digest[] variable.
116*/
117
118 void SDLTest_Md5Final(SDLTest_Md5Context * mdContext);
119
120
121/* Ends C function definitions when using C++ */
122#ifdef __cplusplus
123}
124#endif
125#include "close_code.h"
126
127#endif /* SDL_test_md5_h_ */
128
129/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_test_memory.h b/vendor/SDL2/include/SDL_test_memory.h new file mode 100644 index 0000000..cc2edc1 --- /dev/null +++ b/vendor/SDL2/include/SDL_test_memory.h
@@ -0,0 +1,63 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_test_memory.h
24 *
25 * Include file for SDL test framework.
26 *
27 * This code is a part of the SDL2_test library, not the main SDL library.
28 */
29
30#ifndef SDL_test_memory_h_
31#define SDL_test_memory_h_
32
33#include "begin_code.h"
34/* Set up for C function definitions, even when using C++ */
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39
40/**
41 * \brief Start tracking SDL memory allocations
42 *
43 * \note This should be called before any other SDL functions for complete tracking coverage
44 */
45int SDLTest_TrackAllocations(void);
46
47/**
48 * \brief Print a log of any outstanding allocations
49 *
50 * \note This can be called after SDL_Quit()
51 */
52void SDLTest_LogAllocations(void);
53
54
55/* Ends C function definitions when using C++ */
56#ifdef __cplusplus
57}
58#endif
59#include "close_code.h"
60
61#endif /* SDL_test_memory_h_ */
62
63/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_test_random.h b/vendor/SDL2/include/SDL_test_random.h new file mode 100644 index 0000000..b1d6060 --- /dev/null +++ b/vendor/SDL2/include/SDL_test_random.h
@@ -0,0 +1,115 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_test_random.h
24 *
25 * Include file for SDL test framework.
26 *
27 * This code is a part of the SDL2_test library, not the main SDL library.
28 */
29
30/*
31
32 A "32-bit Multiply with carry random number generator. Very fast.
33 Includes a list of recommended multipliers.
34
35 multiply-with-carry generator: x(n) = a*x(n-1) + carry mod 2^32.
36 period: (a*2^31)-1
37
38*/
39
40#ifndef SDL_test_random_h_
41#define SDL_test_random_h_
42
43#include "begin_code.h"
44/* Set up for C function definitions, even when using C++ */
45#ifdef __cplusplus
46extern "C" {
47#endif
48
49/* --- Definitions */
50
51/*
52 * Macros that return a random number in a specific format.
53 */
54#define SDLTest_RandomInt(c) ((int)SDLTest_Random(c))
55
56/*
57 * Context structure for the random number generator state.
58 */
59 typedef struct {
60 unsigned int a;
61 unsigned int x;
62 unsigned int c;
63 unsigned int ah;
64 unsigned int al;
65 } SDLTest_RandomContext;
66
67
68/* --- Function prototypes */
69
70/**
71 * \brief Initialize random number generator with two integers.
72 *
73 * Note: The random sequence of numbers returned by ...Random() is the
74 * same for the same two integers and has a period of 2^31.
75 *
76 * \param rndContext pointer to context structure
77 * \param xi integer that defines the random sequence
78 * \param ci integer that defines the random sequence
79 *
80 */
81 void SDLTest_RandomInit(SDLTest_RandomContext * rndContext, unsigned int xi,
82 unsigned int ci);
83
84/**
85 * \brief Initialize random number generator based on current system time.
86 *
87 * \param rndContext pointer to context structure
88 *
89 */
90 void SDLTest_RandomInitTime(SDLTest_RandomContext *rndContext);
91
92
93/**
94 * \brief Initialize random number generator based on current system time.
95 *
96 * Note: ...RandomInit() or ...RandomInitTime() must have been called
97 * before using this function.
98 *
99 * \param rndContext pointer to context structure
100 *
101 * \returns a random number (32bit unsigned integer)
102 *
103 */
104 unsigned int SDLTest_Random(SDLTest_RandomContext *rndContext);
105
106
107/* Ends C function definitions when using C++ */
108#ifdef __cplusplus
109}
110#endif
111#include "close_code.h"
112
113#endif /* SDL_test_random_h_ */
114
115/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_thread.h b/vendor/SDL2/include/SDL_thread.h new file mode 100644 index 0000000..35e680d --- /dev/null +++ b/vendor/SDL2/include/SDL_thread.h
@@ -0,0 +1,464 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_thread_h_
23#define SDL_thread_h_
24
25/**
26 * \file SDL_thread.h
27 *
28 * Header for the SDL thread management routines.
29 */
30
31#include "SDL_stdinc.h"
32#include "SDL_error.h"
33
34/* Thread synchronization primitives */
35#include "SDL_atomic.h"
36#include "SDL_mutex.h"
37
38#if defined(__WIN32__)
39#include <process.h> /* _beginthreadex() and _endthreadex() */
40#endif
41#if defined(__OS2__) /* for _beginthread() and _endthread() */
42#ifndef __EMX__
43#include <process.h>
44#else
45#include <stdlib.h>
46#endif
47#endif
48
49#include "begin_code.h"
50/* Set up for C function definitions, even when using C++ */
51#ifdef __cplusplus
52extern "C" {
53#endif
54
55/* The SDL thread structure, defined in SDL_thread.c */
56struct SDL_Thread;
57typedef struct SDL_Thread SDL_Thread;
58
59/* The SDL thread ID */
60typedef unsigned long SDL_threadID;
61
62/* Thread local storage ID, 0 is the invalid ID */
63typedef unsigned int SDL_TLSID;
64
65/**
66 * The SDL thread priority.
67 *
68 * SDL will make system changes as necessary in order to apply the thread priority.
69 * Code which attempts to control thread state related to priority should be aware
70 * that calling SDL_SetThreadPriority may alter such state.
71 * SDL_HINT_THREAD_PRIORITY_POLICY can be used to control aspects of this behavior.
72 *
73 * \note On many systems you require special privileges to set high or time critical priority.
74 */
75typedef enum {
76 SDL_THREAD_PRIORITY_LOW,
77 SDL_THREAD_PRIORITY_NORMAL,
78 SDL_THREAD_PRIORITY_HIGH,
79 SDL_THREAD_PRIORITY_TIME_CRITICAL
80} SDL_ThreadPriority;
81
82/**
83 * The function passed to SDL_CreateThread().
84 *
85 * \param data what was passed as `data` to SDL_CreateThread()
86 * \returns a value that can be reported through SDL_WaitThread().
87 */
88typedef int (SDLCALL * SDL_ThreadFunction) (void *data);
89
90
91#if defined(__WIN32__)
92/**
93 * \file SDL_thread.h
94 *
95 * We compile SDL into a DLL. This means, that it's the DLL which
96 * creates a new thread for the calling process with the SDL_CreateThread()
97 * API. There is a problem with this, that only the RTL of the SDL2.DLL will
98 * be initialized for those threads, and not the RTL of the calling
99 * application!
100 *
101 * To solve this, we make a little hack here.
102 *
103 * We'll always use the caller's _beginthread() and _endthread() APIs to
104 * start a new thread. This way, if it's the SDL2.DLL which uses this API,
105 * then the RTL of SDL2.DLL will be used to create the new thread, and if it's
106 * the application, then the RTL of the application will be used.
107 *
108 * So, in short:
109 * Always use the _beginthread() and _endthread() of the calling runtime
110 * library!
111 */
112#define SDL_PASSED_BEGINTHREAD_ENDTHREAD
113
114typedef uintptr_t (__cdecl * pfnSDL_CurrentBeginThread)
115 (void *, unsigned, unsigned (__stdcall *func)(void *),
116 void * /*arg*/, unsigned, unsigned * /* threadID */);
117typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code);
118
119#ifndef SDL_beginthread
120#define SDL_beginthread _beginthreadex
121#endif
122#ifndef SDL_endthread
123#define SDL_endthread _endthreadex
124#endif
125
126extern DECLSPEC SDL_Thread *SDLCALL
127SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data,
128 pfnSDL_CurrentBeginThread pfnBeginThread,
129 pfnSDL_CurrentEndThread pfnEndThread);
130
131extern DECLSPEC SDL_Thread *SDLCALL
132SDL_CreateThreadWithStackSize(int (SDLCALL * fn) (void *),
133 const char *name, const size_t stacksize, void *data,
134 pfnSDL_CurrentBeginThread pfnBeginThread,
135 pfnSDL_CurrentEndThread pfnEndThread);
136
137
138#if defined(SDL_CreateThread) && SDL_DYNAMIC_API
139#undef SDL_CreateThread
140#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread)
141#undef SDL_CreateThreadWithStackSize
142#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread)
143#else
144#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread)
145#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)SDL_endthread)
146#endif
147
148#elif defined(__OS2__)
149/*
150 * just like the windows case above: We compile SDL2
151 * into a dll with Watcom's runtime statically linked.
152 */
153#define SDL_PASSED_BEGINTHREAD_ENDTHREAD
154
155typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/);
156typedef void (*pfnSDL_CurrentEndThread)(void);
157
158#ifndef SDL_beginthread
159#define SDL_beginthread _beginthread
160#endif
161#ifndef SDL_endthread
162#define SDL_endthread _endthread
163#endif
164
165extern DECLSPEC SDL_Thread *SDLCALL
166SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data,
167 pfnSDL_CurrentBeginThread pfnBeginThread,
168 pfnSDL_CurrentEndThread pfnEndThread);
169extern DECLSPEC SDL_Thread *SDLCALL
170SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data,
171 pfnSDL_CurrentBeginThread pfnBeginThread,
172 pfnSDL_CurrentEndThread pfnEndThread);
173
174#if defined(SDL_CreateThread) && SDL_DYNAMIC_API
175#undef SDL_CreateThread
176#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread)
177#undef SDL_CreateThreadWithStackSize
178#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread)
179#else
180#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread)
181#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread)
182#endif
183
184#else
185
186/**
187 * Create a new thread with a default stack size.
188 *
189 * This is equivalent to calling:
190 *
191 * ```c
192 * SDL_CreateThreadWithStackSize(fn, name, 0, data);
193 * ```
194 *
195 * \param fn the SDL_ThreadFunction function to call in the new thread
196 * \param name the name of the thread
197 * \param data a pointer that is passed to `fn`
198 * \returns an opaque pointer to the new thread object on success, NULL if the
199 * new thread could not be created; call SDL_GetError() for more
200 * information.
201 *
202 * \since This function is available since SDL 2.0.0.
203 *
204 * \sa SDL_CreateThreadWithStackSize
205 * \sa SDL_WaitThread
206 */
207extern DECLSPEC SDL_Thread *SDLCALL
208SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data);
209
210/**
211 * Create a new thread with a specific stack size.
212 *
213 * SDL makes an attempt to report `name` to the system, so that debuggers can
214 * display it. Not all platforms support this.
215 *
216 * Thread naming is a little complicated: Most systems have very small limits
217 * for the string length (Haiku has 32 bytes, Linux currently has 16, Visual
218 * C++ 6.0 has _nine_!), and possibly other arbitrary rules. You'll have to
219 * see what happens with your system's debugger. The name should be UTF-8 (but
220 * using the naming limits of C identifiers is a better bet). There are no
221 * requirements for thread naming conventions, so long as the string is
222 * null-terminated UTF-8, but these guidelines are helpful in choosing a name:
223 *
224 * https://stackoverflow.com/questions/149932/naming-conventions-for-threads
225 *
226 * If a system imposes requirements, SDL will try to munge the string for it
227 * (truncate, etc), but the original string contents will be available from
228 * SDL_GetThreadName().
229 *
230 * The size (in bytes) of the new stack can be specified. Zero means "use the
231 * system default" which might be wildly different between platforms. x86
232 * Linux generally defaults to eight megabytes, an embedded device might be a
233 * few kilobytes instead. You generally need to specify a stack that is a
234 * multiple of the system's page size (in many cases, this is 4 kilobytes, but
235 * check your system documentation).
236 *
237 * In SDL 2.1, stack size will be folded into the original SDL_CreateThread
238 * function, but for backwards compatibility, this is currently a separate
239 * function.
240 *
241 * \param fn the SDL_ThreadFunction function to call in the new thread
242 * \param name the name of the thread
243 * \param stacksize the size, in bytes, to allocate for the new thread stack.
244 * \param data a pointer that is passed to `fn`
245 * \returns an opaque pointer to the new thread object on success, NULL if the
246 * new thread could not be created; call SDL_GetError() for more
247 * information.
248 *
249 * \since This function is available since SDL 2.0.9.
250 *
251 * \sa SDL_WaitThread
252 */
253extern DECLSPEC SDL_Thread *SDLCALL
254SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data);
255
256#endif
257
258/**
259 * Get the thread name as it was specified in SDL_CreateThread().
260 *
261 * This is internal memory, not to be freed by the caller, and remains valid
262 * until the specified thread is cleaned up by SDL_WaitThread().
263 *
264 * \param thread the thread to query
265 * \returns a pointer to a UTF-8 string that names the specified thread, or
266 * NULL if it doesn't have a name.
267 *
268 * \since This function is available since SDL 2.0.0.
269 *
270 * \sa SDL_CreateThread
271 */
272extern DECLSPEC const char *SDLCALL SDL_GetThreadName(SDL_Thread *thread);
273
274/**
275 * Get the thread identifier for the current thread.
276 *
277 * This thread identifier is as reported by the underlying operating system.
278 * If SDL is running on a platform that does not support threads the return
279 * value will always be zero.
280 *
281 * This function also returns a valid thread ID when called from the main
282 * thread.
283 *
284 * \returns the ID of the current thread.
285 *
286 * \since This function is available since SDL 2.0.0.
287 *
288 * \sa SDL_GetThreadID
289 */
290extern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void);
291
292/**
293 * Get the thread identifier for the specified thread.
294 *
295 * This thread identifier is as reported by the underlying operating system.
296 * If SDL is running on a platform that does not support threads the return
297 * value will always be zero.
298 *
299 * \param thread the thread to query
300 * \returns the ID of the specified thread, or the ID of the current thread if
301 * `thread` is NULL.
302 *
303 * \since This function is available since SDL 2.0.0.
304 *
305 * \sa SDL_ThreadID
306 */
307extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread);
308
309/**
310 * Set the priority for the current thread.
311 *
312 * Note that some platforms will not let you alter the priority (or at least,
313 * promote the thread to a higher priority) at all, and some require you to be
314 * an administrator account. Be prepared for this to fail.
315 *
316 * \param priority the SDL_ThreadPriority to set
317 * \returns 0 on success or a negative error code on failure; call
318 * SDL_GetError() for more information.
319 *
320 * \since This function is available since SDL 2.0.0.
321 */
322extern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority);
323
324/**
325 * Wait for a thread to finish.
326 *
327 * Threads that haven't been detached will remain (as a "zombie") until this
328 * function cleans them up. Not doing so is a resource leak.
329 *
330 * Once a thread has been cleaned up through this function, the SDL_Thread
331 * that references it becomes invalid and should not be referenced again. As
332 * such, only one thread may call SDL_WaitThread() on another.
333 *
334 * The return code for the thread function is placed in the area pointed to by
335 * `status`, if `status` is not NULL.
336 *
337 * You may not wait on a thread that has been used in a call to
338 * SDL_DetachThread(). Use either that function or this one, but not both, or
339 * behavior is undefined.
340 *
341 * It is safe to pass a NULL thread to this function; it is a no-op.
342 *
343 * Note that the thread pointer is freed by this function and is not valid
344 * afterward.
345 *
346 * \param thread the SDL_Thread pointer that was returned from the
347 * SDL_CreateThread() call that started this thread
348 * \param status pointer to an integer that will receive the value returned
349 * from the thread function by its 'return', or NULL to not
350 * receive such value back.
351 *
352 * \since This function is available since SDL 2.0.0.
353 *
354 * \sa SDL_CreateThread
355 * \sa SDL_DetachThread
356 */
357extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status);
358
359/**
360 * Let a thread clean up on exit without intervention.
361 *
362 * A thread may be "detached" to signify that it should not remain until
363 * another thread has called SDL_WaitThread() on it. Detaching a thread is
364 * useful for long-running threads that nothing needs to synchronize with or
365 * further manage. When a detached thread is done, it simply goes away.
366 *
367 * There is no way to recover the return code of a detached thread. If you
368 * need this, don't detach the thread and instead use SDL_WaitThread().
369 *
370 * Once a thread is detached, you should usually assume the SDL_Thread isn't
371 * safe to reference again, as it will become invalid immediately upon the
372 * detached thread's exit, instead of remaining until someone has called
373 * SDL_WaitThread() to finally clean it up. As such, don't detach the same
374 * thread more than once.
375 *
376 * If a thread has already exited when passed to SDL_DetachThread(), it will
377 * stop waiting for a call to SDL_WaitThread() and clean up immediately. It is
378 * not safe to detach a thread that might be used with SDL_WaitThread().
379 *
380 * You may not call SDL_WaitThread() on a thread that has been detached. Use
381 * either that function or this one, but not both, or behavior is undefined.
382 *
383 * It is safe to pass NULL to this function; it is a no-op.
384 *
385 * \param thread the SDL_Thread pointer that was returned from the
386 * SDL_CreateThread() call that started this thread
387 *
388 * \since This function is available since SDL 2.0.2.
389 *
390 * \sa SDL_CreateThread
391 * \sa SDL_WaitThread
392 */
393extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread);
394
395/**
396 * Create a piece of thread-local storage.
397 *
398 * This creates an identifier that is globally visible to all threads but
399 * refers to data that is thread-specific.
400 *
401 * \returns the newly created thread local storage identifier or 0 on error.
402 *
403 * \since This function is available since SDL 2.0.0.
404 *
405 * \sa SDL_TLSGet
406 * \sa SDL_TLSSet
407 */
408extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void);
409
410/**
411 * Get the current thread's value associated with a thread local storage ID.
412 *
413 * \param id the thread local storage ID
414 * \returns the value associated with the ID for the current thread or NULL if
415 * no value has been set; call SDL_GetError() for more information.
416 *
417 * \since This function is available since SDL 2.0.0.
418 *
419 * \sa SDL_TLSCreate
420 * \sa SDL_TLSSet
421 */
422extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id);
423
424/**
425 * Set the current thread's value associated with a thread local storage ID.
426 *
427 * The function prototype for `destructor` is:
428 *
429 * ```c
430 * void destructor(void *value)
431 * ```
432 *
433 * where its parameter `value` is what was passed as `value` to SDL_TLSSet().
434 *
435 * \param id the thread local storage ID
436 * \param value the value to associate with the ID for the current thread
437 * \param destructor a function called when the thread exits, to free the
438 * value
439 * \returns 0 on success or a negative error code on failure; call
440 * SDL_GetError() for more information.
441 *
442 * \since This function is available since SDL 2.0.0.
443 *
444 * \sa SDL_TLSCreate
445 * \sa SDL_TLSGet
446 */
447extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, void (SDLCALL *destructor)(void*));
448
449/**
450 * Cleanup all TLS data for this thread.
451 *
452 * \since This function is available since SDL 2.0.16.
453 */
454extern DECLSPEC void SDLCALL SDL_TLSCleanup(void);
455
456/* Ends C function definitions when using C++ */
457#ifdef __cplusplus
458}
459#endif
460#include "close_code.h"
461
462#endif /* SDL_thread_h_ */
463
464/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_timer.h b/vendor/SDL2/include/SDL_timer.h new file mode 100644 index 0000000..62f81d4 --- /dev/null +++ b/vendor/SDL2/include/SDL_timer.h
@@ -0,0 +1,222 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22#ifndef SDL_timer_h_
23#define SDL_timer_h_
24
25/**
26 * \file SDL_timer.h
27 *
28 * Header for the SDL time management routines.
29 */
30
31#include "SDL_stdinc.h"
32#include "SDL_error.h"
33
34#include "begin_code.h"
35/* Set up for C function definitions, even when using C++ */
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40/**
41 * Get the number of milliseconds since SDL library initialization.
42 *
43 * This value wraps if the program runs for more than ~49 days.
44 *
45 * This function is not recommended as of SDL 2.0.18; use SDL_GetTicks64()
46 * instead, where the value doesn't wrap every ~49 days. There are places in
47 * SDL where we provide a 32-bit timestamp that can not change without
48 * breaking binary compatibility, though, so this function isn't officially
49 * deprecated.
50 *
51 * \returns an unsigned 32-bit value representing the number of milliseconds
52 * since the SDL library initialized.
53 *
54 * \since This function is available since SDL 2.0.0.
55 *
56 * \sa SDL_TICKS_PASSED
57 */
58extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void);
59
60/**
61 * Get the number of milliseconds since SDL library initialization.
62 *
63 * Note that you should not use the SDL_TICKS_PASSED macro with values
64 * returned by this function, as that macro does clever math to compensate for
65 * the 32-bit overflow every ~49 days that SDL_GetTicks() suffers from. 64-bit
66 * values from this function can be safely compared directly.
67 *
68 * For example, if you want to wait 100 ms, you could do this:
69 *
70 * ```c
71 * const Uint64 timeout = SDL_GetTicks64() + 100;
72 * while (SDL_GetTicks64() < timeout) {
73 * // ... do work until timeout has elapsed
74 * }
75 * ```
76 *
77 * \returns an unsigned 64-bit value representing the number of milliseconds
78 * since the SDL library initialized.
79 *
80 * \since This function is available since SDL 2.0.18.
81 */
82extern DECLSPEC Uint64 SDLCALL SDL_GetTicks64(void);
83
84/**
85 * Compare 32-bit SDL ticks values, and return true if `A` has passed `B`.
86 *
87 * This should be used with results from SDL_GetTicks(), as this macro
88 * attempts to deal with the 32-bit counter wrapping back to zero every ~49
89 * days, but should _not_ be used with SDL_GetTicks64(), which does not have
90 * that problem.
91 *
92 * For example, with SDL_GetTicks(), if you want to wait 100 ms, you could
93 * do this:
94 *
95 * ```c
96 * const Uint32 timeout = SDL_GetTicks() + 100;
97 * while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) {
98 * // ... do work until timeout has elapsed
99 * }
100 * ```
101 *
102 * Note that this does not handle tick differences greater
103 * than 2^31 so take care when using the above kind of code
104 * with large timeout delays (tens of days).
105 */
106#define SDL_TICKS_PASSED(A, B) ((Sint32)((B) - (A)) <= 0)
107
108/**
109 * Get the current value of the high resolution counter.
110 *
111 * This function is typically used for profiling.
112 *
113 * The counter values are only meaningful relative to each other. Differences
114 * between values can be converted to times by using
115 * SDL_GetPerformanceFrequency().
116 *
117 * \returns the current counter value.
118 *
119 * \since This function is available since SDL 2.0.0.
120 *
121 * \sa SDL_GetPerformanceFrequency
122 */
123extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void);
124
125/**
126 * Get the count per second of the high resolution counter.
127 *
128 * \returns a platform-specific count per second.
129 *
130 * \since This function is available since SDL 2.0.0.
131 *
132 * \sa SDL_GetPerformanceCounter
133 */
134extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void);
135
136/**
137 * Wait a specified number of milliseconds before returning.
138 *
139 * This function waits a specified number of milliseconds before returning. It
140 * waits at least the specified time, but possibly longer due to OS
141 * scheduling.
142 *
143 * \param ms the number of milliseconds to delay
144 *
145 * \since This function is available since SDL 2.0.0.
146 */
147extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms);
148
149/**
150 * Function prototype for the timer callback function.
151 *
152 * The callback function is passed the current timer interval and returns
153 * the next timer interval. If the returned value is the same as the one
154 * passed in, the periodic alarm continues, otherwise a new alarm is
155 * scheduled. If the callback returns 0, the periodic alarm is cancelled.
156 */
157typedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param);
158
159/**
160 * Definition of the timer ID type.
161 */
162typedef int SDL_TimerID;
163
164/**
165 * Call a callback function at a future time.
166 *
167 * If you use this function, you must pass `SDL_INIT_TIMER` to SDL_Init().
168 *
169 * The callback function is passed the current timer interval and the user
170 * supplied parameter from the SDL_AddTimer() call and should return the next
171 * timer interval. If the value returned from the callback is 0, the timer is
172 * canceled.
173 *
174 * The callback is run on a separate thread.
175 *
176 * Timers take into account the amount of time it took to execute the
177 * callback. For example, if the callback took 250 ms to execute and returned
178 * 1000 (ms), the timer would only wait another 750 ms before its next
179 * iteration.
180 *
181 * Timing may be inexact due to OS scheduling. Be sure to note the current
182 * time with SDL_GetTicks() or SDL_GetPerformanceCounter() in case your
183 * callback needs to adjust for variances.
184 *
185 * \param interval the timer delay, in milliseconds, passed to `callback`
186 * \param callback the SDL_TimerCallback function to call when the specified
187 * `interval` elapses
188 * \param param a pointer that is passed to `callback`
189 * \returns a timer ID or 0 if an error occurs; call SDL_GetError() for more
190 * information.
191 *
192 * \since This function is available since SDL 2.0.0.
193 *
194 * \sa SDL_RemoveTimer
195 */
196extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval,
197 SDL_TimerCallback callback,
198 void *param);
199
200/**
201 * Remove a timer created with SDL_AddTimer().
202 *
203 * \param id the ID of the timer to remove
204 * \returns SDL_TRUE if the timer is removed or SDL_FALSE if the timer wasn't
205 * found.
206 *
207 * \since This function is available since SDL 2.0.0.
208 *
209 * \sa SDL_AddTimer
210 */
211extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID id);
212
213
214/* Ends C function definitions when using C++ */
215#ifdef __cplusplus
216}
217#endif
218#include "close_code.h"
219
220#endif /* SDL_timer_h_ */
221
222/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_touch.h b/vendor/SDL2/include/SDL_touch.h new file mode 100644 index 0000000..9b00716 --- /dev/null +++ b/vendor/SDL2/include/SDL_touch.h
@@ -0,0 +1,142 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_touch.h
24 *
25 * Include file for SDL touch event handling.
26 */
27
28#ifndef SDL_touch_h_
29#define SDL_touch_h_
30
31#include "SDL_stdinc.h"
32#include "SDL_error.h"
33#include "SDL_video.h"
34
35#include "begin_code.h"
36/* Set up for C function definitions, even when using C++ */
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41typedef Sint64 SDL_TouchID;
42typedef Sint64 SDL_FingerID;
43
44typedef enum
45{
46 SDL_TOUCH_DEVICE_INVALID = -1,
47 SDL_TOUCH_DEVICE_DIRECT, /* touch screen with window-relative coordinates */
48 SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE, /* trackpad with absolute device coordinates */
49 SDL_TOUCH_DEVICE_INDIRECT_RELATIVE /* trackpad with screen cursor-relative coordinates */
50} SDL_TouchDeviceType;
51
52typedef struct SDL_Finger
53{
54 SDL_FingerID id;
55 float x;
56 float y;
57 float pressure;
58} SDL_Finger;
59
60/* Used as the device ID for mouse events simulated with touch input */
61#define SDL_TOUCH_MOUSEID ((Uint32)-1)
62
63/* Used as the SDL_TouchID for touch events simulated with mouse input */
64#define SDL_MOUSE_TOUCHID ((Sint64)-1)
65
66
67/**
68 * Get the number of registered touch devices.
69 *
70 * On some platforms SDL first sees the touch device if it was actually used.
71 * Therefore SDL_GetNumTouchDevices() may return 0 although devices are
72 * available. After using all devices at least once the number will be
73 * correct.
74 *
75 * This was fixed for Android in SDL 2.0.1.
76 *
77 * \returns the number of registered touch devices.
78 *
79 * \since This function is available since SDL 2.0.0.
80 *
81 * \sa SDL_GetTouchDevice
82 */
83extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void);
84
85/**
86 * Get the touch ID with the given index.
87 *
88 * \param index the touch device index
89 * \returns the touch ID with the given index on success or 0 if the index is
90 * invalid; call SDL_GetError() for more information.
91 *
92 * \since This function is available since SDL 2.0.0.
93 *
94 * \sa SDL_GetNumTouchDevices
95 */
96extern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index);
97
98/**
99 * Get the type of the given touch device.
100 *
101 * \since This function is available since SDL 2.0.10.
102 */
103extern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID touchID);
104
105/**
106 * Get the number of active fingers for a given touch device.
107 *
108 * \param touchID the ID of a touch device
109 * \returns the number of active fingers for a given touch device on success
110 * or 0 on failure; call SDL_GetError() for more information.
111 *
112 * \since This function is available since SDL 2.0.0.
113 *
114 * \sa SDL_GetTouchFinger
115 */
116extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID);
117
118/**
119 * Get the finger object for specified touch device ID and finger index.
120 *
121 * The returned resource is owned by SDL and should not be deallocated.
122 *
123 * \param touchID the ID of the requested touch device
124 * \param index the index of the requested finger
125 * \returns a pointer to the SDL_Finger object or NULL if no object at the
126 * given ID and index could be found.
127 *
128 * \since This function is available since SDL 2.0.0.
129 *
130 * \sa SDL_RecordGesture
131 */
132extern DECLSPEC SDL_Finger * SDLCALL SDL_GetTouchFinger(SDL_TouchID touchID, int index);
133
134/* Ends C function definitions when using C++ */
135#ifdef __cplusplus
136}
137#endif
138#include "close_code.h"
139
140#endif /* SDL_touch_h_ */
141
142/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_types.h b/vendor/SDL2/include/SDL_types.h new file mode 100644 index 0000000..355fb50 --- /dev/null +++ b/vendor/SDL2/include/SDL_types.h
@@ -0,0 +1,29 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_types.h
24 *
25 * \deprecated
26 */
27
28/* DEPRECATED */
29#include "SDL_stdinc.h"
diff --git a/vendor/SDL2/include/SDL_version.h b/vendor/SDL2/include/SDL_version.h new file mode 100644 index 0000000..2716eba --- /dev/null +++ b/vendor/SDL2/include/SDL_version.h
@@ -0,0 +1,188 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_version.h
24 *
25 * This header defines the current SDL version.
26 */
27
28#ifndef SDL_version_h_
29#define SDL_version_h_
30
31#include "SDL_stdinc.h"
32
33#include "begin_code.h"
34/* Set up for C function definitions, even when using C++ */
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39/**
40 * Information about the version of SDL in use.
41 *
42 * Represents the library's version as three levels: major revision
43 * (increments with massive changes, additions, and enhancements),
44 * minor revision (increments with backwards-compatible changes to the
45 * major revision), and patchlevel (increments with fixes to the minor
46 * revision).
47 *
48 * \sa SDL_VERSION
49 * \sa SDL_GetVersion
50 */
51typedef struct SDL_version
52{
53 Uint8 major; /**< major version */
54 Uint8 minor; /**< minor version */
55 Uint8 patch; /**< update version */
56} SDL_version;
57
58/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL
59*/
60#define SDL_MAJOR_VERSION 2
61#define SDL_MINOR_VERSION 0
62#define SDL_PATCHLEVEL 20
63
64/**
65 * Macro to determine SDL version program was compiled against.
66 *
67 * This macro fills in a SDL_version structure with the version of the
68 * library you compiled against. This is determined by what header the
69 * compiler uses. Note that if you dynamically linked the library, you might
70 * have a slightly newer or older version at runtime. That version can be
71 * determined with SDL_GetVersion(), which, unlike SDL_VERSION(),
72 * is not a macro.
73 *
74 * \param x A pointer to a SDL_version struct to initialize.
75 *
76 * \sa SDL_version
77 * \sa SDL_GetVersion
78 */
79#define SDL_VERSION(x) \
80{ \
81 (x)->major = SDL_MAJOR_VERSION; \
82 (x)->minor = SDL_MINOR_VERSION; \
83 (x)->patch = SDL_PATCHLEVEL; \
84}
85
86/**
87 * This macro turns the version numbers into a numeric value:
88 * \verbatim
89 (1,2,3) -> (1203)
90 \endverbatim
91 *
92 * This assumes that there will never be more than 100 patchlevels.
93 */
94#define SDL_VERSIONNUM(X, Y, Z) \
95 ((X)*1000 + (Y)*100 + (Z))
96
97/**
98 * This is the version number macro for the current SDL version.
99 */
100#define SDL_COMPILEDVERSION \
101 SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL)
102
103/**
104 * This macro will evaluate to true if compiled with SDL at least X.Y.Z.
105 */
106#define SDL_VERSION_ATLEAST(X, Y, Z) \
107 (SDL_COMPILEDVERSION >= SDL_VERSIONNUM(X, Y, Z))
108
109/**
110 * Get the version of SDL that is linked against your program.
111 *
112 * If you are linking to SDL dynamically, then it is possible that the current
113 * version will be different than the version you compiled against. This
114 * function returns the current version, while SDL_VERSION() is a macro that
115 * tells you what version you compiled with.
116 *
117 * This function may be called safely at any time, even before SDL_Init().
118 *
119 * \param ver the SDL_version structure that contains the version information
120 *
121 * \since This function is available since SDL 2.0.0.
122 *
123 * \sa SDL_GetRevision
124 */
125extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver);
126
127/**
128 * Get the code revision of SDL that is linked against your program.
129 *
130 * This value is the revision of the code you are linked with and may be
131 * different from the code you are compiling with, which is found in the
132 * constant SDL_REVISION.
133 *
134 * The revision is arbitrary string (a hash value) uniquely identifying the
135 * exact revision of the SDL library in use, and is only useful in comparing
136 * against other revisions. It is NOT an incrementing number.
137 *
138 * If SDL wasn't built from a git repository with the appropriate tools, this
139 * will return an empty string.
140 *
141 * Prior to SDL 2.0.16, before development moved to GitHub, this returned a
142 * hash for a Mercurial repository.
143 *
144 * You shouldn't use this function for anything but logging it for debugging
145 * purposes. The string is not intended to be reliable in any way.
146 *
147 * \returns an arbitrary string, uniquely identifying the exact revision of
148 * the SDL library in use.
149 *
150 * \since This function is available since SDL 2.0.0.
151 *
152 * \sa SDL_GetVersion
153 */
154extern DECLSPEC const char *SDLCALL SDL_GetRevision(void);
155
156/**
157 * Obsolete function, do not use.
158 *
159 * When SDL was hosted in a Mercurial repository, and was built carefully,
160 * this would return the revision number that the build was created from. This
161 * number was not reliable for several reasons, but more importantly, SDL is
162 * now hosted in a git repository, which does not offer numbers at all, only
163 * hashes. This function only ever returns zero now. Don't use it.
164 *
165 * Before SDL 2.0.16, this might have returned an unreliable, but non-zero
166 * number.
167 *
168 * \deprecated Use SDL_GetRevision() instead; if SDL was carefully built, it
169 * will return a git hash.
170 *
171 * \returns zero, always, in modern SDL releases.
172 *
173 * \since This function is available since SDL 2.0.0.
174 *
175 * \sa SDL_GetRevision
176 */
177extern SDL_DEPRECATED DECLSPEC int SDLCALL SDL_GetRevisionNumber(void);
178
179
180/* Ends C function definitions when using C++ */
181#ifdef __cplusplus
182}
183#endif
184#include "close_code.h"
185
186#endif /* SDL_version_h_ */
187
188/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_video.h b/vendor/SDL2/include/SDL_video.h new file mode 100644 index 0000000..e43cb27 --- /dev/null +++ b/vendor/SDL2/include/SDL_video.h
@@ -0,0 +1,2088 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_video.h
24 *
25 * Header file for SDL video functions.
26 */
27
28#ifndef SDL_video_h_
29#define SDL_video_h_
30
31#include "SDL_stdinc.h"
32#include "SDL_pixels.h"
33#include "SDL_rect.h"
34#include "SDL_surface.h"
35
36#include "begin_code.h"
37/* Set up for C function definitions, even when using C++ */
38#ifdef __cplusplus
39extern "C" {
40#endif
41
42/**
43 * \brief The structure that defines a display mode
44 *
45 * \sa SDL_GetNumDisplayModes()
46 * \sa SDL_GetDisplayMode()
47 * \sa SDL_GetDesktopDisplayMode()
48 * \sa SDL_GetCurrentDisplayMode()
49 * \sa SDL_GetClosestDisplayMode()
50 * \sa SDL_SetWindowDisplayMode()
51 * \sa SDL_GetWindowDisplayMode()
52 */
53typedef struct
54{
55 Uint32 format; /**< pixel format */
56 int w; /**< width, in screen coordinates */
57 int h; /**< height, in screen coordinates */
58 int refresh_rate; /**< refresh rate (or zero for unspecified) */
59 void *driverdata; /**< driver-specific data, initialize to 0 */
60} SDL_DisplayMode;
61
62/**
63 * \brief The type used to identify a window
64 *
65 * \sa SDL_CreateWindow()
66 * \sa SDL_CreateWindowFrom()
67 * \sa SDL_DestroyWindow()
68 * \sa SDL_FlashWindow()
69 * \sa SDL_GetWindowData()
70 * \sa SDL_GetWindowFlags()
71 * \sa SDL_GetWindowGrab()
72 * \sa SDL_GetWindowKeyboardGrab()
73 * \sa SDL_GetWindowMouseGrab()
74 * \sa SDL_GetWindowPosition()
75 * \sa SDL_GetWindowSize()
76 * \sa SDL_GetWindowTitle()
77 * \sa SDL_HideWindow()
78 * \sa SDL_MaximizeWindow()
79 * \sa SDL_MinimizeWindow()
80 * \sa SDL_RaiseWindow()
81 * \sa SDL_RestoreWindow()
82 * \sa SDL_SetWindowData()
83 * \sa SDL_SetWindowFullscreen()
84 * \sa SDL_SetWindowGrab()
85 * \sa SDL_SetWindowKeyboardGrab()
86 * \sa SDL_SetWindowMouseGrab()
87 * \sa SDL_SetWindowIcon()
88 * \sa SDL_SetWindowPosition()
89 * \sa SDL_SetWindowSize()
90 * \sa SDL_SetWindowBordered()
91 * \sa SDL_SetWindowResizable()
92 * \sa SDL_SetWindowTitle()
93 * \sa SDL_ShowWindow()
94 */
95typedef struct SDL_Window SDL_Window;
96
97/**
98 * \brief The flags on a window
99 *
100 * \sa SDL_GetWindowFlags()
101 */
102typedef enum
103{
104 SDL_WINDOW_FULLSCREEN = 0x00000001, /**< fullscreen window */
105 SDL_WINDOW_OPENGL = 0x00000002, /**< window usable with OpenGL context */
106 SDL_WINDOW_SHOWN = 0x00000004, /**< window is visible */
107 SDL_WINDOW_HIDDEN = 0x00000008, /**< window is not visible */
108 SDL_WINDOW_BORDERLESS = 0x00000010, /**< no window decoration */
109 SDL_WINDOW_RESIZABLE = 0x00000020, /**< window can be resized */
110 SDL_WINDOW_MINIMIZED = 0x00000040, /**< window is minimized */
111 SDL_WINDOW_MAXIMIZED = 0x00000080, /**< window is maximized */
112 SDL_WINDOW_MOUSE_GRABBED = 0x00000100, /**< window has grabbed mouse input */
113 SDL_WINDOW_INPUT_FOCUS = 0x00000200, /**< window has input focus */
114 SDL_WINDOW_MOUSE_FOCUS = 0x00000400, /**< window has mouse focus */
115 SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ),
116 SDL_WINDOW_FOREIGN = 0x00000800, /**< window not created by SDL */
117 SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000, /**< window should be created in high-DPI mode if supported.
118 On macOS NSHighResolutionCapable must be set true in the
119 application's Info.plist for this to have any effect. */
120 SDL_WINDOW_MOUSE_CAPTURE = 0x00004000, /**< window has mouse captured (unrelated to MOUSE_GRABBED) */
121 SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000, /**< window should always be above others */
122 SDL_WINDOW_SKIP_TASKBAR = 0x00010000, /**< window should not be added to the taskbar */
123 SDL_WINDOW_UTILITY = 0x00020000, /**< window should be treated as a utility window */
124 SDL_WINDOW_TOOLTIP = 0x00040000, /**< window should be treated as a tooltip */
125 SDL_WINDOW_POPUP_MENU = 0x00080000, /**< window should be treated as a popup menu */
126 SDL_WINDOW_KEYBOARD_GRABBED = 0x00100000, /**< window has grabbed keyboard input */
127 SDL_WINDOW_VULKAN = 0x10000000, /**< window usable for Vulkan surface */
128 SDL_WINDOW_METAL = 0x20000000, /**< window usable for Metal view */
129
130 SDL_WINDOW_INPUT_GRABBED = SDL_WINDOW_MOUSE_GRABBED /**< equivalent to SDL_WINDOW_MOUSE_GRABBED for compatibility */
131} SDL_WindowFlags;
132
133/**
134 * \brief Used to indicate that you don't care what the window position is.
135 */
136#define SDL_WINDOWPOS_UNDEFINED_MASK 0x1FFF0000u
137#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X) (SDL_WINDOWPOS_UNDEFINED_MASK|(X))
138#define SDL_WINDOWPOS_UNDEFINED SDL_WINDOWPOS_UNDEFINED_DISPLAY(0)
139#define SDL_WINDOWPOS_ISUNDEFINED(X) \
140 (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK)
141
142/**
143 * \brief Used to indicate that the window position should be centered.
144 */
145#define SDL_WINDOWPOS_CENTERED_MASK 0x2FFF0000u
146#define SDL_WINDOWPOS_CENTERED_DISPLAY(X) (SDL_WINDOWPOS_CENTERED_MASK|(X))
147#define SDL_WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED_DISPLAY(0)
148#define SDL_WINDOWPOS_ISCENTERED(X) \
149 (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK)
150
151/**
152 * \brief Event subtype for window events
153 */
154typedef enum
155{
156 SDL_WINDOWEVENT_NONE, /**< Never used */
157 SDL_WINDOWEVENT_SHOWN, /**< Window has been shown */
158 SDL_WINDOWEVENT_HIDDEN, /**< Window has been hidden */
159 SDL_WINDOWEVENT_EXPOSED, /**< Window has been exposed and should be
160 redrawn */
161 SDL_WINDOWEVENT_MOVED, /**< Window has been moved to data1, data2
162 */
163 SDL_WINDOWEVENT_RESIZED, /**< Window has been resized to data1xdata2 */
164 SDL_WINDOWEVENT_SIZE_CHANGED, /**< The window size has changed, either as
165 a result of an API call or through the
166 system or user changing the window size. */
167 SDL_WINDOWEVENT_MINIMIZED, /**< Window has been minimized */
168 SDL_WINDOWEVENT_MAXIMIZED, /**< Window has been maximized */
169 SDL_WINDOWEVENT_RESTORED, /**< Window has been restored to normal size
170 and position */
171 SDL_WINDOWEVENT_ENTER, /**< Window has gained mouse focus */
172 SDL_WINDOWEVENT_LEAVE, /**< Window has lost mouse focus */
173 SDL_WINDOWEVENT_FOCUS_GAINED, /**< Window has gained keyboard focus */
174 SDL_WINDOWEVENT_FOCUS_LOST, /**< Window has lost keyboard focus */
175 SDL_WINDOWEVENT_CLOSE, /**< The window manager requests that the window be closed */
176 SDL_WINDOWEVENT_TAKE_FOCUS, /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */
177 SDL_WINDOWEVENT_HIT_TEST, /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */
178 SDL_WINDOWEVENT_ICCPROF_CHANGED,/**< The ICC profile of the window's display has changed. */
179 SDL_WINDOWEVENT_DISPLAY_CHANGED /**< Window has been moved to display data1. */
180} SDL_WindowEventID;
181
182/**
183 * \brief Event subtype for display events
184 */
185typedef enum
186{
187 SDL_DISPLAYEVENT_NONE, /**< Never used */
188 SDL_DISPLAYEVENT_ORIENTATION, /**< Display orientation has changed to data1 */
189 SDL_DISPLAYEVENT_CONNECTED, /**< Display has been added to the system */
190 SDL_DISPLAYEVENT_DISCONNECTED /**< Display has been removed from the system */
191} SDL_DisplayEventID;
192
193/**
194 * \brief Display orientation
195 */
196typedef enum
197{
198 SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */
199 SDL_ORIENTATION_LANDSCAPE, /**< The display is in landscape mode, with the right side up, relative to portrait mode */
200 SDL_ORIENTATION_LANDSCAPE_FLIPPED, /**< The display is in landscape mode, with the left side up, relative to portrait mode */
201 SDL_ORIENTATION_PORTRAIT, /**< The display is in portrait mode */
202 SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */
203} SDL_DisplayOrientation;
204
205/**
206 * \brief Window flash operation
207 */
208typedef enum
209{
210 SDL_FLASH_CANCEL, /**< Cancel any window flash state */
211 SDL_FLASH_BRIEFLY, /**< Flash the window briefly to get attention */
212 SDL_FLASH_UNTIL_FOCUSED /**< Flash the window until it gets focus */
213} SDL_FlashOperation;
214
215/**
216 * \brief An opaque handle to an OpenGL context.
217 */
218typedef void *SDL_GLContext;
219
220/**
221 * \brief OpenGL configuration attributes
222 */
223typedef enum
224{
225 SDL_GL_RED_SIZE,
226 SDL_GL_GREEN_SIZE,
227 SDL_GL_BLUE_SIZE,
228 SDL_GL_ALPHA_SIZE,
229 SDL_GL_BUFFER_SIZE,
230 SDL_GL_DOUBLEBUFFER,
231 SDL_GL_DEPTH_SIZE,
232 SDL_GL_STENCIL_SIZE,
233 SDL_GL_ACCUM_RED_SIZE,
234 SDL_GL_ACCUM_GREEN_SIZE,
235 SDL_GL_ACCUM_BLUE_SIZE,
236 SDL_GL_ACCUM_ALPHA_SIZE,
237 SDL_GL_STEREO,
238 SDL_GL_MULTISAMPLEBUFFERS,
239 SDL_GL_MULTISAMPLESAMPLES,
240 SDL_GL_ACCELERATED_VISUAL,
241 SDL_GL_RETAINED_BACKING,
242 SDL_GL_CONTEXT_MAJOR_VERSION,
243 SDL_GL_CONTEXT_MINOR_VERSION,
244 SDL_GL_CONTEXT_EGL,
245 SDL_GL_CONTEXT_FLAGS,
246 SDL_GL_CONTEXT_PROFILE_MASK,
247 SDL_GL_SHARE_WITH_CURRENT_CONTEXT,
248 SDL_GL_FRAMEBUFFER_SRGB_CAPABLE,
249 SDL_GL_CONTEXT_RELEASE_BEHAVIOR,
250 SDL_GL_CONTEXT_RESET_NOTIFICATION,
251 SDL_GL_CONTEXT_NO_ERROR
252} SDL_GLattr;
253
254typedef enum
255{
256 SDL_GL_CONTEXT_PROFILE_CORE = 0x0001,
257 SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002,
258 SDL_GL_CONTEXT_PROFILE_ES = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */
259} SDL_GLprofile;
260
261typedef enum
262{
263 SDL_GL_CONTEXT_DEBUG_FLAG = 0x0001,
264 SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002,
265 SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG = 0x0004,
266 SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008
267} SDL_GLcontextFlag;
268
269typedef enum
270{
271 SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE = 0x0000,
272 SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x0001
273} SDL_GLcontextReleaseFlag;
274
275typedef enum
276{
277 SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000,
278 SDL_GL_CONTEXT_RESET_LOSE_CONTEXT = 0x0001
279} SDL_GLContextResetNotification;
280
281/* Function prototypes */
282
283/**
284 * Get the number of video drivers compiled into SDL.
285 *
286 * \returns a number >= 1 on success or a negative error code on failure; call
287 * SDL_GetError() for more information.
288 *
289 * \since This function is available since SDL 2.0.0.
290 *
291 * \sa SDL_GetVideoDriver
292 */
293extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void);
294
295/**
296 * Get the name of a built in video driver.
297 *
298 * The video drivers are presented in the order in which they are normally
299 * checked during initialization.
300 *
301 * \param index the index of a video driver
302 * \returns the name of the video driver with the given **index**.
303 *
304 * \since This function is available since SDL 2.0.0.
305 *
306 * \sa SDL_GetNumVideoDrivers
307 */
308extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index);
309
310/**
311 * Initialize the video subsystem, optionally specifying a video driver.
312 *
313 * This function initializes the video subsystem, setting up a connection to
314 * the window manager, etc, and determines the available display modes and
315 * pixel formats, but does not initialize a window or graphics mode.
316 *
317 * If you use this function and you haven't used the SDL_INIT_VIDEO flag with
318 * either SDL_Init() or SDL_InitSubSystem(), you should call SDL_VideoQuit()
319 * before calling SDL_Quit().
320 *
321 * It is safe to call this function multiple times. SDL_VideoInit() will call
322 * SDL_VideoQuit() itself if the video subsystem has already been initialized.
323 *
324 * You can use SDL_GetNumVideoDrivers() and SDL_GetVideoDriver() to find a
325 * specific `driver_name`.
326 *
327 * \param driver_name the name of a video driver to initialize, or NULL for
328 * the default driver
329 * \returns 0 on success or a negative error code on failure; call
330 * SDL_GetError() for more information.
331 *
332 * \since This function is available since SDL 2.0.0.
333 *
334 * \sa SDL_GetNumVideoDrivers
335 * \sa SDL_GetVideoDriver
336 * \sa SDL_InitSubSystem
337 * \sa SDL_VideoQuit
338 */
339extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name);
340
341/**
342 * Shut down the video subsystem, if initialized with SDL_VideoInit().
343 *
344 * This function closes all windows, and restores the original video mode.
345 *
346 * \since This function is available since SDL 2.0.0.
347 *
348 * \sa SDL_VideoInit
349 */
350extern DECLSPEC void SDLCALL SDL_VideoQuit(void);
351
352/**
353 * Get the name of the currently initialized video driver.
354 *
355 * \returns the name of the current video driver or NULL if no driver has been
356 * initialized.
357 *
358 * \since This function is available since SDL 2.0.0.
359 *
360 * \sa SDL_GetNumVideoDrivers
361 * \sa SDL_GetVideoDriver
362 */
363extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void);
364
365/**
366 * Get the number of available video displays.
367 *
368 * \returns a number >= 1 or a negative error code on failure; call
369 * SDL_GetError() for more information.
370 *
371 * \since This function is available since SDL 2.0.0.
372 *
373 * \sa SDL_GetDisplayBounds
374 */
375extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void);
376
377/**
378 * Get the name of a display in UTF-8 encoding.
379 *
380 * \param displayIndex the index of display from which the name should be
381 * queried
382 * \returns the name of a display or NULL for an invalid display index or
383 * failure; call SDL_GetError() for more information.
384 *
385 * \since This function is available since SDL 2.0.0.
386 *
387 * \sa SDL_GetNumVideoDisplays
388 */
389extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex);
390
391/**
392 * Get the desktop area represented by a display.
393 *
394 * The primary display (`displayIndex` zero) is always located at 0,0.
395 *
396 * \param displayIndex the index of the display to query
397 * \param rect the SDL_Rect structure filled in with the display bounds
398 * \returns 0 on success or a negative error code on failure; call
399 * SDL_GetError() for more information.
400 *
401 * \since This function is available since SDL 2.0.0.
402 *
403 * \sa SDL_GetNumVideoDisplays
404 */
405extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect);
406
407/**
408 * Get the usable desktop area represented by a display.
409 *
410 * The primary display (`displayIndex` zero) is always located at 0,0.
411 *
412 * This is the same area as SDL_GetDisplayBounds() reports, but with portions
413 * reserved by the system removed. For example, on Apple's macOS, this
414 * subtracts the area occupied by the menu bar and dock.
415 *
416 * Setting a window to be fullscreen generally bypasses these unusable areas,
417 * so these are good guidelines for the maximum space available to a
418 * non-fullscreen window.
419 *
420 * The parameter `rect` is ignored if it is NULL.
421 *
422 * This function also returns -1 if the parameter `displayIndex` is out of
423 * range.
424 *
425 * \param displayIndex the index of the display to query the usable bounds
426 * from
427 * \param rect the SDL_Rect structure filled in with the display bounds
428 * \returns 0 on success or a negative error code on failure; call
429 * SDL_GetError() for more information.
430 *
431 * \since This function is available since SDL 2.0.5.
432 *
433 * \sa SDL_GetDisplayBounds
434 * \sa SDL_GetNumVideoDisplays
435 */
436extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect);
437
438/**
439 * Get the dots/pixels-per-inch for a display.
440 *
441 * Diagonal, horizontal and vertical DPI can all be optionally returned if the
442 * appropriate parameter is non-NULL.
443 *
444 * A failure of this function usually means that either no DPI information is
445 * available or the `displayIndex` is out of range.
446 *
447 * \param displayIndex the index of the display from which DPI information
448 * should be queried
449 * \param ddpi a pointer filled in with the diagonal DPI of the display; may
450 * be NULL
451 * \param hdpi a pointer filled in with the horizontal DPI of the display; may
452 * be NULL
453 * \param vdpi a pointer filled in with the vertical DPI of the display; may
454 * be NULL
455 * \returns 0 on success or a negative error code on failure; call
456 * SDL_GetError() for more information.
457 *
458 * \since This function is available since SDL 2.0.4.
459 *
460 * \sa SDL_GetNumVideoDisplays
461 */
462extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi);
463
464/**
465 * Get the orientation of a display.
466 *
467 * \param displayIndex the index of the display to query
468 * \returns The SDL_DisplayOrientation enum value of the display, or
469 * `SDL_ORIENTATION_UNKNOWN` if it isn't available.
470 *
471 * \since This function is available since SDL 2.0.9.
472 *
473 * \sa SDL_GetNumVideoDisplays
474 */
475extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex);
476
477/**
478 * Get the number of available display modes.
479 *
480 * The `displayIndex` needs to be in the range from 0 to
481 * SDL_GetNumVideoDisplays() - 1.
482 *
483 * \param displayIndex the index of the display to query
484 * \returns a number >= 1 on success or a negative error code on failure; call
485 * SDL_GetError() for more information.
486 *
487 * \since This function is available since SDL 2.0.0.
488 *
489 * \sa SDL_GetDisplayMode
490 * \sa SDL_GetNumVideoDisplays
491 */
492extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex);
493
494/**
495 * Get information about a specific display mode.
496 *
497 * The display modes are sorted in this priority:
498 *
499 * - width -> largest to smallest
500 * - height -> largest to smallest
501 * - bits per pixel -> more colors to fewer colors
502 * - packed pixel layout -> largest to smallest
503 * - refresh rate -> highest to lowest
504 *
505 * \param displayIndex the index of the display to query
506 * \param modeIndex the index of the display mode to query
507 * \param mode an SDL_DisplayMode structure filled in with the mode at
508 * `modeIndex`
509 * \returns 0 on success or a negative error code on failure; call
510 * SDL_GetError() for more information.
511 *
512 * \since This function is available since SDL 2.0.0.
513 *
514 * \sa SDL_GetNumDisplayModes
515 */
516extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex,
517 SDL_DisplayMode * mode);
518
519/**
520 * Get information about the desktop's display mode.
521 *
522 * There's a difference between this function and SDL_GetCurrentDisplayMode()
523 * when SDL runs fullscreen and has changed the resolution. In that case this
524 * function will return the previous native display mode, and not the current
525 * display mode.
526 *
527 * \param displayIndex the index of the display to query
528 * \param mode an SDL_DisplayMode structure filled in with the current display
529 * mode
530 * \returns 0 on success or a negative error code on failure; call
531 * SDL_GetError() for more information.
532 *
533 * \since This function is available since SDL 2.0.0.
534 *
535 * \sa SDL_GetCurrentDisplayMode
536 * \sa SDL_GetDisplayMode
537 * \sa SDL_SetWindowDisplayMode
538 */
539extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode);
540
541/**
542 * Get information about the current display mode.
543 *
544 * There's a difference between this function and SDL_GetDesktopDisplayMode()
545 * when SDL runs fullscreen and has changed the resolution. In that case this
546 * function will return the current display mode, and not the previous native
547 * display mode.
548 *
549 * \param displayIndex the index of the display to query
550 * \param mode an SDL_DisplayMode structure filled in with the current display
551 * mode
552 * \returns 0 on success or a negative error code on failure; call
553 * SDL_GetError() for more information.
554 *
555 * \since This function is available since SDL 2.0.0.
556 *
557 * \sa SDL_GetDesktopDisplayMode
558 * \sa SDL_GetDisplayMode
559 * \sa SDL_GetNumVideoDisplays
560 * \sa SDL_SetWindowDisplayMode
561 */
562extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode);
563
564
565/**
566 * Get the closest match to the requested display mode.
567 *
568 * The available display modes are scanned and `closest` is filled in with the
569 * closest mode matching the requested mode and returned. The mode format and
570 * refresh rate default to the desktop mode if they are set to 0. The modes
571 * are scanned with size being first priority, format being second priority,
572 * and finally checking the refresh rate. If all the available modes are too
573 * small, then NULL is returned.
574 *
575 * \param displayIndex the index of the display to query
576 * \param mode an SDL_DisplayMode structure containing the desired display
577 * mode
578 * \param closest an SDL_DisplayMode structure filled in with the closest
579 * match of the available display modes
580 * \returns the passed in value `closest` or NULL if no matching video mode
581 * was available; call SDL_GetError() for more information.
582 *
583 * \since This function is available since SDL 2.0.0.
584 *
585 * \sa SDL_GetDisplayMode
586 * \sa SDL_GetNumDisplayModes
587 */
588extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest);
589
590/**
591 * Get the index of the display associated with a window.
592 *
593 * \param window the window to query
594 * \returns the index of the display containing the center of the window on
595 * success or a negative error code on failure; call SDL_GetError()
596 * for more information.
597 *
598 * \since This function is available since SDL 2.0.0.
599 *
600 * \sa SDL_GetDisplayBounds
601 * \sa SDL_GetNumVideoDisplays
602 */
603extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window);
604
605/**
606 * Set the display mode to use when a window is visible at fullscreen.
607 *
608 * This only affects the display mode used when the window is fullscreen. To
609 * change the window size when the window is not fullscreen, use
610 * SDL_SetWindowSize().
611 *
612 * \param window the window to affect
613 * \param mode the SDL_DisplayMode structure representing the mode to use, or
614 * NULL to use the window's dimensions and the desktop's format
615 * and refresh rate
616 * \returns 0 on success or a negative error code on failure; call
617 * SDL_GetError() for more information.
618 *
619 * \since This function is available since SDL 2.0.0.
620 *
621 * \sa SDL_GetWindowDisplayMode
622 * \sa SDL_SetWindowFullscreen
623 */
624extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window,
625 const SDL_DisplayMode * mode);
626
627/**
628 * Query the display mode to use when a window is visible at fullscreen.
629 *
630 * \param window the window to query
631 * \param mode an SDL_DisplayMode structure filled in with the fullscreen
632 * display mode
633 * \returns 0 on success or a negative error code on failure; call
634 * SDL_GetError() for more information.
635 *
636 * \since This function is available since SDL 2.0.0.
637 *
638 * \sa SDL_SetWindowDisplayMode
639 * \sa SDL_SetWindowFullscreen
640 */
641extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window,
642 SDL_DisplayMode * mode);
643
644/**
645 * Get the raw ICC profile data for the screen the window is currently on.
646 *
647 * Data returned should be freed with SDL_free.
648 *
649 * \param window the window to query
650 * \param size the size of the ICC profile
651 * \returns the raw ICC profile data on success or NULL on failure; call
652 * SDL_GetError() for more information.
653 *
654 * \since This function is available since SDL 2.0.18.
655 */
656extern DECLSPEC void* SDLCALL SDL_GetWindowICCProfile(SDL_Window * window, size_t* size);
657
658/**
659 * Get the pixel format associated with the window.
660 *
661 * \param window the window to query
662 * \returns the pixel format of the window on success or
663 * SDL_PIXELFORMAT_UNKNOWN on failure; call SDL_GetError() for more
664 * information.
665 *
666 * \since This function is available since SDL 2.0.0.
667 */
668extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window);
669
670/**
671 * Create a window with the specified position, dimensions, and flags.
672 *
673 * `flags` may be any of the following OR'd together:
674 *
675 * - `SDL_WINDOW_FULLSCREEN`: fullscreen window
676 * - `SDL_WINDOW_FULLSCREEN_DESKTOP`: fullscreen window at desktop resolution
677 * - `SDL_WINDOW_OPENGL`: window usable with an OpenGL context
678 * - `SDL_WINDOW_VULKAN`: window usable with a Vulkan instance
679 * - `SDL_WINDOW_METAL`: window usable with a Metal instance
680 * - `SDL_WINDOW_HIDDEN`: window is not visible
681 * - `SDL_WINDOW_BORDERLESS`: no window decoration
682 * - `SDL_WINDOW_RESIZABLE`: window can be resized
683 * - `SDL_WINDOW_MINIMIZED`: window is minimized
684 * - `SDL_WINDOW_MAXIMIZED`: window is maximized
685 * - `SDL_WINDOW_INPUT_GRABBED`: window has grabbed input focus
686 * - `SDL_WINDOW_ALLOW_HIGHDPI`: window should be created in high-DPI mode if
687 * supported (>= SDL 2.0.1)
688 *
689 * `SDL_WINDOW_SHOWN` is ignored by SDL_CreateWindow(). The SDL_Window is
690 * implicitly shown if SDL_WINDOW_HIDDEN is not set. `SDL_WINDOW_SHOWN` may be
691 * queried later using SDL_GetWindowFlags().
692 *
693 * On Apple's macOS, you **must** set the NSHighResolutionCapable Info.plist
694 * property to YES, otherwise you will not receive a High-DPI OpenGL canvas.
695 *
696 * If the window is created with the `SDL_WINDOW_ALLOW_HIGHDPI` flag, its size
697 * in pixels may differ from its size in screen coordinates on platforms with
698 * high-DPI support (e.g. iOS and macOS). Use SDL_GetWindowSize() to query the
699 * client area's size in screen coordinates, and SDL_GL_GetDrawableSize() or
700 * SDL_GetRendererOutputSize() to query the drawable size in pixels.
701 *
702 * If the window is set fullscreen, the width and height parameters `w` and
703 * `h` will not be used. However, invalid size parameters (e.g. too large) may
704 * still fail. Window size is actually limited to 16384 x 16384 for all
705 * platforms at window creation.
706 *
707 * If the window is created with any of the SDL_WINDOW_OPENGL or
708 * SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function
709 * (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the
710 * corresponding UnloadLibrary function is called by SDL_DestroyWindow().
711 *
712 * If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver,
713 * SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail.
714 *
715 * If SDL_WINDOW_METAL is specified on an OS that does not support Metal,
716 * SDL_CreateWindow() will fail.
717 *
718 * On non-Apple devices, SDL requires you to either not link to the Vulkan
719 * loader or link to a dynamic library version. This limitation may be removed
720 * in a future version of SDL.
721 *
722 * \param title the title of the window, in UTF-8 encoding
723 * \param x the x position of the window, `SDL_WINDOWPOS_CENTERED`, or
724 * `SDL_WINDOWPOS_UNDEFINED`
725 * \param y the y position of the window, `SDL_WINDOWPOS_CENTERED`, or
726 * `SDL_WINDOWPOS_UNDEFINED`
727 * \param w the width of the window, in screen coordinates
728 * \param h the height of the window, in screen coordinates
729 * \param flags 0, or one or more SDL_WindowFlags OR'd together
730 * \returns the window that was created or NULL on failure; call
731 * SDL_GetError() for more information.
732 *
733 * \since This function is available since SDL 2.0.0.
734 *
735 * \sa SDL_CreateWindowFrom
736 * \sa SDL_DestroyWindow
737 */
738extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title,
739 int x, int y, int w,
740 int h, Uint32 flags);
741
742/**
743 * Create an SDL window from an existing native window.
744 *
745 * In some cases (e.g. OpenGL) and on some platforms (e.g. Microsoft Windows)
746 * the hint `SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT` needs to be configured
747 * before using SDL_CreateWindowFrom().
748 *
749 * \param data a pointer to driver-dependent window creation data, typically
750 * your native window cast to a void*
751 * \returns the window that was created or NULL on failure; call
752 * SDL_GetError() for more information.
753 *
754 * \since This function is available since SDL 2.0.0.
755 *
756 * \sa SDL_CreateWindow
757 * \sa SDL_DestroyWindow
758 */
759extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data);
760
761/**
762 * Get the numeric ID of a window.
763 *
764 * The numeric ID is what SDL_WindowEvent references, and is necessary to map
765 * these events to specific SDL_Window objects.
766 *
767 * \param window the window to query
768 * \returns the ID of the window on success or 0 on failure; call
769 * SDL_GetError() for more information.
770 *
771 * \since This function is available since SDL 2.0.0.
772 *
773 * \sa SDL_GetWindowFromID
774 */
775extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window);
776
777/**
778 * Get a window from a stored ID.
779 *
780 * The numeric ID is what SDL_WindowEvent references, and is necessary to map
781 * these events to specific SDL_Window objects.
782 *
783 * \param id the ID of the window
784 * \returns the window associated with `id` or NULL if it doesn't exist; call
785 * SDL_GetError() for more information.
786 *
787 * \since This function is available since SDL 2.0.0.
788 *
789 * \sa SDL_GetWindowID
790 */
791extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id);
792
793/**
794 * Get the window flags.
795 *
796 * \param window the window to query
797 * \returns a mask of the SDL_WindowFlags associated with `window`
798 *
799 * \since This function is available since SDL 2.0.0.
800 *
801 * \sa SDL_CreateWindow
802 * \sa SDL_HideWindow
803 * \sa SDL_MaximizeWindow
804 * \sa SDL_MinimizeWindow
805 * \sa SDL_SetWindowFullscreen
806 * \sa SDL_SetWindowGrab
807 * \sa SDL_ShowWindow
808 */
809extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window);
810
811/**
812 * Set the title of a window.
813 *
814 * This string is expected to be in UTF-8 encoding.
815 *
816 * \param window the window to change
817 * \param title the desired window title in UTF-8 format
818 *
819 * \since This function is available since SDL 2.0.0.
820 *
821 * \sa SDL_GetWindowTitle
822 */
823extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window,
824 const char *title);
825
826/**
827 * Get the title of a window.
828 *
829 * \param window the window to query
830 * \returns the title of the window in UTF-8 format or "" if there is no
831 * title.
832 *
833 * \since This function is available since SDL 2.0.0.
834 *
835 * \sa SDL_SetWindowTitle
836 */
837extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window);
838
839/**
840 * Set the icon for a window.
841 *
842 * \param window the window to change
843 * \param icon an SDL_Surface structure containing the icon for the window
844 *
845 * \since This function is available since SDL 2.0.0.
846 */
847extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window,
848 SDL_Surface * icon);
849
850/**
851 * Associate an arbitrary named pointer with a window.
852 *
853 * `name` is case-sensitive.
854 *
855 * \param window the window to associate with the pointer
856 * \param name the name of the pointer
857 * \param userdata the associated pointer
858 * \returns the previous value associated with `name`.
859 *
860 * \since This function is available since SDL 2.0.0.
861 *
862 * \sa SDL_GetWindowData
863 */
864extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window,
865 const char *name,
866 void *userdata);
867
868/**
869 * Retrieve the data pointer associated with a window.
870 *
871 * \param window the window to query
872 * \param name the name of the pointer
873 * \returns the value associated with `name`.
874 *
875 * \since This function is available since SDL 2.0.0.
876 *
877 * \sa SDL_SetWindowData
878 */
879extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window,
880 const char *name);
881
882/**
883 * Set the position of a window.
884 *
885 * The window coordinate origin is the upper left of the display.
886 *
887 * \param window the window to reposition
888 * \param x the x coordinate of the window in screen coordinates, or
889 * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED`
890 * \param y the y coordinate of the window in screen coordinates, or
891 * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED`
892 *
893 * \since This function is available since SDL 2.0.0.
894 *
895 * \sa SDL_GetWindowPosition
896 */
897extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window,
898 int x, int y);
899
900/**
901 * Get the position of a window.
902 *
903 * If you do not need the value for one of the positions a NULL may be passed
904 * in the `x` or `y` parameter.
905 *
906 * \param window the window to query
907 * \param x a pointer filled in with the x position of the window, in screen
908 * coordinates, may be NULL
909 * \param y a pointer filled in with the y position of the window, in screen
910 * coordinates, may be NULL
911 *
912 * \since This function is available since SDL 2.0.0.
913 *
914 * \sa SDL_SetWindowPosition
915 */
916extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window,
917 int *x, int *y);
918
919/**
920 * Set the size of a window's client area.
921 *
922 * The window size in screen coordinates may differ from the size in pixels,
923 * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform
924 * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize() or
925 * SDL_GetRendererOutputSize() to get the real client area size in pixels.
926 *
927 * Fullscreen windows automatically match the size of the display mode, and
928 * you should use SDL_SetWindowDisplayMode() to change their size.
929 *
930 * \param window the window to change
931 * \param w the width of the window in pixels, in screen coordinates, must be
932 * > 0
933 * \param h the height of the window in pixels, in screen coordinates, must be
934 * > 0
935 *
936 * \since This function is available since SDL 2.0.0.
937 *
938 * \sa SDL_GetWindowSize
939 * \sa SDL_SetWindowDisplayMode
940 */
941extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w,
942 int h);
943
944/**
945 * Get the size of a window's client area.
946 *
947 * NULL can safely be passed as the `w` or `h` parameter if the width or
948 * height value is not desired.
949 *
950 * The window size in screen coordinates may differ from the size in pixels,
951 * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform
952 * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize(),
953 * SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to get the
954 * real client area size in pixels.
955 *
956 * \param window the window to query the width and height from
957 * \param w a pointer filled in with the width of the window, in screen
958 * coordinates, may be NULL
959 * \param h a pointer filled in with the height of the window, in screen
960 * coordinates, may be NULL
961 *
962 * \since This function is available since SDL 2.0.0.
963 *
964 * \sa SDL_GL_GetDrawableSize
965 * \sa SDL_Vulkan_GetDrawableSize
966 * \sa SDL_SetWindowSize
967 */
968extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w,
969 int *h);
970
971/**
972 * Get the size of a window's borders (decorations) around the client area.
973 *
974 * Note: If this function fails (returns -1), the size values will be
975 * initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as if the
976 * window in question was borderless.
977 *
978 * Note: This function may fail on systems where the window has not yet been
979 * decorated by the display server (for example, immediately after calling
980 * SDL_CreateWindow). It is recommended that you wait at least until the
981 * window has been presented and composited, so that the window system has a
982 * chance to decorate the window and provide the border dimensions to SDL.
983 *
984 * This function also returns -1 if getting the information is not supported.
985 *
986 * \param window the window to query the size values of the border
987 * (decorations) from
988 * \param top pointer to variable for storing the size of the top border; NULL
989 * is permitted
990 * \param left pointer to variable for storing the size of the left border;
991 * NULL is permitted
992 * \param bottom pointer to variable for storing the size of the bottom
993 * border; NULL is permitted
994 * \param right pointer to variable for storing the size of the right border;
995 * NULL is permitted
996 * \returns 0 on success or a negative error code on failure; call
997 * SDL_GetError() for more information.
998 *
999 * \since This function is available since SDL 2.0.5.
1000 *
1001 * \sa SDL_GetWindowSize
1002 */
1003extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window,
1004 int *top, int *left,
1005 int *bottom, int *right);
1006
1007/**
1008 * Set the minimum size of a window's client area.
1009 *
1010 * \param window the window to change
1011 * \param min_w the minimum width of the window in pixels
1012 * \param min_h the minimum height of the window in pixels
1013 *
1014 * \since This function is available since SDL 2.0.0.
1015 *
1016 * \sa SDL_GetWindowMinimumSize
1017 * \sa SDL_SetWindowMaximumSize
1018 */
1019extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window,
1020 int min_w, int min_h);
1021
1022/**
1023 * Get the minimum size of a window's client area.
1024 *
1025 * \param window the window to query
1026 * \param w a pointer filled in with the minimum width of the window, may be
1027 * NULL
1028 * \param h a pointer filled in with the minimum height of the window, may be
1029 * NULL
1030 *
1031 * \since This function is available since SDL 2.0.0.
1032 *
1033 * \sa SDL_GetWindowMaximumSize
1034 * \sa SDL_SetWindowMinimumSize
1035 */
1036extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window,
1037 int *w, int *h);
1038
1039/**
1040 * Set the maximum size of a window's client area.
1041 *
1042 * \param window the window to change
1043 * \param max_w the maximum width of the window in pixels
1044 * \param max_h the maximum height of the window in pixels
1045 *
1046 * \since This function is available since SDL 2.0.0.
1047 *
1048 * \sa SDL_GetWindowMaximumSize
1049 * \sa SDL_SetWindowMinimumSize
1050 */
1051extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window,
1052 int max_w, int max_h);
1053
1054/**
1055 * Get the maximum size of a window's client area.
1056 *
1057 * \param window the window to query
1058 * \param w a pointer filled in with the maximum width of the window, may be
1059 * NULL
1060 * \param h a pointer filled in with the maximum height of the window, may be
1061 * NULL
1062 *
1063 * \since This function is available since SDL 2.0.0.
1064 *
1065 * \sa SDL_GetWindowMinimumSize
1066 * \sa SDL_SetWindowMaximumSize
1067 */
1068extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window,
1069 int *w, int *h);
1070
1071/**
1072 * Set the border state of a window.
1073 *
1074 * This will add or remove the window's `SDL_WINDOW_BORDERLESS` flag and add
1075 * or remove the border from the actual window. This is a no-op if the
1076 * window's border already matches the requested state.
1077 *
1078 * You can't change the border state of a fullscreen window.
1079 *
1080 * \param window the window of which to change the border state
1081 * \param bordered SDL_FALSE to remove border, SDL_TRUE to add border
1082 *
1083 * \since This function is available since SDL 2.0.0.
1084 *
1085 * \sa SDL_GetWindowFlags
1086 */
1087extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window,
1088 SDL_bool bordered);
1089
1090/**
1091 * Set the user-resizable state of a window.
1092 *
1093 * This will add or remove the window's `SDL_WINDOW_RESIZABLE` flag and
1094 * allow/disallow user resizing of the window. This is a no-op if the window's
1095 * resizable state already matches the requested state.
1096 *
1097 * You can't change the resizable state of a fullscreen window.
1098 *
1099 * \param window the window of which to change the resizable state
1100 * \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow
1101 *
1102 * \since This function is available since SDL 2.0.5.
1103 *
1104 * \sa SDL_GetWindowFlags
1105 */
1106extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window,
1107 SDL_bool resizable);
1108
1109/**
1110 * Set the window to always be above the others.
1111 *
1112 * This will add or remove the window's `SDL_WINDOW_ALWAYS_ON_TOP` flag. This
1113 * will bring the window to the front and keep the window above the rest.
1114 *
1115 * \param window The window of which to change the always on top state
1116 * \param on_top SDL_TRUE to set the window always on top, SDL_FALSE to
1117 * disable
1118 *
1119 * \since This function is available since SDL 2.0.16.
1120 *
1121 * \sa SDL_GetWindowFlags
1122 */
1123extern DECLSPEC void SDLCALL SDL_SetWindowAlwaysOnTop(SDL_Window * window,
1124 SDL_bool on_top);
1125
1126/**
1127 * Show a window.
1128 *
1129 * \param window the window to show
1130 *
1131 * \since This function is available since SDL 2.0.0.
1132 *
1133 * \sa SDL_HideWindow
1134 * \sa SDL_RaiseWindow
1135 */
1136extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window);
1137
1138/**
1139 * Hide a window.
1140 *
1141 * \param window the window to hide
1142 *
1143 * \since This function is available since SDL 2.0.0.
1144 *
1145 * \sa SDL_ShowWindow
1146 */
1147extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window);
1148
1149/**
1150 * Raise a window above other windows and set the input focus.
1151 *
1152 * \param window the window to raise
1153 *
1154 * \since This function is available since SDL 2.0.0.
1155 */
1156extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window);
1157
1158/**
1159 * Make a window as large as possible.
1160 *
1161 * \param window the window to maximize
1162 *
1163 * \since This function is available since SDL 2.0.0.
1164 *
1165 * \sa SDL_MinimizeWindow
1166 * \sa SDL_RestoreWindow
1167 */
1168extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window);
1169
1170/**
1171 * Minimize a window to an iconic representation.
1172 *
1173 * \param window the window to minimize
1174 *
1175 * \since This function is available since SDL 2.0.0.
1176 *
1177 * \sa SDL_MaximizeWindow
1178 * \sa SDL_RestoreWindow
1179 */
1180extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window);
1181
1182/**
1183 * Restore the size and position of a minimized or maximized window.
1184 *
1185 * \param window the window to restore
1186 *
1187 * \since This function is available since SDL 2.0.0.
1188 *
1189 * \sa SDL_MaximizeWindow
1190 * \sa SDL_MinimizeWindow
1191 */
1192extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window);
1193
1194/**
1195 * Set a window's fullscreen state.
1196 *
1197 * `flags` may be `SDL_WINDOW_FULLSCREEN`, for "real" fullscreen with a
1198 * videomode change; `SDL_WINDOW_FULLSCREEN_DESKTOP` for "fake" fullscreen
1199 * that takes the size of the desktop; and 0 for windowed mode.
1200 *
1201 * \param window the window to change
1202 * \param flags `SDL_WINDOW_FULLSCREEN`, `SDL_WINDOW_FULLSCREEN_DESKTOP` or 0
1203 * \returns 0 on success or a negative error code on failure; call
1204 * SDL_GetError() for more information.
1205 *
1206 * \since This function is available since SDL 2.0.0.
1207 *
1208 * \sa SDL_GetWindowDisplayMode
1209 * \sa SDL_SetWindowDisplayMode
1210 */
1211extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window,
1212 Uint32 flags);
1213
1214/**
1215 * Get the SDL surface associated with the window.
1216 *
1217 * A new surface will be created with the optimal format for the window, if
1218 * necessary. This surface will be freed when the window is destroyed. Do not
1219 * free this surface.
1220 *
1221 * This surface will be invalidated if the window is resized. After resizing a
1222 * window this function must be called again to return a valid surface.
1223 *
1224 * You may not combine this with 3D or the rendering API on this window.
1225 *
1226 * This function is affected by `SDL_HINT_FRAMEBUFFER_ACCELERATION`.
1227 *
1228 * \param window the window to query
1229 * \returns the surface associated with the window, or NULL on failure; call
1230 * SDL_GetError() for more information.
1231 *
1232 * \since This function is available since SDL 2.0.0.
1233 *
1234 * \sa SDL_UpdateWindowSurface
1235 * \sa SDL_UpdateWindowSurfaceRects
1236 */
1237extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window);
1238
1239/**
1240 * Copy the window surface to the screen.
1241 *
1242 * This is the function you use to reflect any changes to the surface on the
1243 * screen.
1244 *
1245 * This function is equivalent to the SDL 1.2 API SDL_Flip().
1246 *
1247 * \param window the window to update
1248 * \returns 0 on success or a negative error code on failure; call
1249 * SDL_GetError() for more information.
1250 *
1251 * \since This function is available since SDL 2.0.0.
1252 *
1253 * \sa SDL_GetWindowSurface
1254 * \sa SDL_UpdateWindowSurfaceRects
1255 */
1256extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window);
1257
1258/**
1259 * Copy areas of the window surface to the screen.
1260 *
1261 * This is the function you use to reflect changes to portions of the surface
1262 * on the screen.
1263 *
1264 * This function is equivalent to the SDL 1.2 API SDL_UpdateRects().
1265 *
1266 * \param window the window to update
1267 * \param rects an array of SDL_Rect structures representing areas of the
1268 * surface to copy
1269 * \param numrects the number of rectangles
1270 * \returns 0 on success or a negative error code on failure; call
1271 * SDL_GetError() for more information.
1272 *
1273 * \since This function is available since SDL 2.0.0.
1274 *
1275 * \sa SDL_GetWindowSurface
1276 * \sa SDL_UpdateWindowSurface
1277 */
1278extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window,
1279 const SDL_Rect * rects,
1280 int numrects);
1281
1282/**
1283 * Set a window's input grab mode.
1284 *
1285 * When input is grabbed, the mouse is confined to the window. This function
1286 * will also grab the keyboard if `SDL_HINT_GRAB_KEYBOARD` is set. To grab the
1287 * keyboard without also grabbing the mouse, use SDL_SetWindowKeyboardGrab().
1288 *
1289 * If the caller enables a grab while another window is currently grabbed, the
1290 * other window loses its grab in favor of the caller's window.
1291 *
1292 * \param window the window for which the input grab mode should be set
1293 * \param grabbed SDL_TRUE to grab input or SDL_FALSE to release input
1294 *
1295 * \since This function is available since SDL 2.0.0.
1296 *
1297 * \sa SDL_GetGrabbedWindow
1298 * \sa SDL_GetWindowGrab
1299 */
1300extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window,
1301 SDL_bool grabbed);
1302
1303/**
1304 * Set a window's keyboard grab mode.
1305 *
1306 * Keyboard grab enables capture of system keyboard shortcuts like Alt+Tab or
1307 * the Meta/Super key. Note that not all system keyboard shortcuts can be
1308 * captured by applications (one example is Ctrl+Alt+Del on Windows).
1309 *
1310 * This is primarily intended for specialized applications such as VNC clients
1311 * or VM frontends. Normal games should not use keyboard grab.
1312 *
1313 * When keyboard grab is enabled, SDL will continue to handle Alt+Tab when the
1314 * window is full-screen to ensure the user is not trapped in your
1315 * application. If you have a custom keyboard shortcut to exit fullscreen
1316 * mode, you may suppress this behavior with
1317 * `SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED`.
1318 *
1319 * If the caller enables a grab while another window is currently grabbed, the
1320 * other window loses its grab in favor of the caller's window.
1321 *
1322 * \param window The window for which the keyboard grab mode should be set.
1323 * \param grabbed This is SDL_TRUE to grab keyboard, and SDL_FALSE to release.
1324 *
1325 * \since This function is available since SDL 2.0.16.
1326 *
1327 * \sa SDL_GetWindowKeyboardGrab
1328 * \sa SDL_SetWindowMouseGrab
1329 * \sa SDL_SetWindowGrab
1330 */
1331extern DECLSPEC void SDLCALL SDL_SetWindowKeyboardGrab(SDL_Window * window,
1332 SDL_bool grabbed);
1333
1334/**
1335 * Set a window's mouse grab mode.
1336 *
1337 * Mouse grab confines the mouse cursor to the window.
1338 *
1339 * \param window The window for which the mouse grab mode should be set.
1340 *
1341 * \since This function is available since SDL 2.0.16.
1342 *
1343 * \sa SDL_GetWindowMouseGrab
1344 * \sa SDL_SetWindowKeyboardGrab
1345 * \sa SDL_SetWindowGrab
1346 */
1347extern DECLSPEC void SDLCALL SDL_SetWindowMouseGrab(SDL_Window * window,
1348 SDL_bool grabbed);
1349
1350/**
1351 * Get a window's input grab mode.
1352 *
1353 * \param window the window to query
1354 * \returns SDL_TRUE if input is grabbed, SDL_FALSE otherwise.
1355 *
1356 * \since This function is available since SDL 2.0.0.
1357 *
1358 * \sa SDL_SetWindowGrab
1359 */
1360extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window);
1361
1362/**
1363 * Get a window's keyboard grab mode.
1364 *
1365 * \param window the window to query
1366 * \returns SDL_TRUE if keyboard is grabbed, and SDL_FALSE otherwise.
1367 *
1368 * \since This function is available since SDL 2.0.16.
1369 *
1370 * \sa SDL_SetWindowKeyboardGrab
1371 * \sa SDL_GetWindowGrab
1372 */
1373extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowKeyboardGrab(SDL_Window * window);
1374
1375/**
1376 * Get a window's mouse grab mode.
1377 *
1378 * \param window the window to query
1379 * \returns SDL_TRUE if mouse is grabbed, and SDL_FALSE otherwise.
1380 *
1381 * \since This function is available since SDL 2.0.16.
1382 *
1383 * \sa SDL_SetWindowKeyboardGrab
1384 * \sa SDL_GetWindowGrab
1385 */
1386extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowMouseGrab(SDL_Window * window);
1387
1388/**
1389 * Get the window that currently has an input grab enabled.
1390 *
1391 * \returns the window if input is grabbed or NULL otherwise.
1392 *
1393 * \since This function is available since SDL 2.0.4.
1394 *
1395 * \sa SDL_GetWindowGrab
1396 * \sa SDL_SetWindowGrab
1397 */
1398extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void);
1399
1400/**
1401 * Confines the cursor to the specified area of a window.
1402 *
1403 * Note that this does NOT grab the cursor, it only defines the area a cursor
1404 * is restricted to when the window has mouse focus.
1405 *
1406 * \param window The window that will be associated with the barrier.
1407 * \param rect A rectangle area in window-relative coordinates. If NULL the
1408 * barrier for the specified window will be destroyed.
1409 * \returns 0 on success or a negative error code on failure; call
1410 * SDL_GetError() for more information.
1411 *
1412 * \since This function is available since SDL 2.0.18.
1413 *
1414 * \sa SDL_GetWindowMouseRect
1415 * \sa SDL_SetWindowMouseGrab
1416 */
1417extern DECLSPEC int SDLCALL SDL_SetWindowMouseRect(SDL_Window * window, const SDL_Rect * rect);
1418
1419/**
1420 * Get the mouse confinement rectangle of a window.
1421 *
1422 * \param window The window to query
1423 * \returns A pointer to the mouse confinement rectangle of a window, or NULL
1424 * if there isn't one.
1425 *
1426 * \since This function is available since SDL 2.0.18.
1427 *
1428 * \sa SDL_SetWindowMouseRect
1429 */
1430extern DECLSPEC const SDL_Rect * SDLCALL SDL_GetWindowMouseRect(SDL_Window * window);
1431
1432/**
1433 * Set the brightness (gamma multiplier) for a given window's display.
1434 *
1435 * Despite the name and signature, this method sets the brightness of the
1436 * entire display, not an individual window. A window is considered to be
1437 * owned by the display that contains the window's center pixel. (The index of
1438 * this display can be retrieved using SDL_GetWindowDisplayIndex().) The
1439 * brightness set will not follow the window if it is moved to another
1440 * display.
1441 *
1442 * Many platforms will refuse to set the display brightness in modern times.
1443 * You are better off using a shader to adjust gamma during rendering, or
1444 * something similar.
1445 *
1446 * \param window the window used to select the display whose brightness will
1447 * be changed
1448 * \param brightness the brightness (gamma multiplier) value to set where 0.0
1449 * is completely dark and 1.0 is normal brightness
1450 * \returns 0 on success or a negative error code on failure; call
1451 * SDL_GetError() for more information.
1452 *
1453 * \since This function is available since SDL 2.0.0.
1454 *
1455 * \sa SDL_GetWindowBrightness
1456 * \sa SDL_SetWindowGammaRamp
1457 */
1458extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness);
1459
1460/**
1461 * Get the brightness (gamma multiplier) for a given window's display.
1462 *
1463 * Despite the name and signature, this method retrieves the brightness of the
1464 * entire display, not an individual window. A window is considered to be
1465 * owned by the display that contains the window's center pixel. (The index of
1466 * this display can be retrieved using SDL_GetWindowDisplayIndex().)
1467 *
1468 * \param window the window used to select the display whose brightness will
1469 * be queried
1470 * \returns the brightness for the display where 0.0 is completely dark and
1471 * 1.0 is normal brightness.
1472 *
1473 * \since This function is available since SDL 2.0.0.
1474 *
1475 * \sa SDL_SetWindowBrightness
1476 */
1477extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window);
1478
1479/**
1480 * Set the opacity for a window.
1481 *
1482 * The parameter `opacity` will be clamped internally between 0.0f
1483 * (transparent) and 1.0f (opaque).
1484 *
1485 * This function also returns -1 if setting the opacity isn't supported.
1486 *
1487 * \param window the window which will be made transparent or opaque
1488 * \param opacity the opacity value (0.0f - transparent, 1.0f - opaque)
1489 * \returns 0 on success or a negative error code on failure; call
1490 * SDL_GetError() for more information.
1491 *
1492 * \since This function is available since SDL 2.0.5.
1493 *
1494 * \sa SDL_GetWindowOpacity
1495 */
1496extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity);
1497
1498/**
1499 * Get the opacity of a window.
1500 *
1501 * If transparency isn't supported on this platform, opacity will be reported
1502 * as 1.0f without error.
1503 *
1504 * The parameter `opacity` is ignored if it is NULL.
1505 *
1506 * This function also returns -1 if an invalid window was provided.
1507 *
1508 * \param window the window to get the current opacity value from
1509 * \param out_opacity the float filled in (0.0f - transparent, 1.0f - opaque)
1510 * \returns 0 on success or a negative error code on failure; call
1511 * SDL_GetError() for more information.
1512 *
1513 * \since This function is available since SDL 2.0.5.
1514 *
1515 * \sa SDL_SetWindowOpacity
1516 */
1517extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity);
1518
1519/**
1520 * Set the window as a modal for another window.
1521 *
1522 * \param modal_window the window that should be set modal
1523 * \param parent_window the parent window for the modal window
1524 * \returns 0 on success or a negative error code on failure; call
1525 * SDL_GetError() for more information.
1526 *
1527 * \since This function is available since SDL 2.0.5.
1528 */
1529extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window);
1530
1531/**
1532 * Explicitly set input focus to the window.
1533 *
1534 * You almost certainly want SDL_RaiseWindow() instead of this function. Use
1535 * this with caution, as you might give focus to a window that is completely
1536 * obscured by other windows.
1537 *
1538 * \param window the window that should get the input focus
1539 * \returns 0 on success or a negative error code on failure; call
1540 * SDL_GetError() for more information.
1541 *
1542 * \since This function is available since SDL 2.0.5.
1543 *
1544 * \sa SDL_RaiseWindow
1545 */
1546extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window);
1547
1548/**
1549 * Set the gamma ramp for the display that owns a given window.
1550 *
1551 * Set the gamma translation table for the red, green, and blue channels of
1552 * the video hardware. Each table is an array of 256 16-bit quantities,
1553 * representing a mapping between the input and output for that channel. The
1554 * input is the index into the array, and the output is the 16-bit gamma value
1555 * at that index, scaled to the output color precision.
1556 *
1557 * Despite the name and signature, this method sets the gamma ramp of the
1558 * entire display, not an individual window. A window is considered to be
1559 * owned by the display that contains the window's center pixel. (The index of
1560 * this display can be retrieved using SDL_GetWindowDisplayIndex().) The gamma
1561 * ramp set will not follow the window if it is moved to another display.
1562 *
1563 * \param window the window used to select the display whose gamma ramp will
1564 * be changed
1565 * \param red a 256 element array of 16-bit quantities representing the
1566 * translation table for the red channel, or NULL
1567 * \param green a 256 element array of 16-bit quantities representing the
1568 * translation table for the green channel, or NULL
1569 * \param blue a 256 element array of 16-bit quantities representing the
1570 * translation table for the blue channel, or NULL
1571 * \returns 0 on success or a negative error code on failure; call
1572 * SDL_GetError() for more information.
1573 *
1574 * \since This function is available since SDL 2.0.0.
1575 *
1576 * \sa SDL_GetWindowGammaRamp
1577 */
1578extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window,
1579 const Uint16 * red,
1580 const Uint16 * green,
1581 const Uint16 * blue);
1582
1583/**
1584 * Get the gamma ramp for a given window's display.
1585 *
1586 * Despite the name and signature, this method retrieves the gamma ramp of the
1587 * entire display, not an individual window. A window is considered to be
1588 * owned by the display that contains the window's center pixel. (The index of
1589 * this display can be retrieved using SDL_GetWindowDisplayIndex().)
1590 *
1591 * \param window the window used to select the display whose gamma ramp will
1592 * be queried
1593 * \param red a 256 element array of 16-bit quantities filled in with the
1594 * translation table for the red channel, or NULL
1595 * \param green a 256 element array of 16-bit quantities filled in with the
1596 * translation table for the green channel, or NULL
1597 * \param blue a 256 element array of 16-bit quantities filled in with the
1598 * translation table for the blue channel, or NULL
1599 * \returns 0 on success or a negative error code on failure; call
1600 * SDL_GetError() for more information.
1601 *
1602 * \since This function is available since SDL 2.0.0.
1603 *
1604 * \sa SDL_SetWindowGammaRamp
1605 */
1606extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window,
1607 Uint16 * red,
1608 Uint16 * green,
1609 Uint16 * blue);
1610
1611/**
1612 * Possible return values from the SDL_HitTest callback.
1613 *
1614 * \sa SDL_HitTest
1615 */
1616typedef enum
1617{
1618 SDL_HITTEST_NORMAL, /**< Region is normal. No special properties. */
1619 SDL_HITTEST_DRAGGABLE, /**< Region can drag entire window. */
1620 SDL_HITTEST_RESIZE_TOPLEFT,
1621 SDL_HITTEST_RESIZE_TOP,
1622 SDL_HITTEST_RESIZE_TOPRIGHT,
1623 SDL_HITTEST_RESIZE_RIGHT,
1624 SDL_HITTEST_RESIZE_BOTTOMRIGHT,
1625 SDL_HITTEST_RESIZE_BOTTOM,
1626 SDL_HITTEST_RESIZE_BOTTOMLEFT,
1627 SDL_HITTEST_RESIZE_LEFT
1628} SDL_HitTestResult;
1629
1630/**
1631 * Callback used for hit-testing.
1632 *
1633 * \param win the SDL_Window where hit-testing was set on
1634 * \param area an SDL_Point which should be hit-tested
1635 * \param data what was passed as `callback_data` to SDL_SetWindowHitTest()
1636 * \return an SDL_HitTestResult value.
1637 *
1638 * \sa SDL_SetWindowHitTest
1639 */
1640typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win,
1641 const SDL_Point *area,
1642 void *data);
1643
1644/**
1645 * Provide a callback that decides if a window region has special properties.
1646 *
1647 * Normally windows are dragged and resized by decorations provided by the
1648 * system window manager (a title bar, borders, etc), but for some apps, it
1649 * makes sense to drag them from somewhere else inside the window itself; for
1650 * example, one might have a borderless window that wants to be draggable from
1651 * any part, or simulate its own title bar, etc.
1652 *
1653 * This function lets the app provide a callback that designates pieces of a
1654 * given window as special. This callback is run during event processing if we
1655 * need to tell the OS to treat a region of the window specially; the use of
1656 * this callback is known as "hit testing."
1657 *
1658 * Mouse input may not be delivered to your application if it is within a
1659 * special area; the OS will often apply that input to moving the window or
1660 * resizing the window and not deliver it to the application.
1661 *
1662 * Specifying NULL for a callback disables hit-testing. Hit-testing is
1663 * disabled by default.
1664 *
1665 * Platforms that don't support this functionality will return -1
1666 * unconditionally, even if you're attempting to disable hit-testing.
1667 *
1668 * Your callback may fire at any time, and its firing does not indicate any
1669 * specific behavior (for example, on Windows, this certainly might fire when
1670 * the OS is deciding whether to drag your window, but it fires for lots of
1671 * other reasons, too, some unrelated to anything you probably care about _and
1672 * when the mouse isn't actually at the location it is testing_). Since this
1673 * can fire at any time, you should try to keep your callback efficient,
1674 * devoid of allocations, etc.
1675 *
1676 * \param window the window to set hit-testing on
1677 * \param callback the function to call when doing a hit-test
1678 * \param callback_data an app-defined void pointer passed to **callback**
1679 * \returns 0 on success or -1 on error (including unsupported); call
1680 * SDL_GetError() for more information.
1681 *
1682 * \since This function is available since SDL 2.0.4.
1683 */
1684extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window,
1685 SDL_HitTest callback,
1686 void *callback_data);
1687
1688/**
1689 * Request a window to demand attention from the user.
1690 *
1691 * \param window the window to be flashed
1692 * \param operation the flash operation
1693 * \returns 0 on success or a negative error code on failure; call
1694 * SDL_GetError() for more information.
1695 *
1696 * \since This function is available since SDL 2.0.16.
1697 */
1698extern DECLSPEC int SDLCALL SDL_FlashWindow(SDL_Window * window, SDL_FlashOperation operation);
1699
1700/**
1701 * Destroy a window.
1702 *
1703 * If `window` is NULL, this function will return immediately after setting
1704 * the SDL error message to "Invalid window". See SDL_GetError().
1705 *
1706 * \param window the window to destroy
1707 *
1708 * \since This function is available since SDL 2.0.0.
1709 *
1710 * \sa SDL_CreateWindow
1711 * \sa SDL_CreateWindowFrom
1712 */
1713extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window);
1714
1715
1716/**
1717 * Check whether the screensaver is currently enabled.
1718 *
1719 * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2
1720 * the screensaver was enabled by default.
1721 *
1722 * The default can also be changed using `SDL_HINT_VIDEO_ALLOW_SCREENSAVER`.
1723 *
1724 * \returns SDL_TRUE if the screensaver is enabled, SDL_FALSE if it is
1725 * disabled.
1726 *
1727 * \since This function is available since SDL 2.0.0.
1728 *
1729 * \sa SDL_DisableScreenSaver
1730 * \sa SDL_EnableScreenSaver
1731 */
1732extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void);
1733
1734/**
1735 * Allow the screen to be blanked by a screen saver.
1736 *
1737 * \since This function is available since SDL 2.0.0.
1738 *
1739 * \sa SDL_DisableScreenSaver
1740 * \sa SDL_IsScreenSaverEnabled
1741 */
1742extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void);
1743
1744/**
1745 * Prevent the screen from being blanked by a screen saver.
1746 *
1747 * If you disable the screensaver, it is automatically re-enabled when SDL
1748 * quits.
1749 *
1750 * \since This function is available since SDL 2.0.0.
1751 *
1752 * \sa SDL_EnableScreenSaver
1753 * \sa SDL_IsScreenSaverEnabled
1754 */
1755extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void);
1756
1757
1758/**
1759 * \name OpenGL support functions
1760 */
1761/* @{ */
1762
1763/**
1764 * Dynamically load an OpenGL library.
1765 *
1766 * This should be done after initializing the video driver, but before
1767 * creating any OpenGL windows. If no OpenGL library is loaded, the default
1768 * library will be loaded upon creation of the first OpenGL window.
1769 *
1770 * If you do this, you need to retrieve all of the GL functions used in your
1771 * program from the dynamic library using SDL_GL_GetProcAddress().
1772 *
1773 * \param path the platform dependent OpenGL library name, or NULL to open the
1774 * default OpenGL library
1775 * \returns 0 on success or a negative error code on failure; call
1776 * SDL_GetError() for more information.
1777 *
1778 * \since This function is available since SDL 2.0.0.
1779 *
1780 * \sa SDL_GL_GetProcAddress
1781 * \sa SDL_GL_UnloadLibrary
1782 */
1783extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path);
1784
1785/**
1786 * Get an OpenGL function by name.
1787 *
1788 * If the GL library is loaded at runtime with SDL_GL_LoadLibrary(), then all
1789 * GL functions must be retrieved this way. Usually this is used to retrieve
1790 * function pointers to OpenGL extensions.
1791 *
1792 * There are some quirks to looking up OpenGL functions that require some
1793 * extra care from the application. If you code carefully, you can handle
1794 * these quirks without any platform-specific code, though:
1795 *
1796 * - On Windows, function pointers are specific to the current GL context;
1797 * this means you need to have created a GL context and made it current
1798 * before calling SDL_GL_GetProcAddress(). If you recreate your context or
1799 * create a second context, you should assume that any existing function
1800 * pointers aren't valid to use with it. This is (currently) a
1801 * Windows-specific limitation, and in practice lots of drivers don't suffer
1802 * this limitation, but it is still the way the wgl API is documented to
1803 * work and you should expect crashes if you don't respect it. Store a copy
1804 * of the function pointers that comes and goes with context lifespan.
1805 * - On X11, function pointers returned by this function are valid for any
1806 * context, and can even be looked up before a context is created at all.
1807 * This means that, for at least some common OpenGL implementations, if you
1808 * look up a function that doesn't exist, you'll get a non-NULL result that
1809 * is _NOT_ safe to call. You must always make sure the function is actually
1810 * available for a given GL context before calling it, by checking for the
1811 * existence of the appropriate extension with SDL_GL_ExtensionSupported(),
1812 * or verifying that the version of OpenGL you're using offers the function
1813 * as core functionality.
1814 * - Some OpenGL drivers, on all platforms, *will* return NULL if a function
1815 * isn't supported, but you can't count on this behavior. Check for
1816 * extensions you use, and if you get a NULL anyway, act as if that
1817 * extension wasn't available. This is probably a bug in the driver, but you
1818 * can code defensively for this scenario anyhow.
1819 * - Just because you're on Linux/Unix, don't assume you'll be using X11.
1820 * Next-gen display servers are waiting to replace it, and may or may not
1821 * make the same promises about function pointers.
1822 * - OpenGL function pointers must be declared `APIENTRY` as in the example
1823 * code. This will ensure the proper calling convention is followed on
1824 * platforms where this matters (Win32) thereby avoiding stack corruption.
1825 *
1826 * \param proc the name of an OpenGL function
1827 * \returns a pointer to the named OpenGL function. The returned pointer
1828 * should be cast to the appropriate function signature.
1829 *
1830 * \since This function is available since SDL 2.0.0.
1831 *
1832 * \sa SDL_GL_ExtensionSupported
1833 * \sa SDL_GL_LoadLibrary
1834 * \sa SDL_GL_UnloadLibrary
1835 */
1836extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc);
1837
1838/**
1839 * Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary().
1840 *
1841 * \since This function is available since SDL 2.0.0.
1842 *
1843 * \sa SDL_GL_LoadLibrary
1844 */
1845extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void);
1846
1847/**
1848 * Check if an OpenGL extension is supported for the current context.
1849 *
1850 * This function operates on the current GL context; you must have created a
1851 * context and it must be current before calling this function. Do not assume
1852 * that all contexts you create will have the same set of extensions
1853 * available, or that recreating an existing context will offer the same
1854 * extensions again.
1855 *
1856 * While it's probably not a massive overhead, this function is not an O(1)
1857 * operation. Check the extensions you care about after creating the GL
1858 * context and save that information somewhere instead of calling the function
1859 * every time you need to know.
1860 *
1861 * \param extension the name of the extension to check
1862 * \returns SDL_TRUE if the extension is supported, SDL_FALSE otherwise.
1863 *
1864 * \since This function is available since SDL 2.0.0.
1865 */
1866extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char
1867 *extension);
1868
1869/**
1870 * Reset all previously set OpenGL context attributes to their default values.
1871 *
1872 * \since This function is available since SDL 2.0.2.
1873 *
1874 * \sa SDL_GL_GetAttribute
1875 * \sa SDL_GL_SetAttribute
1876 */
1877extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void);
1878
1879/**
1880 * Set an OpenGL window attribute before window creation.
1881 *
1882 * This function sets the OpenGL attribute `attr` to `value`. The requested
1883 * attributes should be set before creating an OpenGL window. You should use
1884 * SDL_GL_GetAttribute() to check the values after creating the OpenGL
1885 * context, since the values obtained can differ from the requested ones.
1886 *
1887 * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to set
1888 * \param value the desired value for the attribute
1889 * \returns 0 on success or a negative error code on failure; call
1890 * SDL_GetError() for more information.
1891 *
1892 * \since This function is available since SDL 2.0.0.
1893 *
1894 * \sa SDL_GL_GetAttribute
1895 * \sa SDL_GL_ResetAttributes
1896 */
1897extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value);
1898
1899/**
1900 * Get the actual value for an attribute from the current context.
1901 *
1902 * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to get
1903 * \param value a pointer filled in with the current value of `attr`
1904 * \returns 0 on success or a negative error code on failure; call
1905 * SDL_GetError() for more information.
1906 *
1907 * \since This function is available since SDL 2.0.0.
1908 *
1909 * \sa SDL_GL_ResetAttributes
1910 * \sa SDL_GL_SetAttribute
1911 */
1912extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value);
1913
1914/**
1915 * Create an OpenGL context for an OpenGL window, and make it current.
1916 *
1917 * Windows users new to OpenGL should note that, for historical reasons, GL
1918 * functions added after OpenGL version 1.1 are not available by default.
1919 * Those functions must be loaded at run-time, either with an OpenGL
1920 * extension-handling library or with SDL_GL_GetProcAddress() and its related
1921 * functions.
1922 *
1923 * SDL_GLContext is an alias for `void *`. It's opaque to the application.
1924 *
1925 * \param window the window to associate with the context
1926 * \returns the OpenGL context associated with `window` or NULL on error; call
1927 * SDL_GetError() for more details.
1928 *
1929 * \since This function is available since SDL 2.0.0.
1930 *
1931 * \sa SDL_GL_DeleteContext
1932 * \sa SDL_GL_MakeCurrent
1933 */
1934extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window *
1935 window);
1936
1937/**
1938 * Set up an OpenGL context for rendering into an OpenGL window.
1939 *
1940 * The context must have been created with a compatible window.
1941 *
1942 * \param window the window to associate with the context
1943 * \param context the OpenGL context to associate with the window
1944 * \returns 0 on success or a negative error code on failure; call
1945 * SDL_GetError() for more information.
1946 *
1947 * \since This function is available since SDL 2.0.0.
1948 *
1949 * \sa SDL_GL_CreateContext
1950 */
1951extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window,
1952 SDL_GLContext context);
1953
1954/**
1955 * Get the currently active OpenGL window.
1956 *
1957 * \returns the currently active OpenGL window on success or NULL on failure;
1958 * call SDL_GetError() for more information.
1959 *
1960 * \since This function is available since SDL 2.0.0.
1961 */
1962extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void);
1963
1964/**
1965 * Get the currently active OpenGL context.
1966 *
1967 * \returns the currently active OpenGL context or NULL on failure; call
1968 * SDL_GetError() for more information.
1969 *
1970 * \since This function is available since SDL 2.0.0.
1971 *
1972 * \sa SDL_GL_MakeCurrent
1973 */
1974extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void);
1975
1976/**
1977 * Get the size of a window's underlying drawable in pixels.
1978 *
1979 * This returns info useful for calling glViewport().
1980 *
1981 * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI
1982 * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a
1983 * platform with high-DPI support (Apple calls this "Retina"), and not
1984 * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint.
1985 *
1986 * \param window the window from which the drawable size should be queried
1987 * \param w a pointer to variable for storing the width in pixels, may be NULL
1988 * \param h a pointer to variable for storing the height in pixels, may be
1989 * NULL
1990 *
1991 * \since This function is available since SDL 2.0.1.
1992 *
1993 * \sa SDL_CreateWindow
1994 * \sa SDL_GetWindowSize
1995 */
1996extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w,
1997 int *h);
1998
1999/**
2000 * Set the swap interval for the current OpenGL context.
2001 *
2002 * Some systems allow specifying -1 for the interval, to enable adaptive
2003 * vsync. Adaptive vsync works the same as vsync, but if you've already missed
2004 * the vertical retrace for a given frame, it swaps buffers immediately, which
2005 * might be less jarring for the user during occasional framerate drops. If an
2006 * application requests adaptive vsync and the system does not support it,
2007 * this function will fail and return -1. In such a case, you should probably
2008 * retry the call with 1 for the interval.
2009 *
2010 * Adaptive vsync is implemented for some glX drivers with
2011 * GLX_EXT_swap_control_tear:
2012 *
2013 * https://www.opengl.org/registry/specs/EXT/glx_swap_control_tear.txt
2014 *
2015 * and for some Windows drivers with WGL_EXT_swap_control_tear:
2016 *
2017 * https://www.opengl.org/registry/specs/EXT/wgl_swap_control_tear.txt
2018 *
2019 * Read more on the Khronos wiki:
2020 * https://www.khronos.org/opengl/wiki/Swap_Interval#Adaptive_Vsync
2021 *
2022 * \param interval 0 for immediate updates, 1 for updates synchronized with
2023 * the vertical retrace, -1 for adaptive vsync
2024 * \returns 0 on success or -1 if setting the swap interval is not supported;
2025 * call SDL_GetError() for more information.
2026 *
2027 * \since This function is available since SDL 2.0.0.
2028 *
2029 * \sa SDL_GL_GetSwapInterval
2030 */
2031extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval);
2032
2033/**
2034 * Get the swap interval for the current OpenGL context.
2035 *
2036 * If the system can't determine the swap interval, or there isn't a valid
2037 * current context, this function will return 0 as a safe default.
2038 *
2039 * \returns 0 if there is no vertical retrace synchronization, 1 if the buffer
2040 * swap is synchronized with the vertical retrace, and -1 if late
2041 * swaps happen immediately instead of waiting for the next retrace;
2042 * call SDL_GetError() for more information.
2043 *
2044 * \since This function is available since SDL 2.0.0.
2045 *
2046 * \sa SDL_GL_SetSwapInterval
2047 */
2048extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void);
2049
2050/**
2051 * Update a window with OpenGL rendering.
2052 *
2053 * This is used with double-buffered OpenGL contexts, which are the default.
2054 *
2055 * On macOS, make sure you bind 0 to the draw framebuffer before swapping the
2056 * window, otherwise nothing will happen. If you aren't using
2057 * glBindFramebuffer(), this is the default and you won't have to do anything
2058 * extra.
2059 *
2060 * \param window the window to change
2061 *
2062 * \since This function is available since SDL 2.0.0.
2063 */
2064extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window);
2065
2066/**
2067 * Delete an OpenGL context.
2068 *
2069 * \param context the OpenGL context to be deleted
2070 *
2071 * \since This function is available since SDL 2.0.0.
2072 *
2073 * \sa SDL_GL_CreateContext
2074 */
2075extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context);
2076
2077/* @} *//* OpenGL support functions */
2078
2079
2080/* Ends C function definitions when using C++ */
2081#ifdef __cplusplus
2082}
2083#endif
2084#include "close_code.h"
2085
2086#endif /* SDL_video_h_ */
2087
2088/* vi: set ts=4 sw=4 expandtab: */
diff --git a/vendor/SDL2/include/SDL_vulkan.h b/vendor/SDL2/include/SDL_vulkan.h new file mode 100644 index 0000000..ab86a0b --- /dev/null +++ b/vendor/SDL2/include/SDL_vulkan.h
@@ -0,0 +1,215 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 2017, Mark Callow
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file SDL_vulkan.h
24 *
25 * Header file for functions to creating Vulkan surfaces on SDL windows.
26 */
27
28#ifndef SDL_vulkan_h_
29#define SDL_vulkan_h_
30
31#include "SDL_video.h"
32
33#include "begin_code.h"
34/* Set up for C function definitions, even when using C++ */
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39/* Avoid including vulkan.h, don't define VkInstance if it's already included */
40#ifdef VULKAN_H_
41#define NO_SDL_VULKAN_TYPEDEFS
42#endif
43#ifndef NO_SDL_VULKAN_TYPEDEFS
44#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
45
46#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
47#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
48#else
49#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
50#endif
51
52VK_DEFINE_HANDLE(VkInstance)
53VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
54
55#endif /* !NO_SDL_VULKAN_TYPEDEFS */
56
57typedef VkInstance SDL_vulkanInstance;
58typedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */
59
60/**
61 * \name Vulkan support functions
62 *
63 * \note SDL_Vulkan_GetInstanceExtensions & SDL_Vulkan_CreateSurface API
64 * is compatable with Tizen's implementation of Vulkan in SDL.
65 */
66/* @{ */
67
68/**
69 * Dynamically load the Vulkan loader library.
70 *
71 * This should be called after initializing the video driver, but before
72 * creating any Vulkan windows. If no Vulkan loader library is loaded, the
73 * default library will be loaded upon creation of the first Vulkan window.
74 *
75 * It is fairly common for Vulkan applications to link with libvulkan instead
76 * of explicitly loading it at run time. This will work with SDL provided the
77 * application links to a dynamic library and both it and SDL use the same
78 * search path.
79 *
80 * If you specify a non-NULL `path`, an application should retrieve all of the
81 * Vulkan functions it uses from the dynamic library using
82 * SDL_Vulkan_GetVkGetInstanceProcAddr unless you can guarantee `path` points
83 * to the same vulkan loader library the application linked to.
84 *
85 * On Apple devices, if `path` is NULL, SDL will attempt to find the
86 * `vkGetInstanceProcAddr` address within all the Mach-O images of the current
87 * process. This is because it is fairly common for Vulkan applications to
88 * link with libvulkan (and historically MoltenVK was provided as a static
89 * library). If it is not found, on macOS, SDL will attempt to load
90 * `vulkan.framework/vulkan`, `libvulkan.1.dylib`,
91 * `MoltenVK.framework/MoltenVK`, and `libMoltenVK.dylib`, in that order. On
92 * iOS, SDL will attempt to load `libMoltenVK.dylib`. Applications using a
93 * dynamic framework or .dylib must ensure it is included in its application
94 * bundle.
95 *
96 * On non-Apple devices, application linking with a static libvulkan is not
97 * supported. Either do not link to the Vulkan loader or link to a dynamic
98 * library version.
99 *
100 * \param path The platform dependent Vulkan loader library name or NULL
101 * \returns 0 on success or -1 if the library couldn't be loaded; call
102 * SDL_GetError() for more information.
103 *
104 * \since This function is available since SDL 2.0.6.
105 *
106 * \sa SDL_Vulkan_GetVkInstanceProcAddr
107 * \sa SDL_Vulkan_UnloadLibrary
108 */
109extern DECLSPEC int SDLCALL SDL_Vulkan_LoadLibrary(const char *path);
110
111/**
112 * Get the address of the `vkGetInstanceProcAddr` function.
113 *
114 * This should be called after either calling SDL_Vulkan_LoadLibrary() or
115 * creating an SDL_Window with the `SDL_WINDOW_VULKAN` flag.
116 *
117 * \returns the function pointer for `vkGetInstanceProcAddr` or NULL on error.
118 *
119 * \since This function is available since SDL 2.0.6.
120 */
121extern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void);
122
123/**
124 * Unload the Vulkan library previously loaded by SDL_Vulkan_LoadLibrary()
125 *
126 * \since This function is available since SDL 2.0.6.
127 *
128 * \sa SDL_Vulkan_LoadLibrary
129 */
130extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void);
131
132/**
133 * Get the names of the Vulkan instance extensions needed to create a surface
134 * with SDL_Vulkan_CreateSurface.
135 *
136 * If `pNames` is NULL, then the number of required Vulkan instance extensions
137 * is returned in `pCount`. Otherwise, `pCount` must point to a variable set
138 * to the number of elements in the `pNames` array, and on return the variable
139 * is overwritten with the number of names actually written to `pNames`. If
140 * `pCount` is less than the number of required extensions, at most `pCount`
141 * structures will be written. If `pCount` is smaller than the number of
142 * required extensions, SDL_FALSE will be returned instead of SDL_TRUE, to
143 * indicate that not all the required extensions were returned.
144 *
145 * The `window` parameter is currently needed to be valid as of SDL 2.0.8,
146 * however, this parameter will likely be removed in future releases
147 *
148 * \param window A window for which the required Vulkan instance extensions
149 * should be retrieved (will be deprecated in a future release)
150 * \param pCount A pointer to an unsigned int corresponding to the number of
151 * extensions to be returned
152 * \param pNames NULL or a pointer to an array to be filled with required
153 * Vulkan instance extensions
154 * \returns SDL_TRUE on success, SDL_FALSE on error.
155 *
156 * \since This function is available since SDL 2.0.6.
157 *
158 * \sa SDL_Vulkan_CreateSurface
159 */
160extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(SDL_Window *window,
161 unsigned int *pCount,
162 const char **pNames);
163
164/**
165 * Create a Vulkan rendering surface for a window.
166 *
167 * The `window` must have been created with the `SDL_WINDOW_VULKAN` flag and
168 * `instance` must have been created with extensions returned by
169 * SDL_Vulkan_GetInstanceExtensions() enabled.
170 *
171 * \param window The window to which to attach the Vulkan surface
172 * \param instance The Vulkan instance handle
173 * \param surface A pointer to a VkSurfaceKHR handle to output the newly
174 * created surface
175 * \returns SDL_TRUE on success, SDL_FALSE on error.
176 *
177 * \since This function is available since SDL 2.0.6.
178 *
179 * \sa SDL_Vulkan_GetInstanceExtensions
180 * \sa SDL_Vulkan_GetDrawableSize
181 */
182extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(SDL_Window *window,
183 VkInstance instance,
184 VkSurfaceKHR* surface);
185
186/**
187 * Get the size of the window's underlying drawable dimensions in pixels.
188 *
189 * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI
190 * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a
191 * platform with high-DPI support (Apple calls this "Retina"), and not
192 * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint.
193 *
194 * \param window an SDL_Window for which the size is to be queried
195 * \param w Pointer to the variable to write the width to or NULL
196 * \param h Pointer to the variable to write the height to or NULL
197 *
198 * \since This function is available since SDL 2.0.6.
199 *
200 * \sa SDL_GetWindowSize
201 * \sa SDL_CreateWindow
202 * \sa SDL_Vulkan_CreateSurface
203 */
204extern DECLSPEC void SDLCALL SDL_Vulkan_GetDrawableSize(SDL_Window * window,
205 int *w, int *h);
206
207/* @} *//* Vulkan support functions */
208
209/* Ends C function definitions when using C++ */
210#ifdef __cplusplus
211}
212#endif
213#include "close_code.h"
214
215#endif /* SDL_vulkan_h_ */
diff --git a/vendor/SDL2/include/begin_code.h b/vendor/SDL2/include/begin_code.h new file mode 100644 index 0000000..63f064b --- /dev/null +++ b/vendor/SDL2/include/begin_code.h
@@ -0,0 +1,187 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file begin_code.h
24 *
25 * This file sets things up for C dynamic library function definitions,
26 * static inlined functions, and structures aligned at 4-byte alignment.
27 * If you don't like ugly C preprocessor code, don't look at this file. :)
28 */
29
30/* This shouldn't be nested -- included it around code only. */
31#ifdef _begin_code_h
32#error Nested inclusion of begin_code.h
33#endif
34#define _begin_code_h
35
36#ifndef SDL_DEPRECATED
37# if (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */
38# define SDL_DEPRECATED __attribute__((deprecated))
39# else
40# define SDL_DEPRECATED
41# endif
42#endif
43
44#ifndef SDL_UNUSED
45# ifdef __GNUC__
46# define SDL_UNUSED __attribute__((unused))
47# else
48# define SDL_UNUSED
49# endif
50#endif
51
52/* Some compilers use a special export keyword */
53#ifndef DECLSPEC
54# if defined(__WIN32__) || defined(__WINRT__) || defined(__CYGWIN__)
55# ifdef DLL_EXPORT
56# define DECLSPEC __declspec(dllexport)
57# else
58# define DECLSPEC
59# endif
60# elif defined(__OS2__)
61# ifdef BUILD_SDL
62# define DECLSPEC __declspec(dllexport)
63# else
64# define DECLSPEC
65# endif
66# else
67# if defined(__GNUC__) && __GNUC__ >= 4
68# define DECLSPEC __attribute__ ((visibility("default")))
69# else
70# define DECLSPEC
71# endif
72# endif
73#endif
74
75/* By default SDL uses the C calling convention */
76#ifndef SDLCALL
77#if (defined(__WIN32__) || defined(__WINRT__)) && !defined(__GNUC__)
78#define SDLCALL __cdecl
79#elif defined(__OS2__) || defined(__EMX__)
80#define SDLCALL _System
81# if defined (__GNUC__) && !defined(_System)
82# define _System /* for old EMX/GCC compat. */
83# endif
84#else
85#define SDLCALL
86#endif
87#endif /* SDLCALL */
88
89/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */
90#ifdef __SYMBIAN32__
91#undef DECLSPEC
92#define DECLSPEC
93#endif /* __SYMBIAN32__ */
94
95/* Force structure packing at 4 byte alignment.
96 This is necessary if the header is included in code which has structure
97 packing set to an alternate value, say for loading structures from disk.
98 The packing is reset to the previous value in close_code.h
99 */
100#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
101#ifdef _MSC_VER
102#pragma warning(disable: 4103)
103#endif
104#ifdef __clang__
105#pragma clang diagnostic ignored "-Wpragma-pack"
106#endif
107#ifdef __BORLANDC__
108#pragma nopackwarning
109#endif
110#ifdef _M_X64
111/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */
112#pragma pack(push,8)
113#else
114#pragma pack(push,4)
115#endif
116#endif /* Compiler needs structure packing set */
117
118#ifndef SDL_INLINE
119#if defined(__GNUC__)
120#define SDL_INLINE __inline__
121#elif defined(_MSC_VER) || defined(__BORLANDC__) || \
122 defined(__DMC__) || defined(__SC__) || \
123 defined(__WATCOMC__) || defined(__LCC__) || \
124 defined(__DECC) || defined(__CC_ARM)
125#define SDL_INLINE __inline
126#ifndef __inline__
127#define __inline__ __inline
128#endif
129#else
130#define SDL_INLINE inline
131#ifndef __inline__
132#define __inline__ inline
133#endif
134#endif
135#endif /* SDL_INLINE not defined */
136
137#ifndef SDL_FORCE_INLINE
138#if defined(_MSC_VER)
139#define SDL_FORCE_INLINE __forceinline
140#elif ( (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) )
141#define SDL_FORCE_INLINE __attribute__((always_inline)) static __inline__
142#else
143#define SDL_FORCE_INLINE static SDL_INLINE
144#endif
145#endif /* SDL_FORCE_INLINE not defined */
146
147#ifndef SDL_NORETURN
148#if defined(__GNUC__)
149#define SDL_NORETURN __attribute__((noreturn))
150#elif defined(_MSC_VER)
151#define SDL_NORETURN __declspec(noreturn)
152#else
153#define SDL_NORETURN
154#endif
155#endif /* SDL_NORETURN not defined */
156
157/* Apparently this is needed by several Windows compilers */
158#if !defined(__MACH__)
159#ifndef NULL
160#ifdef __cplusplus
161#define NULL 0
162#else
163#define NULL ((void *)0)
164#endif
165#endif /* NULL */
166#endif /* ! Mac OS X - breaks precompiled headers */
167
168#ifndef SDL_FALLTHROUGH
169#if (defined(__cplusplus) && __cplusplus >= 201703L) || \
170 (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L)
171#define SDL_FALLTHROUGH [[fallthrough]]
172#else
173#if defined(__has_attribute)
174#define _HAS_FALLTHROUGH __has_attribute(__fallthrough__)
175#else
176#define _HAS_FALLTHROUGH 0
177#endif /* __has_attribute */
178#if _HAS_FALLTHROUGH && \
179 ((defined(__GNUC__) && __GNUC__ >= 7) || \
180 (defined(__clang_major__) && __clang_major__ >= 10))
181#define SDL_FALLTHROUGH __attribute__((__fallthrough__))
182#else
183#define SDL_FALLTHROUGH do {} while (0) /* fallthrough */
184#endif /* _HAS_FALLTHROUGH */
185#undef _HAS_FALLTHROUGH
186#endif /* C++17 or C2x */
187#endif /* SDL_FALLTHROUGH not defined */
diff --git a/vendor/SDL2/include/close_code.h b/vendor/SDL2/include/close_code.h new file mode 100644 index 0000000..dc73432 --- /dev/null +++ b/vendor/SDL2/include/close_code.h
@@ -0,0 +1,40 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
22/**
23 * \file close_code.h
24 *
25 * This file reverses the effects of begin_code.h and should be included
26 * after you finish any function and structure declarations in your headers
27 */
28
29#ifndef _begin_code_h
30#error close_code.h included without matching begin_code.h
31#endif
32#undef _begin_code_h
33
34/* Reset structure packing at previous byte alignment */
35#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
36#ifdef __BORLANDC__
37#pragma nopackwarning
38#endif
39#pragma pack(pop)
40#endif /* Compiler needs structure packing set */