summaryrefslogtreecommitdiff
path: root/src/contrib/SDL-2.30.2/include
diff options
context:
space:
mode:
author3gg <3gg@shellblade.net>2024-05-04 16:51:29 -0700
committer3gg <3gg@shellblade.net>2024-05-04 16:51:29 -0700
commit8222bfe56d4dabe8d92fc4b25ea1b0163b16f3e1 (patch)
tree763389e42276035ac134d94eb1dc32293b88d807 /src/contrib/SDL-2.30.2/include
Initial commit.
Diffstat (limited to 'src/contrib/SDL-2.30.2/include')
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL.h233
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_assert.h322
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_atomic.h414
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_audio.h1500
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_bits.h126
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_blendmode.h198
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_clipboard.h141
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_config.h61
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_config.h.cmake570
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_config.h.in498
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_config_android.h194
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_config_emscripten.h218
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_config_iphoneos.h217
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_config_macosx.h277
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_config_minimal.h95
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_config_ngage.h89
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_config_os2.h207
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_config_pandora.h141
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_config_windows.h331
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_config_wingdk.h253
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_config_winrt.h220
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_config_xbox.h240
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_copying.h20
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_cpuinfo.h594
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_egl.h2352
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_endian.h348
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_error.h163
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_events.h1159
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_filesystem.h149
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_gamecontroller.h1096
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_gesture.h117
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_guid.h100
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_haptic.h1341
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_hidapi.h451
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_hints.h2880
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_joystick.h1069
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_keyboard.h355
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_keycode.h358
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_loadso.h115
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_locale.h103
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_log.h404
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_main.h282
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_messagebox.h193
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_metal.h113
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_misc.h79
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_mouse.h464
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_mutex.h545
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_name.h33
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_opengl.h2132
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_opengl_glext.h13213
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_opengles.h39
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_opengles2.h52
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_opengles2_gl2.h656
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_opengles2_gl2ext.h4033
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_opengles2_gl2platform.h27
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_opengles2_khrplatform.h311
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_pixels.h662
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_platform.h269
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_power.h87
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_quit.h58
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_rect.h376
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_render.h1924
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_revision.h6
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_revision.h.cmake8
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_rwops.h841
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_scancode.h438
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_sensor.h322
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_shape.h155
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_stdinc.h844
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_surface.h997
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_system.h638
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_syswm.h386
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_test.h69
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_test_assert.h105
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_test_common.h236
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_test_compare.h69
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_test_crc32.h124
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_test_font.h168
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_test_fuzzer.h386
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_test_harness.h134
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_test_images.h78
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_test_log.h67
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_test_md5.h129
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_test_memory.h63
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_test_random.h115
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_thread.h464
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_timer.h222
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_touch.h150
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_types.h29
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_version.h204
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_video.h2184
-rw-r--r--src/contrib/SDL-2.30.2/include/SDL_vulkan.h215
-rw-r--r--src/contrib/SDL-2.30.2/include/begin_code.h189
-rw-r--r--src/contrib/SDL-2.30.2/include/close_code.h40
94 files changed, 55342 insertions, 0 deletions
diff --git a/src/contrib/SDL-2.30.2/include/SDL.h b/src/contrib/SDL-2.30.2/include/SDL.h
new file mode 100644
index 0000000..20c903b
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL.h
@@ -0,0 +1,233 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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_guid.h"
45#include "SDL_haptic.h"
46#include "SDL_hidapi.h"
47#include "SDL_hints.h"
48#include "SDL_joystick.h"
49#include "SDL_loadso.h"
50#include "SDL_log.h"
51#include "SDL_messagebox.h"
52#include "SDL_metal.h"
53#include "SDL_mutex.h"
54#include "SDL_power.h"
55#include "SDL_render.h"
56#include "SDL_rwops.h"
57#include "SDL_sensor.h"
58#include "SDL_shape.h"
59#include "SDL_system.h"
60#include "SDL_thread.h"
61#include "SDL_timer.h"
62#include "SDL_version.h"
63#include "SDL_video.h"
64#include "SDL_locale.h"
65#include "SDL_misc.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/* As of version 0.5, SDL is loaded dynamically into the application */
74
75/**
76 * \name SDL_INIT_*
77 *
78 * These are the flags which may be passed to SDL_Init(). You should
79 * specify the subsystems which you will be using in your application.
80 */
81/* @{ */
82#define SDL_INIT_TIMER 0x00000001u
83#define SDL_INIT_AUDIO 0x00000010u
84#define SDL_INIT_VIDEO 0x00000020u /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */
85#define SDL_INIT_JOYSTICK 0x00000200u /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */
86#define SDL_INIT_HAPTIC 0x00001000u
87#define SDL_INIT_GAMECONTROLLER 0x00002000u /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */
88#define SDL_INIT_EVENTS 0x00004000u
89#define SDL_INIT_SENSOR 0x00008000u
90#define SDL_INIT_NOPARACHUTE 0x00100000u /**< compatibility; this flag is ignored. */
91#define SDL_INIT_EVERYTHING ( \
92 SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \
93 SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \
94 )
95/* @} */
96
97/**
98 * Initialize the SDL library.
99 *
100 * SDL_Init() simply forwards to calling SDL_InitSubSystem(). Therefore, the
101 * two may be used interchangeably. Though for readability of your code
102 * SDL_InitSubSystem() might be preferred.
103 *
104 * The file I/O (for example: SDL_RWFromFile) and threading (SDL_CreateThread)
105 * subsystems are initialized by default. Message boxes
106 * (SDL_ShowSimpleMessageBox) also attempt to work without initializing the
107 * video subsystem, in hopes of being useful in showing an error dialog when
108 * SDL_Init fails. You must specifically initialize other subsystems if you
109 * use them in your application.
110 *
111 * Logging (such as SDL_Log) works without initialization, too.
112 *
113 * `flags` may be any of the following OR'd together:
114 *
115 * - `SDL_INIT_TIMER`: timer subsystem
116 * - `SDL_INIT_AUDIO`: audio subsystem
117 * - `SDL_INIT_VIDEO`: video subsystem; automatically initializes the events
118 * subsystem
119 * - `SDL_INIT_JOYSTICK`: joystick subsystem; automatically initializes the
120 * events subsystem
121 * - `SDL_INIT_HAPTIC`: haptic (force feedback) subsystem
122 * - `SDL_INIT_GAMECONTROLLER`: controller subsystem; automatically
123 * initializes the joystick subsystem
124 * - `SDL_INIT_EVENTS`: events subsystem
125 * - `SDL_INIT_EVERYTHING`: all of the above subsystems
126 * - `SDL_INIT_NOPARACHUTE`: compatibility; this flag is ignored
127 *
128 * Subsystem initialization is ref-counted, you must call SDL_QuitSubSystem()
129 * for each SDL_InitSubSystem() to correctly shutdown a subsystem manually (or
130 * call SDL_Quit() to force shutdown). If a subsystem is already loaded then
131 * this call will increase the ref-count and return.
132 *
133 * \param flags subsystem initialization flags
134 * \returns 0 on success or a negative error code on failure; call
135 * SDL_GetError() for more information.
136 *
137 * \since This function is available since SDL 2.0.0.
138 *
139 * \sa SDL_InitSubSystem
140 * \sa SDL_Quit
141 * \sa SDL_SetMainReady
142 * \sa SDL_WasInit
143 */
144extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags);
145
146/**
147 * Compatibility function to initialize the SDL library.
148 *
149 * In SDL2, this function and SDL_Init() are interchangeable.
150 *
151 * \param flags any of the flags used by SDL_Init(); see SDL_Init for details.
152 * \returns 0 on success or a negative error code on failure; call
153 * SDL_GetError() for more information.
154 *
155 * \since This function is available since SDL 2.0.0.
156 *
157 * \sa SDL_Init
158 * \sa SDL_Quit
159 * \sa SDL_QuitSubSystem
160 */
161extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags);
162
163/**
164 * Shut down specific SDL subsystems.
165 *
166 * If you start a subsystem using a call to that subsystem's init function
167 * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(),
168 * SDL_QuitSubSystem() and SDL_WasInit() will not work. You will need to use
169 * that subsystem's quit function (SDL_VideoQuit()) directly instead. But
170 * generally, you should not be using those functions directly anyhow; use
171 * SDL_Init() instead.
172 *
173 * You still need to call SDL_Quit() even if you close all open subsystems
174 * with SDL_QuitSubSystem().
175 *
176 * \param flags any of the flags used by SDL_Init(); see SDL_Init for details.
177 *
178 * \since This function is available since SDL 2.0.0.
179 *
180 * \sa SDL_InitSubSystem
181 * \sa SDL_Quit
182 */
183extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags);
184
185/**
186 * Get a mask of the specified subsystems which are currently initialized.
187 *
188 * \param flags any of the flags used by SDL_Init(); see SDL_Init for details.
189 * \returns a mask of all initialized subsystems if `flags` is 0, otherwise it
190 * returns the initialization status of the specified subsystems.
191 *
192 * The return value does not include SDL_INIT_NOPARACHUTE.
193 *
194 * \since This function is available since SDL 2.0.0.
195 *
196 * \sa SDL_Init
197 * \sa SDL_InitSubSystem
198 */
199extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags);
200
201/**
202 * Clean up all initialized subsystems.
203 *
204 * You should call this function even if you have already shutdown each
205 * initialized subsystem with SDL_QuitSubSystem(). It is safe to call this
206 * function even in the case of errors in initialization.
207 *
208 * If you start a subsystem using a call to that subsystem's init function
209 * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(),
210 * then you must use that subsystem's quit function (SDL_VideoQuit()) to shut
211 * it down before calling SDL_Quit(). But generally, you should not be using
212 * those functions directly anyhow; use SDL_Init() instead.
213 *
214 * You can use this function with atexit() to ensure that it is run when your
215 * application is shutdown, but it is not wise to do this from a library or
216 * other dynamically loaded code.
217 *
218 * \since This function is available since SDL 2.0.0.
219 *
220 * \sa SDL_Init
221 * \sa SDL_QuitSubSystem
222 */
223extern DECLSPEC void SDLCALL SDL_Quit(void);
224
225/* Ends C function definitions when using C++ */
226#ifdef __cplusplus
227}
228#endif
229#include "close_code.h"
230
231#endif /* SDL_h_ */
232
233/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_assert.h b/src/contrib/SDL-2.30.2/include/SDL_assert.h
new file mode 100644
index 0000000..a396d4e
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_assert.h
@@ -0,0 +1,322 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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_stdinc.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 _SDL_HAS_BUILTIN(__builtin_debugtrap)
55 #define SDL_TriggerBreakpoint() __builtin_debugtrap()
56#elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) )
57 #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" )
58#elif (defined(__GNUC__) || defined(__clang__)) && defined(__riscv)
59 #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "ebreak\n\t" )
60#elif ( defined(__APPLE__) && (defined(__arm64__) || defined(__aarch64__)) ) /* this might work on other ARM targets, but this is a known quantity... */
61 #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #22\n\t" )
62#elif defined(__APPLE__) && defined(__arm__)
63 #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "bkpt #22\n\t" )
64#elif defined(__386__) && defined(__WATCOMC__)
65 #define SDL_TriggerBreakpoint() { _asm { int 0x03 } }
66#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__)
67 #include <signal.h>
68 #define SDL_TriggerBreakpoint() raise(SIGTRAP)
69#else
70 /* How do we trigger breakpoints on this platform? */
71 #define SDL_TriggerBreakpoint()
72#endif
73
74#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */
75# define SDL_FUNCTION __func__
76#elif ((defined(__GNUC__) && (__GNUC__ >= 2)) || defined(_MSC_VER) || defined (__WATCOMC__))
77# define SDL_FUNCTION __FUNCTION__
78#else
79# define SDL_FUNCTION "???"
80#endif
81#define SDL_FILE __FILE__
82#define SDL_LINE __LINE__
83
84/*
85sizeof (x) makes the compiler still parse the expression even without
86assertions enabled, so the code is always checked at compile time, but
87doesn't actually generate code for it, so there are no side effects or
88expensive checks at run time, just the constant size of what x WOULD be,
89which presumably gets optimized out as unused.
90This also solves the problem of...
91
92 int somevalue = blah();
93 SDL_assert(somevalue == 1);
94
95...which would cause compiles to complain that somevalue is unused if we
96disable assertions.
97*/
98
99/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking
100 this condition isn't constant. And looks like an owl's face! */
101#ifdef _MSC_VER /* stupid /W4 warnings. */
102#define SDL_NULL_WHILE_LOOP_CONDITION (0,0)
103#else
104#define SDL_NULL_WHILE_LOOP_CONDITION (0)
105#endif
106
107#define SDL_disabled_assert(condition) \
108 do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION)
109
110typedef enum
111{
112 SDL_ASSERTION_RETRY, /**< Retry the assert immediately. */
113 SDL_ASSERTION_BREAK, /**< Make the debugger trigger a breakpoint. */
114 SDL_ASSERTION_ABORT, /**< Terminate the program. */
115 SDL_ASSERTION_IGNORE, /**< Ignore the assert. */
116 SDL_ASSERTION_ALWAYS_IGNORE /**< Ignore the assert from now on. */
117} SDL_AssertState;
118
119typedef struct SDL_AssertData
120{
121 int always_ignore;
122 unsigned int trigger_count;
123 const char *condition;
124 const char *filename;
125 int linenum;
126 const char *function;
127 const struct SDL_AssertData *next;
128} SDL_AssertData;
129
130/* Never call this directly. Use the SDL_assert* macros. */
131extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *,
132 const char *,
133 const char *, int)
134#if defined(__clang__)
135#if __has_feature(attribute_analyzer_noreturn)
136/* this tells Clang's static analysis that we're a custom assert function,
137 and that the analyzer should assume the condition was always true past this
138 SDL_assert test. */
139 __attribute__((analyzer_noreturn))
140#endif
141#endif
142;
143
144/* the do {} while(0) avoids dangling else problems:
145 if (x) SDL_assert(y); else blah();
146 ... without the do/while, the "else" could attach to this macro's "if".
147 We try to handle just the minimum we need here in a macro...the loop,
148 the static vars, and break points. The heavy lifting is handled in
149 SDL_ReportAssertion(), in SDL_assert.c.
150*/
151#define SDL_enabled_assert(condition) \
152 do { \
153 while ( !(condition) ) { \
154 static struct SDL_AssertData sdl_assert_data = { 0, 0, #condition, 0, 0, 0, 0 }; \
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/* Enable various levels of assertions. */
166#if SDL_ASSERT_LEVEL == 0 /* assertions disabled */
167# define SDL_assert(condition) SDL_disabled_assert(condition)
168# define SDL_assert_release(condition) SDL_disabled_assert(condition)
169# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
170#elif SDL_ASSERT_LEVEL == 1 /* release settings. */
171# define SDL_assert(condition) SDL_disabled_assert(condition)
172# define SDL_assert_release(condition) SDL_enabled_assert(condition)
173# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
174#elif SDL_ASSERT_LEVEL == 2 /* normal settings. */
175# define SDL_assert(condition) SDL_enabled_assert(condition)
176# define SDL_assert_release(condition) SDL_enabled_assert(condition)
177# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
178#elif SDL_ASSERT_LEVEL == 3 /* paranoid settings. */
179# define SDL_assert(condition) SDL_enabled_assert(condition)
180# define SDL_assert_release(condition) SDL_enabled_assert(condition)
181# define SDL_assert_paranoid(condition) SDL_enabled_assert(condition)
182#else
183# error Unknown assertion level.
184#endif
185
186/* this assertion is never disabled at any level. */
187#define SDL_assert_always(condition) SDL_enabled_assert(condition)
188
189
190/**
191 * A callback that fires when an SDL assertion fails.
192 *
193 * \param data a pointer to the SDL_AssertData structure corresponding to the
194 * current assertion
195 * \param userdata what was passed as `userdata` to SDL_SetAssertionHandler()
196 * \returns an SDL_AssertState value indicating how to handle the failure.
197 */
198typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)(
199 const SDL_AssertData* data, void* userdata);
200
201/**
202 * Set an application-defined assertion handler.
203 *
204 * This function allows an application to show its own assertion UI and/or
205 * force the response to an assertion failure. If the application doesn't
206 * provide this, SDL will try to do the right thing, popping up a
207 * system-specific GUI dialog, and probably minimizing any fullscreen windows.
208 *
209 * This callback may fire from any thread, but it runs wrapped in a mutex, so
210 * it will only fire from one thread at a time.
211 *
212 * This callback is NOT reset to SDL's internal handler upon SDL_Quit()!
213 *
214 * \param handler the SDL_AssertionHandler function to call when an assertion
215 * fails or NULL for the default handler
216 * \param userdata a pointer that is passed to `handler`
217 *
218 * \since This function is available since SDL 2.0.0.
219 *
220 * \sa SDL_GetAssertionHandler
221 */
222extern DECLSPEC void SDLCALL SDL_SetAssertionHandler(
223 SDL_AssertionHandler handler,
224 void *userdata);
225
226/**
227 * Get the default assertion handler.
228 *
229 * This returns the function pointer that is called by default when an
230 * assertion is triggered. This is an internal function provided by SDL, that
231 * is used for assertions when SDL_SetAssertionHandler() hasn't been used to
232 * provide a different function.
233 *
234 * \returns the default SDL_AssertionHandler that is called when an assert
235 * triggers.
236 *
237 * \since This function is available since SDL 2.0.2.
238 *
239 * \sa SDL_GetAssertionHandler
240 */
241extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void);
242
243/**
244 * Get the current assertion handler.
245 *
246 * This returns the function pointer that is called when an assertion is
247 * triggered. This is either the value last passed to
248 * SDL_SetAssertionHandler(), or if no application-specified function is set,
249 * is equivalent to calling SDL_GetDefaultAssertionHandler().
250 *
251 * The parameter `puserdata` is a pointer to a void*, which will store the
252 * "userdata" pointer that was passed to SDL_SetAssertionHandler(). This value
253 * will always be NULL for the default handler. If you don't care about this
254 * data, it is safe to pass a NULL pointer to this function to ignore it.
255 *
256 * \param puserdata pointer which is filled with the "userdata" pointer that
257 * was passed to SDL_SetAssertionHandler()
258 * \returns the SDL_AssertionHandler that is called when an assert triggers.
259 *
260 * \since This function is available since SDL 2.0.2.
261 *
262 * \sa SDL_SetAssertionHandler
263 */
264extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata);
265
266/**
267 * Get a list of all assertion failures.
268 *
269 * This function gets all assertions triggered since the last call to
270 * SDL_ResetAssertionReport(), or the start of the program.
271 *
272 * The proper way to examine this data looks something like this:
273 *
274 * ```c
275 * const SDL_AssertData *item = SDL_GetAssertionReport();
276 * while (item) {
277 * printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n",
278 * item->condition, item->function, item->filename,
279 * item->linenum, item->trigger_count,
280 * item->always_ignore ? "yes" : "no");
281 * item = item->next;
282 * }
283 * ```
284 *
285 * \returns a list of all failed assertions or NULL if the list is empty. This
286 * memory should not be modified or freed by the application.
287 *
288 * \since This function is available since SDL 2.0.0.
289 *
290 * \sa SDL_ResetAssertionReport
291 */
292extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void);
293
294/**
295 * Clear the list of all assertion failures.
296 *
297 * This function will clear the list of all assertions triggered up to that
298 * point. Immediately following this call, SDL_GetAssertionReport will return
299 * no items. In addition, any previously-triggered assertions will be reset to
300 * a trigger_count of zero, and their always_ignore state will be false.
301 *
302 * \since This function is available since SDL 2.0.0.
303 *
304 * \sa SDL_GetAssertionReport
305 */
306extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void);
307
308
309/* these had wrong naming conventions until 2.0.4. Please update your app! */
310#define SDL_assert_state SDL_AssertState
311#define SDL_assert_data SDL_AssertData
312
313
314/* Ends C function definitions when using C++ */
315#ifdef __cplusplus
316}
317#endif
318#include "close_code.h"
319
320#endif /* SDL_assert_h_ */
321
322/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_atomic.h b/src/contrib/SDL-2.30.2/include/SDL_atomic.h
new file mode 100644
index 0000000..1fa18f4
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_atomic.h
@@ -0,0 +1,414 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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__)
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/* "REP NOP" is PAUSE, coded for tools that don't know it by that name. */
241#if (defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))
242 #define SDL_CPUPauseInstruction() __asm__ __volatile__("pause\n") /* Some assemblers can't do REP NOP, so go with PAUSE. */
243#elif (defined(__arm__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7) || defined(__aarch64__)
244 #define SDL_CPUPauseInstruction() __asm__ __volatile__("yield" ::: "memory")
245#elif (defined(__powerpc__) || defined(__powerpc64__))
246 #define SDL_CPUPauseInstruction() __asm__ __volatile__("or 27,27,27");
247#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64))
248 #define SDL_CPUPauseInstruction() _mm_pause() /* this is actually "rep nop" and not a SIMD instruction. No inline asm in MSVC x86-64! */
249#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64))
250 #define SDL_CPUPauseInstruction() __yield()
251#elif defined(__WATCOMC__) && defined(__386__)
252 extern __inline void SDL_CPUPauseInstruction(void);
253 #pragma aux SDL_CPUPauseInstruction = ".686p" ".xmm2" "pause"
254#else
255 #define SDL_CPUPauseInstruction()
256#endif
257
258
259/**
260 * \brief A type representing an atomic integer value. It is a struct
261 * so people don't accidentally use numeric operations on it.
262 */
263typedef struct { int value; } SDL_atomic_t;
264
265/**
266 * Set an atomic variable to a new value if it is currently an old value.
267 *
268 * ***Note: If you don't know what this function is for, you shouldn't use
269 * it!***
270 *
271 * \param a a pointer to an SDL_atomic_t variable to be modified
272 * \param oldval the old value
273 * \param newval the new value
274 * \returns SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise.
275 *
276 * \since This function is available since SDL 2.0.0.
277 *
278 * \sa SDL_AtomicCASPtr
279 * \sa SDL_AtomicGet
280 * \sa SDL_AtomicSet
281 */
282extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval);
283
284/**
285 * Set an atomic variable to a value.
286 *
287 * This function also acts as a full memory barrier.
288 *
289 * ***Note: If you don't know what this function is for, you shouldn't use
290 * it!***
291 *
292 * \param a a pointer to an SDL_atomic_t variable to be modified
293 * \param v the desired value
294 * \returns the previous value of the atomic variable.
295 *
296 * \since This function is available since SDL 2.0.2.
297 *
298 * \sa SDL_AtomicGet
299 */
300extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v);
301
302/**
303 * Get the value of an atomic variable.
304 *
305 * ***Note: If you don't know what this function is for, you shouldn't use
306 * it!***
307 *
308 * \param a a pointer to an SDL_atomic_t variable
309 * \returns the current value of an atomic variable.
310 *
311 * \since This function is available since SDL 2.0.2.
312 *
313 * \sa SDL_AtomicSet
314 */
315extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a);
316
317/**
318 * Add to an atomic variable.
319 *
320 * This function also acts as a full memory barrier.
321 *
322 * ***Note: If you don't know what this function is for, you shouldn't use
323 * it!***
324 *
325 * \param a a pointer to an SDL_atomic_t variable to be modified
326 * \param v the desired value to add
327 * \returns the previous value of the atomic variable.
328 *
329 * \since This function is available since SDL 2.0.2.
330 *
331 * \sa SDL_AtomicDecRef
332 * \sa SDL_AtomicIncRef
333 */
334extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v);
335
336/**
337 * \brief Increment an atomic variable used as a reference count.
338 */
339#ifndef SDL_AtomicIncRef
340#define SDL_AtomicIncRef(a) SDL_AtomicAdd(a, 1)
341#endif
342
343/**
344 * \brief Decrement an atomic variable used as a reference count.
345 *
346 * \return SDL_TRUE if the variable reached zero after decrementing,
347 * SDL_FALSE otherwise
348 */
349#ifndef SDL_AtomicDecRef
350#define SDL_AtomicDecRef(a) (SDL_AtomicAdd(a, -1) == 1)
351#endif
352
353/**
354 * Set a pointer to a new value if it is currently an old value.
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 oldval the old pointer value
361 * \param newval the new pointer value
362 * \returns SDL_TRUE if the pointer was set, SDL_FALSE otherwise.
363 *
364 * \since This function is available since SDL 2.0.0.
365 *
366 * \sa SDL_AtomicCAS
367 * \sa SDL_AtomicGetPtr
368 * \sa SDL_AtomicSetPtr
369 */
370extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval);
371
372/**
373 * Set a pointer to a value atomically.
374 *
375 * ***Note: If you don't know what this function is for, you shouldn't use
376 * it!***
377 *
378 * \param a a pointer to a pointer
379 * \param v the desired pointer value
380 * \returns the previous value of the pointer.
381 *
382 * \since This function is available since SDL 2.0.2.
383 *
384 * \sa SDL_AtomicCASPtr
385 * \sa SDL_AtomicGetPtr
386 */
387extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v);
388
389/**
390 * Get the value of a pointer atomically.
391 *
392 * ***Note: If you don't know what this function is for, you shouldn't use
393 * it!***
394 *
395 * \param a a pointer to a pointer
396 * \returns the current value of a pointer.
397 *
398 * \since This function is available since SDL 2.0.2.
399 *
400 * \sa SDL_AtomicCASPtr
401 * \sa SDL_AtomicSetPtr
402 */
403extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a);
404
405/* Ends C function definitions when using C++ */
406#ifdef __cplusplus
407}
408#endif
409
410#include "close_code.h"
411
412#endif /* SDL_atomic_h_ */
413
414/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_audio.h b/src/contrib/SDL-2.30.2/include/SDL_audio.h
new file mode 100644
index 0000000..bd8e7ab
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_audio.h
@@ -0,0 +1,1500 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 LFE BL BR (4.1 surround)
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 * \sa SDL_GetDefaultAudioInfo
491 */
492extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index,
493 int iscapture);
494
495/**
496 * Get the preferred audio format of a specific audio device.
497 *
498 * This function is only valid after a successfully initializing the audio
499 * subsystem. The values returned by this function reflect the latest call to
500 * SDL_GetNumAudioDevices(); re-call that function to redetect available
501 * hardware.
502 *
503 * `spec` will be filled with the sample rate, sample format, and channel
504 * count.
505 *
506 * \param index the index of the audio device; valid values range from 0 to
507 * SDL_GetNumAudioDevices() - 1
508 * \param iscapture non-zero to query the list of recording devices, zero to
509 * query the list of output devices.
510 * \param spec The SDL_AudioSpec to be initialized by this function.
511 * \returns 0 on success, nonzero on error
512 *
513 * \since This function is available since SDL 2.0.16.
514 *
515 * \sa SDL_GetNumAudioDevices
516 * \sa SDL_GetDefaultAudioInfo
517 */
518extern DECLSPEC int SDLCALL SDL_GetAudioDeviceSpec(int index,
519 int iscapture,
520 SDL_AudioSpec *spec);
521
522
523/**
524 * Get the name and preferred format of the default audio device.
525 *
526 * Some (but not all!) platforms have an isolated mechanism to get information
527 * about the "default" device. This can actually be a completely different
528 * device that's not in the list you get from SDL_GetAudioDeviceSpec(). It can
529 * even be a network address! (This is discussed in SDL_OpenAudioDevice().)
530 *
531 * As a result, this call is not guaranteed to be performant, as it can query
532 * the sound server directly every time, unlike the other query functions. You
533 * should call this function sparingly!
534 *
535 * `spec` will be filled with the sample rate, sample format, and channel
536 * count, if a default device exists on the system. If `name` is provided,
537 * will be filled with either a dynamically-allocated UTF-8 string or NULL.
538 *
539 * \param name A pointer to be filled with the name of the default device (can
540 * be NULL). Please call SDL_free() when you are done with this
541 * pointer!
542 * \param spec The SDL_AudioSpec to be initialized by this function.
543 * \param iscapture non-zero to query the default recording device, zero to
544 * query the default output device.
545 * \returns 0 on success, nonzero on error
546 *
547 * \since This function is available since SDL 2.24.0.
548 *
549 * \sa SDL_GetAudioDeviceName
550 * \sa SDL_GetAudioDeviceSpec
551 * \sa SDL_OpenAudioDevice
552 */
553extern DECLSPEC int SDLCALL SDL_GetDefaultAudioInfo(char **name,
554 SDL_AudioSpec *spec,
555 int iscapture);
556
557
558/**
559 * Open a specific audio device.
560 *
561 * SDL_OpenAudio(), unlike this function, always acts on device ID 1. As such,
562 * this function will never return a 1 so as not to conflict with the legacy
563 * function.
564 *
565 * Please note that SDL 2.0 before 2.0.5 did not support recording; as such,
566 * this function would fail if `iscapture` was not zero. Starting with SDL
567 * 2.0.5, recording is implemented and this value can be non-zero.
568 *
569 * Passing in a `device` name of NULL requests the most reasonable default
570 * (and is equivalent to what SDL_OpenAudio() does to choose a device). The
571 * `device` name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but
572 * some drivers allow arbitrary and driver-specific strings, such as a
573 * hostname/IP address for a remote audio server, or a filename in the
574 * diskaudio driver.
575 *
576 * An opened audio device starts out paused, and should be enabled for playing
577 * by calling SDL_PauseAudioDevice(devid, 0) when you are ready for your audio
578 * callback function to be called. Since the audio driver may modify the
579 * requested size of the audio buffer, you should allocate any local mixing
580 * buffers after you open the audio device.
581 *
582 * The audio callback runs in a separate thread in most cases; you can prevent
583 * race conditions between your callback and other threads without fully
584 * pausing playback with SDL_LockAudioDevice(). For more information about the
585 * callback, see SDL_AudioSpec.
586 *
587 * Managing the audio spec via 'desired' and 'obtained':
588 *
589 * When filling in the desired audio spec structure:
590 *
591 * - `desired->freq` should be the frequency in sample-frames-per-second (Hz).
592 * - `desired->format` should be the audio format (`AUDIO_S16SYS`, etc).
593 * - `desired->samples` is the desired size of the audio buffer, in _sample
594 * frames_ (with stereo output, two samples--left and right--would make a
595 * single sample frame). This number should be a power of two, and may be
596 * adjusted by the audio driver to a value more suitable for the hardware.
597 * Good values seem to range between 512 and 8096 inclusive, depending on
598 * the application and CPU speed. Smaller values reduce latency, but can
599 * lead to underflow if the application is doing heavy processing and cannot
600 * fill the audio buffer in time. Note that the number of sample frames is
601 * directly related to time by the following formula: `ms =
602 * (sampleframes*1000)/freq`
603 * - `desired->size` is the size in _bytes_ of the audio buffer, and is
604 * calculated by SDL_OpenAudioDevice(). You don't initialize this.
605 * - `desired->silence` is the value used to set the buffer to silence, and is
606 * calculated by SDL_OpenAudioDevice(). You don't initialize this.
607 * - `desired->callback` should be set to a function that will be called when
608 * the audio device is ready for more data. It is passed a pointer to the
609 * audio buffer, and the length in bytes of the audio buffer. This function
610 * usually runs in a separate thread, and so you should protect data
611 * structures that it accesses by calling SDL_LockAudioDevice() and
612 * SDL_UnlockAudioDevice() in your code. Alternately, you may pass a NULL
613 * pointer here, and call SDL_QueueAudio() with some frequency, to queue
614 * more audio samples to be played (or for capture devices, call
615 * SDL_DequeueAudio() with some frequency, to obtain audio samples).
616 * - `desired->userdata` is passed as the first parameter to your callback
617 * function. If you passed a NULL callback, this value is ignored.
618 *
619 * `allowed_changes` can have the following flags OR'd together:
620 *
621 * - `SDL_AUDIO_ALLOW_FREQUENCY_CHANGE`
622 * - `SDL_AUDIO_ALLOW_FORMAT_CHANGE`
623 * - `SDL_AUDIO_ALLOW_CHANNELS_CHANGE`
624 * - `SDL_AUDIO_ALLOW_SAMPLES_CHANGE`
625 * - `SDL_AUDIO_ALLOW_ANY_CHANGE`
626 *
627 * These flags specify how SDL should behave when a device cannot offer a
628 * specific feature. If the application requests a feature that the hardware
629 * doesn't offer, SDL will always try to get the closest equivalent.
630 *
631 * For example, if you ask for float32 audio format, but the sound card only
632 * supports int16, SDL will set the hardware to int16. If you had set
633 * SDL_AUDIO_ALLOW_FORMAT_CHANGE, SDL will change the format in the `obtained`
634 * structure. If that flag was *not* set, SDL will prepare to convert your
635 * callback's float32 audio to int16 before feeding it to the hardware and
636 * will keep the originally requested format in the `obtained` structure.
637 *
638 * The resulting audio specs, varying depending on hardware and on what
639 * changes were allowed, will then be written back to `obtained`.
640 *
641 * If your application can only handle one specific data format, pass a zero
642 * for `allowed_changes` and let SDL transparently handle any differences.
643 *
644 * \param device a UTF-8 string reported by SDL_GetAudioDeviceName() or a
645 * driver-specific name as appropriate. NULL requests the most
646 * reasonable default device.
647 * \param iscapture non-zero to specify a device should be opened for
648 * recording, not playback
649 * \param desired an SDL_AudioSpec structure representing the desired output
650 * format; see SDL_OpenAudio() for more information
651 * \param obtained an SDL_AudioSpec structure filled in with the actual output
652 * format; see SDL_OpenAudio() for more information
653 * \param allowed_changes 0, or one or more flags OR'd together
654 * \returns a valid device ID that is > 0 on success or 0 on failure; call
655 * SDL_GetError() for more information.
656 *
657 * For compatibility with SDL 1.2, this will never return 1, since
658 * SDL reserves that ID for the legacy SDL_OpenAudio() function.
659 *
660 * \since This function is available since SDL 2.0.0.
661 *
662 * \sa SDL_CloseAudioDevice
663 * \sa SDL_GetAudioDeviceName
664 * \sa SDL_LockAudioDevice
665 * \sa SDL_OpenAudio
666 * \sa SDL_PauseAudioDevice
667 * \sa SDL_UnlockAudioDevice
668 */
669extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice(
670 const char *device,
671 int iscapture,
672 const SDL_AudioSpec *desired,
673 SDL_AudioSpec *obtained,
674 int allowed_changes);
675
676
677
678/**
679 * \name Audio state
680 *
681 * Get the current audio state.
682 */
683/* @{ */
684typedef enum
685{
686 SDL_AUDIO_STOPPED = 0,
687 SDL_AUDIO_PLAYING,
688 SDL_AUDIO_PAUSED
689} SDL_AudioStatus;
690
691/**
692 * This function is a legacy means of querying the audio device.
693 *
694 * New programs might want to use SDL_GetAudioDeviceStatus() instead. This
695 * function is equivalent to calling...
696 *
697 * ```c
698 * SDL_GetAudioDeviceStatus(1);
699 * ```
700 *
701 * ...and is only useful if you used the legacy SDL_OpenAudio() function.
702 *
703 * \returns the SDL_AudioStatus of the audio device opened by SDL_OpenAudio().
704 *
705 * \since This function is available since SDL 2.0.0.
706 *
707 * \sa SDL_GetAudioDeviceStatus
708 */
709extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void);
710
711/**
712 * Use this function to get the current audio state of an audio device.
713 *
714 * \param dev the ID of an audio device previously opened with
715 * SDL_OpenAudioDevice()
716 * \returns the SDL_AudioStatus of the specified audio device.
717 *
718 * \since This function is available since SDL 2.0.0.
719 *
720 * \sa SDL_PauseAudioDevice
721 */
722extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev);
723/* @} *//* Audio State */
724
725/**
726 * \name Pause audio functions
727 *
728 * These functions pause and unpause the audio callback processing.
729 * They should be called with a parameter of 0 after opening the audio
730 * device to start playing sound. This is so you can safely initialize
731 * data for your callback function after opening the audio device.
732 * Silence will be written to the audio device during the pause.
733 */
734/* @{ */
735
736/**
737 * This function is a legacy means of pausing the audio device.
738 *
739 * New programs might want to use SDL_PauseAudioDevice() instead. This
740 * function is equivalent to calling...
741 *
742 * ```c
743 * SDL_PauseAudioDevice(1, pause_on);
744 * ```
745 *
746 * ...and is only useful if you used the legacy SDL_OpenAudio() function.
747 *
748 * \param pause_on non-zero to pause, 0 to unpause
749 *
750 * \since This function is available since SDL 2.0.0.
751 *
752 * \sa SDL_GetAudioStatus
753 * \sa SDL_PauseAudioDevice
754 */
755extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on);
756
757/**
758 * Use this function to pause and unpause audio playback on a specified
759 * device.
760 *
761 * This function pauses and unpauses the audio callback processing for a given
762 * device. Newly-opened audio devices start in the paused state, so you must
763 * call this function with **pause_on**=0 after opening the specified audio
764 * device to start playing sound. This allows you to safely initialize data
765 * for your callback function after opening the audio device. Silence will be
766 * written to the audio device while paused, and the audio callback is
767 * guaranteed to not be called. Pausing one device does not prevent other
768 * unpaused devices from running their callbacks.
769 *
770 * Pausing state does not stack; even if you pause a device several times, a
771 * single unpause will start the device playing again, and vice versa. This is
772 * different from how SDL_LockAudioDevice() works.
773 *
774 * If you just need to protect a few variables from race conditions vs your
775 * callback, you shouldn't pause the audio device, as it will lead to dropouts
776 * in the audio playback. Instead, you should use SDL_LockAudioDevice().
777 *
778 * \param dev a device opened by SDL_OpenAudioDevice()
779 * \param pause_on non-zero to pause, 0 to unpause
780 *
781 * \since This function is available since SDL 2.0.0.
782 *
783 * \sa SDL_LockAudioDevice
784 */
785extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,
786 int pause_on);
787/* @} *//* Pause audio functions */
788
789/**
790 * Load the audio data of a WAVE file into memory.
791 *
792 * Loading a WAVE file requires `src`, `spec`, `audio_buf` and `audio_len` to
793 * be valid pointers. The entire data portion of the file is then loaded into
794 * memory and decoded if necessary.
795 *
796 * If `freesrc` is non-zero, the data source gets automatically closed and
797 * freed before the function returns.
798 *
799 * Supported formats are RIFF WAVE files with the formats PCM (8, 16, 24, and
800 * 32 bits), IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and
801 * A-law and mu-law (8 bits). Other formats are currently unsupported and
802 * cause an error.
803 *
804 * If this function succeeds, the pointer returned by it is equal to `spec`
805 * and the pointer to the audio data allocated by the function is written to
806 * `audio_buf` and its length in bytes to `audio_len`. The SDL_AudioSpec
807 * members `freq`, `channels`, and `format` are set to the values of the audio
808 * data in the buffer. The `samples` member is set to a sane default and all
809 * others are set to zero.
810 *
811 * It's necessary to use SDL_FreeWAV() to free the audio data returned in
812 * `audio_buf` when it is no longer used.
813 *
814 * Because of the underspecification of the .WAV format, there are many
815 * problematic files in the wild that cause issues with strict decoders. To
816 * provide compatibility with these files, this decoder is lenient in regards
817 * to the truncation of the file, the fact chunk, and the size of the RIFF
818 * chunk. The hints `SDL_HINT_WAVE_RIFF_CHUNK_SIZE`,
819 * `SDL_HINT_WAVE_TRUNCATION`, and `SDL_HINT_WAVE_FACT_CHUNK` can be used to
820 * tune the behavior of the loading process.
821 *
822 * Any file that is invalid (due to truncation, corruption, or wrong values in
823 * the headers), too big, or unsupported causes an error. Additionally, any
824 * critical I/O error from the data source will terminate the loading process
825 * with an error. The function returns NULL on error and in all cases (with
826 * the exception of `src` being NULL), an appropriate error message will be
827 * set.
828 *
829 * It is required that the data source supports seeking.
830 *
831 * Example:
832 *
833 * ```c
834 * SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, &spec, &buf, &len);
835 * ```
836 *
837 * Note that the SDL_LoadWAV macro does this same thing for you, but in a less
838 * messy way:
839 *
840 * ```c
841 * SDL_LoadWAV("sample.wav", &spec, &buf, &len);
842 * ```
843 *
844 * \param src The data source for the WAVE data
845 * \param freesrc If non-zero, SDL will _always_ free the data source
846 * \param spec An SDL_AudioSpec that will be filled in with the wave file's
847 * format details
848 * \param audio_buf A pointer filled with the audio data, allocated by the
849 * function.
850 * \param audio_len A pointer filled with the length of the audio data buffer
851 * in bytes
852 * \returns This function, if successfully called, returns `spec`, which will
853 * be filled with the audio data format of the wave source data.
854 * `audio_buf` will be filled with a pointer to an allocated buffer
855 * containing the audio data, and `audio_len` is filled with the
856 * length of that audio buffer in bytes.
857 *
858 * This function returns NULL if the .WAV file cannot be opened, uses
859 * an unknown data format, or is corrupt; call SDL_GetError() for
860 * more information.
861 *
862 * When the application is done with the data returned in
863 * `audio_buf`, it should call SDL_FreeWAV() to dispose of it.
864 *
865 * \since This function is available since SDL 2.0.0.
866 *
867 * \sa SDL_FreeWAV
868 * \sa SDL_LoadWAV
869 */
870extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src,
871 int freesrc,
872 SDL_AudioSpec * spec,
873 Uint8 ** audio_buf,
874 Uint32 * audio_len);
875
876/**
877 * Loads a WAV from a file.
878 * Compatibility convenience function.
879 */
880#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \
881 SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len)
882
883/**
884 * Free data previously allocated with SDL_LoadWAV() or SDL_LoadWAV_RW().
885 *
886 * After a WAVE file has been opened with SDL_LoadWAV() or SDL_LoadWAV_RW()
887 * its data can eventually be freed with SDL_FreeWAV(). It is safe to call
888 * this function with a NULL pointer.
889 *
890 * \param audio_buf a pointer to the buffer created by SDL_LoadWAV() or
891 * SDL_LoadWAV_RW()
892 *
893 * \since This function is available since SDL 2.0.0.
894 *
895 * \sa SDL_LoadWAV
896 * \sa SDL_LoadWAV_RW
897 */
898extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf);
899
900/**
901 * Initialize an SDL_AudioCVT structure for conversion.
902 *
903 * Before an SDL_AudioCVT structure can be used to convert audio data it must
904 * be initialized with source and destination information.
905 *
906 * This function will zero out every field of the SDL_AudioCVT, so it must be
907 * called before the application fills in the final buffer information.
908 *
909 * Once this function has returned successfully, and reported that a
910 * conversion is necessary, the application fills in the rest of the fields in
911 * SDL_AudioCVT, now that it knows how large a buffer it needs to allocate,
912 * and then can call SDL_ConvertAudio() to complete the conversion.
913 *
914 * \param cvt an SDL_AudioCVT structure filled in with audio conversion
915 * information
916 * \param src_format the source format of the audio data; for more info see
917 * SDL_AudioFormat
918 * \param src_channels the number of channels in the source
919 * \param src_rate the frequency (sample-frames-per-second) of the source
920 * \param dst_format the destination format of the audio data; for more info
921 * see SDL_AudioFormat
922 * \param dst_channels the number of channels in the destination
923 * \param dst_rate the frequency (sample-frames-per-second) of the destination
924 * \returns 1 if the audio filter is prepared, 0 if no conversion is needed,
925 * or a negative error code on failure; call SDL_GetError() for more
926 * information.
927 *
928 * \since This function is available since SDL 2.0.0.
929 *
930 * \sa SDL_ConvertAudio
931 */
932extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt,
933 SDL_AudioFormat src_format,
934 Uint8 src_channels,
935 int src_rate,
936 SDL_AudioFormat dst_format,
937 Uint8 dst_channels,
938 int dst_rate);
939
940/**
941 * Convert audio data to a desired audio format.
942 *
943 * This function does the actual audio data conversion, after the application
944 * has called SDL_BuildAudioCVT() to prepare the conversion information and
945 * then filled in the buffer details.
946 *
947 * Once the application has initialized the `cvt` structure using
948 * SDL_BuildAudioCVT(), allocated an audio buffer and filled it with audio
949 * data in the source format, this function will convert the buffer, in-place,
950 * to the desired format.
951 *
952 * The data conversion may go through several passes; any given pass may
953 * possibly temporarily increase the size of the data. For example, SDL might
954 * expand 16-bit data to 32 bits before resampling to a lower frequency,
955 * shrinking the data size after having grown it briefly. Since the supplied
956 * buffer will be both the source and destination, converting as necessary
957 * in-place, the application must allocate a buffer that will fully contain
958 * the data during its largest conversion pass. After SDL_BuildAudioCVT()
959 * returns, the application should set the `cvt->len` field to the size, in
960 * bytes, of the source data, and allocate a buffer that is `cvt->len *
961 * cvt->len_mult` bytes long for the `buf` field.
962 *
963 * The source data should be copied into this buffer before the call to
964 * SDL_ConvertAudio(). Upon successful return, this buffer will contain the
965 * converted audio, and `cvt->len_cvt` will be the size of the converted data,
966 * in bytes. Any bytes in the buffer past `cvt->len_cvt` are undefined once
967 * this function returns.
968 *
969 * \param cvt an SDL_AudioCVT structure that was previously set up by
970 * SDL_BuildAudioCVT().
971 * \returns 0 if the conversion was completed successfully or a negative error
972 * code on failure; call SDL_GetError() for more information.
973 *
974 * \since This function is available since SDL 2.0.0.
975 *
976 * \sa SDL_BuildAudioCVT
977 */
978extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt);
979
980/* SDL_AudioStream is a new audio conversion interface.
981 The benefits vs SDL_AudioCVT:
982 - it can handle resampling data in chunks without generating
983 artifacts, when it doesn't have the complete buffer available.
984 - it can handle incoming data in any variable size.
985 - You push data as you have it, and pull it when you need it
986 */
987/* this is opaque to the outside world. */
988struct _SDL_AudioStream;
989typedef struct _SDL_AudioStream SDL_AudioStream;
990
991/**
992 * Create a new audio stream.
993 *
994 * \param src_format The format of the source audio
995 * \param src_channels The number of channels of the source audio
996 * \param src_rate The sampling rate of the source audio
997 * \param dst_format The format of the desired audio output
998 * \param dst_channels The number of channels of the desired audio output
999 * \param dst_rate The sampling rate of the desired audio output
1000 * \returns 0 on success, or -1 on error.
1001 *
1002 * \since This function is available since SDL 2.0.7.
1003 *
1004 * \sa SDL_AudioStreamPut
1005 * \sa SDL_AudioStreamGet
1006 * \sa SDL_AudioStreamAvailable
1007 * \sa SDL_AudioStreamFlush
1008 * \sa SDL_AudioStreamClear
1009 * \sa SDL_FreeAudioStream
1010 */
1011extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format,
1012 const Uint8 src_channels,
1013 const int src_rate,
1014 const SDL_AudioFormat dst_format,
1015 const Uint8 dst_channels,
1016 const int dst_rate);
1017
1018/**
1019 * Add data to be converted/resampled to the stream.
1020 *
1021 * \param stream The stream the audio data is being added to
1022 * \param buf A pointer to the audio data to add
1023 * \param len The number of bytes to write to the stream
1024 * \returns 0 on success, or -1 on error.
1025 *
1026 * \since This function is available since SDL 2.0.7.
1027 *
1028 * \sa SDL_NewAudioStream
1029 * \sa SDL_AudioStreamGet
1030 * \sa SDL_AudioStreamAvailable
1031 * \sa SDL_AudioStreamFlush
1032 * \sa SDL_AudioStreamClear
1033 * \sa SDL_FreeAudioStream
1034 */
1035extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len);
1036
1037/**
1038 * Get converted/resampled data from the stream
1039 *
1040 * \param stream The stream the audio is being requested from
1041 * \param buf A buffer to fill with audio data
1042 * \param len The maximum number of bytes to fill
1043 * \returns the number of bytes read from the stream, or -1 on error
1044 *
1045 * \since This function is available since SDL 2.0.7.
1046 *
1047 * \sa SDL_NewAudioStream
1048 * \sa SDL_AudioStreamPut
1049 * \sa SDL_AudioStreamAvailable
1050 * \sa SDL_AudioStreamFlush
1051 * \sa SDL_AudioStreamClear
1052 * \sa SDL_FreeAudioStream
1053 */
1054extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len);
1055
1056/**
1057 * Get the number of converted/resampled bytes available.
1058 *
1059 * The stream may be buffering data behind the scenes until it has enough to
1060 * resample correctly, so this number might be lower than what you expect, or
1061 * even be zero. Add more data or flush the stream if you need the data now.
1062 *
1063 * \since This function is available since SDL 2.0.7.
1064 *
1065 * \sa SDL_NewAudioStream
1066 * \sa SDL_AudioStreamPut
1067 * \sa SDL_AudioStreamGet
1068 * \sa SDL_AudioStreamFlush
1069 * \sa SDL_AudioStreamClear
1070 * \sa SDL_FreeAudioStream
1071 */
1072extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream);
1073
1074/**
1075 * Tell the stream that you're done sending data, and anything being buffered
1076 * should be converted/resampled and made available immediately.
1077 *
1078 * It is legal to add more data to a stream after flushing, but there will be
1079 * audio gaps in the output. Generally this is intended to signal the end of
1080 * input, so the complete output becomes available.
1081 *
1082 * \since This function is available since SDL 2.0.7.
1083 *
1084 * \sa SDL_NewAudioStream
1085 * \sa SDL_AudioStreamPut
1086 * \sa SDL_AudioStreamGet
1087 * \sa SDL_AudioStreamAvailable
1088 * \sa SDL_AudioStreamClear
1089 * \sa SDL_FreeAudioStream
1090 */
1091extern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream);
1092
1093/**
1094 * Clear any pending data in the stream without converting it
1095 *
1096 * \since This function is available since SDL 2.0.7.
1097 *
1098 * \sa SDL_NewAudioStream
1099 * \sa SDL_AudioStreamPut
1100 * \sa SDL_AudioStreamGet
1101 * \sa SDL_AudioStreamAvailable
1102 * \sa SDL_AudioStreamFlush
1103 * \sa SDL_FreeAudioStream
1104 */
1105extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream);
1106
1107/**
1108 * Free an audio stream
1109 *
1110 * \since This function is available since SDL 2.0.7.
1111 *
1112 * \sa SDL_NewAudioStream
1113 * \sa SDL_AudioStreamPut
1114 * \sa SDL_AudioStreamGet
1115 * \sa SDL_AudioStreamAvailable
1116 * \sa SDL_AudioStreamFlush
1117 * \sa SDL_AudioStreamClear
1118 */
1119extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream);
1120
1121#define SDL_MIX_MAXVOLUME 128
1122
1123/**
1124 * This function is a legacy means of mixing audio.
1125 *
1126 * This function is equivalent to calling...
1127 *
1128 * ```c
1129 * SDL_MixAudioFormat(dst, src, format, len, volume);
1130 * ```
1131 *
1132 * ...where `format` is the obtained format of the audio device from the
1133 * legacy SDL_OpenAudio() function.
1134 *
1135 * \param dst the destination for the mixed audio
1136 * \param src the source audio buffer to be mixed
1137 * \param len the length of the audio buffer in bytes
1138 * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME
1139 * for full audio volume
1140 *
1141 * \since This function is available since SDL 2.0.0.
1142 *
1143 * \sa SDL_MixAudioFormat
1144 */
1145extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src,
1146 Uint32 len, int volume);
1147
1148/**
1149 * Mix audio data in a specified format.
1150 *
1151 * This takes an audio buffer `src` of `len` bytes of `format` data and mixes
1152 * it into `dst`, performing addition, volume adjustment, and overflow
1153 * clipping. The buffer pointed to by `dst` must also be `len` bytes of
1154 * `format` data.
1155 *
1156 * This is provided for convenience -- you can mix your own audio data.
1157 *
1158 * Do not use this function for mixing together more than two streams of
1159 * sample data. The output from repeated application of this function may be
1160 * distorted by clipping, because there is no accumulator with greater range
1161 * than the input (not to mention this being an inefficient way of doing it).
1162 *
1163 * It is a common misconception that this function is required to write audio
1164 * data to an output stream in an audio callback. While you can do that,
1165 * SDL_MixAudioFormat() is really only needed when you're mixing a single
1166 * audio stream with a volume adjustment.
1167 *
1168 * \param dst the destination for the mixed audio
1169 * \param src the source audio buffer to be mixed
1170 * \param format the SDL_AudioFormat structure representing the desired audio
1171 * format
1172 * \param len the length of the audio buffer in bytes
1173 * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME
1174 * for full audio volume
1175 *
1176 * \since This function is available since SDL 2.0.0.
1177 */
1178extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst,
1179 const Uint8 * src,
1180 SDL_AudioFormat format,
1181 Uint32 len, int volume);
1182
1183/**
1184 * Queue more audio on non-callback devices.
1185 *
1186 * If you are looking to retrieve queued audio from a non-callback capture
1187 * device, you want SDL_DequeueAudio() instead. SDL_QueueAudio() will return
1188 * -1 to signify an error if you use it with capture devices.
1189 *
1190 * SDL offers two ways to feed audio to the device: you can either supply a
1191 * callback that SDL triggers with some frequency to obtain more audio (pull
1192 * method), or you can supply no callback, and then SDL will expect you to
1193 * supply data at regular intervals (push method) with this function.
1194 *
1195 * There are no limits on the amount of data you can queue, short of
1196 * exhaustion of address space. Queued data will drain to the device as
1197 * necessary without further intervention from you. If the device needs audio
1198 * but there is not enough queued, it will play silence to make up the
1199 * difference. This means you will have skips in your audio playback if you
1200 * aren't routinely queueing sufficient data.
1201 *
1202 * This function copies the supplied data, so you are safe to free it when the
1203 * function returns. This function is thread-safe, but queueing to the same
1204 * device from two threads at once does not promise which buffer will be
1205 * queued first.
1206 *
1207 * You may not queue audio on a device that is using an application-supplied
1208 * callback; doing so returns an error. You have to use the audio callback or
1209 * queue audio with this function, but not both.
1210 *
1211 * You should not call SDL_LockAudio() on the device before queueing; SDL
1212 * handles locking internally for this function.
1213 *
1214 * Note that SDL2 does not support planar audio. You will need to resample
1215 * from planar audio formats into a non-planar one (see SDL_AudioFormat)
1216 * before queuing audio.
1217 *
1218 * \param dev the device ID to which we will queue audio
1219 * \param data the data to queue to the device for later playback
1220 * \param len the number of bytes (not samples!) to which `data` points
1221 * \returns 0 on success or a negative error code on failure; call
1222 * SDL_GetError() for more information.
1223 *
1224 * \since This function is available since SDL 2.0.4.
1225 *
1226 * \sa SDL_ClearQueuedAudio
1227 * \sa SDL_GetQueuedAudioSize
1228 */
1229extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len);
1230
1231/**
1232 * Dequeue more audio on non-callback devices.
1233 *
1234 * If you are looking to queue audio for output on a non-callback playback
1235 * device, you want SDL_QueueAudio() instead. SDL_DequeueAudio() will always
1236 * return 0 if you use it with playback devices.
1237 *
1238 * SDL offers two ways to retrieve audio from a capture device: you can either
1239 * supply a callback that SDL triggers with some frequency as the device
1240 * records more audio data, (push method), or you can supply no callback, and
1241 * then SDL will expect you to retrieve data at regular intervals (pull
1242 * method) with this function.
1243 *
1244 * There are no limits on the amount of data you can queue, short of
1245 * exhaustion of address space. Data from the device will keep queuing as
1246 * necessary without further intervention from you. This means you will
1247 * eventually run out of memory if you aren't routinely dequeueing data.
1248 *
1249 * Capture devices will not queue data when paused; if you are expecting to
1250 * not need captured audio for some length of time, use SDL_PauseAudioDevice()
1251 * to stop the capture device from queueing more data. This can be useful
1252 * during, say, level loading times. When unpaused, capture devices will start
1253 * queueing data from that point, having flushed any capturable data available
1254 * while paused.
1255 *
1256 * This function is thread-safe, but dequeueing from the same device from two
1257 * threads at once does not promise which thread will dequeue data first.
1258 *
1259 * You may not dequeue audio from a device that is using an
1260 * application-supplied callback; doing so returns an error. You have to use
1261 * the audio callback, or dequeue audio with this function, but not both.
1262 *
1263 * You should not call SDL_LockAudio() on the device before dequeueing; SDL
1264 * handles locking internally for this function.
1265 *
1266 * \param dev the device ID from which we will dequeue audio
1267 * \param data a pointer into where audio data should be copied
1268 * \param len the number of bytes (not samples!) to which (data) points
1269 * \returns the number of bytes dequeued, which could be less than requested;
1270 * call SDL_GetError() for more information.
1271 *
1272 * \since This function is available since SDL 2.0.5.
1273 *
1274 * \sa SDL_ClearQueuedAudio
1275 * \sa SDL_GetQueuedAudioSize
1276 */
1277extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len);
1278
1279/**
1280 * Get the number of bytes of still-queued audio.
1281 *
1282 * For playback devices: this is the number of bytes that have been queued for
1283 * playback with SDL_QueueAudio(), but have not yet been sent to the hardware.
1284 *
1285 * Once we've sent it to the hardware, this function can not decide the exact
1286 * byte boundary of what has been played. It's possible that we just gave the
1287 * hardware several kilobytes right before you called this function, but it
1288 * hasn't played any of it yet, or maybe half of it, etc.
1289 *
1290 * For capture devices, this is the number of bytes that have been captured by
1291 * the device and are waiting for you to dequeue. This number may grow at any
1292 * time, so this only informs of the lower-bound of available data.
1293 *
1294 * You may not queue or dequeue audio on a device that is using an
1295 * application-supplied callback; calling this function on such a device
1296 * always returns 0. You have to use the audio callback or queue audio, but
1297 * not both.
1298 *
1299 * You should not call SDL_LockAudio() on the device before querying; SDL
1300 * handles locking internally for this function.
1301 *
1302 * \param dev the device ID of which we will query queued audio size
1303 * \returns the number of bytes (not samples!) of queued audio.
1304 *
1305 * \since This function is available since SDL 2.0.4.
1306 *
1307 * \sa SDL_ClearQueuedAudio
1308 * \sa SDL_QueueAudio
1309 * \sa SDL_DequeueAudio
1310 */
1311extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev);
1312
1313/**
1314 * Drop any queued audio data waiting to be sent to the hardware.
1315 *
1316 * Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For
1317 * output devices, the hardware will start playing silence if more audio isn't
1318 * queued. For capture devices, the hardware will start filling the empty
1319 * queue with new data if the capture device isn't paused.
1320 *
1321 * This will not prevent playback of queued audio that's already been sent to
1322 * the hardware, as we can not undo that, so expect there to be some fraction
1323 * of a second of audio that might still be heard. This can be useful if you
1324 * want to, say, drop any pending music or any unprocessed microphone input
1325 * during a level change in your game.
1326 *
1327 * You may not queue or dequeue audio on a device that is using an
1328 * application-supplied callback; calling this function on such a device
1329 * always returns 0. You have to use the audio callback or queue audio, but
1330 * not both.
1331 *
1332 * You should not call SDL_LockAudio() on the device before clearing the
1333 * queue; SDL handles locking internally for this function.
1334 *
1335 * This function always succeeds and thus returns void.
1336 *
1337 * \param dev the device ID of which to clear the audio queue
1338 *
1339 * \since This function is available since SDL 2.0.4.
1340 *
1341 * \sa SDL_GetQueuedAudioSize
1342 * \sa SDL_QueueAudio
1343 * \sa SDL_DequeueAudio
1344 */
1345extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev);
1346
1347
1348/**
1349 * \name Audio lock functions
1350 *
1351 * The lock manipulated by these functions protects the callback function.
1352 * During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that
1353 * the callback function is not running. Do not call these from the callback
1354 * function or you will cause deadlock.
1355 */
1356/* @{ */
1357
1358/**
1359 * This function is a legacy means of locking the audio device.
1360 *
1361 * New programs might want to use SDL_LockAudioDevice() instead. This function
1362 * is equivalent to calling...
1363 *
1364 * ```c
1365 * SDL_LockAudioDevice(1);
1366 * ```
1367 *
1368 * ...and is only useful if you used the legacy SDL_OpenAudio() function.
1369 *
1370 * \since This function is available since SDL 2.0.0.
1371 *
1372 * \sa SDL_LockAudioDevice
1373 * \sa SDL_UnlockAudio
1374 * \sa SDL_UnlockAudioDevice
1375 */
1376extern DECLSPEC void SDLCALL SDL_LockAudio(void);
1377
1378/**
1379 * Use this function to lock out the audio callback function for a specified
1380 * device.
1381 *
1382 * The lock manipulated by these functions protects the audio callback
1383 * function specified in SDL_OpenAudioDevice(). During a
1384 * SDL_LockAudioDevice()/SDL_UnlockAudioDevice() pair, you can be guaranteed
1385 * that the callback function for that device is not running, even if the
1386 * device is not paused. While a device is locked, any other unpaused,
1387 * unlocked devices may still run their callbacks.
1388 *
1389 * Calling this function from inside your audio callback is unnecessary. SDL
1390 * obtains this lock before calling your function, and releases it when the
1391 * function returns.
1392 *
1393 * You should not hold the lock longer than absolutely necessary. If you hold
1394 * it too long, you'll experience dropouts in your audio playback. Ideally,
1395 * your application locks the device, sets a few variables and unlocks again.
1396 * Do not do heavy work while holding the lock for a device.
1397 *
1398 * It is safe to lock the audio device multiple times, as long as you unlock
1399 * it an equivalent number of times. The callback will not run until the
1400 * device has been unlocked completely in this way. If your application fails
1401 * to unlock the device appropriately, your callback will never run, you might
1402 * hear repeating bursts of audio, and SDL_CloseAudioDevice() will probably
1403 * deadlock.
1404 *
1405 * Internally, the audio device lock is a mutex; if you lock from two threads
1406 * at once, not only will you block the audio callback, you'll block the other
1407 * thread.
1408 *
1409 * \param dev the ID of the device to be locked
1410 *
1411 * \since This function is available since SDL 2.0.0.
1412 *
1413 * \sa SDL_UnlockAudioDevice
1414 */
1415extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev);
1416
1417/**
1418 * This function is a legacy means of unlocking the audio device.
1419 *
1420 * New programs might want to use SDL_UnlockAudioDevice() instead. This
1421 * function is equivalent to calling...
1422 *
1423 * ```c
1424 * SDL_UnlockAudioDevice(1);
1425 * ```
1426 *
1427 * ...and is only useful if you used the legacy SDL_OpenAudio() function.
1428 *
1429 * \since This function is available since SDL 2.0.0.
1430 *
1431 * \sa SDL_LockAudio
1432 * \sa SDL_UnlockAudioDevice
1433 */
1434extern DECLSPEC void SDLCALL SDL_UnlockAudio(void);
1435
1436/**
1437 * Use this function to unlock the audio callback function for a specified
1438 * device.
1439 *
1440 * This function should be paired with a previous SDL_LockAudioDevice() call.
1441 *
1442 * \param dev the ID of the device to be unlocked
1443 *
1444 * \since This function is available since SDL 2.0.0.
1445 *
1446 * \sa SDL_LockAudioDevice
1447 */
1448extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev);
1449/* @} *//* Audio lock functions */
1450
1451/**
1452 * This function is a legacy means of closing the audio device.
1453 *
1454 * This function is equivalent to calling...
1455 *
1456 * ```c
1457 * SDL_CloseAudioDevice(1);
1458 * ```
1459 *
1460 * ...and is only useful if you used the legacy SDL_OpenAudio() function.
1461 *
1462 * \since This function is available since SDL 2.0.0.
1463 *
1464 * \sa SDL_OpenAudio
1465 */
1466extern DECLSPEC void SDLCALL SDL_CloseAudio(void);
1467
1468/**
1469 * Use this function to shut down audio processing and close the audio device.
1470 *
1471 * The application should close open audio devices once they are no longer
1472 * needed. Calling this function will wait until the device's audio callback
1473 * is not running, release the audio hardware and then clean up internal
1474 * state. No further audio will play from this device once this function
1475 * returns.
1476 *
1477 * This function may block briefly while pending audio data is played by the
1478 * hardware, so that applications don't drop the last buffer of data they
1479 * supplied.
1480 *
1481 * The device ID is invalid as soon as the device is closed, and is eligible
1482 * for reuse in a new SDL_OpenAudioDevice() call immediately.
1483 *
1484 * \param dev an audio device previously opened with SDL_OpenAudioDevice()
1485 *
1486 * \since This function is available since SDL 2.0.0.
1487 *
1488 * \sa SDL_OpenAudioDevice
1489 */
1490extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev);
1491
1492/* Ends C function definitions when using C++ */
1493#ifdef __cplusplus
1494}
1495#endif
1496#include "close_code.h"
1497
1498#endif /* SDL_audio_h_ */
1499
1500/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_bits.h b/src/contrib/SDL-2.30.2/include/SDL_bits.h
new file mode 100644
index 0000000..83e8a78
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_bits.h
@@ -0,0 +1,126 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_blendmode.h b/src/contrib/SDL-2.30.2/include/SDL_blendmode.h
new file mode 100644
index 0000000..09d0147
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_blendmode.h
@@ -0,0 +1,198 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 = dstA */
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, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */
69 SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */
70 SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D9, D3D11 */
71 SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D9, D3D11 */
72} SDL_BlendOperation;
73
74/**
75 * \brief The normalized factor used to multiply pixel components
76 */
77typedef enum
78{
79 SDL_BLENDFACTOR_ZERO = 0x1, /**< 0, 0, 0, 0 */
80 SDL_BLENDFACTOR_ONE = 0x2, /**< 1, 1, 1, 1 */
81 SDL_BLENDFACTOR_SRC_COLOR = 0x3, /**< srcR, srcG, srcB, srcA */
82 SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4, /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */
83 SDL_BLENDFACTOR_SRC_ALPHA = 0x5, /**< srcA, srcA, srcA, srcA */
84 SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6, /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */
85 SDL_BLENDFACTOR_DST_COLOR = 0x7, /**< dstR, dstG, dstB, dstA */
86 SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8, /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */
87 SDL_BLENDFACTOR_DST_ALPHA = 0x9, /**< dstA, dstA, dstA, dstA */
88 SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */
89} SDL_BlendFactor;
90
91/**
92 * Compose a custom blend mode for renderers.
93 *
94 * The functions SDL_SetRenderDrawBlendMode and SDL_SetTextureBlendMode accept
95 * the SDL_BlendMode returned by this function if the renderer supports it.
96 *
97 * A blend mode controls how the pixels from a drawing operation (source) get
98 * combined with the pixels from the render target (destination). First, the
99 * components of the source and destination pixels get multiplied with their
100 * blend factors. Then, the blend operation takes the two products and
101 * calculates the result that will get stored in the render target.
102 *
103 * Expressed in pseudocode, it would look like this:
104 *
105 * ```c
106 * dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor);
107 * dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor);
108 * ```
109 *
110 * Where the functions `colorOperation(src, dst)` and `alphaOperation(src,
111 * dst)` can return one of the following:
112 *
113 * - `src + dst`
114 * - `src - dst`
115 * - `dst - src`
116 * - `min(src, dst)`
117 * - `max(src, dst)`
118 *
119 * The red, green, and blue components are always multiplied with the first,
120 * second, and third components of the SDL_BlendFactor, respectively. The
121 * fourth component is not used.
122 *
123 * The alpha component is always multiplied with the fourth component of the
124 * SDL_BlendFactor. The other components are not used in the alpha
125 * calculation.
126 *
127 * Support for these blend modes varies for each renderer. To check if a
128 * specific SDL_BlendMode is supported, create a renderer and pass it to
129 * either SDL_SetRenderDrawBlendMode or SDL_SetTextureBlendMode. They will
130 * return with an error if the blend mode is not supported.
131 *
132 * This list describes the support of custom blend modes for each renderer in
133 * SDL 2.0.6. All renderers support the four blend modes listed in the
134 * SDL_BlendMode enumeration.
135 *
136 * - **direct3d**: Supports all operations with all factors. However, some
137 * factors produce unexpected results with `SDL_BLENDOPERATION_MINIMUM` and
138 * `SDL_BLENDOPERATION_MAXIMUM`.
139 * - **direct3d11**: Same as Direct3D 9.
140 * - **opengl**: Supports the `SDL_BLENDOPERATION_ADD` operation with all
141 * factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly with SDL
142 * 2.0.6.
143 * - **opengles**: Supports the `SDL_BLENDOPERATION_ADD` operation with all
144 * factors. Color and alpha factors need to be the same. OpenGL ES 1
145 * implementation specific: May also support `SDL_BLENDOPERATION_SUBTRACT`
146 * and `SDL_BLENDOPERATION_REV_SUBTRACT`. May support color and alpha
147 * operations being different from each other. May support color and alpha
148 * factors being different from each other.
149 * - **opengles2**: Supports the `SDL_BLENDOPERATION_ADD`,
150 * `SDL_BLENDOPERATION_SUBTRACT`, `SDL_BLENDOPERATION_REV_SUBTRACT`
151 * operations with all factors.
152 * - **psp**: No custom blend mode support.
153 * - **software**: No custom blend mode support.
154 *
155 * Some renderers do not provide an alpha component for the default render
156 * target. The `SDL_BLENDFACTOR_DST_ALPHA` and
157 * `SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA` factors do not have an effect in this
158 * case.
159 *
160 * \param srcColorFactor the SDL_BlendFactor applied to the red, green, and
161 * blue components of the source pixels
162 * \param dstColorFactor the SDL_BlendFactor applied to the red, green, and
163 * blue components of the destination pixels
164 * \param colorOperation the SDL_BlendOperation used to combine the red,
165 * green, and blue components of the source and
166 * destination pixels
167 * \param srcAlphaFactor the SDL_BlendFactor applied to the alpha component of
168 * the source pixels
169 * \param dstAlphaFactor the SDL_BlendFactor applied to the alpha component of
170 * the destination pixels
171 * \param alphaOperation the SDL_BlendOperation used to combine the alpha
172 * component of the source and destination pixels
173 * \returns an SDL_BlendMode that represents the chosen factors and
174 * operations.
175 *
176 * \since This function is available since SDL 2.0.6.
177 *
178 * \sa SDL_SetRenderDrawBlendMode
179 * \sa SDL_GetRenderDrawBlendMode
180 * \sa SDL_SetTextureBlendMode
181 * \sa SDL_GetTextureBlendMode
182 */
183extern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor,
184 SDL_BlendFactor dstColorFactor,
185 SDL_BlendOperation colorOperation,
186 SDL_BlendFactor srcAlphaFactor,
187 SDL_BlendFactor dstAlphaFactor,
188 SDL_BlendOperation alphaOperation);
189
190/* Ends C function definitions when using C++ */
191#ifdef __cplusplus
192}
193#endif
194#include "close_code.h"
195
196#endif /* SDL_blendmode_h_ */
197
198/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_clipboard.h b/src/contrib/SDL-2.30.2/include/SDL_clipboard.h
new file mode 100644
index 0000000..bd4b044
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_clipboard.h
@@ -0,0 +1,141 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 * Put UTF-8 text into the primary selection.
87 *
88 * \param text the text to store in the primary selection
89 * \returns 0 on success or a negative error code on failure; call
90 * SDL_GetError() for more information.
91 *
92 * \since This function is available since SDL 2.26.0.
93 *
94 * \sa SDL_GetPrimarySelectionText
95 * \sa SDL_HasPrimarySelectionText
96 */
97extern DECLSPEC int SDLCALL SDL_SetPrimarySelectionText(const char *text);
98
99/**
100 * Get UTF-8 text from the primary selection, which must be freed with
101 * SDL_free().
102 *
103 * This functions returns empty string if there was not enough memory left for
104 * a copy of the primary selection's content.
105 *
106 * \returns the primary selection text on success or an empty string on
107 * failure; call SDL_GetError() for more information. Caller must
108 * call SDL_free() on the returned pointer when done with it (even if
109 * there was an error).
110 *
111 * \since This function is available since SDL 2.26.0.
112 *
113 * \sa SDL_HasPrimarySelectionText
114 * \sa SDL_SetPrimarySelectionText
115 */
116extern DECLSPEC char * SDLCALL SDL_GetPrimarySelectionText(void);
117
118/**
119 * Query whether the primary selection exists and contains a non-empty text
120 * string.
121 *
122 * \returns SDL_TRUE if the primary selection has text, or SDL_FALSE if it
123 * does not.
124 *
125 * \since This function is available since SDL 2.26.0.
126 *
127 * \sa SDL_GetPrimarySelectionText
128 * \sa SDL_SetPrimarySelectionText
129 */
130extern DECLSPEC SDL_bool SDLCALL SDL_HasPrimarySelectionText(void);
131
132
133/* Ends C function definitions when using C++ */
134#ifdef __cplusplus
135}
136#endif
137#include "close_code.h"
138
139#endif /* SDL_clipboard_h_ */
140
141/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_config.h b/src/contrib/SDL-2.30.2/include/SDL_config.h
new file mode 100644
index 0000000..49605b1
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_config.h
@@ -0,0 +1,61 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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#include "SDL_platform.h"
26
27/**
28 * \file SDL_config.h
29 */
30
31/* Add any platform that doesn't build using the configure system. */
32#if defined(__WIN32__)
33#include "SDL_config_windows.h"
34#elif defined(__WINRT__)
35#include "SDL_config_winrt.h"
36#elif defined(__WINGDK__)
37#include "SDL_config_wingdk.h"
38#elif defined(__XBOXONE__) || defined(__XBOXSERIES__)
39#include "SDL_config_xbox.h"
40#elif defined(__MACOSX__)
41#include "SDL_config_macosx.h"
42#elif defined(__IPHONEOS__)
43#include "SDL_config_iphoneos.h"
44#elif defined(__ANDROID__)
45#include "SDL_config_android.h"
46#elif defined(__OS2__)
47#include "SDL_config_os2.h"
48#elif defined(__EMSCRIPTEN__)
49#include "SDL_config_emscripten.h"
50#elif defined(__NGAGE__)
51#include "SDL_config_ngage.h"
52#else
53/* This is a minimal configuration just to get SDL running on new platforms. */
54#include "SDL_config_minimal.h"
55#endif /* platform config */
56
57#ifdef USING_GENERATED_CONFIG_H
58#error Wrong SDL_config.h, check your include path?
59#endif
60
61#endif /* SDL_config_h_ */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_config.h.cmake b/src/contrib/SDL-2.30.2/include/SDL_config.h.cmake
new file mode 100644
index 0000000..ffcafd8
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_config.h.cmake
@@ -0,0 +1,570 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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#if defined(__LP64__) || defined(_LP64) || defined(_WIN64)
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/* Comment this if you want to build without any C library requirements */
51#cmakedefine HAVE_LIBC 1
52#ifdef HAVE_LIBC
53
54/* Useful headers */
55#cmakedefine STDC_HEADERS 1
56#cmakedefine HAVE_ALLOCA_H 1
57#cmakedefine HAVE_CTYPE_H 1
58#cmakedefine HAVE_FLOAT_H 1
59#cmakedefine HAVE_ICONV_H 1
60#cmakedefine HAVE_INTTYPES_H 1
61#cmakedefine HAVE_LIMITS_H 1
62#cmakedefine HAVE_MALLOC_H 1
63#cmakedefine HAVE_MATH_H 1
64#cmakedefine HAVE_MEMORY_H 1
65#cmakedefine HAVE_SIGNAL_H 1
66#cmakedefine HAVE_STDARG_H 1
67#cmakedefine HAVE_STDDEF_H 1
68#cmakedefine HAVE_STDINT_H 1
69#cmakedefine HAVE_STDIO_H 1
70#cmakedefine HAVE_STDLIB_H 1
71#cmakedefine HAVE_STRINGS_H 1
72#cmakedefine HAVE_STRING_H 1
73#cmakedefine HAVE_SYS_TYPES_H 1
74#cmakedefine HAVE_WCHAR_H 1
75#cmakedefine HAVE_LINUX_INPUT_H 1
76#cmakedefine HAVE_PTHREAD_NP_H 1
77#cmakedefine HAVE_LIBUNWIND_H 1
78
79/* C library functions */
80#cmakedefine HAVE_DLOPEN 1
81#cmakedefine HAVE_MALLOC 1
82#cmakedefine HAVE_CALLOC 1
83#cmakedefine HAVE_REALLOC 1
84#cmakedefine HAVE_FREE 1
85#cmakedefine HAVE_ALLOCA 1
86#ifndef __WIN32__ /* Don't use C runtime versions of these on Windows */
87#cmakedefine HAVE_GETENV 1
88#cmakedefine HAVE_SETENV 1
89#cmakedefine HAVE_PUTENV 1
90#cmakedefine HAVE_UNSETENV 1
91#endif
92#cmakedefine HAVE_QSORT 1
93#cmakedefine HAVE_BSEARCH 1
94#cmakedefine HAVE_ABS 1
95#cmakedefine HAVE_BCOPY 1
96#cmakedefine HAVE_MEMSET 1
97#cmakedefine HAVE_MEMCPY 1
98#cmakedefine HAVE_MEMMOVE 1
99#cmakedefine HAVE_MEMCMP 1
100#cmakedefine HAVE_WCSLEN 1
101#cmakedefine HAVE_WCSLCPY 1
102#cmakedefine HAVE_WCSLCAT 1
103#cmakedefine HAVE__WCSDUP 1
104#cmakedefine HAVE_WCSDUP 1
105#cmakedefine HAVE_WCSSTR 1
106#cmakedefine HAVE_WCSCMP 1
107#cmakedefine HAVE_WCSNCMP 1
108#cmakedefine HAVE_WCSCASECMP 1
109#cmakedefine HAVE__WCSICMP 1
110#cmakedefine HAVE_WCSNCASECMP 1
111#cmakedefine HAVE__WCSNICMP 1
112#cmakedefine HAVE_STRLEN 1
113#cmakedefine HAVE_STRLCPY 1
114#cmakedefine HAVE_STRLCAT 1
115#cmakedefine HAVE__STRREV 1
116#cmakedefine HAVE__STRUPR 1
117#cmakedefine HAVE__STRLWR 1
118#cmakedefine HAVE_INDEX 1
119#cmakedefine HAVE_RINDEX 1
120#cmakedefine HAVE_STRCHR 1
121#cmakedefine HAVE_STRRCHR 1
122#cmakedefine HAVE_STRSTR 1
123#cmakedefine HAVE_STRTOK_R 1
124#cmakedefine HAVE_ITOA 1
125#cmakedefine HAVE__LTOA 1
126#cmakedefine HAVE__UITOA 1
127#cmakedefine HAVE__ULTOA 1
128#cmakedefine HAVE_STRTOL 1
129#cmakedefine HAVE_STRTOUL 1
130#cmakedefine HAVE__I64TOA 1
131#cmakedefine HAVE__UI64TOA 1
132#cmakedefine HAVE_STRTOLL 1
133#cmakedefine HAVE_STRTOULL 1
134#cmakedefine HAVE_STRTOD 1
135#cmakedefine HAVE_ATOI 1
136#cmakedefine HAVE_ATOF 1
137#cmakedefine HAVE_STRCMP 1
138#cmakedefine HAVE_STRNCMP 1
139#cmakedefine HAVE__STRICMP 1
140#cmakedefine HAVE_STRCASECMP 1
141#cmakedefine HAVE__STRNICMP 1
142#cmakedefine HAVE_STRNCASECMP 1
143#cmakedefine HAVE_STRCASESTR 1
144#cmakedefine HAVE_SSCANF 1
145#cmakedefine HAVE_VSSCANF 1
146#cmakedefine HAVE_VSNPRINTF 1
147#cmakedefine HAVE_M_PI 1
148#cmakedefine HAVE_ACOS 1
149#cmakedefine HAVE_ACOSF 1
150#cmakedefine HAVE_ASIN 1
151#cmakedefine HAVE_ASINF 1
152#cmakedefine HAVE_ATAN 1
153#cmakedefine HAVE_ATANF 1
154#cmakedefine HAVE_ATAN2 1
155#cmakedefine HAVE_ATAN2F 1
156#cmakedefine HAVE_CEIL 1
157#cmakedefine HAVE_CEILF 1
158#cmakedefine HAVE_COPYSIGN 1
159#cmakedefine HAVE_COPYSIGNF 1
160#cmakedefine HAVE_COS 1
161#cmakedefine HAVE_COSF 1
162#cmakedefine HAVE_EXP 1
163#cmakedefine HAVE_EXPF 1
164#cmakedefine HAVE_FABS 1
165#cmakedefine HAVE_FABSF 1
166#cmakedefine HAVE_FLOOR 1
167#cmakedefine HAVE_FLOORF 1
168#cmakedefine HAVE_FMOD 1
169#cmakedefine HAVE_FMODF 1
170#cmakedefine HAVE_LOG 1
171#cmakedefine HAVE_LOGF 1
172#cmakedefine HAVE_LOG10 1
173#cmakedefine HAVE_LOG10F 1
174#cmakedefine HAVE_LROUND 1
175#cmakedefine HAVE_LROUNDF 1
176#cmakedefine HAVE_POW 1
177#cmakedefine HAVE_POWF 1
178#cmakedefine HAVE_ROUND 1
179#cmakedefine HAVE_ROUNDF 1
180#cmakedefine HAVE_SCALBN 1
181#cmakedefine HAVE_SCALBNF 1
182#cmakedefine HAVE_SIN 1
183#cmakedefine HAVE_SINF 1
184#cmakedefine HAVE_SQRT 1
185#cmakedefine HAVE_SQRTF 1
186#cmakedefine HAVE_TAN 1
187#cmakedefine HAVE_TANF 1
188#cmakedefine HAVE_TRUNC 1
189#cmakedefine HAVE_TRUNCF 1
190#cmakedefine HAVE_FOPEN64 1
191#cmakedefine HAVE_FSEEKO 1
192#cmakedefine HAVE_FSEEKO64 1
193#cmakedefine HAVE_MEMFD_CREATE 1
194#cmakedefine HAVE_POSIX_FALLOCATE 1
195#cmakedefine HAVE_SIGACTION 1
196#cmakedefine HAVE_SA_SIGACTION 1
197#cmakedefine HAVE_SETJMP 1
198#cmakedefine HAVE_NANOSLEEP 1
199#cmakedefine HAVE_SYSCONF 1
200#cmakedefine HAVE_SYSCTLBYNAME 1
201#cmakedefine HAVE_CLOCK_GETTIME 1
202#cmakedefine HAVE_GETPAGESIZE 1
203#cmakedefine HAVE_MPROTECT 1
204#cmakedefine HAVE_ICONV 1
205#cmakedefine SDL_USE_LIBICONV 1
206#cmakedefine HAVE_PTHREAD_SETNAME_NP 1
207#cmakedefine HAVE_PTHREAD_SET_NAME_NP 1
208#cmakedefine HAVE_SEM_TIMEDWAIT 1
209#cmakedefine HAVE_GETAUXVAL 1
210#cmakedefine HAVE_ELF_AUX_INFO 1
211#cmakedefine HAVE_POLL 1
212#cmakedefine HAVE__EXIT 1
213
214#else
215#cmakedefine HAVE_STDARG_H 1
216#cmakedefine HAVE_STDDEF_H 1
217#cmakedefine HAVE_STDINT_H 1
218#cmakedefine HAVE_FLOAT_H 1
219#endif /* HAVE_LIBC */
220
221#cmakedefine HAVE_ALTIVEC_H 1
222#cmakedefine HAVE_DBUS_DBUS_H 1
223#cmakedefine HAVE_FCITX 1
224#cmakedefine HAVE_IBUS_IBUS_H 1
225#cmakedefine HAVE_SYS_INOTIFY_H 1
226#cmakedefine HAVE_INOTIFY_INIT 1
227#cmakedefine HAVE_INOTIFY_INIT1 1
228#cmakedefine HAVE_INOTIFY 1
229#cmakedefine HAVE_LIBUSB 1
230#cmakedefine HAVE_O_CLOEXEC 1
231
232/* Apple platforms might be building universal binaries, where Intel builds
233 can use immintrin.h but other architectures can't. */
234#ifdef __APPLE__
235# if defined(__has_include) && (defined(__i386__) || defined(__x86_64))
236# if __has_include(<immintrin.h>)
237# define HAVE_IMMINTRIN_H 1
238# endif
239# endif
240#else /* non-Apple platforms can use the normal CMake check for this. */
241#cmakedefine HAVE_IMMINTRIN_H 1
242#endif
243
244#cmakedefine HAVE_LIBUDEV_H 1
245#cmakedefine HAVE_LIBSAMPLERATE_H 1
246#cmakedefine HAVE_LIBDECOR_H 1
247
248#cmakedefine HAVE_D3D_H @HAVE_D3D_H@
249#cmakedefine HAVE_D3D11_H @HAVE_D3D11_H@
250#cmakedefine HAVE_D3D12_H @HAVE_D3D12_H@
251#cmakedefine HAVE_DDRAW_H @HAVE_DDRAW_H@
252#cmakedefine HAVE_DSOUND_H @HAVE_DSOUND_H@
253#cmakedefine HAVE_DINPUT_H @HAVE_DINPUT_H@
254#cmakedefine HAVE_XINPUT_H @HAVE_XINPUT_H@
255#cmakedefine HAVE_WINDOWS_GAMING_INPUT_H @HAVE_WINDOWS_GAMING_INPUT_H@
256#cmakedefine HAVE_DXGI_H @HAVE_DXGI_H@
257
258#cmakedefine HAVE_MMDEVICEAPI_H @HAVE_MMDEVICEAPI_H@
259#cmakedefine HAVE_AUDIOCLIENT_H @HAVE_AUDIOCLIENT_H@
260#cmakedefine HAVE_TPCSHRD_H @HAVE_TPCSHRD_H@
261#cmakedefine HAVE_SENSORSAPI_H @HAVE_SENSORSAPI_H@
262#cmakedefine HAVE_ROAPI_H @HAVE_ROAPI_H@
263#cmakedefine HAVE_SHELLSCALINGAPI_H @HAVE_SHELLSCALINGAPI_H@
264
265#cmakedefine USE_POSIX_SPAWN @USE_POSIX_SPAWN@
266
267/* SDL internal assertion support */
268#if @SDL_DEFAULT_ASSERT_LEVEL_CONFIGURED@
269#cmakedefine SDL_DEFAULT_ASSERT_LEVEL @SDL_DEFAULT_ASSERT_LEVEL@
270#endif
271
272/* Allow disabling of core subsystems */
273#cmakedefine SDL_ATOMIC_DISABLED @SDL_ATOMIC_DISABLED@
274#cmakedefine SDL_AUDIO_DISABLED @SDL_AUDIO_DISABLED@
275#cmakedefine SDL_CPUINFO_DISABLED @SDL_CPUINFO_DISABLED@
276#cmakedefine SDL_EVENTS_DISABLED @SDL_EVENTS_DISABLED@
277#cmakedefine SDL_FILE_DISABLED @SDL_FILE_DISABLED@
278#cmakedefine SDL_JOYSTICK_DISABLED @SDL_JOYSTICK_DISABLED@
279#cmakedefine SDL_HAPTIC_DISABLED @SDL_HAPTIC_DISABLED@
280#cmakedefine SDL_HIDAPI_DISABLED @SDL_HIDAPI_DISABLED@
281#cmakedefine SDL_SENSOR_DISABLED @SDL_SENSOR_DISABLED@
282#cmakedefine SDL_LOADSO_DISABLED @SDL_LOADSO_DISABLED@
283#cmakedefine SDL_RENDER_DISABLED @SDL_RENDER_DISABLED@
284#cmakedefine SDL_THREADS_DISABLED @SDL_THREADS_DISABLED@
285#cmakedefine SDL_TIMERS_DISABLED @SDL_TIMERS_DISABLED@
286#cmakedefine SDL_VIDEO_DISABLED @SDL_VIDEO_DISABLED@
287#cmakedefine SDL_POWER_DISABLED @SDL_POWER_DISABLED@
288#cmakedefine SDL_FILESYSTEM_DISABLED @SDL_FILESYSTEM_DISABLED@
289#cmakedefine SDL_LOCALE_DISABLED @SDL_LOCALE_DISABLED@
290#cmakedefine SDL_MISC_DISABLED @SDL_MISC_DISABLED@
291
292/* Enable various audio drivers */
293#cmakedefine SDL_AUDIO_DRIVER_ALSA @SDL_AUDIO_DRIVER_ALSA@
294#cmakedefine SDL_AUDIO_DRIVER_ALSA_DYNAMIC @SDL_AUDIO_DRIVER_ALSA_DYNAMIC@
295#cmakedefine SDL_AUDIO_DRIVER_ANDROID @SDL_AUDIO_DRIVER_ANDROID@
296#cmakedefine SDL_AUDIO_DRIVER_OPENSLES @SDL_AUDIO_DRIVER_OPENSLES@
297#cmakedefine SDL_AUDIO_DRIVER_AAUDIO @SDL_AUDIO_DRIVER_AAUDIO@
298#cmakedefine SDL_AUDIO_DRIVER_ARTS @SDL_AUDIO_DRIVER_ARTS@
299#cmakedefine SDL_AUDIO_DRIVER_ARTS_DYNAMIC @SDL_AUDIO_DRIVER_ARTS_DYNAMIC@
300#cmakedefine SDL_AUDIO_DRIVER_COREAUDIO @SDL_AUDIO_DRIVER_COREAUDIO@
301#cmakedefine SDL_AUDIO_DRIVER_DISK @SDL_AUDIO_DRIVER_DISK@
302#cmakedefine SDL_AUDIO_DRIVER_DSOUND @SDL_AUDIO_DRIVER_DSOUND@
303#cmakedefine SDL_AUDIO_DRIVER_DUMMY @SDL_AUDIO_DRIVER_DUMMY@
304#cmakedefine SDL_AUDIO_DRIVER_EMSCRIPTEN @SDL_AUDIO_DRIVER_EMSCRIPTEN@
305#cmakedefine SDL_AUDIO_DRIVER_ESD @SDL_AUDIO_DRIVER_ESD@
306#cmakedefine SDL_AUDIO_DRIVER_ESD_DYNAMIC @SDL_AUDIO_DRIVER_ESD_DYNAMIC@
307#cmakedefine SDL_AUDIO_DRIVER_FUSIONSOUND @SDL_AUDIO_DRIVER_FUSIONSOUND@
308#cmakedefine SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC @SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC@
309#cmakedefine SDL_AUDIO_DRIVER_HAIKU @SDL_AUDIO_DRIVER_HAIKU@
310#cmakedefine SDL_AUDIO_DRIVER_JACK @SDL_AUDIO_DRIVER_JACK@
311#cmakedefine SDL_AUDIO_DRIVER_JACK_DYNAMIC @SDL_AUDIO_DRIVER_JACK_DYNAMIC@
312#cmakedefine SDL_AUDIO_DRIVER_NAS @SDL_AUDIO_DRIVER_NAS@
313#cmakedefine SDL_AUDIO_DRIVER_NAS_DYNAMIC @SDL_AUDIO_DRIVER_NAS_DYNAMIC@
314#cmakedefine SDL_AUDIO_DRIVER_NETBSD @SDL_AUDIO_DRIVER_NETBSD@
315#cmakedefine SDL_AUDIO_DRIVER_OSS @SDL_AUDIO_DRIVER_OSS@
316#cmakedefine SDL_AUDIO_DRIVER_PAUDIO @SDL_AUDIO_DRIVER_PAUDIO@
317#cmakedefine SDL_AUDIO_DRIVER_PIPEWIRE @SDL_AUDIO_DRIVER_PIPEWIRE@
318#cmakedefine SDL_AUDIO_DRIVER_PIPEWIRE_DYNAMIC @SDL_AUDIO_DRIVER_PIPEWIRE_DYNAMIC@
319#cmakedefine SDL_AUDIO_DRIVER_PULSEAUDIO @SDL_AUDIO_DRIVER_PULSEAUDIO@
320#cmakedefine SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC @SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC@
321#cmakedefine SDL_AUDIO_DRIVER_QSA @SDL_AUDIO_DRIVER_QSA@
322#cmakedefine SDL_AUDIO_DRIVER_SNDIO @SDL_AUDIO_DRIVER_SNDIO@
323#cmakedefine SDL_AUDIO_DRIVER_SNDIO_DYNAMIC @SDL_AUDIO_DRIVER_SNDIO_DYNAMIC@
324#cmakedefine SDL_AUDIO_DRIVER_SUNAUDIO @SDL_AUDIO_DRIVER_SUNAUDIO@
325#cmakedefine SDL_AUDIO_DRIVER_WASAPI @SDL_AUDIO_DRIVER_WASAPI@
326#cmakedefine SDL_AUDIO_DRIVER_WINMM @SDL_AUDIO_DRIVER_WINMM@
327#cmakedefine SDL_AUDIO_DRIVER_OS2 @SDL_AUDIO_DRIVER_OS2@
328#cmakedefine SDL_AUDIO_DRIVER_VITA @SDL_AUDIO_DRIVER_VITA@
329#cmakedefine SDL_AUDIO_DRIVER_PSP @SDL_AUDIO_DRIVER_PSP@
330#cmakedefine SDL_AUDIO_DRIVER_PS2 @SDL_AUDIO_DRIVER_PS2@
331#cmakedefine SDL_AUDIO_DRIVER_N3DS @SDL_AUDIO_DRIVER_N3DS@
332
333/* Enable various input drivers */
334#cmakedefine SDL_INPUT_LINUXEV @SDL_INPUT_LINUXEV@
335#cmakedefine SDL_INPUT_LINUXKD @SDL_INPUT_LINUXKD@
336#cmakedefine SDL_INPUT_FBSDKBIO @SDL_INPUT_FBSDKBIO@
337#cmakedefine SDL_INPUT_WSCONS @SDL_INPUT_WSCONS@
338#cmakedefine SDL_JOYSTICK_ANDROID @SDL_JOYSTICK_ANDROID@
339#cmakedefine SDL_JOYSTICK_HAIKU @SDL_JOYSTICK_HAIKU@
340#cmakedefine SDL_JOYSTICK_WGI @SDL_JOYSTICK_WGI@
341#cmakedefine SDL_JOYSTICK_DINPUT @SDL_JOYSTICK_DINPUT@
342#cmakedefine SDL_JOYSTICK_XINPUT @SDL_JOYSTICK_XINPUT@
343#cmakedefine SDL_JOYSTICK_DUMMY @SDL_JOYSTICK_DUMMY@
344#cmakedefine SDL_JOYSTICK_IOKIT @SDL_JOYSTICK_IOKIT@
345#cmakedefine SDL_JOYSTICK_MFI @SDL_JOYSTICK_MFI@
346#cmakedefine SDL_JOYSTICK_LINUX @SDL_JOYSTICK_LINUX@
347#cmakedefine SDL_JOYSTICK_OS2 @SDL_JOYSTICK_OS2@
348#cmakedefine SDL_JOYSTICK_USBHID @SDL_JOYSTICK_USBHID@
349#cmakedefine SDL_HAVE_MACHINE_JOYSTICK_H @SDL_HAVE_MACHINE_JOYSTICK_H@
350#cmakedefine SDL_JOYSTICK_HIDAPI @SDL_JOYSTICK_HIDAPI@
351#cmakedefine SDL_JOYSTICK_RAWINPUT @SDL_JOYSTICK_RAWINPUT@
352#cmakedefine SDL_JOYSTICK_EMSCRIPTEN @SDL_JOYSTICK_EMSCRIPTEN@
353#cmakedefine SDL_JOYSTICK_VIRTUAL @SDL_JOYSTICK_VIRTUAL@
354#cmakedefine SDL_JOYSTICK_VITA @SDL_JOYSTICK_VITA@
355#cmakedefine SDL_JOYSTICK_PSP @SDL_JOYSTICK_PSP@
356#cmakedefine SDL_JOYSTICK_PS2 @SDL_JOYSTICK_PS2@
357#cmakedefine SDL_JOYSTICK_N3DS @SDL_JOYSTICK_N3DS@
358#cmakedefine SDL_HAPTIC_DUMMY @SDL_HAPTIC_DUMMY@
359#cmakedefine SDL_HAPTIC_LINUX @SDL_HAPTIC_LINUX@
360#cmakedefine SDL_HAPTIC_IOKIT @SDL_HAPTIC_IOKIT@
361#cmakedefine SDL_HAPTIC_DINPUT @SDL_HAPTIC_DINPUT@
362#cmakedefine SDL_HAPTIC_XINPUT @SDL_HAPTIC_XINPUT@
363#cmakedefine SDL_HAPTIC_ANDROID @SDL_HAPTIC_ANDROID@
364#cmakedefine SDL_LIBUSB_DYNAMIC @SDL_LIBUSB_DYNAMIC@
365#cmakedefine SDL_UDEV_DYNAMIC @SDL_UDEV_DYNAMIC@
366
367/* Enable various sensor drivers */
368#cmakedefine SDL_SENSOR_ANDROID @SDL_SENSOR_ANDROID@
369#cmakedefine SDL_SENSOR_COREMOTION @SDL_SENSOR_COREMOTION@
370#cmakedefine SDL_SENSOR_WINDOWS @SDL_SENSOR_WINDOWS@
371#cmakedefine SDL_SENSOR_DUMMY @SDL_SENSOR_DUMMY@
372#cmakedefine SDL_SENSOR_VITA @SDL_SENSOR_VITA@
373#cmakedefine SDL_SENSOR_N3DS @SDL_SENSOR_N3DS@
374
375/* Enable various shared object loading systems */
376#cmakedefine SDL_LOADSO_DLOPEN @SDL_LOADSO_DLOPEN@
377#cmakedefine SDL_LOADSO_DUMMY @SDL_LOADSO_DUMMY@
378#cmakedefine SDL_LOADSO_LDG @SDL_LOADSO_LDG@
379#cmakedefine SDL_LOADSO_WINDOWS @SDL_LOADSO_WINDOWS@
380#cmakedefine SDL_LOADSO_OS2 @SDL_LOADSO_OS2@
381
382/* Enable various threading systems */
383#cmakedefine SDL_THREAD_GENERIC_COND_SUFFIX @SDL_THREAD_GENERIC_COND_SUFFIX@
384#cmakedefine SDL_THREAD_PTHREAD @SDL_THREAD_PTHREAD@
385#cmakedefine SDL_THREAD_PTHREAD_RECURSIVE_MUTEX @SDL_THREAD_PTHREAD_RECURSIVE_MUTEX@
386#cmakedefine SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP @SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP@
387#cmakedefine SDL_THREAD_WINDOWS @SDL_THREAD_WINDOWS@
388#cmakedefine SDL_THREAD_OS2 @SDL_THREAD_OS2@
389#cmakedefine SDL_THREAD_VITA @SDL_THREAD_VITA@
390#cmakedefine SDL_THREAD_PSP @SDL_THREAD_PSP@
391#cmakedefine SDL_THREAD_PS2 @SDL_THREAD_PS2@
392#cmakedefine SDL_THREAD_N3DS @SDL_THREAD_N3DS@
393
394/* Enable various timer systems */
395#cmakedefine SDL_TIMER_HAIKU @SDL_TIMER_HAIKU@
396#cmakedefine SDL_TIMER_DUMMY @SDL_TIMER_DUMMY@
397#cmakedefine SDL_TIMER_UNIX @SDL_TIMER_UNIX@
398#cmakedefine SDL_TIMER_WINDOWS @SDL_TIMER_WINDOWS@
399#cmakedefine SDL_TIMER_OS2 @SDL_TIMER_OS2@
400#cmakedefine SDL_TIMER_VITA @SDL_TIMER_VITA@
401#cmakedefine SDL_TIMER_PSP @SDL_TIMER_PSP@
402#cmakedefine SDL_TIMER_PS2 @SDL_TIMER_PS2@
403#cmakedefine SDL_TIMER_N3DS @SDL_TIMER_N3DS@
404
405/* Enable various video drivers */
406#cmakedefine SDL_VIDEO_DRIVER_ANDROID @SDL_VIDEO_DRIVER_ANDROID@
407#cmakedefine SDL_VIDEO_DRIVER_EMSCRIPTEN @SDL_VIDEO_DRIVER_EMSCRIPTEN@
408#cmakedefine SDL_VIDEO_DRIVER_HAIKU @SDL_VIDEO_DRIVER_HAIKU@
409#cmakedefine SDL_VIDEO_DRIVER_COCOA @SDL_VIDEO_DRIVER_COCOA@
410#cmakedefine SDL_VIDEO_DRIVER_UIKIT @SDL_VIDEO_DRIVER_UIKIT@
411#cmakedefine SDL_VIDEO_DRIVER_DIRECTFB @SDL_VIDEO_DRIVER_DIRECTFB@
412#cmakedefine SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC @SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC@
413#cmakedefine SDL_VIDEO_DRIVER_DUMMY @SDL_VIDEO_DRIVER_DUMMY@
414#cmakedefine SDL_VIDEO_DRIVER_OFFSCREEN @SDL_VIDEO_DRIVER_OFFSCREEN@
415#cmakedefine SDL_VIDEO_DRIVER_WINDOWS @SDL_VIDEO_DRIVER_WINDOWS@
416#cmakedefine SDL_VIDEO_DRIVER_WINRT @SDL_VIDEO_DRIVER_WINRT@
417#cmakedefine SDL_VIDEO_DRIVER_WAYLAND @SDL_VIDEO_DRIVER_WAYLAND@
418#cmakedefine SDL_VIDEO_DRIVER_RPI @SDL_VIDEO_DRIVER_RPI@
419#cmakedefine SDL_VIDEO_DRIVER_VIVANTE @SDL_VIDEO_DRIVER_VIVANTE@
420#cmakedefine SDL_VIDEO_DRIVER_VIVANTE_VDK @SDL_VIDEO_DRIVER_VIVANTE_VDK@
421#cmakedefine SDL_VIDEO_DRIVER_OS2 @SDL_VIDEO_DRIVER_OS2@
422#cmakedefine SDL_VIDEO_DRIVER_QNX @SDL_VIDEO_DRIVER_QNX@
423#cmakedefine SDL_VIDEO_DRIVER_RISCOS @SDL_VIDEO_DRIVER_RISCOS@
424#cmakedefine SDL_VIDEO_DRIVER_PSP @SDL_VIDEO_DRIVER_PSP@
425#cmakedefine SDL_VIDEO_DRIVER_PS2 @SDL_VIDEO_DRIVER_PS2@
426
427#cmakedefine SDL_VIDEO_DRIVER_KMSDRM @SDL_VIDEO_DRIVER_KMSDRM@
428#cmakedefine SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC @SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC@
429#cmakedefine SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM @SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM@
430
431#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH @SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH@
432#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC@
433#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL@
434#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR@
435#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON@
436#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR@
437
438#cmakedefine SDL_VIDEO_DRIVER_X11 @SDL_VIDEO_DRIVER_X11@
439#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC @SDL_VIDEO_DRIVER_X11_DYNAMIC@
440#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT @SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT@
441#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR @SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR@
442#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 @SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2@
443#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XFIXES @SDL_VIDEO_DRIVER_X11_DYNAMIC_XFIXES@
444#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR @SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR@
445#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS @SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS@
446#cmakedefine SDL_VIDEO_DRIVER_X11_XCURSOR @SDL_VIDEO_DRIVER_X11_XCURSOR@
447#cmakedefine SDL_VIDEO_DRIVER_X11_XDBE @SDL_VIDEO_DRIVER_X11_XDBE@
448#cmakedefine SDL_VIDEO_DRIVER_X11_XINPUT2 @SDL_VIDEO_DRIVER_X11_XINPUT2@
449#cmakedefine SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH @SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH@
450#cmakedefine SDL_VIDEO_DRIVER_X11_XFIXES @SDL_VIDEO_DRIVER_X11_XFIXES@
451#cmakedefine SDL_VIDEO_DRIVER_X11_XRANDR @SDL_VIDEO_DRIVER_X11_XRANDR@
452#cmakedefine SDL_VIDEO_DRIVER_X11_XSCRNSAVER @SDL_VIDEO_DRIVER_X11_XSCRNSAVER@
453#cmakedefine SDL_VIDEO_DRIVER_X11_XSHAPE @SDL_VIDEO_DRIVER_X11_XSHAPE@
454#cmakedefine SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS @SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS@
455#cmakedefine SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM @SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM@
456#cmakedefine SDL_VIDEO_DRIVER_VITA @SDL_VIDEO_DRIVER_VITA@
457#cmakedefine SDL_VIDEO_DRIVER_N3DS @SDL_VIDEO_DRIVER_N3DS@
458
459#cmakedefine SDL_VIDEO_RENDER_D3D @SDL_VIDEO_RENDER_D3D@
460#cmakedefine SDL_VIDEO_RENDER_D3D11 @SDL_VIDEO_RENDER_D3D11@
461#cmakedefine SDL_VIDEO_RENDER_D3D12 @SDL_VIDEO_RENDER_D3D12@
462#cmakedefine SDL_VIDEO_RENDER_OGL @SDL_VIDEO_RENDER_OGL@
463#cmakedefine SDL_VIDEO_RENDER_OGL_ES @SDL_VIDEO_RENDER_OGL_ES@
464#cmakedefine SDL_VIDEO_RENDER_OGL_ES2 @SDL_VIDEO_RENDER_OGL_ES2@
465#cmakedefine SDL_VIDEO_RENDER_DIRECTFB @SDL_VIDEO_RENDER_DIRECTFB@
466#cmakedefine SDL_VIDEO_RENDER_METAL @SDL_VIDEO_RENDER_METAL@
467#cmakedefine SDL_VIDEO_RENDER_VITA_GXM @SDL_VIDEO_RENDER_VITA_GXM@
468#cmakedefine SDL_VIDEO_RENDER_PS2 @SDL_VIDEO_RENDER_PS2@
469#cmakedefine SDL_VIDEO_RENDER_PSP @SDL_VIDEO_RENDER_PSP@
470
471/* Enable OpenGL support */
472#cmakedefine SDL_VIDEO_OPENGL @SDL_VIDEO_OPENGL@
473#cmakedefine SDL_VIDEO_OPENGL_ES @SDL_VIDEO_OPENGL_ES@
474#cmakedefine SDL_VIDEO_OPENGL_ES2 @SDL_VIDEO_OPENGL_ES2@
475#cmakedefine SDL_VIDEO_OPENGL_BGL @SDL_VIDEO_OPENGL_BGL@
476#cmakedefine SDL_VIDEO_OPENGL_CGL @SDL_VIDEO_OPENGL_CGL@
477#cmakedefine SDL_VIDEO_OPENGL_GLX @SDL_VIDEO_OPENGL_GLX@
478#cmakedefine SDL_VIDEO_OPENGL_WGL @SDL_VIDEO_OPENGL_WGL@
479#cmakedefine SDL_VIDEO_OPENGL_EGL @SDL_VIDEO_OPENGL_EGL@
480#cmakedefine SDL_VIDEO_OPENGL_OSMESA @SDL_VIDEO_OPENGL_OSMESA@
481#cmakedefine SDL_VIDEO_OPENGL_OSMESA_DYNAMIC @SDL_VIDEO_OPENGL_OSMESA_DYNAMIC@
482
483/* Enable Vulkan support */
484#cmakedefine SDL_VIDEO_VULKAN @SDL_VIDEO_VULKAN@
485
486/* Enable Metal support */
487#cmakedefine SDL_VIDEO_METAL @SDL_VIDEO_METAL@
488
489/* Enable system power support */
490#cmakedefine SDL_POWER_ANDROID @SDL_POWER_ANDROID@
491#cmakedefine SDL_POWER_LINUX @SDL_POWER_LINUX@
492#cmakedefine SDL_POWER_WINDOWS @SDL_POWER_WINDOWS@
493#cmakedefine SDL_POWER_WINRT @SDL_POWER_WINRT@
494#cmakedefine SDL_POWER_MACOSX @SDL_POWER_MACOSX@
495#cmakedefine SDL_POWER_UIKIT @SDL_POWER_UIKIT@
496#cmakedefine SDL_POWER_HAIKU @SDL_POWER_HAIKU@
497#cmakedefine SDL_POWER_EMSCRIPTEN @SDL_POWER_EMSCRIPTEN@
498#cmakedefine SDL_POWER_HARDWIRED @SDL_POWER_HARDWIRED@
499#cmakedefine SDL_POWER_VITA @SDL_POWER_VITA@
500#cmakedefine SDL_POWER_PSP @SDL_POWER_PSP@
501#cmakedefine SDL_POWER_N3DS @SDL_POWER_N3DS@
502
503/* Enable system filesystem support */
504#cmakedefine SDL_FILESYSTEM_ANDROID @SDL_FILESYSTEM_ANDROID@
505#cmakedefine SDL_FILESYSTEM_HAIKU @SDL_FILESYSTEM_HAIKU@
506#cmakedefine SDL_FILESYSTEM_COCOA @SDL_FILESYSTEM_COCOA@
507#cmakedefine SDL_FILESYSTEM_DUMMY @SDL_FILESYSTEM_DUMMY@
508#cmakedefine SDL_FILESYSTEM_RISCOS @SDL_FILESYSTEM_RISCOS@
509#cmakedefine SDL_FILESYSTEM_UNIX @SDL_FILESYSTEM_UNIX@
510#cmakedefine SDL_FILESYSTEM_WINDOWS @SDL_FILESYSTEM_WINDOWS@
511#cmakedefine SDL_FILESYSTEM_EMSCRIPTEN @SDL_FILESYSTEM_EMSCRIPTEN@
512#cmakedefine SDL_FILESYSTEM_OS2 @SDL_FILESYSTEM_OS2@
513#cmakedefine SDL_FILESYSTEM_VITA @SDL_FILESYSTEM_VITA@
514#cmakedefine SDL_FILESYSTEM_PSP @SDL_FILESYSTEM_PSP@
515#cmakedefine SDL_FILESYSTEM_PS2 @SDL_FILESYSTEM_PS2@
516#cmakedefine SDL_FILESYSTEM_N3DS @SDL_FILESYSTEM_N3DS@
517
518/* Enable misc subsystem */
519#cmakedefine SDL_MISC_DUMMY @SDL_MISC_DUMMY@
520
521/* Enable locale subsystem */
522#cmakedefine SDL_LOCALE_DUMMY @SDL_LOCALE_DUMMY@
523
524/* Enable assembly routines */
525#cmakedefine SDL_ALTIVEC_BLITTERS @SDL_ALTIVEC_BLITTERS@
526#cmakedefine SDL_ARM_SIMD_BLITTERS @SDL_ARM_SIMD_BLITTERS@
527#cmakedefine SDL_ARM_NEON_BLITTERS @SDL_ARM_NEON_BLITTERS@
528
529/* Whether SDL_DYNAMIC_API needs dlopen */
530#cmakedefine DYNAPI_NEEDS_DLOPEN @DYNAPI_NEEDS_DLOPEN@
531
532/* Enable dynamic libsamplerate support */
533#cmakedefine SDL_LIBSAMPLERATE_DYNAMIC @SDL_LIBSAMPLERATE_DYNAMIC@
534
535/* Enable ime support */
536#cmakedefine SDL_USE_IME @SDL_USE_IME@
537
538/* Platform specific definitions */
539#cmakedefine SDL_IPHONE_KEYBOARD @SDL_IPHONE_KEYBOARD@
540#cmakedefine SDL_IPHONE_LAUNCHSCREEN @SDL_IPHONE_LAUNCHSCREEN@
541
542#cmakedefine SDL_VIDEO_VITA_PIB @SDL_VIDEO_VITA_PIB@
543#cmakedefine SDL_VIDEO_VITA_PVR @SDL_VIDEO_VITA_PVR@
544#cmakedefine SDL_VIDEO_VITA_PVR_OGL @SDL_VIDEO_VITA_PVR_OGL@
545
546#cmakedefine SDL_HAVE_LIBDECOR_GET_MIN_MAX @SDL_HAVE_LIBDECOR_GET_MIN_MAX@
547
548#if !defined(HAVE_STDINT_H) && !defined(_STDINT_H_)
549/* Most everything except Visual Studio 2008 and earlier has stdint.h now */
550#if defined(_MSC_VER) && (_MSC_VER < 1600)
551typedef signed __int8 int8_t;
552typedef unsigned __int8 uint8_t;
553typedef signed __int16 int16_t;
554typedef unsigned __int16 uint16_t;
555typedef signed __int32 int32_t;
556typedef unsigned __int32 uint32_t;
557typedef signed __int64 int64_t;
558typedef unsigned __int64 uint64_t;
559#ifndef _UINTPTR_T_DEFINED
560#ifdef _WIN64
561typedef unsigned __int64 uintptr_t;
562#else
563typedef unsigned int uintptr_t;
564#endif
565#define _UINTPTR_T_DEFINED
566#endif
567#endif /* Visual Studio 2008 */
568#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
569
570#endif /* SDL_config_h_ */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_config.h.in b/src/contrib/SDL-2.30.2/include/SDL_config.h.in
new file mode 100644
index 0000000..f5dd166
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_config.h.in
@@ -0,0 +1,498 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 git checkout -f include/SDL_config.h
37#endif
38
39/* C language features */
40#undef const
41#undef inline
42#undef volatile
43
44/* C datatypes */
45#if defined(__LP64__) || defined(_LP64) || defined(_WIN64)
46#define SIZEOF_VOIDP 8
47#else
48#define SIZEOF_VOIDP 4
49#endif
50
51#undef HAVE_GCC_ATOMICS
52#undef HAVE_GCC_SYNC_LOCK_TEST_AND_SET
53
54/* Comment this if you want to build without any C library requirements */
55#undef HAVE_LIBC
56#ifdef HAVE_LIBC
57
58/* Useful headers */
59#undef STDC_HEADERS
60#undef HAVE_ALLOCA_H
61#undef HAVE_CTYPE_H
62#undef HAVE_FLOAT_H
63#undef HAVE_ICONV_H
64#undef HAVE_INTTYPES_H
65#undef HAVE_LIMITS_H
66#undef HAVE_MALLOC_H
67#undef HAVE_MATH_H
68#undef HAVE_MEMORY_H
69#undef HAVE_SIGNAL_H
70#undef HAVE_STDARG_H
71#undef HAVE_STDINT_H
72#undef HAVE_STDIO_H
73#undef HAVE_STDLIB_H
74#undef HAVE_STRINGS_H
75#undef HAVE_STRING_H
76#undef HAVE_SYS_TYPES_H
77#undef HAVE_WCHAR_H
78#undef HAVE_LINUX_INPUT_H
79#undef HAVE_PTHREAD_NP_H
80#undef HAVE_LIBUNWIND_H
81
82/* C library functions */
83#undef HAVE_DLOPEN
84#undef HAVE_MALLOC
85#undef HAVE_CALLOC
86#undef HAVE_REALLOC
87#undef HAVE_FREE
88#undef HAVE_ALLOCA
89#ifndef __WIN32__ /* Don't use C runtime versions of these on Windows */
90#undef HAVE_GETENV
91#undef HAVE_SETENV
92#undef HAVE_PUTENV
93#undef HAVE_UNSETENV
94#endif
95#undef HAVE_QSORT
96#undef HAVE_BSEARCH
97#undef HAVE_ABS
98#undef HAVE_BCOPY
99#undef HAVE_MEMSET
100#undef HAVE_MEMCPY
101#undef HAVE_MEMMOVE
102#undef HAVE_MEMCMP
103#undef HAVE_WCSLEN
104#undef HAVE_WCSLCPY
105#undef HAVE_WCSLCAT
106#undef HAVE__WCSDUP
107#undef HAVE_WCSDUP
108#undef HAVE_WCSSTR
109#undef HAVE_WCSCMP
110#undef HAVE_WCSNCMP
111#undef HAVE_WCSCASECMP
112#undef HAVE__WCSICMP
113#undef HAVE_WCSNCASECMP
114#undef HAVE__WCSNICMP
115#undef HAVE_STRLEN
116#undef HAVE_STRLCPY
117#undef HAVE_STRLCAT
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_STRTOK_R
127#undef HAVE_ITOA
128#undef HAVE__LTOA
129#undef HAVE__UITOA
130#undef HAVE__ULTOA
131#undef HAVE_STRTOL
132#undef HAVE_STRTOUL
133#undef HAVE__I64TOA
134#undef HAVE__UI64TOA
135#undef HAVE_STRTOLL
136#undef HAVE_STRTOULL
137#undef HAVE_STRTOD
138#undef HAVE_ATOI
139#undef HAVE_ATOF
140#undef HAVE_STRCMP
141#undef HAVE_STRNCMP
142#undef HAVE__STRICMP
143#undef HAVE_STRCASECMP
144#undef HAVE__STRNICMP
145#undef HAVE_STRNCASECMP
146#undef HAVE_STRCASESTR
147#undef HAVE_SSCANF
148#undef HAVE_VSSCANF
149#undef HAVE_SNPRINTF
150#undef HAVE_VSNPRINTF
151#undef HAVE_M_PI
152#undef HAVE_ACOS
153#undef HAVE_ACOSF
154#undef HAVE_ASIN
155#undef HAVE_ASINF
156#undef HAVE_ATAN
157#undef HAVE_ATANF
158#undef HAVE_ATAN2
159#undef HAVE_ATAN2F
160#undef HAVE_CEIL
161#undef HAVE_CEILF
162#undef HAVE_COPYSIGN
163#undef HAVE_COPYSIGNF
164#undef HAVE_COS
165#undef HAVE_COSF
166#undef HAVE_EXP
167#undef HAVE_EXPF
168#undef HAVE_FABS
169#undef HAVE_FABSF
170#undef HAVE_FLOOR
171#undef HAVE_FLOORF
172#undef HAVE_FMOD
173#undef HAVE_FMODF
174#undef HAVE_LOG
175#undef HAVE_LOGF
176#undef HAVE_LOG10
177#undef HAVE_LOG10F
178#undef HAVE_LROUND
179#undef HAVE_LROUNDF
180#undef HAVE_POW
181#undef HAVE_POWF
182#undef HAVE_ROUND
183#undef HAVE_ROUNDF
184#undef HAVE_SCALBN
185#undef HAVE_SCALBNF
186#undef HAVE_SIN
187#undef HAVE_SINF
188#undef HAVE_SQRT
189#undef HAVE_SQRTF
190#undef HAVE_TAN
191#undef HAVE_TANF
192#undef HAVE_TRUNC
193#undef HAVE_TRUNCF
194#undef HAVE_FOPEN64
195#undef HAVE_FSEEKO
196#undef HAVE_FSEEKO64
197#undef HAVE_SIGACTION
198#undef HAVE_SA_SIGACTION
199#undef HAVE_SETJMP
200#undef HAVE_NANOSLEEP
201#undef HAVE_SYSCONF
202#undef HAVE_SYSCTLBYNAME
203#undef HAVE_CLOCK_GETTIME
204#undef HAVE_GETPAGESIZE
205#undef HAVE_MPROTECT
206#undef HAVE_ICONV
207#undef SDL_USE_LIBICONV
208#undef HAVE_PTHREAD_SETNAME_NP
209#undef HAVE_PTHREAD_SET_NAME_NP
210#undef HAVE_SEM_TIMEDWAIT
211#undef HAVE_GETAUXVAL
212#undef HAVE_ELF_AUX_INFO
213#undef HAVE_POLL
214#undef HAVE_MEMFD_CREATE
215#undef HAVE_POSIX_FALLOCATE
216#undef HAVE__EXIT
217
218#else
219#define HAVE_STDARG_H 1
220#define HAVE_STDDEF_H 1
221#define HAVE_STDINT_H 1
222#endif /* HAVE_LIBC */
223
224#undef HAVE_O_CLOEXEC
225#undef HAVE_ALTIVEC_H
226#undef HAVE_DBUS_DBUS_H
227#undef HAVE_FCITX
228#undef HAVE_SYS_INOTIFY_H
229#undef HAVE_INOTIFY_INIT
230#undef HAVE_INOTIFY_INIT1
231#undef HAVE_INOTIFY
232#undef HAVE_IBUS_IBUS_H
233#undef HAVE_IMMINTRIN_H
234#undef HAVE_LIBUDEV_H
235#undef HAVE_LIBUSB
236#undef HAVE_LIBSAMPLERATE_H
237#undef HAVE_LIBDECOR_H
238#undef HAVE_LSXINTRIN_H
239#undef HAVE_LASXINTRIN_H
240
241#undef HAVE_DDRAW_H
242#undef HAVE_DINPUT_H
243#undef HAVE_DSOUND_H
244#undef HAVE_DXGI_H
245#undef HAVE_WINDOWS_GAMING_INPUT_H
246#undef HAVE_XINPUT_H
247
248#undef HAVE_MMDEVICEAPI_H
249#undef HAVE_AUDIOCLIENT_H
250#undef HAVE_TPCSHRD_H
251#undef HAVE_SENSORSAPI_H
252#undef HAVE_ROAPI_H
253#undef HAVE_SHELLSCALINGAPI_H
254
255/* SDL internal assertion support */
256#undef SDL_DEFAULT_ASSERT_LEVEL
257
258/* Allow disabling of core subsystems */
259#undef SDL_ATOMIC_DISABLED
260#undef SDL_AUDIO_DISABLED
261#undef SDL_CPUINFO_DISABLED
262#undef SDL_EVENTS_DISABLED
263#undef SDL_FILE_DISABLED
264#undef SDL_JOYSTICK_DISABLED
265#undef SDL_HAPTIC_DISABLED
266#undef SDL_HIDAPI_DISABLED
267#undef SDL_SENSOR_DISABLED
268#undef SDL_LOADSO_DISABLED
269#undef SDL_RENDER_DISABLED
270#undef SDL_THREADS_DISABLED
271#undef SDL_TIMERS_DISABLED
272#undef SDL_VIDEO_DISABLED
273#undef SDL_POWER_DISABLED
274#undef SDL_FILESYSTEM_DISABLED
275#undef SDL_LOCALE_DISABLED
276#undef SDL_MISC_DISABLED
277
278/* Enable various audio drivers */
279#undef SDL_AUDIO_DRIVER_AAUDIO
280#undef SDL_AUDIO_DRIVER_ALSA
281#undef SDL_AUDIO_DRIVER_ALSA_DYNAMIC
282#undef SDL_AUDIO_DRIVER_ANDROID
283#undef SDL_AUDIO_DRIVER_ARTS
284#undef SDL_AUDIO_DRIVER_ARTS_DYNAMIC
285#undef SDL_AUDIO_DRIVER_COREAUDIO
286#undef SDL_AUDIO_DRIVER_DISK
287#undef SDL_AUDIO_DRIVER_DSOUND
288#undef SDL_AUDIO_DRIVER_DUMMY
289#undef SDL_AUDIO_DRIVER_EMSCRIPTEN
290#undef SDL_AUDIO_DRIVER_ESD
291#undef SDL_AUDIO_DRIVER_ESD_DYNAMIC
292#undef SDL_AUDIO_DRIVER_FUSIONSOUND
293#undef SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC
294#undef SDL_AUDIO_DRIVER_HAIKU
295#undef SDL_AUDIO_DRIVER_JACK
296#undef SDL_AUDIO_DRIVER_JACK_DYNAMIC
297#undef SDL_AUDIO_DRIVER_NACL
298#undef SDL_AUDIO_DRIVER_NAS
299#undef SDL_AUDIO_DRIVER_NAS_DYNAMIC
300#undef SDL_AUDIO_DRIVER_NETBSD
301#undef SDL_AUDIO_DRIVER_OPENSLES
302#undef SDL_AUDIO_DRIVER_OSS
303#undef SDL_AUDIO_DRIVER_PAUDIO
304#undef SDL_AUDIO_DRIVER_PIPEWIRE
305#undef SDL_AUDIO_DRIVER_PIPEWIRE_DYNAMIC
306#undef SDL_AUDIO_DRIVER_PULSEAUDIO
307#undef SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC
308#undef SDL_AUDIO_DRIVER_QSA
309#undef SDL_AUDIO_DRIVER_SNDIO
310#undef SDL_AUDIO_DRIVER_SNDIO_DYNAMIC
311#undef SDL_AUDIO_DRIVER_SUNAUDIO
312#undef SDL_AUDIO_DRIVER_WASAPI
313#undef SDL_AUDIO_DRIVER_WINMM
314#undef SDL_AUDIO_DRIVER_OS2
315
316/* Enable various input drivers */
317#undef SDL_INPUT_LINUXEV
318#undef SDL_INPUT_FBSDKBIO
319#undef SDL_INPUT_LINUXKD
320#undef SDL_INPUT_WSCONS
321#undef SDL_JOYSTICK_HAIKU
322#undef SDL_JOYSTICK_DINPUT
323#undef SDL_JOYSTICK_WGI
324#undef SDL_JOYSTICK_XINPUT
325#undef SDL_JOYSTICK_DUMMY
326#undef SDL_JOYSTICK_IOKIT
327#undef SDL_JOYSTICK_MFI
328#undef SDL_JOYSTICK_LINUX
329#undef SDL_JOYSTICK_ANDROID
330#undef SDL_JOYSTICK_OS2
331#undef SDL_JOYSTICK_USBHID
332#undef SDL_HAVE_MACHINE_JOYSTICK_H
333#undef SDL_JOYSTICK_HIDAPI
334#undef SDL_JOYSTICK_RAWINPUT
335#undef SDL_JOYSTICK_EMSCRIPTEN
336#undef SDL_JOYSTICK_VIRTUAL
337#undef SDL_HAPTIC_DUMMY
338#undef SDL_HAPTIC_ANDROID
339#undef SDL_HAPTIC_LINUX
340#undef SDL_HAPTIC_IOKIT
341#undef SDL_HAPTIC_DINPUT
342#undef SDL_HAPTIC_XINPUT
343
344/* Enable various sensor drivers */
345#undef SDL_SENSOR_ANDROID
346#undef SDL_SENSOR_COREMOTION
347#undef SDL_SENSOR_WINDOWS
348#undef SDL_SENSOR_DUMMY
349
350/* Enable various shared object loading systems */
351#undef SDL_LOADSO_DLOPEN
352#undef SDL_LOADSO_DUMMY
353#undef SDL_LOADSO_LDG
354#undef SDL_LOADSO_WINDOWS
355#undef SDL_LOADSO_OS2
356
357/* Enable various threading systems */
358#undef SDL_THREAD_GENERIC_COND_SUFFIX
359#undef SDL_THREAD_PTHREAD
360#undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX
361#undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP
362#undef SDL_THREAD_WINDOWS
363#undef SDL_THREAD_OS2
364
365/* Enable various timer systems */
366#undef SDL_TIMER_HAIKU
367#undef SDL_TIMER_DUMMY
368#undef SDL_TIMER_UNIX
369#undef SDL_TIMER_WINDOWS
370#undef SDL_TIMER_OS2
371
372/* Enable various video drivers */
373#undef SDL_VIDEO_DRIVER_HAIKU
374#undef SDL_VIDEO_DRIVER_COCOA
375#undef SDL_VIDEO_DRIVER_DIRECTFB
376#undef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC
377#undef SDL_VIDEO_DRIVER_DUMMY
378#undef SDL_VIDEO_DRIVER_WINDOWS
379#undef SDL_VIDEO_DRIVER_WAYLAND
380#undef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
381#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC
382#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL
383#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR
384#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON
385#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR
386#undef SDL_VIDEO_DRIVER_X11
387#undef SDL_VIDEO_DRIVER_RPI
388#undef SDL_VIDEO_DRIVER_KMSDRM
389#undef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC
390#undef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM
391#undef SDL_VIDEO_DRIVER_ANDROID
392#undef SDL_VIDEO_DRIVER_EMSCRIPTEN
393#undef SDL_VIDEO_DRIVER_OFFSCREEN
394#undef SDL_VIDEO_DRIVER_X11_DYNAMIC
395#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT
396#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR
397#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2
398#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XFIXES
399#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR
400#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS
401#undef SDL_VIDEO_DRIVER_X11_XCURSOR
402#undef SDL_VIDEO_DRIVER_X11_XDBE
403#undef SDL_VIDEO_DRIVER_X11_XINPUT2
404#undef SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH
405#undef SDL_VIDEO_DRIVER_X11_XFIXES
406#undef SDL_VIDEO_DRIVER_X11_XRANDR
407#undef SDL_VIDEO_DRIVER_X11_XSCRNSAVER
408#undef SDL_VIDEO_DRIVER_X11_XSHAPE
409#undef SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS
410#undef SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM
411#undef SDL_VIDEO_DRIVER_NACL
412#undef SDL_VIDEO_DRIVER_VIVANTE
413#undef SDL_VIDEO_DRIVER_VIVANTE_VDK
414#undef SDL_VIDEO_DRIVER_OS2
415#undef SDL_VIDEO_DRIVER_QNX
416#undef SDL_VIDEO_DRIVER_RISCOS
417
418#undef SDL_VIDEO_RENDER_D3D
419#undef SDL_VIDEO_RENDER_D3D11
420#undef SDL_VIDEO_RENDER_D3D12
421#undef SDL_VIDEO_RENDER_OGL
422#undef SDL_VIDEO_RENDER_OGL_ES
423#undef SDL_VIDEO_RENDER_OGL_ES2
424#undef SDL_VIDEO_RENDER_DIRECTFB
425#undef SDL_VIDEO_RENDER_METAL
426
427/* Enable OpenGL support */
428#undef SDL_VIDEO_OPENGL
429#undef SDL_VIDEO_OPENGL_ES
430#undef SDL_VIDEO_OPENGL_ES2
431#undef SDL_VIDEO_OPENGL_BGL
432#undef SDL_VIDEO_OPENGL_CGL
433#undef SDL_VIDEO_OPENGL_EGL
434#undef SDL_VIDEO_OPENGL_GLX
435#undef SDL_VIDEO_OPENGL_WGL
436#undef SDL_VIDEO_OPENGL_OSMESA
437#undef SDL_VIDEO_OPENGL_OSMESA_DYNAMIC
438
439/* Enable Vulkan support */
440#undef SDL_VIDEO_VULKAN
441
442/* Enable Metal support */
443#undef SDL_VIDEO_METAL
444
445/* Enable system power support */
446#undef SDL_POWER_LINUX
447#undef SDL_POWER_WINDOWS
448#undef SDL_POWER_MACOSX
449#undef SDL_POWER_HAIKU
450#undef SDL_POWER_ANDROID
451#undef SDL_POWER_EMSCRIPTEN
452#undef SDL_POWER_HARDWIRED
453
454/* Enable system filesystem support */
455#undef SDL_FILESYSTEM_ANDROID
456#undef SDL_FILESYSTEM_HAIKU
457#undef SDL_FILESYSTEM_COCOA
458#undef SDL_FILESYSTEM_DUMMY
459#undef SDL_FILESYSTEM_RISCOS
460#undef SDL_FILESYSTEM_UNIX
461#undef SDL_FILESYSTEM_WINDOWS
462#undef SDL_FILESYSTEM_NACL
463#undef SDL_FILESYSTEM_EMSCRIPTEN
464#undef SDL_FILESYSTEM_OS2
465#undef SDL_FILESYSTEM_VITA
466#undef SDL_FILESYSTEM_PSP
467#undef SDL_FILESYSTEM_PS2
468
469/* Enable misc subsystem */
470#undef SDL_MISC_DUMMY
471
472/* Enable locale subsystem */
473#undef SDL_LOCALE_DUMMY
474
475/* Enable assembly routines */
476#undef SDL_ALTIVEC_BLITTERS
477#undef SDL_ARM_SIMD_BLITTERS
478#undef SDL_ARM_NEON_BLITTERS
479
480/* Whether SDL_DYNAMIC_API needs dlopen() */
481#undef DYNAPI_NEEDS_DLOPEN
482
483/* Enable ime support */
484#undef SDL_USE_IME
485
486/* Enable dynamic udev support */
487#undef SDL_UDEV_DYNAMIC
488
489/* Enable dynamic libusb support */
490#undef SDL_LIBUSB_DYNAMIC
491
492/* Enable dynamic libsamplerate support */
493#undef SDL_LIBSAMPLERATE_DYNAMIC
494
495/* Libdecor get min/max content size functions */
496#undef SDL_HAVE_LIBDECOR_GET_MIN_MAX
497
498#endif /* SDL_config_h_ */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_config_android.h b/src/contrib/SDL-2.30.2/include/SDL_config_android.h
new file mode 100644
index 0000000..00ffef8
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_config_android.h
@@ -0,0 +1,194 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 STDC_HEADERS 1
39#define HAVE_ALLOCA_H 1
40#define HAVE_CTYPE_H 1
41#define HAVE_INTTYPES_H 1
42#define HAVE_LIMITS_H 1
43#define HAVE_MATH_H 1
44#define HAVE_SIGNAL_H 1
45#define HAVE_STDINT_H 1
46#define HAVE_STDIO_H 1
47#define HAVE_STRING_H 1
48#define HAVE_SYS_TYPES_H 1
49
50/* C library functions */
51#define HAVE_DLOPEN 1
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_SETENV 1
61#define HAVE_UNSETENV 1
62#define HAVE_QSORT 1
63#define HAVE_BSEARCH 1
64#define HAVE_ABS 1
65#define HAVE_BCOPY 1
66#define HAVE_MEMSET 1
67#define HAVE_MEMCPY 1
68#define HAVE_MEMMOVE 1
69#define HAVE_MEMCMP 1
70#define HAVE_STRLEN 1
71#define HAVE_STRLCPY 1
72#define HAVE_STRLCAT 1
73#define HAVE_STRCHR 1
74#define HAVE_STRRCHR 1
75#define HAVE_STRSTR 1
76#define HAVE_STRTOK_R 1
77#define HAVE_STRTOL 1
78#define HAVE_STRTOUL 1
79#define HAVE_STRTOLL 1
80#define HAVE_STRTOULL 1
81#define HAVE_STRTOD 1
82#define HAVE_ATOI 1
83#define HAVE_ATOF 1
84#define HAVE_STRCMP 1
85#define HAVE_STRNCMP 1
86#define HAVE_STRCASECMP 1
87#define HAVE_STRNCASECMP 1
88#define HAVE_STRCASESTR 1
89#define HAVE_VSSCANF 1
90#define HAVE_VSNPRINTF 1
91#define HAVE_ACOS 1
92#define HAVE_ACOSF 1
93#define HAVE_ASIN 1
94#define HAVE_ASINF 1
95#define HAVE_ATAN 1
96#define HAVE_ATANF 1
97#define HAVE_ATAN2 1
98#define HAVE_ATAN2F 1
99#define HAVE_CEIL 1
100#define HAVE_CEILF 1
101#define HAVE_COPYSIGN 1
102#define HAVE_COPYSIGNF 1
103#define HAVE_COS 1
104#define HAVE_COSF 1
105#define HAVE_EXP 1
106#define HAVE_EXPF 1
107#define HAVE_FABS 1
108#define HAVE_FABSF 1
109#define HAVE_FLOOR 1
110#define HAVE_FLOORF 1
111#define HAVE_FMOD 1
112#define HAVE_FMODF 1
113#define HAVE_LOG 1
114#define HAVE_LOGF 1
115#define HAVE_LOG10 1
116#define HAVE_LOG10F 1
117#define HAVE_LROUND 1
118#define HAVE_LROUNDF 1
119#define HAVE_POW 1
120#define HAVE_POWF 1
121#define HAVE_ROUND 1
122#define HAVE_ROUNDF 1
123#define HAVE_SCALBN 1
124#define HAVE_SCALBNF 1
125#define HAVE_SIN 1
126#define HAVE_SINF 1
127#define HAVE_SQRT 1
128#define HAVE_SQRTF 1
129#define HAVE_TAN 1
130#define HAVE_TANF 1
131#define HAVE_TRUNC 1
132#define HAVE_TRUNCF 1
133#define HAVE_SIGACTION 1
134#define HAVE_SETJMP 1
135#define HAVE_NANOSLEEP 1
136#define HAVE_SYSCONF 1
137#define HAVE_CLOCK_GETTIME 1
138
139#ifdef __LP64__
140#define SIZEOF_VOIDP 8
141#else
142#define SIZEOF_VOIDP 4
143#endif
144
145/* Enable various audio drivers */
146#define SDL_AUDIO_DRIVER_ANDROID 1
147#define SDL_AUDIO_DRIVER_OPENSLES 1
148#define SDL_AUDIO_DRIVER_AAUDIO 1
149#define SDL_AUDIO_DRIVER_DUMMY 1
150
151/* Enable various input drivers */
152#define SDL_JOYSTICK_ANDROID 1
153#define SDL_JOYSTICK_HIDAPI 1
154#define SDL_JOYSTICK_VIRTUAL 1
155#define SDL_HAPTIC_ANDROID 1
156
157/* Enable sensor driver */
158#define SDL_SENSOR_ANDROID 1
159
160/* Enable various shared object loading systems */
161#define SDL_LOADSO_DLOPEN 1
162
163/* Enable various threading systems */
164#define SDL_THREAD_PTHREAD 1
165#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1
166
167/* Enable various timer systems */
168#define SDL_TIMER_UNIX 1
169
170/* Enable various video drivers */
171#define SDL_VIDEO_DRIVER_ANDROID 1
172
173/* Enable OpenGL ES */
174#define SDL_VIDEO_OPENGL_ES 1
175#define SDL_VIDEO_OPENGL_ES2 1
176#define SDL_VIDEO_OPENGL_EGL 1
177#define SDL_VIDEO_RENDER_OGL_ES 1
178#define SDL_VIDEO_RENDER_OGL_ES2 1
179
180/* Enable Vulkan support */
181/* Android does not support Vulkan in native code using the "armeabi" ABI. */
182#if defined(__ARM_ARCH) && __ARM_ARCH < 7
183#define SDL_VIDEO_VULKAN 0
184#else
185#define SDL_VIDEO_VULKAN 1
186#endif
187
188/* Enable system power support */
189#define SDL_POWER_ANDROID 1
190
191/* Enable the filesystem driver */
192#define SDL_FILESYSTEM_ANDROID 1
193
194#endif /* SDL_config_android_h_ */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_config_emscripten.h b/src/contrib/SDL-2.30.2/include/SDL_config_emscripten.h
new file mode 100644
index 0000000..637cdae
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_config_emscripten.h
@@ -0,0 +1,218 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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_emscripten_h_
23#define _SDL_config_emscripten_h_
24
25#include "SDL_platform.h"
26
27/**
28 * \file SDL_config_emscripten.h
29 *
30 * This is a configuration that can be used to build SDL for Emscripten.
31 */
32
33#ifdef __LP64__
34#define SIZEOF_VOIDP 8
35#else
36#define SIZEOF_VOIDP 4
37#endif
38#define HAVE_GCC_ATOMICS 1
39
40/* Useful headers */
41#define STDC_HEADERS 1
42#define HAVE_ALLOCA_H 1
43#define HAVE_CTYPE_H 1
44#define HAVE_ICONV_H 1
45#define HAVE_INTTYPES_H 1
46#define HAVE_LIMITS_H 1
47#define HAVE_MALLOC_H 1
48#define HAVE_MATH_H 1
49#define HAVE_MEMORY_H 1
50#define HAVE_SIGNAL_H 1
51#define HAVE_STDARG_H 1
52#define HAVE_STDINT_H 1
53#define HAVE_STDIO_H 1
54#define HAVE_STDLIB_H 1
55#define HAVE_STRINGS_H 1
56#define HAVE_STRING_H 1
57#define HAVE_SYS_TYPES_H 1
58#define HAVE_WCHAR_H 1
59
60/* C library functions */
61#define HAVE_DLOPEN 1
62#define HAVE_MALLOC 1
63#define HAVE_CALLOC 1
64#define HAVE_REALLOC 1
65#define HAVE_FREE 1
66#define HAVE_ALLOCA 1
67#define HAVE_GETENV 1
68#define HAVE_SETENV 1
69#define HAVE_PUTENV 1
70#define HAVE_UNSETENV 1
71#define HAVE_QSORT 1
72#define HAVE_BSEARCH 1
73#define HAVE_ABS 1
74#define HAVE_BCOPY 1
75#define HAVE_MEMSET 1
76#define HAVE_MEMCPY 1
77#define HAVE_MEMMOVE 1
78#define HAVE_MEMCMP 1
79#define HAVE_WCSLEN 1
80#define HAVE_WCSDUP 1
81#define HAVE_WCSSTR 1
82#define HAVE_WCSCMP 1
83#define HAVE_WCSNCMP 1
84#define HAVE_WCSCASECMP 1
85#define HAVE_WCSNCASECMP 1
86#define HAVE_STRLEN 1
87#define HAVE_STRLCPY 1
88#define HAVE_STRLCAT 1
89#define HAVE_STRCHR 1
90#define HAVE_STRRCHR 1
91#define HAVE_STRSTR 1
92#define HAVE_STRTOK_R 1
93#define HAVE_STRTOL 1
94#define HAVE_STRTOUL 1
95#define HAVE_STRTOLL 1
96#define HAVE_STRTOULL 1
97#define HAVE_STRTOD 1
98#define HAVE_ATOI 1
99#define HAVE_ATOF 1
100#define HAVE_STRCMP 1
101#define HAVE_STRNCMP 1
102#define HAVE_STRCASECMP 1
103#define HAVE_STRNCASECMP 1
104#define HAVE_SSCANF 1
105#define HAVE_VSSCANF 1
106#define HAVE_VSNPRINTF 1
107#define HAVE_M_PI 1
108#define HAVE_ACOS 1
109#define HAVE_ACOSF 1
110#define HAVE_ASIN 1
111#define HAVE_ASINF 1
112#define HAVE_ATAN 1
113#define HAVE_ATANF 1
114#define HAVE_ATAN2 1
115#define HAVE_ATAN2F 1
116#define HAVE_CEIL 1
117#define HAVE_CEILF 1
118#define HAVE_COPYSIGN 1
119#define HAVE_COPYSIGNF 1
120#define HAVE_COS 1
121#define HAVE_COSF 1
122#define HAVE_EXP 1
123#define HAVE_EXPF 1
124#define HAVE_FABS 1
125#define HAVE_FABSF 1
126#define HAVE_FLOOR 1
127#define HAVE_FLOORF 1
128#define HAVE_FMOD 1
129#define HAVE_FMODF 1
130#define HAVE_LOG 1
131#define HAVE_LOGF 1
132#define HAVE_LOG10 1
133#define HAVE_LOG10F 1
134#define HAVE_LROUND 1
135#define HAVE_LROUNDF 1
136#define HAVE_POW 1
137#define HAVE_POWF 1
138#define HAVE_ROUND 1
139#define HAVE_ROUNDF 1
140#define HAVE_SCALBN 1
141#define HAVE_SCALBNF 1
142#define HAVE_SIN 1
143#define HAVE_SINF 1
144#define HAVE_SQRT 1
145#define HAVE_SQRTF 1
146#define HAVE_TAN 1
147#define HAVE_TANF 1
148#define HAVE_TRUNC 1
149#define HAVE_TRUNCF 1
150#define HAVE_FSEEKO 1
151#define HAVE_FSEEKO64 1
152#define HAVE_SIGACTION 1
153#define HAVE_SA_SIGACTION 1
154#define HAVE_SETJMP 1
155#define HAVE_NANOSLEEP 1
156#define HAVE_SYSCONF 1
157#define HAVE_CLOCK_GETTIME 1
158/* #undef HAVE_GETPAGESIZE */
159#define HAVE_MPROTECT 1
160#define HAVE_ICONV 1
161
162/* SDL internal assertion support */
163/* #undef SDL_DEFAULT_ASSERT_LEVEL */
164
165#define SDL_CPUINFO_DISABLED 1
166#define SDL_HAPTIC_DISABLED 1
167#define SDL_HIDAPI_DISABLED 1
168#ifndef __EMSCRIPTEN_PTHREADS__
169#define SDL_THREADS_DISABLED 1
170#endif
171
172/* Enable various audio drivers */
173#define SDL_AUDIO_DRIVER_DISK 1
174#define SDL_AUDIO_DRIVER_DUMMY 1
175#define SDL_AUDIO_DRIVER_EMSCRIPTEN 1
176
177/* Enable various input drivers */
178#define SDL_JOYSTICK_EMSCRIPTEN 1
179
180/* Enable various sensor drivers */
181#define SDL_SENSOR_DUMMY 1
182
183/* Enable various shared object loading systems */
184#define SDL_LOADSO_DLOPEN 1
185
186/* Enable various threading systems */
187#ifdef __EMSCRIPTEN_PTHREADS__
188#define SDL_THREAD_PTHREAD 1
189#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1
190#endif
191
192/* Enable various timer systems */
193#define SDL_TIMER_UNIX 1
194
195/* Enable various video drivers */
196#define SDL_VIDEO_DRIVER_EMSCRIPTEN 1
197
198#define SDL_VIDEO_RENDER_OGL_ES2 1
199
200/* Enable OpenGL support */
201/* #undef SDL_VIDEO_OPENGL */
202/* #undef SDL_VIDEO_OPENGL_ES */
203#define SDL_VIDEO_OPENGL_ES2 1
204/* #undef SDL_VIDEO_OPENGL_BGL */
205/* #undef SDL_VIDEO_OPENGL_CGL */
206/* #undef SDL_VIDEO_OPENGL_GLX */
207/* #undef SDL_VIDEO_OPENGL_WGL */
208#define SDL_VIDEO_OPENGL_EGL 1
209/* #undef SDL_VIDEO_OPENGL_OSMESA */
210/* #undef SDL_VIDEO_OPENGL_OSMESA_DYNAMIC */
211
212/* Enable system power support */
213#define SDL_POWER_EMSCRIPTEN 1
214
215/* Enable system filesystem support */
216#define SDL_FILESYSTEM_EMSCRIPTEN 1
217
218#endif /* _SDL_config_emscripten_h_ */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_config_iphoneos.h b/src/contrib/SDL-2.30.2/include/SDL_config_iphoneos.h
new file mode 100644
index 0000000..2743901
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_config_iphoneos.h
@@ -0,0 +1,217 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 STDC_HEADERS 1
37#define HAVE_ALLOCA_H 1
38#define HAVE_CTYPE_H 1
39#define HAVE_INTTYPES_H 1
40#define HAVE_LIMITS_H 1
41#define HAVE_MATH_H 1
42#define HAVE_SIGNAL_H 1
43#define HAVE_STDINT_H 1
44#define HAVE_STDIO_H 1
45#define HAVE_STRING_H 1
46#define HAVE_SYS_TYPES_H 1
47/* The libunwind functions are only available on x86 */
48/* #undef HAVE_LIBUNWIND_H */
49
50/* C library functions */
51#define HAVE_DLOPEN 1
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_SETENV 1
61#define HAVE_UNSETENV 1
62#define HAVE_QSORT 1
63#define HAVE_BSEARCH 1
64#define HAVE_ABS 1
65#define HAVE_BCOPY 1
66#define HAVE_MEMSET 1
67#define HAVE_MEMCPY 1
68#define HAVE_MEMMOVE 1
69#define HAVE_MEMCMP 1
70#define HAVE_STRLEN 1
71#define HAVE_STRLCPY 1
72#define HAVE_STRLCAT 1
73#define HAVE_STRCHR 1
74#define HAVE_STRRCHR 1
75#define HAVE_STRSTR 1
76#define HAVE_STRTOK_R 1
77#define HAVE_STRTOL 1
78#define HAVE_STRTOUL 1
79#define HAVE_STRTOLL 1
80#define HAVE_STRTOULL 1
81#define HAVE_STRTOD 1
82#define HAVE_ATOI 1
83#define HAVE_ATOF 1
84#define HAVE_STRCMP 1
85#define HAVE_STRNCMP 1
86#define HAVE_STRCASECMP 1
87#define HAVE_STRNCASECMP 1
88#define HAVE_STRCASESTR 1
89#define HAVE_VSSCANF 1
90#define HAVE_VSNPRINTF 1
91#define HAVE_M_PI 1
92#define HAVE_ACOS 1
93#define HAVE_ACOSF 1
94#define HAVE_ASIN 1
95#define HAVE_ASINF 1
96#define HAVE_ATAN 1
97#define HAVE_ATANF 1
98#define HAVE_ATAN2 1
99#define HAVE_ATAN2F 1
100#define HAVE_CEIL 1
101#define HAVE_CEILF 1
102#define HAVE_COPYSIGN 1
103#define HAVE_COPYSIGNF 1
104#define HAVE_COS 1
105#define HAVE_COSF 1
106#define HAVE_EXP 1
107#define HAVE_EXPF 1
108#define HAVE_FABS 1
109#define HAVE_FABSF 1
110#define HAVE_FLOOR 1
111#define HAVE_FLOORF 1
112#define HAVE_FMOD 1
113#define HAVE_FMODF 1
114#define HAVE_LOG 1
115#define HAVE_LOGF 1
116#define HAVE_LOG10 1
117#define HAVE_LOG10F 1
118#define HAVE_LROUND 1
119#define HAVE_LROUNDF 1
120#define HAVE_POW 1
121#define HAVE_POWF 1
122#define HAVE_ROUND 1
123#define HAVE_ROUNDF 1
124#define HAVE_SCALBN 1
125#define HAVE_SCALBNF 1
126#define HAVE_SIN 1
127#define HAVE_SINF 1
128#define HAVE_SQRT 1
129#define HAVE_SQRTF 1
130#define HAVE_TAN 1
131#define HAVE_TANF 1
132#define HAVE_TRUNC 1
133#define HAVE_TRUNCF 1
134#define HAVE_SIGACTION 1
135#define HAVE_SETJMP 1
136#define HAVE_NANOSLEEP 1
137#define HAVE_SYSCONF 1
138#define HAVE_SYSCTLBYNAME 1
139#define HAVE_O_CLOEXEC 1
140
141/* enable iPhone version of Core Audio driver */
142#define SDL_AUDIO_DRIVER_COREAUDIO 1
143/* Enable the dummy audio driver (src/audio/dummy/\*.c) */
144#define SDL_AUDIO_DRIVER_DUMMY 1
145
146/* Enable the stub haptic driver (src/haptic/dummy/\*.c) */
147#define SDL_HAPTIC_DUMMY 1
148
149/* Enable joystick support */
150/* Only enable HIDAPI support if you want to support Steam Controllers on iOS and tvOS */
151/*#define SDL_JOYSTICK_HIDAPI 1*/
152#define SDL_JOYSTICK_MFI 1
153#define SDL_JOYSTICK_VIRTUAL 1
154
155#ifdef __TVOS__
156#define SDL_SENSOR_DUMMY 1
157#else
158/* Enable the CoreMotion sensor driver */
159#define SDL_SENSOR_COREMOTION 1
160#endif
161
162/* Enable Unix style SO loading */
163#define SDL_LOADSO_DLOPEN 1
164
165/* Enable various threading systems */
166#define SDL_THREAD_PTHREAD 1
167#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1
168
169/* Enable various timer systems */
170#define SDL_TIMER_UNIX 1
171
172/* Supported video drivers */
173#define SDL_VIDEO_DRIVER_UIKIT 1
174#define SDL_VIDEO_DRIVER_DUMMY 1
175
176/* Enable OpenGL ES */
177#if !TARGET_OS_MACCATALYST
178#define SDL_VIDEO_OPENGL_ES2 1
179#define SDL_VIDEO_OPENGL_ES 1
180#define SDL_VIDEO_RENDER_OGL_ES 1
181#define SDL_VIDEO_RENDER_OGL_ES2 1
182#endif
183
184/* Metal supported on 64-bit devices running iOS 8.0 and tvOS 9.0 and newer
185 Also supported in simulator from iOS 13.0 and tvOS 13.0
186 */
187#if (TARGET_OS_SIMULATOR && ((__IPHONE_OS_VERSION_MIN_REQUIRED >= 130000) || (__TV_OS_VERSION_MIN_REQUIRED >= 130000))) || (!TARGET_CPU_ARM && ((__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 90000)))
188#define SDL_PLATFORM_SUPPORTS_METAL 1
189#else
190#define SDL_PLATFORM_SUPPORTS_METAL 0
191#endif
192
193#if SDL_PLATFORM_SUPPORTS_METAL
194#define SDL_VIDEO_RENDER_METAL 1
195#endif
196
197#if SDL_PLATFORM_SUPPORTS_METAL
198#define SDL_VIDEO_VULKAN 1
199#endif
200
201#if SDL_PLATFORM_SUPPORTS_METAL
202#define SDL_VIDEO_METAL 1
203#endif
204
205/* Enable system power support */
206#define SDL_POWER_UIKIT 1
207
208/* enable iPhone keyboard support */
209#define SDL_IPHONE_KEYBOARD 1
210
211/* enable iOS extended launch screen */
212#define SDL_IPHONE_LAUNCHSCREEN 1
213
214/* enable filesystem support */
215#define SDL_FILESYSTEM_COCOA 1
216
217#endif /* SDL_config_iphoneos_h_ */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_config_macosx.h b/src/contrib/SDL-2.30.2/include/SDL_config_macosx.h
new file mode 100644
index 0000000..2db760a
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_config_macosx.h
@@ -0,0 +1,277 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 STDC_HEADERS 1
41#define HAVE_ALLOCA_H 1
42#define HAVE_CTYPE_H 1
43#define HAVE_FLOAT_H 1
44#define HAVE_INTTYPES_H 1
45#define HAVE_LIMITS_H 1
46#define HAVE_MATH_H 1
47#define HAVE_SIGNAL_H 1
48#define HAVE_STDINT_H 1
49#define HAVE_STDIO_H 1
50#define HAVE_STRING_H 1
51#define HAVE_SYS_TYPES_H 1
52#define HAVE_LIBUNWIND_H 1
53
54/* C library functions */
55#define HAVE_DLOPEN 1
56#define HAVE_MALLOC 1
57#define HAVE_CALLOC 1
58#define HAVE_REALLOC 1
59#define HAVE_FREE 1
60#define HAVE_ALLOCA 1
61#define HAVE_GETENV 1
62#define HAVE_SETENV 1
63#define HAVE_PUTENV 1
64#define HAVE_UNSETENV 1
65#define HAVE_QSORT 1
66#define HAVE_BSEARCH 1
67#define HAVE_ABS 1
68#define HAVE_BCOPY 1
69#define HAVE_MEMSET 1
70#define HAVE_MEMCPY 1
71#define HAVE_MEMMOVE 1
72#define HAVE_MEMCMP 1
73#define HAVE_STRLEN 1
74#define HAVE_STRLCPY 1
75#define HAVE_STRLCAT 1
76#define HAVE_STRCHR 1
77#define HAVE_STRRCHR 1
78#define HAVE_STRSTR 1
79#define HAVE_STRTOK_R 1
80#define HAVE_STRTOL 1
81#define HAVE_STRTOUL 1
82#define HAVE_STRTOLL 1
83#define HAVE_STRTOULL 1
84#define HAVE_STRTOD 1
85#define HAVE_ATOI 1
86#define HAVE_ATOF 1
87#define HAVE_STRCMP 1
88#define HAVE_STRNCMP 1
89#define HAVE_STRCASECMP 1
90#define HAVE_STRNCASECMP 1
91#define HAVE_STRCASESTR 1
92#define HAVE_VSSCANF 1
93#define HAVE_VSNPRINTF 1
94#define HAVE_M_PI 1
95#define HAVE_ACOS 1
96#define HAVE_ACOSF 1
97#define HAVE_ASIN 1
98#define HAVE_ASINF 1
99#define HAVE_ATAN 1
100#define HAVE_ATANF 1
101#define HAVE_ATAN2 1
102#define HAVE_ATAN2F 1
103#define HAVE_CEIL 1
104#define HAVE_CEILF 1
105#define HAVE_COPYSIGN 1
106#define HAVE_COPYSIGNF 1
107#define HAVE_COS 1
108#define HAVE_COSF 1
109#define HAVE_EXP 1
110#define HAVE_EXPF 1
111#define HAVE_FABS 1
112#define HAVE_FABSF 1
113#define HAVE_FLOOR 1
114#define HAVE_FLOORF 1
115#define HAVE_FMOD 1
116#define HAVE_FMODF 1
117#define HAVE_LOG 1
118#define HAVE_LOGF 1
119#define HAVE_LOG10 1
120#define HAVE_LOG10F 1
121#define HAVE_LROUND 1
122#define HAVE_LROUNDF 1
123#define HAVE_POW 1
124#define HAVE_POWF 1
125#define HAVE_ROUND 1
126#define HAVE_ROUNDF 1
127#define HAVE_SCALBN 1
128#define HAVE_SCALBNF 1
129#define HAVE_SIN 1
130#define HAVE_SINF 1
131#define HAVE_SQRT 1
132#define HAVE_SQRTF 1
133#define HAVE_TAN 1
134#define HAVE_TANF 1
135#define HAVE_TRUNC 1
136#define HAVE_TRUNCF 1
137#define HAVE_SIGACTION 1
138#define HAVE_SETJMP 1
139#define HAVE_NANOSLEEP 1
140#define HAVE_SYSCONF 1
141#define HAVE_SYSCTLBYNAME 1
142
143#if defined(__has_include) && (defined(__i386__) || defined(__x86_64))
144# if __has_include(<immintrin.h>)
145# define HAVE_IMMINTRIN_H 1
146# endif
147#endif
148
149#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1070)
150#define HAVE_O_CLOEXEC 1
151#endif
152
153#define HAVE_GCC_ATOMICS 1
154
155/* Enable various audio drivers */
156#define SDL_AUDIO_DRIVER_COREAUDIO 1
157#define SDL_AUDIO_DRIVER_DISK 1
158#define SDL_AUDIO_DRIVER_DUMMY 1
159
160/* Enable various input drivers */
161#define SDL_JOYSTICK_HIDAPI 1
162#define SDL_JOYSTICK_IOKIT 1
163#define SDL_JOYSTICK_VIRTUAL 1
164#define SDL_HAPTIC_IOKIT 1
165
166/* The MFI controller support requires ARC Objective C runtime */
167#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 && !defined(__i386__)
168#define SDL_JOYSTICK_MFI 1
169#endif
170
171/* Enable the dummy sensor driver */
172#define SDL_SENSOR_DUMMY 1
173
174/* Enable various shared object loading systems */
175#define SDL_LOADSO_DLOPEN 1
176
177/* Enable various threading systems */
178#define SDL_THREAD_PTHREAD 1
179#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1
180
181/* Enable various timer systems */
182#define SDL_TIMER_UNIX 1
183
184/* Enable various video drivers */
185#define SDL_VIDEO_DRIVER_COCOA 1
186#define SDL_VIDEO_DRIVER_DUMMY 1
187#undef SDL_VIDEO_DRIVER_X11
188#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/opt/X11/lib/libX11.6.dylib"
189#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/opt/X11/lib/libXext.6.dylib"
190#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/opt/X11/lib/libXi.6.dylib"
191#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/opt/X11/lib/libXrandr.2.dylib"
192#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/opt/X11/lib/libXss.1.dylib"
193#define SDL_VIDEO_DRIVER_X11_XDBE 1
194#define SDL_VIDEO_DRIVER_X11_XRANDR 1
195#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1
196#define SDL_VIDEO_DRIVER_X11_XSHAPE 1
197#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1
198
199#ifdef MAC_OS_X_VERSION_10_8
200/*
201 * No matter the versions targeted, this is the 10.8 or later SDK, so you have
202 * to use the external Xquartz, which is a more modern Xlib. Previous SDKs
203 * used an older Xlib.
204 */
205#define SDL_VIDEO_DRIVER_X11_XINPUT2 1
206#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1
207#endif
208
209#ifndef SDL_VIDEO_RENDER_OGL
210#define SDL_VIDEO_RENDER_OGL 1
211#endif
212
213#ifndef SDL_VIDEO_RENDER_OGL_ES2
214#define SDL_VIDEO_RENDER_OGL_ES2 1
215#endif
216
217/* Metal only supported on 64-bit architectures with 10.11+ */
218#if TARGET_RT_64_BIT && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100)
219#define SDL_PLATFORM_SUPPORTS_METAL 1
220#else
221#define SDL_PLATFORM_SUPPORTS_METAL 0
222#endif
223
224#ifndef SDL_VIDEO_RENDER_METAL
225#if SDL_PLATFORM_SUPPORTS_METAL
226#define SDL_VIDEO_RENDER_METAL 1
227#else
228#define SDL_VIDEO_RENDER_METAL 0
229#endif
230#endif
231
232/* Enable OpenGL support */
233#ifndef SDL_VIDEO_OPENGL
234#define SDL_VIDEO_OPENGL 1
235#endif
236#ifndef SDL_VIDEO_OPENGL_ES2
237#define SDL_VIDEO_OPENGL_ES2 1
238#endif
239#ifndef SDL_VIDEO_OPENGL_EGL
240#define SDL_VIDEO_OPENGL_EGL 1
241#endif
242#ifndef SDL_VIDEO_OPENGL_CGL
243#define SDL_VIDEO_OPENGL_CGL 1
244#endif
245#ifndef SDL_VIDEO_OPENGL_GLX
246#define SDL_VIDEO_OPENGL_GLX 1
247#endif
248
249/* Enable Vulkan and Metal support */
250#ifndef SDL_VIDEO_VULKAN
251#if SDL_PLATFORM_SUPPORTS_METAL
252#define SDL_VIDEO_VULKAN 1
253#else
254#define SDL_VIDEO_VULKAN 0
255#endif
256#endif
257
258#ifndef SDL_VIDEO_METAL
259#if SDL_PLATFORM_SUPPORTS_METAL
260#define SDL_VIDEO_METAL 1
261#else
262#define SDL_VIDEO_METAL 0
263#endif
264#endif
265
266/* Enable system power support */
267#define SDL_POWER_MACOSX 1
268
269/* enable filesystem support */
270#define SDL_FILESYSTEM_COCOA 1
271
272/* Enable assembly routines */
273#ifdef __ppc__
274#define SDL_ALTIVEC_BLITTERS 1
275#endif
276
277#endif /* SDL_config_macosx_h_ */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_config_minimal.h b/src/contrib/SDL-2.30.2/include/SDL_config_minimal.h
new file mode 100644
index 0000000..ceedda2
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_config_minimal.h
@@ -0,0 +1,95 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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#if !defined(HAVE_STDINT_H) && !defined(_STDINT_H_)
38/* Most everything except Visual Studio 2008 and earlier has stdint.h now */
39#if defined(_MSC_VER) && (_MSC_VER < 1600)
40typedef signed __int8 int8_t;
41typedef unsigned __int8 uint8_t;
42typedef signed __int16 int16_t;
43typedef unsigned __int16 uint16_t;
44typedef signed __int32 int32_t;
45typedef unsigned __int32 uint32_t;
46typedef signed __int64 int64_t;
47typedef unsigned __int64 uint64_t;
48#ifndef _UINTPTR_T_DEFINED
49#ifdef _WIN64
50typedef unsigned __int64 uintptr_t;
51#else
52typedef unsigned int uintptr_t;
53#endif
54#define _UINTPTR_T_DEFINED
55#endif
56#else
57#define HAVE_STDINT_H 1
58#endif /* Visual Studio 2008 */
59#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
60
61#ifdef __GNUC__
62#define HAVE_GCC_SYNC_LOCK_TEST_AND_SET 1
63#endif
64
65/* Enable the dummy audio driver (src/audio/dummy/\*.c) */
66#define SDL_AUDIO_DRIVER_DUMMY 1
67
68/* Enable the stub joystick driver (src/joystick/dummy/\*.c) */
69#define SDL_JOYSTICK_DISABLED 1
70
71/* Enable the stub haptic driver (src/haptic/dummy/\*.c) */
72#define SDL_HAPTIC_DISABLED 1
73
74/* Enable the stub HIDAPI */
75#define SDL_HIDAPI_DISABLED 1
76
77/* Enable the stub sensor driver (src/sensor/dummy/\*.c) */
78#define SDL_SENSOR_DISABLED 1
79
80/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */
81#define SDL_LOADSO_DISABLED 1
82
83/* Enable the stub thread support (src/thread/generic/\*.c) */
84#define SDL_THREADS_DISABLED 1
85
86/* Enable the stub timer support (src/timer/dummy/\*.c) */
87#define SDL_TIMERS_DISABLED 1
88
89/* Enable the dummy video driver (src/video/dummy/\*.c) */
90#define SDL_VIDEO_DRIVER_DUMMY 1
91
92/* Enable the dummy filesystem driver (src/filesystem/dummy/\*.c) */
93#define SDL_FILESYSTEM_DUMMY 1
94
95#endif /* SDL_config_minimal_h_ */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_config_ngage.h b/src/contrib/SDL-2.30.2/include/SDL_config_ngage.h
new file mode 100644
index 0000000..61c26c2
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_config_ngage.h
@@ -0,0 +1,89 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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_ngage_h_
23#define SDL_config_ngage_h_
24#define SDL_config_h_
25
26#include "SDL_platform.h"
27
28typedef signed char int8_t;
29typedef unsigned char uint8_t;
30typedef signed short int16_t;
31typedef unsigned short uint16_t;
32typedef signed int int32_t;
33typedef unsigned int uint32_t;
34typedef signed long long int64_t;
35typedef unsigned long long uint64_t;
36typedef unsigned long uintptr_t;
37
38#define HAVE_STDARG_H 1
39#define HAVE_STDDEF_H 1
40#define HAVE_STDIO_H 1
41#define HAVE_STDLIB_H 1
42#define HAVE_MATH_H 1
43#define HAVE_CEIL 1
44#define HAVE_COPYSIGN 1
45#define HAVE_COS 1
46#define HAVE_EXP 1
47#define HAVE_FABS 1
48#define HAVE_FLOOR 1
49#define HAVE_LOG 1
50#define HAVE_LOG10 1
51#define HAVE_SCALBN 1
52#define HAVE_SIN 1
53#define HAVE_SQRT 1
54#define HAVE_TAN 1
55#define HAVE_MALLOC 1
56#define SDL_MAIN_NEEDED 1
57#define LACKS_SYS_MMAN_H 1
58
59/* Enable the N-Gage thread support (src/thread/ngage/\*.c) */
60#define SDL_THREAD_NGAGE 1
61
62/* Enable the N-Gage timer support (src/timer/ngage/\*.c) */
63#define SDL_TIMER_NGAGE 1
64
65/* Enable the N-Gage video driver (src/video/ngage/\*.c) */
66#define SDL_VIDEO_DRIVER_NGAGE 1
67
68/* Enable the dummy audio driver (src/audio/dummy/\*.c) */
69#define SDL_AUDIO_DRIVER_DUMMY 1
70
71/* Enable the stub joystick driver (src/joystick/dummy/\*.c) */
72#define SDL_JOYSTICK_DISABLED 1
73
74/* Enable the stub haptic driver (src/haptic/dummy/\*.c) */
75#define SDL_HAPTIC_DISABLED 1
76
77/* Enable the stub HIDAPI */
78#define SDL_HIDAPI_DISABLED 1
79
80/* Enable the stub sensor driver (src/sensor/dummy/\*.c) */
81#define SDL_SENSOR_DISABLED 1
82
83/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */
84#define SDL_LOADSO_DISABLED 1
85
86/* Enable the dummy filesystem driver (src/filesystem/dummy/\*.c) */
87#define SDL_FILESYSTEM_DUMMY 1
88
89#endif /* SDL_config_ngage_h_ */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_config_os2.h b/src/contrib/SDL-2.30.2/include/SDL_config_os2.h
new file mode 100644
index 0000000..9be6b2d
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_config_os2.h
@@ -0,0 +1,207 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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_os2_h_
23#define SDL_config_os2_h_
24#define SDL_config_h_
25
26#include "SDL_platform.h"
27
28#define SIZEOF_VOIDP 4
29
30#define SDL_AUDIO_DRIVER_DUMMY 1
31#define SDL_AUDIO_DRIVER_DISK 1
32#define SDL_AUDIO_DRIVER_OS2 1
33
34#define SDL_POWER_DISABLED 1
35#define SDL_HAPTIC_DISABLED 1
36
37#define SDL_SENSOR_DUMMY 1
38#define SDL_VIDEO_DRIVER_DUMMY 1
39#define SDL_VIDEO_DRIVER_OS2 1
40#define SDL_JOYSTICK_OS2 1
41#ifndef HAVE_LIBUSB_H /* see Makefile */
42#define SDL_HIDAPI_DISABLED 1
43/*#undef SDL_JOYSTICK_HIDAPI */
44#else
45#define SDL_JOYSTICK_HIDAPI 1
46#define HAVE_LIBUSB 1
47/* dynamically loaded libusb-1.0 dll: */
48#define SDL_LIBUSB_DYNAMIC "usb100.dll"
49#endif
50#define SDL_JOYSTICK_VIRTUAL 1
51
52/* Enable OpenGL support */
53/* #undef SDL_VIDEO_OPENGL */
54
55#define SDL_THREAD_OS2 1
56#define SDL_LOADSO_OS2 1
57#define SDL_TIMER_OS2 1
58#define SDL_FILESYSTEM_OS2 1
59
60/* use libsamplerate for audio rate conversion. */
61/*#define HAVE_LIBSAMPLERATE_H 1 */
62
63/* Enable dynamic libsamplerate support */
64#define SDL_LIBSAMPLERATE_DYNAMIC "SAMPRATE.DLL"
65
66#define HAVE_LIBC 1
67
68#define HAVE_STDARG_H 1
69#define HAVE_STDDEF_H 1
70#define HAVE_STDINT_H 1
71
72#define HAVE_SYS_TYPES_H 1
73#define HAVE_STDIO_H 1
74#define STDC_HEADERS 1
75#define HAVE_STDLIB_H 1
76#define HAVE_MALLOC_H 1
77#define HAVE_MEMORY_H 1
78#define HAVE_STRING_H 1
79#define HAVE_STRINGS_H 1
80#define HAVE_WCHAR_H 1
81#define HAVE_INTTYPES_H 1
82#define HAVE_LIMITS_H 1
83#define HAVE_CTYPE_H 1
84#define HAVE_MATH_H 1
85#define HAVE_FLOAT_H 1
86#define HAVE_SIGNAL_H 1
87
88#if 0 /* see Makefile */
89#define HAVE_ICONV 1
90#define HAVE_ICONV_H 1
91#endif
92
93/* #undef HAVE_DLOPEN */
94#define HAVE_MALLOC 1
95#define HAVE_CALLOC 1
96#define HAVE_REALLOC 1
97#define HAVE_FREE 1
98#if defined(__WATCOMC__)
99#define HAVE__FSEEKI64 1
100#define HAVE__FTELLI64 1
101#endif
102#define HAVE_ALLOCA 1
103#define HAVE_GETENV 1
104#define HAVE_SETENV 1
105#define HAVE_PUTENV 1
106/* OpenWatcom requires specific calling conventions for qsort and bsearch */
107#ifndef __WATCOMC__
108#define HAVE_QSORT 1
109#define HAVE_BSEARCH 1
110#endif
111#define HAVE_ABS 1
112#define HAVE_BCOPY 1
113#define HAVE_MEMSET 1
114#define HAVE_MEMCPY 1
115#define HAVE_MEMMOVE 1
116#define HAVE_MEMCMP 1
117#define HAVE_WCSLEN 1
118#define HAVE_WCSLCPY 1
119#define HAVE_WCSLCAT 1
120#define HAVE_WCSCMP 1
121#define HAVE__WCSICMP 1
122#define HAVE__WCSNICMP 1
123#define HAVE_WCSLEN 1
124#define HAVE_WCSLCPY 1
125#define HAVE_WCSLCAT 1
126/* #undef HAVE_WCSDUP */
127#define HAVE__WCSDUP 1
128#define HAVE_WCSSTR 1
129#define HAVE_WCSCMP 1
130#define HAVE_WCSNCMP 1
131#define HAVE_STRLEN 1
132#define HAVE_STRLCPY 1
133#define HAVE_STRLCAT 1
134#define HAVE__STRREV 1
135#define HAVE__STRUPR 1
136#define HAVE__STRLWR 1
137/* #undef HAVE_INDEX */
138/* #undef HAVE_RINDEX */
139#define HAVE_STRCHR 1
140#define HAVE_STRRCHR 1
141#define HAVE_STRSTR 1
142/* #undef HAVE_STRTOK_R */
143#define HAVE_ITOA 1
144#define HAVE__LTOA 1
145#define HAVE__ULTOA 1
146#define HAVE_STRTOL 1
147#define HAVE_STRTOUL 1
148#define HAVE__I64TOA 1
149#define HAVE__UI64TOA 1
150#define HAVE_STRTOLL 1
151#define HAVE_STRTOULL 1
152#define HAVE_STRTOD 1
153#define HAVE_ATOI 1
154#define HAVE_ATOF 1
155#define HAVE_STRCMP 1
156#define HAVE_STRNCMP 1
157#define HAVE_STRICMP 1
158#define HAVE_STRCASECMP 1
159#define HAVE_STRNCASECMP 1
160#define HAVE_SSCANF 1
161#define HAVE_VSSCANF 1
162#define HAVE_SNPRINTF 1
163#define HAVE_VSNPRINTF 1
164#define HAVE_SETJMP 1
165#define HAVE_ACOS 1
166/* #undef HAVE_ACOSF */
167#define HAVE_ASIN 1
168/* #undef HAVE_ASINF */
169#define HAVE_ATAN 1
170#define HAVE_ATAN2 1
171/* #undef HAVE_ATAN2F */
172#define HAVE_CEIL 1
173/* #undef HAVE_CEILF */
174/* #undef HAVE_COPYSIGN */
175/* #undef HAVE_COPYSIGNF */
176#define HAVE_COS 1
177/* #undef HAVE_COSF */
178#define HAVE_EXP 1
179/* #undef HAVE_EXPF */
180#define HAVE_FABS 1
181/* #undef HAVE_FABSF */
182#define HAVE_FLOOR 1
183/* #undef HAVE_FLOORF */
184#define HAVE_FMOD 1
185/* #undef HAVE_FMODF */
186#define HAVE_LOG 1
187/* #undef HAVE_LOGF */
188#define HAVE_LOG10 1
189/* #undef HAVE_LOG10F */
190#define HAVE_POW 1
191/* #undef HAVE_POWF */
192#define HAVE_SIN 1
193/* #undef HAVE_SINF */
194/* #undef HAVE_SCALBN */
195/* #undef HAVE_SCALBNF */
196#define HAVE_SQRT 1
197/* #undef HAVE_SQRTF */
198#define HAVE_TAN 1
199/* #undef HAVE_TANF */
200/* #undef HAVE_TRUNC */
201/* #undef HAVE_TRUNCF */
202/* #undef HAVE_LROUND */
203/* #undef HAVE_LROUNDF */
204/* #undef HAVE_ROUND */
205/* #undef HAVE_ROUNDF */
206
207#endif /* SDL_config_os2_h_ */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_config_pandora.h b/src/contrib/SDL-2.30.2/include/SDL_config_pandora.h
new file mode 100644
index 0000000..27b858d
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_config_pandora.h
@@ -0,0 +1,141 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 STDC_HEADERS 1
40#define HAVE_ALLOCA_H 1
41#define HAVE_CTYPE_H 1
42#define HAVE_ICONV_H 1
43#define HAVE_INTTYPES_H 1
44#define HAVE_LIMITS_H 1
45#define HAVE_MALLOC_H 1
46#define HAVE_MATH_H 1
47#define HAVE_MEMORY_H 1
48#define HAVE_SIGNAL_H 1
49#define HAVE_STDARG_H 1
50#define HAVE_STDINT_H 1
51#define HAVE_STDIO_H 1
52#define HAVE_STDLIB_H 1
53#define HAVE_STRINGS_H 1
54#define HAVE_STRING_H 1
55#define HAVE_SYS_TYPES_H 1
56
57#define HAVE_DLOPEN 1
58#define HAVE_MALLOC 1
59#define HAVE_CALLOC 1
60#define HAVE_REALLOC 1
61#define HAVE_FREE 1
62#define HAVE_ALLOCA 1
63#define HAVE_GETENV 1
64#define HAVE_SETENV 1
65#define HAVE_PUTENV 1
66#define HAVE_UNSETENV 1
67#define HAVE_QSORT 1
68#define HAVE_BSEARCH 1
69#define HAVE_ABS 1
70#define HAVE_BCOPY 1
71#define HAVE_MEMSET 1
72#define HAVE_MEMCPY 1
73#define HAVE_MEMMOVE 1
74#define HAVE_STRLEN 1
75#define HAVE_STRCHR 1
76#define HAVE_STRRCHR 1
77#define HAVE_STRSTR 1
78#define HAVE_STRTOL 1
79#define HAVE_STRTOUL 1
80#define HAVE_STRTOLL 1
81#define HAVE_STRTOULL 1
82#define HAVE_ATOI 1
83#define HAVE_ATOF 1
84#define HAVE_STRCMP 1
85#define HAVE_STRNCMP 1
86#define HAVE_STRCASECMP 1
87#define HAVE_STRNCASECMP 1
88#define HAVE_VSSCANF 1
89#define HAVE_VSNPRINTF 1
90#define HAVE_M_PI 1
91#define HAVE_CEIL 1
92#define HAVE_COPYSIGN 1
93#define HAVE_COS 1
94#define HAVE_COSF 1
95#define HAVE_EXP 1
96#define HAVE_FABS 1
97#define HAVE_FLOOR 1
98#define HAVE_LOG 1
99#define HAVE_LOG10 1
100#define HAVE_LROUND 1
101#define HAVE_LROUNDF 1
102#define HAVE_ROUND 1
103#define HAVE_ROUNDF 1
104#define HAVE_SCALBN 1
105#define HAVE_SIN 1
106#define HAVE_SINF 1
107#define HAVE_SQRT 1
108#define HAVE_SQRTF 1
109#define HAVE_TAN 1
110#define HAVE_TANF 1
111#define HAVE_TRUNC 1
112#define HAVE_TRUNCF 1
113#define HAVE_SIGACTION 1
114#define HAVE_SETJMP 1
115#define HAVE_NANOSLEEP 1
116
117#define SDL_AUDIO_DRIVER_DUMMY 1
118#define SDL_AUDIO_DRIVER_OSS 1
119
120#define SDL_INPUT_LINUXEV 1
121#define SDL_JOYSTICK_LINUX 1
122#define SDL_JOYSTICK_VIRTUAL 1
123#define SDL_HAPTIC_LINUX 1
124
125#define SDL_SENSOR_DUMMY 1
126
127#define SDL_LOADSO_DLOPEN 1
128
129#define SDL_THREAD_PTHREAD 1
130#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP 1
131
132#define SDL_TIMER_UNIX 1
133#define SDL_FILESYSTEM_UNIX 1
134
135#define SDL_VIDEO_DRIVER_DUMMY 1
136#define SDL_VIDEO_DRIVER_X11 1
137#define SDL_VIDEO_DRIVER_PANDORA 1
138#define SDL_VIDEO_RENDER_OGL_ES 1
139#define SDL_VIDEO_OPENGL_ES 1
140
141#endif /* SDL_config_pandora_h_ */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_config_windows.h b/src/contrib/SDL-2.30.2/include/SDL_config_windows.h
new file mode 100644
index 0000000..dba7808
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_config_windows.h
@@ -0,0 +1,331 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/* sdkddkver.h defines more specific SDK version numbers. This is needed because older versions of the
42 * Windows 10 SDK have broken declarations for the C API for DirectX 12. */
43#if !defined(HAVE_SDKDDKVER_H) && defined(__has_include)
44#if __has_include(<sdkddkver.h>)
45#define HAVE_SDKDDKVER_H 1
46#endif
47#endif
48
49#ifdef HAVE_SDKDDKVER_H
50#include <sdkddkver.h>
51#endif
52
53/* This is a set of defines to configure the SDL features */
54
55#if !defined(HAVE_STDINT_H) && !defined(_STDINT_H_)
56/* Most everything except Visual Studio 2008 and earlier has stdint.h now */
57#if defined(_MSC_VER) && (_MSC_VER < 1600)
58typedef signed __int8 int8_t;
59typedef unsigned __int8 uint8_t;
60typedef signed __int16 int16_t;
61typedef unsigned __int16 uint16_t;
62typedef signed __int32 int32_t;
63typedef unsigned __int32 uint32_t;
64typedef signed __int64 int64_t;
65typedef unsigned __int64 uint64_t;
66#ifndef _UINTPTR_T_DEFINED
67#ifdef _WIN64
68typedef unsigned __int64 uintptr_t;
69#else
70typedef unsigned int uintptr_t;
71#endif
72#define _UINTPTR_T_DEFINED
73#endif
74#else
75#define HAVE_STDINT_H 1
76#endif /* Visual Studio 2008 */
77#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
78
79#ifdef _WIN64
80# define SIZEOF_VOIDP 8
81#else
82# define SIZEOF_VOIDP 4
83#endif
84
85#ifdef __clang__
86# define HAVE_GCC_ATOMICS 1
87#endif
88
89#define HAVE_DDRAW_H 1
90#define HAVE_DINPUT_H 1
91#define HAVE_DSOUND_H 1
92#ifndef __WATCOMC__
93#define HAVE_DXGI_H 1
94#define HAVE_XINPUT_H 1
95#if defined(_WIN32_MAXVER) && _WIN32_MAXVER >= 0x0A00 /* Windows 10 SDK */
96#define HAVE_WINDOWS_GAMING_INPUT_H 1
97#endif
98#if defined(_WIN32_MAXVER) && _WIN32_MAXVER >= 0x0602 /* Windows 8 SDK */
99#define HAVE_D3D11_H 1
100#define HAVE_ROAPI_H 1
101#endif
102#if defined(WDK_NTDDI_VERSION) && WDK_NTDDI_VERSION > 0x0A000008 /* 10.0.19041.0 */
103#define HAVE_D3D12_H 1
104#endif
105#if defined(_WIN32_MAXVER) && _WIN32_MAXVER >= 0x0603 /* Windows 8.1 SDK */
106#define HAVE_SHELLSCALINGAPI_H 1
107#endif
108#define HAVE_MMDEVICEAPI_H 1
109#define HAVE_AUDIOCLIENT_H 1
110#define HAVE_TPCSHRD_H 1
111#define HAVE_SENSORSAPI_H 1
112#endif
113#if (defined(_M_IX86) || defined(_M_X64) || defined(_M_AMD64)) && (defined(_MSC_VER) && _MSC_VER >= 1600)
114#define HAVE_IMMINTRIN_H 1
115#elif defined(__has_include) && (defined(__i386__) || defined(__x86_64))
116# if __has_include(<immintrin.h>)
117# define HAVE_IMMINTRIN_H 1
118# endif
119#endif
120
121/* This is disabled by default to avoid C runtime dependencies and manifest requirements */
122#ifdef HAVE_LIBC
123/* Useful headers */
124#define STDC_HEADERS 1
125#define HAVE_CTYPE_H 1
126#define HAVE_FLOAT_H 1
127#define HAVE_LIMITS_H 1
128#define HAVE_MATH_H 1
129#define HAVE_SIGNAL_H 1
130#define HAVE_STDIO_H 1
131#define HAVE_STRING_H 1
132
133/* C library functions */
134#define HAVE_MALLOC 1
135#define HAVE_CALLOC 1
136#define HAVE_REALLOC 1
137#define HAVE_FREE 1
138#define HAVE_ALLOCA 1
139/* OpenWatcom requires specific calling conventions for qsort and bsearch */
140#ifndef __WATCOMC__
141#define HAVE_QSORT 1
142#define HAVE_BSEARCH 1
143#endif
144#define HAVE_ABS 1
145#define HAVE_MEMSET 1
146#define HAVE_MEMCPY 1
147#define HAVE_MEMMOVE 1
148#define HAVE_MEMCMP 1
149#define HAVE_STRLEN 1
150#define HAVE__STRREV 1
151/* These functions have security warnings, so we won't use them */
152/* #undef HAVE__STRUPR */
153/* #undef HAVE__STRLWR */
154#define HAVE_STRCHR 1
155#define HAVE_STRRCHR 1
156#define HAVE_STRSTR 1
157/* #undef HAVE_STRTOK_R */
158/* These functions have security warnings, so we won't use them */
159/* #undef HAVE__LTOA */
160/* #undef HAVE__ULTOA */
161#define HAVE_STRTOL 1
162#define HAVE_STRTOUL 1
163#define HAVE_STRTOD 1
164#define HAVE_ATOI 1
165#define HAVE_ATOF 1
166#define HAVE_STRCMP 1
167#define HAVE_STRNCMP 1
168#define HAVE__STRICMP 1
169#define HAVE__STRNICMP 1
170#define HAVE__WCSICMP 1
171#define HAVE__WCSNICMP 1
172#define HAVE__WCSDUP 1
173#define HAVE_ACOS 1
174#define HAVE_ASIN 1
175#define HAVE_ATAN 1
176#define HAVE_ATAN2 1
177#define HAVE_CEIL 1
178#define HAVE_COS 1
179#define HAVE_EXP 1
180#define HAVE_FABS 1
181#define HAVE_FLOOR 1
182#define HAVE_FMOD 1
183#define HAVE_LOG 1
184#define HAVE_LOG10 1
185#define HAVE_POW 1
186#define HAVE_SIN 1
187#define HAVE_SQRT 1
188#define HAVE_TAN 1
189#ifndef __WATCOMC__
190#define HAVE_ACOSF 1
191#define HAVE_ASINF 1
192#define HAVE_ATANF 1
193#define HAVE_ATAN2F 1
194#define HAVE_CEILF 1
195#define HAVE__COPYSIGN 1
196#define HAVE_COSF 1
197#define HAVE_EXPF 1
198#define HAVE_FABSF 1
199#define HAVE_FLOORF 1
200#define HAVE_FMODF 1
201#define HAVE_LOGF 1
202#define HAVE_LOG10F 1
203#define HAVE_POWF 1
204#define HAVE_SINF 1
205#define HAVE_SQRTF 1
206#define HAVE_TANF 1
207#endif
208#if defined(_MSC_VER)
209/* These functions were added with the VC++ 2013 C runtime library */
210#if _MSC_VER >= 1800
211#define HAVE_STRTOLL 1
212#define HAVE_STRTOULL 1
213#define HAVE_VSSCANF 1
214#define HAVE_LROUND 1
215#define HAVE_LROUNDF 1
216#define HAVE_ROUND 1
217#define HAVE_ROUNDF 1
218#define HAVE_SCALBN 1
219#define HAVE_SCALBNF 1
220#define HAVE_TRUNC 1
221#define HAVE_TRUNCF 1
222#endif
223/* This function is available with at least the VC++ 2008 C runtime library */
224#if _MSC_VER >= 1400
225#define HAVE__FSEEKI64 1
226#endif
227#ifdef _USE_MATH_DEFINES
228#define HAVE_M_PI 1
229#endif
230#elif defined(__WATCOMC__)
231#define HAVE__FSEEKI64 1
232#define HAVE_STRTOLL 1
233#define HAVE_STRTOULL 1
234#define HAVE_VSSCANF 1
235#define HAVE_ROUND 1
236#define HAVE_SCALBN 1
237#define HAVE_TRUNC 1
238#else
239#define HAVE_M_PI 1
240#endif
241#else
242#define HAVE_STDARG_H 1
243#define HAVE_STDDEF_H 1
244#endif
245
246/* Enable various audio drivers */
247#if defined(HAVE_MMDEVICEAPI_H) && defined(HAVE_AUDIOCLIENT_H)
248#define SDL_AUDIO_DRIVER_WASAPI 1
249#endif
250#define SDL_AUDIO_DRIVER_DSOUND 1
251#define SDL_AUDIO_DRIVER_WINMM 1
252#define SDL_AUDIO_DRIVER_DISK 1
253#define SDL_AUDIO_DRIVER_DUMMY 1
254
255/* Enable various input drivers */
256#define SDL_JOYSTICK_DINPUT 1
257#define SDL_JOYSTICK_HIDAPI 1
258#ifndef __WINRT__
259#define SDL_JOYSTICK_RAWINPUT 1
260#endif
261#define SDL_JOYSTICK_VIRTUAL 1
262#ifdef HAVE_WINDOWS_GAMING_INPUT_H
263#define SDL_JOYSTICK_WGI 1
264#endif
265#define SDL_JOYSTICK_XINPUT 1
266#define SDL_HAPTIC_DINPUT 1
267#define SDL_HAPTIC_XINPUT 1
268
269/* Enable the sensor driver */
270#ifdef HAVE_SENSORSAPI_H
271#define SDL_SENSOR_WINDOWS 1
272#else
273#define SDL_SENSOR_DUMMY 1
274#endif
275
276/* Enable various shared object loading systems */
277#define SDL_LOADSO_WINDOWS 1
278
279/* Enable various threading systems */
280#define SDL_THREAD_GENERIC_COND_SUFFIX 1
281#define SDL_THREAD_WINDOWS 1
282
283/* Enable various timer systems */
284#define SDL_TIMER_WINDOWS 1
285
286/* Enable various video drivers */
287#define SDL_VIDEO_DRIVER_DUMMY 1
288#define SDL_VIDEO_DRIVER_WINDOWS 1
289
290#ifndef SDL_VIDEO_RENDER_D3D
291#define SDL_VIDEO_RENDER_D3D 1
292#endif
293#if !defined(SDL_VIDEO_RENDER_D3D11) && defined(HAVE_D3D11_H)
294#define SDL_VIDEO_RENDER_D3D11 1
295#endif
296#if !defined(SDL_VIDEO_RENDER_D3D12) && defined(HAVE_D3D12_H)
297#define SDL_VIDEO_RENDER_D3D12 1
298#endif
299
300/* Enable OpenGL support */
301#ifndef SDL_VIDEO_OPENGL
302#define SDL_VIDEO_OPENGL 1
303#endif
304#ifndef SDL_VIDEO_OPENGL_WGL
305#define SDL_VIDEO_OPENGL_WGL 1
306#endif
307#ifndef SDL_VIDEO_RENDER_OGL
308#define SDL_VIDEO_RENDER_OGL 1
309#endif
310#ifndef SDL_VIDEO_RENDER_OGL_ES2
311#define SDL_VIDEO_RENDER_OGL_ES2 1
312#endif
313#ifndef SDL_VIDEO_OPENGL_ES2
314#define SDL_VIDEO_OPENGL_ES2 1
315#endif
316#ifndef SDL_VIDEO_OPENGL_EGL
317#define SDL_VIDEO_OPENGL_EGL 1
318#endif
319
320/* Enable Vulkan support */
321#define SDL_VIDEO_VULKAN 1
322
323/* Enable system power support */
324#define SDL_POWER_WINDOWS 1
325
326/* Enable filesystem support */
327#define SDL_FILESYSTEM_WINDOWS 1
328
329#endif /* SDL_config_windows_h_ */
330
331/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_config_wingdk.h b/src/contrib/SDL-2.30.2/include/SDL_config_wingdk.h
new file mode 100644
index 0000000..c2a63b5
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_config_wingdk.h
@@ -0,0 +1,253 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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_wingdk_h_
23#define SDL_config_wingdk_h_
24#define SDL_config_h_
25
26#include "SDL_platform.h"
27
28/* Windows GDK does not need Windows SDK version checks because it requires
29 * a recent version of the Windows 10 SDK. */
30
31/* GDK only supports 64-bit */
32# define SIZEOF_VOIDP 8
33
34#ifdef __clang__
35# define HAVE_GCC_ATOMICS 1
36#endif
37
38#define HAVE_DDRAW_H 1
39#define HAVE_DINPUT_H 1
40#define HAVE_DSOUND_H 1
41/* No SDK version checks needed for these because the SDK has to be new. */
42#define HAVE_DXGI_H 1
43#define HAVE_XINPUT_H 1
44#define HAVE_WINDOWS_GAMING_INPUT_H 1
45#define HAVE_D3D11_H 1
46#define HAVE_ROAPI_H 1
47#define HAVE_D3D12_H 1
48#define HAVE_SHELLSCALINGAPI_H 1
49#define HAVE_MMDEVICEAPI_H 1
50#define HAVE_AUDIOCLIENT_H 1
51#define HAVE_TPCSHRD_H 1
52#define HAVE_SENSORSAPI_H 1
53#if (defined(_M_IX86) || defined(_M_X64) || defined(_M_AMD64)) && (defined(_MSC_VER) && _MSC_VER >= 1600)
54#define HAVE_IMMINTRIN_H 1
55#elif defined(__has_include) && (defined(__i386__) || defined(__x86_64))
56# if __has_include(<immintrin.h>)
57# define HAVE_IMMINTRIN_H 1
58# endif
59#endif
60
61/* This is disabled by default to avoid C runtime dependencies and manifest requirements */
62#ifdef HAVE_LIBC
63/* Useful headers */
64#define STDC_HEADERS 1
65#define HAVE_CTYPE_H 1
66#define HAVE_FLOAT_H 1
67#define HAVE_LIMITS_H 1
68#define HAVE_MATH_H 1
69#define HAVE_SIGNAL_H 1
70#define HAVE_STDINT_H 1
71#define HAVE_STDIO_H 1
72#define HAVE_STRING_H 1
73
74/* C library functions */
75#define HAVE_MALLOC 1
76#define HAVE_CALLOC 1
77#define HAVE_REALLOC 1
78#define HAVE_FREE 1
79#define HAVE_ALLOCA 1
80#define HAVE_QSORT 1
81#define HAVE_BSEARCH 1
82#define HAVE_ABS 1
83#define HAVE_MEMSET 1
84#define HAVE_MEMCPY 1
85#define HAVE_MEMMOVE 1
86#define HAVE_MEMCMP 1
87#define HAVE_STRLEN 1
88#define HAVE__STRREV 1
89/* These functions have security warnings, so we won't use them */
90/* #undef HAVE__STRUPR */
91/* #undef HAVE__STRLWR */
92#define HAVE_STRCHR 1
93#define HAVE_STRRCHR 1
94#define HAVE_STRSTR 1
95/* #undef HAVE_STRTOK_R */
96/* These functions have security warnings, so we won't use them */
97/* #undef HAVE__LTOA */
98/* #undef HAVE__ULTOA */
99#define HAVE_STRTOL 1
100#define HAVE_STRTOUL 1
101#define HAVE_STRTOD 1
102#define HAVE_ATOI 1
103#define HAVE_ATOF 1
104#define HAVE_STRCMP 1
105#define HAVE_STRNCMP 1
106#define HAVE__STRICMP 1
107#define HAVE__STRNICMP 1
108#define HAVE__WCSICMP 1
109#define HAVE__WCSNICMP 1
110#define HAVE__WCSDUP 1
111#define HAVE_ACOS 1
112#define HAVE_ASIN 1
113#define HAVE_ATAN 1
114#define HAVE_ATAN2 1
115#define HAVE_CEIL 1
116#define HAVE_COS 1
117#define HAVE_EXP 1
118#define HAVE_FABS 1
119#define HAVE_FLOOR 1
120#define HAVE_FMOD 1
121#define HAVE_LOG 1
122#define HAVE_LOG10 1
123#define HAVE_POW 1
124#define HAVE_SIN 1
125#define HAVE_SQRT 1
126#define HAVE_TAN 1
127#define HAVE_ACOSF 1
128#define HAVE_ASINF 1
129#define HAVE_ATANF 1
130#define HAVE_ATAN2F 1
131#define HAVE_CEILF 1
132#define HAVE__COPYSIGN 1
133#define HAVE_COSF 1
134#define HAVE_EXPF 1
135#define HAVE_FABSF 1
136#define HAVE_FLOORF 1
137#define HAVE_FMODF 1
138#define HAVE_LOGF 1
139#define HAVE_LOG10F 1
140#define HAVE_POWF 1
141#define HAVE_SINF 1
142#define HAVE_SQRTF 1
143#define HAVE_TANF 1
144#if defined(_MSC_VER)
145/* These functions were added with the VC++ 2013 C runtime library */
146#define HAVE_STRTOLL 1
147#define HAVE_STRTOULL 1
148#define HAVE_VSSCANF 1
149#define HAVE_LROUND 1
150#define HAVE_LROUNDF 1
151#define HAVE_ROUND 1
152#define HAVE_ROUNDF 1
153#define HAVE_SCALBN 1
154#define HAVE_SCALBNF 1
155#define HAVE_TRUNC 1
156#define HAVE_TRUNCF 1
157#define HAVE__FSEEKI64 1
158#ifdef _USE_MATH_DEFINES
159#define HAVE_M_PI 1
160#endif
161#else
162#define HAVE_M_PI 1
163#endif
164#else
165#define HAVE_STDARG_H 1
166#define HAVE_STDDEF_H 1
167#define HAVE_STDINT_H 1
168#endif
169
170/* Enable various audio drivers */
171#if defined(HAVE_MMDEVICEAPI_H) && defined(HAVE_AUDIOCLIENT_H)
172#define SDL_AUDIO_DRIVER_WASAPI 1
173#endif
174#define SDL_AUDIO_DRIVER_DSOUND 1
175#define SDL_AUDIO_DRIVER_WINMM 1
176#define SDL_AUDIO_DRIVER_DISK 1
177#define SDL_AUDIO_DRIVER_DUMMY 1
178
179/* Enable various input drivers */
180#define SDL_JOYSTICK_DINPUT 1
181#define SDL_JOYSTICK_HIDAPI 1
182#define SDL_JOYSTICK_RAWINPUT 1
183#define SDL_JOYSTICK_VIRTUAL 1
184#ifdef HAVE_WINDOWS_GAMING_INPUT_H
185#define SDL_JOYSTICK_WGI 1
186#endif
187#define SDL_JOYSTICK_XINPUT 1
188#define SDL_HAPTIC_DINPUT 1
189#define SDL_HAPTIC_XINPUT 1
190
191/* Enable the sensor driver */
192#ifdef HAVE_SENSORSAPI_H
193#define SDL_SENSOR_WINDOWS 1
194#else
195#define SDL_SENSOR_DUMMY 1
196#endif
197
198/* Enable various shared object loading systems */
199#define SDL_LOADSO_WINDOWS 1
200
201/* Enable various threading systems */
202#define SDL_THREAD_GENERIC_COND_SUFFIX 1
203#define SDL_THREAD_WINDOWS 1
204
205/* Enable various timer systems */
206#define SDL_TIMER_WINDOWS 1
207
208/* Enable various video drivers */
209#define SDL_VIDEO_DRIVER_DUMMY 1
210#define SDL_VIDEO_DRIVER_WINDOWS 1
211
212#ifndef SDL_VIDEO_RENDER_D3D
213#define SDL_VIDEO_RENDER_D3D 1
214#endif
215#if !defined(SDL_VIDEO_RENDER_D3D11) && defined(HAVE_D3D11_H)
216#define SDL_VIDEO_RENDER_D3D11 1
217#endif
218#if !defined(SDL_VIDEO_RENDER_D3D12) && defined(HAVE_D3D12_H)
219#define SDL_VIDEO_RENDER_D3D12 1
220#endif
221
222/* Enable OpenGL support */
223#ifndef SDL_VIDEO_OPENGL
224#define SDL_VIDEO_OPENGL 1
225#endif
226#ifndef SDL_VIDEO_OPENGL_WGL
227#define SDL_VIDEO_OPENGL_WGL 1
228#endif
229#ifndef SDL_VIDEO_RENDER_OGL
230#define SDL_VIDEO_RENDER_OGL 1
231#endif
232#ifndef SDL_VIDEO_RENDER_OGL_ES2
233#define SDL_VIDEO_RENDER_OGL_ES2 1
234#endif
235#ifndef SDL_VIDEO_OPENGL_ES2
236#define SDL_VIDEO_OPENGL_ES2 1
237#endif
238#ifndef SDL_VIDEO_OPENGL_EGL
239#define SDL_VIDEO_OPENGL_EGL 1
240#endif
241
242/* Enable Vulkan support */
243#define SDL_VIDEO_VULKAN 1
244
245/* Enable system power support */
246#define SDL_POWER_WINDOWS 1
247
248/* Enable filesystem support */
249#define SDL_FILESYSTEM_WINDOWS 1
250
251#endif /* SDL_config_wingdk_h_ */
252
253/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_config_winrt.h b/src/contrib/SDL-2.30.2/include/SDL_config_winrt.h
new file mode 100644
index 0000000..3a11456
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_config_winrt.h
@@ -0,0 +1,220 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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#ifdef _WIN64
46# define SIZEOF_VOIDP 8
47#else
48# define SIZEOF_VOIDP 4
49#endif
50
51#ifdef __clang__
52# define HAVE_GCC_ATOMICS 1
53#endif
54
55/* Useful headers */
56#define HAVE_DXGI_H 1
57#if !SDL_WINAPI_FAMILY_PHONE
58#define HAVE_XINPUT_H 1
59#endif
60
61#define HAVE_MMDEVICEAPI_H 1
62#define HAVE_AUDIOCLIENT_H 1
63#define HAVE_TPCSHRD_H 1
64
65#define HAVE_LIBC 1
66#define STDC_HEADERS 1
67#define HAVE_CTYPE_H 1
68#define HAVE_FLOAT_H 1
69#define HAVE_LIMITS_H 1
70#define HAVE_MATH_H 1
71#define HAVE_SIGNAL_H 1
72#define HAVE_STDINT_H 1
73#define HAVE_STDIO_H 1
74#define HAVE_STRING_H 1
75
76/* C library functions */
77#define HAVE_MALLOC 1
78#define HAVE_CALLOC 1
79#define HAVE_REALLOC 1
80#define HAVE_FREE 1
81#define HAVE_ALLOCA 1
82#define HAVE_QSORT 1
83#define HAVE_BSEARCH 1
84#define HAVE_ABS 1
85#define HAVE_MEMSET 1
86#define HAVE_MEMCPY 1
87#define HAVE_MEMMOVE 1
88#define HAVE_MEMCMP 1
89#define HAVE_STRLEN 1
90#define HAVE__STRREV 1
91#define HAVE__STRUPR 1
92#define HAVE_STRCHR 1
93#define HAVE_STRRCHR 1
94#define HAVE_STRSTR 1
95#define HAVE_STRTOL 1
96#define HAVE_STRTOUL 1
97/* #undef HAVE_STRTOLL */
98/* #undef HAVE_STRTOULL */
99#define HAVE_STRTOD 1
100#define HAVE_ATOI 1
101#define HAVE_ATOF 1
102#define HAVE_STRCMP 1
103#define HAVE_STRNCMP 1
104#define HAVE__STRICMP 1
105#define HAVE__STRNICMP 1
106#define HAVE_VSNPRINTF 1
107/* TODO, WinRT: consider using ??_s versions of the following */
108/* #undef HAVE__STRLWR */
109/* #undef HAVE_ITOA */
110/* #undef HAVE__LTOA */
111/* #undef HAVE__ULTOA */
112/* #undef HAVE_SSCANF */
113#define HAVE_M_PI 1
114#define HAVE_ACOS 1
115#define HAVE_ACOSF 1
116#define HAVE_ASIN 1
117#define HAVE_ASINF 1
118#define HAVE_ATAN 1
119#define HAVE_ATANF 1
120#define HAVE_ATAN2 1
121#define HAVE_ATAN2F 1
122#define HAVE_CEIL 1
123#define HAVE_CEILF 1
124#define HAVE__COPYSIGN 1
125#define HAVE_COS 1
126#define HAVE_COSF 1
127#define HAVE_EXP 1
128#define HAVE_EXPF 1
129#define HAVE_FABS 1
130#define HAVE_FABSF 1
131#define HAVE_FLOOR 1
132#define HAVE_FLOORF 1
133#define HAVE_FMOD 1
134#define HAVE_FMODF 1
135#define HAVE_LOG 1
136#define HAVE_LOGF 1
137#define HAVE_LOG10 1
138#define HAVE_LOG10F 1
139#define HAVE_LROUND 1
140#define HAVE_LROUNDF 1
141#define HAVE_POW 1
142#define HAVE_POWF 1
143#define HAVE_ROUND 1
144#define HAVE_ROUNDF 1
145#define HAVE__SCALB 1
146#define HAVE_SIN 1
147#define HAVE_SINF 1
148#define HAVE_SQRT 1
149#define HAVE_SQRTF 1
150#define HAVE_TAN 1
151#define HAVE_TANF 1
152#define HAVE_TRUNC 1
153#define HAVE_TRUNCF 1
154#define HAVE__FSEEKI64 1
155
156#define HAVE_ROAPI_H 1
157
158/* Enable various audio drivers */
159#define SDL_AUDIO_DRIVER_WASAPI 1
160#define SDL_AUDIO_DRIVER_DISK 1
161#define SDL_AUDIO_DRIVER_DUMMY 1
162
163/* Enable various input drivers */
164#if SDL_WINAPI_FAMILY_PHONE
165#define SDL_JOYSTICK_DISABLED 1
166#define SDL_HAPTIC_DISABLED 1
167#else
168#define SDL_JOYSTICK_VIRTUAL 1
169#if (NTDDI_VERSION >= NTDDI_WIN10)
170#define SDL_JOYSTICK_WGI 1
171#define SDL_HAPTIC_DISABLED 1
172#else
173#define SDL_JOYSTICK_XINPUT 1
174#define SDL_HAPTIC_XINPUT 1
175#endif /* WIN10 */
176#endif
177
178/* WinRT doesn't have HIDAPI available */
179#define SDL_HIDAPI_DISABLED 1
180
181/* Enable the dummy sensor driver */
182#define SDL_SENSOR_DUMMY 1
183
184/* Enable various shared object loading systems */
185#define SDL_LOADSO_WINDOWS 1
186
187/* Enable various threading systems */
188#if (NTDDI_VERSION >= NTDDI_WINBLUE)
189#define SDL_THREAD_GENERIC_COND_SUFFIX 1
190#define SDL_THREAD_WINDOWS 1
191#else
192/* WinRT on Windows 8.0 and Windows Phone 8.0 don't support CreateThread() */
193#define SDL_THREAD_STDCPP 1
194#endif
195
196/* Enable various timer systems */
197#define SDL_TIMER_WINDOWS 1
198
199/* Enable various video drivers */
200#define SDL_VIDEO_DRIVER_WINRT 1
201#define SDL_VIDEO_DRIVER_DUMMY 1
202
203/* Enable OpenGL ES 2.0 (via a modified ANGLE library) */
204#define SDL_VIDEO_OPENGL_ES2 1
205#define SDL_VIDEO_OPENGL_EGL 1
206
207/* Enable appropriate renderer(s) */
208#define SDL_VIDEO_RENDER_D3D11 1
209
210/* Disable D3D12 as it's not implemented for WinRT */
211/* #undef SDL_VIDEO_RENDER_D3D12 */
212
213#ifdef SDL_VIDEO_OPENGL_ES2
214#define SDL_VIDEO_RENDER_OGL_ES2 1
215#endif
216
217/* Enable system power support */
218#define SDL_POWER_WINRT 1
219
220#endif /* SDL_config_winrt_h_ */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_config_xbox.h b/src/contrib/SDL-2.30.2/include/SDL_config_xbox.h
new file mode 100644
index 0000000..a2ea8cb
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_config_xbox.h
@@ -0,0 +1,240 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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_wingdk_h_
23#define SDL_config_wingdk_h_
24#define SDL_config_h_
25
26#include "SDL_platform.h"
27
28/* Windows GDK does not need Windows SDK version checks because it requires
29 * a recent version of the Windows 10 SDK. */
30
31/* GDK only supports 64-bit */
32# define SIZEOF_VOIDP 8
33
34#ifdef __clang__
35# define HAVE_GCC_ATOMICS 1
36#endif
37
38/*#define HAVE_DDRAW_H 1*/
39/*#define HAVE_DINPUT_H 1*/
40/*#define HAVE_DSOUND_H 1*/
41/* No SDK version checks needed for these because the SDK has to be new. */
42/* #define HAVE_DXGI_H 1 */
43#define HAVE_XINPUT_H 1
44/*#define HAVE_WINDOWS_GAMING_INPUT_H 1*/
45/*#define HAVE_D3D11_H 1*/
46/*#define HAVE_ROAPI_H 1*/
47#define HAVE_D3D12_H 1
48/*#define HAVE_SHELLSCALINGAPI_H 1*/
49#define HAVE_MMDEVICEAPI_H 1
50#define HAVE_AUDIOCLIENT_H 1
51/*#define HAVE_TPCSHRD_H 1*/
52/*#define HAVE_SENSORSAPI_H 1*/
53#if (defined(_M_IX86) || defined(_M_X64) || defined(_M_AMD64)) && (defined(_MSC_VER) && _MSC_VER >= 1600)
54#define HAVE_IMMINTRIN_H 1
55#elif defined(__has_include) && (defined(__i386__) || defined(__x86_64))
56# if __has_include(<immintrin.h>)
57# define HAVE_IMMINTRIN_H 1
58# endif
59#endif
60
61/* This is disabled by default to avoid C runtime dependencies and manifest requirements */
62#ifdef HAVE_LIBC
63/* Useful headers */
64#define STDC_HEADERS 1
65#define HAVE_CTYPE_H 1
66#define HAVE_FLOAT_H 1
67#define HAVE_LIMITS_H 1
68#define HAVE_MATH_H 1
69#define HAVE_SIGNAL_H 1
70#define HAVE_STDINT_H 1
71#define HAVE_STDIO_H 1
72#define HAVE_STRING_H 1
73
74/* C library functions */
75#define HAVE_MALLOC 1
76#define HAVE_CALLOC 1
77#define HAVE_REALLOC 1
78#define HAVE_FREE 1
79#define HAVE_ALLOCA 1
80#define HAVE_QSORT 1
81#define HAVE_BSEARCH 1
82#define HAVE_ABS 1
83#define HAVE_MEMSET 1
84#define HAVE_MEMCPY 1
85#define HAVE_MEMMOVE 1
86#define HAVE_MEMCMP 1
87#define HAVE_STRLEN 1
88#define HAVE__STRREV 1
89/* These functions have security warnings, so we won't use them */
90/* #undef HAVE__STRUPR */
91/* #undef HAVE__STRLWR */
92#define HAVE_STRCHR 1
93#define HAVE_STRRCHR 1
94#define HAVE_STRSTR 1
95/* #undef HAVE_STRTOK_R */
96/* These functions have security warnings, so we won't use them */
97/* #undef HAVE__LTOA */
98/* #undef HAVE__ULTOA */
99#define HAVE_STRTOL 1
100#define HAVE_STRTOUL 1
101#define HAVE_STRTOD 1
102#define HAVE_ATOI 1
103#define HAVE_ATOF 1
104#define HAVE_STRCMP 1
105#define HAVE_STRNCMP 1
106#define HAVE__STRICMP 1
107#define HAVE__STRNICMP 1
108#define HAVE__WCSICMP 1
109#define HAVE__WCSNICMP 1
110#define HAVE__WCSDUP 1
111#define HAVE_ACOS 1
112#define HAVE_ASIN 1
113#define HAVE_ATAN 1
114#define HAVE_ATAN2 1
115#define HAVE_CEIL 1
116#define HAVE_COS 1
117#define HAVE_EXP 1
118#define HAVE_FABS 1
119#define HAVE_FLOOR 1
120#define HAVE_FMOD 1
121#define HAVE_LOG 1
122#define HAVE_LOG10 1
123#define HAVE_POW 1
124#define HAVE_SIN 1
125#define HAVE_SQRT 1
126#define HAVE_TAN 1
127#define HAVE_ACOSF 1
128#define HAVE_ASINF 1
129#define HAVE_ATANF 1
130#define HAVE_ATAN2F 1
131#define HAVE_CEILF 1
132#define HAVE__COPYSIGN 1
133#define HAVE_COSF 1
134#define HAVE_EXPF 1
135#define HAVE_FABSF 1
136#define HAVE_FLOORF 1
137#define HAVE_FMODF 1
138#define HAVE_LOGF 1
139#define HAVE_LOG10F 1
140#define HAVE_POWF 1
141#define HAVE_SINF 1
142#define HAVE_SQRTF 1
143#define HAVE_TANF 1
144#if defined(_MSC_VER)
145/* These functions were added with the VC++ 2013 C runtime library */
146#define HAVE_STRTOLL 1
147#define HAVE_STRTOULL 1
148#define HAVE_VSSCANF 1
149#define HAVE_LROUND 1
150#define HAVE_LROUNDF 1
151#define HAVE_ROUND 1
152#define HAVE_ROUNDF 1
153#define HAVE_SCALBN 1
154#define HAVE_SCALBNF 1
155#define HAVE_TRUNC 1
156#define HAVE_TRUNCF 1
157#define HAVE__FSEEKI64 1
158#ifdef _USE_MATH_DEFINES
159#define HAVE_M_PI 1
160#endif
161#else
162#define HAVE_M_PI 1
163#endif
164#else
165#define HAVE_STDARG_H 1
166#define HAVE_STDDEF_H 1
167#define HAVE_STDINT_H 1
168#endif
169
170/* Enable various audio drivers */
171#if defined(HAVE_MMDEVICEAPI_H) && defined(HAVE_AUDIOCLIENT_H)
172#define SDL_AUDIO_DRIVER_WASAPI 1
173#endif
174/*#define SDL_AUDIO_DRIVER_DSOUND 1*/
175/*#define SDL_AUDIO_DRIVER_WINMM 1*/
176#define SDL_AUDIO_DRIVER_DISK 1
177#define SDL_AUDIO_DRIVER_DUMMY 1
178
179/* Enable various input drivers */
180/*#define SDL_JOYSTICK_DINPUT 1*/
181/*#define SDL_JOYSTICK_HIDAPI 1*/
182/*#define SDL_JOYSTICK_RAWINPUT 1*/
183#define SDL_JOYSTICK_VIRTUAL 1
184#ifdef HAVE_WINDOWS_GAMING_INPUT_H
185#define SDL_JOYSTICK_WGI 1
186#endif
187#define SDL_JOYSTICK_XINPUT 1
188/*#define SDL_HAPTIC_DINPUT 1*/
189#define SDL_HAPTIC_XINPUT 1
190
191/* Enable the sensor driver */
192#ifdef HAVE_SENSORSAPI_H
193#define SDL_SENSOR_WINDOWS 1
194#else
195#define SDL_SENSOR_DUMMY 1
196#endif
197
198/* Enable various shared object loading systems */
199#define SDL_LOADSO_WINDOWS 1
200
201/* Enable various threading systems */
202#define SDL_THREAD_GENERIC_COND_SUFFIX 1
203#define SDL_THREAD_WINDOWS 1
204
205/* Enable various timer systems */
206#define SDL_TIMER_WINDOWS 1
207
208/* Enable various video drivers */
209#define SDL_VIDEO_DRIVER_DUMMY 1
210#define SDL_VIDEO_DRIVER_WINDOWS 1
211
212#if !defined(SDL_VIDEO_RENDER_D3D12) && defined(HAVE_D3D12_H)
213#define SDL_VIDEO_RENDER_D3D12 1
214#endif
215
216/* Enable OpenGL support */
217#ifndef SDL_VIDEO_OPENGL
218#define SDL_VIDEO_OPENGL 1
219#endif
220#ifndef SDL_VIDEO_OPENGL_WGL
221#define SDL_VIDEO_OPENGL_WGL 1
222#endif
223#ifndef SDL_VIDEO_RENDER_OGL
224#define SDL_VIDEO_RENDER_OGL 1
225#endif
226
227/* Enable system power support */
228/*#define SDL_POWER_WINDOWS 1*/
229#define SDL_POWER_HARDWIRED 1
230
231/* Enable filesystem support */
232/* #define SDL_FILESYSTEM_WINDOWS 1*/
233#define SDL_FILESYSTEM_XBOX 1
234
235/* Disable IME as not supported yet (TODO: Xbox IME?) */
236#define SDL_DISABLE_WINDOWS_IME 1
237
238#endif /* SDL_config_wingdk_h_ */
239
240/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_copying.h b/src/contrib/SDL-2.30.2/include/SDL_copying.h
new file mode 100644
index 0000000..da90893
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_copying.h
@@ -0,0 +1,20 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_cpuinfo.h b/src/contrib/SDL-2.30.2/include/SDL_cpuinfo.h
new file mode 100644
index 0000000..2a9dd38
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_cpuinfo.h
@@ -0,0 +1,594 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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__) || defined(__GDK__)
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# define __ARM_ARCH 8
94# endif
95# endif
96#endif
97#endif /* compiler version */
98
99#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H)
100#include <mm3dnow.h>
101#endif
102#if defined(__loongarch_sx) && !defined(SDL_DISABLE_LSX_H)
103#include <lsxintrin.h>
104#define __LSX__
105#endif
106#if defined(__loongarch_asx) && !defined(SDL_DISABLE_LASX_H)
107#include <lasxintrin.h>
108#define __LASX__
109#endif
110#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H)
111#include <immintrin.h>
112#else
113#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H)
114#include <mmintrin.h>
115#endif
116#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H)
117#include <xmmintrin.h>
118#endif
119#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H)
120#include <emmintrin.h>
121#endif
122#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H)
123#include <pmmintrin.h>
124#endif
125#endif /* HAVE_IMMINTRIN_H */
126
127#include "begin_code.h"
128/* Set up for C function definitions, even when using C++ */
129#ifdef __cplusplus
130extern "C" {
131#endif
132
133/* This is a guess for the cacheline size used for padding.
134 * Most x86 processors have a 64 byte cache line.
135 * The 64-bit PowerPC processors have a 128 byte cache line.
136 * We'll use the larger value to be generally safe.
137 */
138#define SDL_CACHELINE_SIZE 128
139
140/**
141 * Get the number of CPU cores available.
142 *
143 * \returns the total number of logical CPU cores. On CPUs that include
144 * technologies such as hyperthreading, the number of logical cores
145 * may be more than the number of physical cores.
146 *
147 * \since This function is available since SDL 2.0.0.
148 */
149extern DECLSPEC int SDLCALL SDL_GetCPUCount(void);
150
151/**
152 * Determine the L1 cache line size of the CPU.
153 *
154 * This is useful for determining multi-threaded structure padding or SIMD
155 * prefetch sizes.
156 *
157 * \returns the L1 cache line size of the CPU, in bytes.
158 *
159 * \since This function is available since SDL 2.0.0.
160 */
161extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void);
162
163/**
164 * Determine whether the CPU has the RDTSC instruction.
165 *
166 * This always returns false on CPUs that aren't using Intel instruction sets.
167 *
168 * \returns SDL_TRUE if the CPU has the RDTSC instruction or SDL_FALSE if not.
169 *
170 * \since This function is available since SDL 2.0.0.
171 *
172 * \sa SDL_Has3DNow
173 * \sa SDL_HasAltiVec
174 * \sa SDL_HasAVX
175 * \sa SDL_HasAVX2
176 * \sa SDL_HasMMX
177 * \sa SDL_HasSSE
178 * \sa SDL_HasSSE2
179 * \sa SDL_HasSSE3
180 * \sa SDL_HasSSE41
181 * \sa SDL_HasSSE42
182 */
183extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void);
184
185/**
186 * Determine whether the CPU has AltiVec features.
187 *
188 * This always returns false on CPUs that aren't using PowerPC instruction
189 * sets.
190 *
191 * \returns SDL_TRUE if the CPU has AltiVec features or SDL_FALSE if not.
192 *
193 * \since This function is available since SDL 2.0.0.
194 *
195 * \sa SDL_Has3DNow
196 * \sa SDL_HasAVX
197 * \sa SDL_HasAVX2
198 * \sa SDL_HasMMX
199 * \sa SDL_HasRDTSC
200 * \sa SDL_HasSSE
201 * \sa SDL_HasSSE2
202 * \sa SDL_HasSSE3
203 * \sa SDL_HasSSE41
204 * \sa SDL_HasSSE42
205 */
206extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void);
207
208/**
209 * Determine whether the CPU has MMX features.
210 *
211 * This always returns false on CPUs that aren't using Intel instruction sets.
212 *
213 * \returns SDL_TRUE if the CPU has MMX features or SDL_FALSE if not.
214 *
215 * \since This function is available since SDL 2.0.0.
216 *
217 * \sa SDL_Has3DNow
218 * \sa SDL_HasAltiVec
219 * \sa SDL_HasAVX
220 * \sa SDL_HasAVX2
221 * \sa SDL_HasRDTSC
222 * \sa SDL_HasSSE
223 * \sa SDL_HasSSE2
224 * \sa SDL_HasSSE3
225 * \sa SDL_HasSSE41
226 * \sa SDL_HasSSE42
227 */
228extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void);
229
230/**
231 * Determine whether the CPU has 3DNow! features.
232 *
233 * This always returns false on CPUs that aren't using AMD instruction sets.
234 *
235 * \returns SDL_TRUE if the CPU has 3DNow! features or SDL_FALSE if not.
236 *
237 * \since This function is available since SDL 2.0.0.
238 *
239 * \sa SDL_HasAltiVec
240 * \sa SDL_HasAVX
241 * \sa SDL_HasAVX2
242 * \sa SDL_HasMMX
243 * \sa SDL_HasRDTSC
244 * \sa SDL_HasSSE
245 * \sa SDL_HasSSE2
246 * \sa SDL_HasSSE3
247 * \sa SDL_HasSSE41
248 * \sa SDL_HasSSE42
249 */
250extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void);
251
252/**
253 * Determine whether the CPU has SSE features.
254 *
255 * This always returns false on CPUs that aren't using Intel instruction sets.
256 *
257 * \returns SDL_TRUE if the CPU has SSE features or SDL_FALSE if not.
258 *
259 * \since This function is available since SDL 2.0.0.
260 *
261 * \sa SDL_Has3DNow
262 * \sa SDL_HasAltiVec
263 * \sa SDL_HasAVX
264 * \sa SDL_HasAVX2
265 * \sa SDL_HasMMX
266 * \sa SDL_HasRDTSC
267 * \sa SDL_HasSSE2
268 * \sa SDL_HasSSE3
269 * \sa SDL_HasSSE41
270 * \sa SDL_HasSSE42
271 */
272extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void);
273
274/**
275 * Determine whether the CPU has SSE2 features.
276 *
277 * This always returns false on CPUs that aren't using Intel instruction sets.
278 *
279 * \returns SDL_TRUE if the CPU has SSE2 features or SDL_FALSE if not.
280 *
281 * \since This function is available since SDL 2.0.0.
282 *
283 * \sa SDL_Has3DNow
284 * \sa SDL_HasAltiVec
285 * \sa SDL_HasAVX
286 * \sa SDL_HasAVX2
287 * \sa SDL_HasMMX
288 * \sa SDL_HasRDTSC
289 * \sa SDL_HasSSE
290 * \sa SDL_HasSSE3
291 * \sa SDL_HasSSE41
292 * \sa SDL_HasSSE42
293 */
294extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void);
295
296/**
297 * Determine whether the CPU has SSE3 features.
298 *
299 * This always returns false on CPUs that aren't using Intel instruction sets.
300 *
301 * \returns SDL_TRUE if the CPU has SSE3 features or SDL_FALSE if not.
302 *
303 * \since This function is available since SDL 2.0.0.
304 *
305 * \sa SDL_Has3DNow
306 * \sa SDL_HasAltiVec
307 * \sa SDL_HasAVX
308 * \sa SDL_HasAVX2
309 * \sa SDL_HasMMX
310 * \sa SDL_HasRDTSC
311 * \sa SDL_HasSSE
312 * \sa SDL_HasSSE2
313 * \sa SDL_HasSSE41
314 * \sa SDL_HasSSE42
315 */
316extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void);
317
318/**
319 * Determine whether the CPU has SSE4.1 features.
320 *
321 * This always returns false on CPUs that aren't using Intel instruction sets.
322 *
323 * \returns SDL_TRUE if the CPU has SSE4.1 features or SDL_FALSE if not.
324 *
325 * \since This function is available since SDL 2.0.0.
326 *
327 * \sa SDL_Has3DNow
328 * \sa SDL_HasAltiVec
329 * \sa SDL_HasAVX
330 * \sa SDL_HasAVX2
331 * \sa SDL_HasMMX
332 * \sa SDL_HasRDTSC
333 * \sa SDL_HasSSE
334 * \sa SDL_HasSSE2
335 * \sa SDL_HasSSE3
336 * \sa SDL_HasSSE42
337 */
338extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void);
339
340/**
341 * Determine whether the CPU has SSE4.2 features.
342 *
343 * This always returns false on CPUs that aren't using Intel instruction sets.
344 *
345 * \returns SDL_TRUE if the CPU has SSE4.2 features or SDL_FALSE if not.
346 *
347 * \since This function is available since SDL 2.0.0.
348 *
349 * \sa SDL_Has3DNow
350 * \sa SDL_HasAltiVec
351 * \sa SDL_HasAVX
352 * \sa SDL_HasAVX2
353 * \sa SDL_HasMMX
354 * \sa SDL_HasRDTSC
355 * \sa SDL_HasSSE
356 * \sa SDL_HasSSE2
357 * \sa SDL_HasSSE3
358 * \sa SDL_HasSSE41
359 */
360extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void);
361
362/**
363 * Determine whether the CPU has AVX features.
364 *
365 * This always returns false on CPUs that aren't using Intel instruction sets.
366 *
367 * \returns SDL_TRUE if the CPU has AVX features or SDL_FALSE if not.
368 *
369 * \since This function is available since SDL 2.0.2.
370 *
371 * \sa SDL_Has3DNow
372 * \sa SDL_HasAltiVec
373 * \sa SDL_HasAVX2
374 * \sa SDL_HasMMX
375 * \sa SDL_HasRDTSC
376 * \sa SDL_HasSSE
377 * \sa SDL_HasSSE2
378 * \sa SDL_HasSSE3
379 * \sa SDL_HasSSE41
380 * \sa SDL_HasSSE42
381 */
382extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void);
383
384/**
385 * Determine whether the CPU has AVX2 features.
386 *
387 * This always returns false on CPUs that aren't using Intel instruction sets.
388 *
389 * \returns SDL_TRUE if the CPU has AVX2 features or SDL_FALSE if not.
390 *
391 * \since This function is available since SDL 2.0.4.
392 *
393 * \sa SDL_Has3DNow
394 * \sa SDL_HasAltiVec
395 * \sa SDL_HasAVX
396 * \sa SDL_HasMMX
397 * \sa SDL_HasRDTSC
398 * \sa SDL_HasSSE
399 * \sa SDL_HasSSE2
400 * \sa SDL_HasSSE3
401 * \sa SDL_HasSSE41
402 * \sa SDL_HasSSE42
403 */
404extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void);
405
406/**
407 * Determine whether the CPU has AVX-512F (foundation) features.
408 *
409 * This always returns false on CPUs that aren't using Intel instruction sets.
410 *
411 * \returns SDL_TRUE if the CPU has AVX-512F features or SDL_FALSE if not.
412 *
413 * \since This function is available since SDL 2.0.9.
414 *
415 * \sa SDL_HasAVX
416 */
417extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void);
418
419/**
420 * Determine whether the CPU has ARM SIMD (ARMv6) features.
421 *
422 * This is different from ARM NEON, which is a different instruction set.
423 *
424 * This always returns false on CPUs that aren't using ARM instruction sets.
425 *
426 * \returns SDL_TRUE if the CPU has ARM SIMD features or SDL_FALSE if not.
427 *
428 * \since This function is available since SDL 2.0.12.
429 *
430 * \sa SDL_HasNEON
431 */
432extern DECLSPEC SDL_bool SDLCALL SDL_HasARMSIMD(void);
433
434/**
435 * Determine whether the CPU has NEON (ARM SIMD) features.
436 *
437 * This always returns false on CPUs that aren't using ARM instruction sets.
438 *
439 * \returns SDL_TRUE if the CPU has ARM NEON features or SDL_FALSE if not.
440 *
441 * \since This function is available since SDL 2.0.6.
442 */
443extern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void);
444
445/**
446 * Determine whether the CPU has LSX (LOONGARCH SIMD) features.
447 *
448 * This always returns false on CPUs that aren't using LOONGARCH instruction
449 * sets.
450 *
451 * \returns SDL_TRUE if the CPU has LOONGARCH LSX features or SDL_FALSE if
452 * not.
453 *
454 * \since This function is available since SDL 2.24.0.
455 */
456extern DECLSPEC SDL_bool SDLCALL SDL_HasLSX(void);
457
458/**
459 * Determine whether the CPU has LASX (LOONGARCH SIMD) features.
460 *
461 * This always returns false on CPUs that aren't using LOONGARCH instruction
462 * sets.
463 *
464 * \returns SDL_TRUE if the CPU has LOONGARCH LASX features or SDL_FALSE if
465 * not.
466 *
467 * \since This function is available since SDL 2.24.0.
468 */
469extern DECLSPEC SDL_bool SDLCALL SDL_HasLASX(void);
470
471/**
472 * Get the amount of RAM configured in the system.
473 *
474 * \returns the amount of RAM configured in the system in MiB.
475 *
476 * \since This function is available since SDL 2.0.1.
477 */
478extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void);
479
480/**
481 * Report the alignment this system needs for SIMD allocations.
482 *
483 * This will return the minimum number of bytes to which a pointer must be
484 * aligned to be compatible with SIMD instructions on the current machine. For
485 * example, if the machine supports SSE only, it will return 16, but if it
486 * supports AVX-512F, it'll return 64 (etc). This only reports values for
487 * instruction sets SDL knows about, so if your SDL build doesn't have
488 * SDL_HasAVX512F(), then it might return 16 for the SSE support it sees and
489 * not 64 for the AVX-512 instructions that exist but SDL doesn't know about.
490 * Plan accordingly.
491 *
492 * \returns the alignment in bytes needed for available, known SIMD
493 * instructions.
494 *
495 * \since This function is available since SDL 2.0.10.
496 */
497extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void);
498
499/**
500 * Allocate memory in a SIMD-friendly way.
501 *
502 * This will allocate a block of memory that is suitable for use with SIMD
503 * instructions. Specifically, it will be properly aligned and padded for the
504 * system's supported vector instructions.
505 *
506 * The memory returned will be padded such that it is safe to read or write an
507 * incomplete vector at the end of the memory block. This can be useful so you
508 * don't have to drop back to a scalar fallback at the end of your SIMD
509 * processing loop to deal with the final elements without overflowing the
510 * allocated buffer.
511 *
512 * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free() or
513 * delete[], etc.
514 *
515 * Note that SDL will only deal with SIMD instruction sets it is aware of; for
516 * example, SDL 2.0.8 knows that SSE wants 16-byte vectors (SDL_HasSSE()), and
517 * AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't know that AVX-512 wants
518 * 64. To be clear: if you can't decide to use an instruction set with an
519 * SDL_Has*() function, don't use that instruction set with memory allocated
520 * through here.
521 *
522 * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't
523 * out of memory, but you are not allowed to dereference it (because you only
524 * own zero bytes of that buffer).
525 *
526 * \param len The length, in bytes, of the block to allocate. The actual
527 * allocated block might be larger due to padding, etc.
528 * \returns a pointer to the newly-allocated block, NULL if out of memory.
529 *
530 * \since This function is available since SDL 2.0.10.
531 *
532 * \sa SDL_SIMDGetAlignment
533 * \sa SDL_SIMDRealloc
534 * \sa SDL_SIMDFree
535 */
536extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len);
537
538/**
539 * Reallocate memory obtained from SDL_SIMDAlloc
540 *
541 * It is not valid to use this function on a pointer from anything but
542 * SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc,
543 * SDL_malloc, memalign, new[], etc.
544 *
545 * \param mem The pointer obtained from SDL_SIMDAlloc. This function also
546 * accepts NULL, at which point this function is the same as
547 * calling SDL_SIMDAlloc with a NULL pointer.
548 * \param len The length, in bytes, of the block to allocated. The actual
549 * allocated block might be larger due to padding, etc. Passing 0
550 * will return a non-NULL pointer, assuming the system isn't out of
551 * memory.
552 * \returns a pointer to the newly-reallocated block, NULL if out of memory.
553 *
554 * \since This function is available since SDL 2.0.14.
555 *
556 * \sa SDL_SIMDGetAlignment
557 * \sa SDL_SIMDAlloc
558 * \sa SDL_SIMDFree
559 */
560extern DECLSPEC void * SDLCALL SDL_SIMDRealloc(void *mem, const size_t len);
561
562/**
563 * Deallocate memory obtained from SDL_SIMDAlloc
564 *
565 * It is not valid to use this function on a pointer from anything but
566 * SDL_SIMDAlloc() or SDL_SIMDRealloc(). It can't be used on pointers from
567 * malloc, realloc, SDL_malloc, memalign, new[], etc.
568 *
569 * However, SDL_SIMDFree(NULL) is a legal no-op.
570 *
571 * The memory pointed to by `ptr` is no longer valid for access upon return,
572 * and may be returned to the system or reused by a future allocation. The
573 * pointer passed to this function is no longer safe to dereference once this
574 * function returns, and should be discarded.
575 *
576 * \param ptr The pointer, returned from SDL_SIMDAlloc or SDL_SIMDRealloc, to
577 * deallocate. NULL is a legal no-op.
578 *
579 * \since This function is available since SDL 2.0.10.
580 *
581 * \sa SDL_SIMDAlloc
582 * \sa SDL_SIMDRealloc
583 */
584extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr);
585
586/* Ends C function definitions when using C++ */
587#ifdef __cplusplus
588}
589#endif
590#include "close_code.h"
591
592#endif /* SDL_cpuinfo_h_ */
593
594/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_egl.h b/src/contrib/SDL-2.30.2/include/SDL_egl.h
new file mode 100644
index 0000000..a4276e6
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_egl.h
@@ -0,0 +1,2352 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 * To support platform where unsigned long cannot be used interchangeably with
197 * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.
198 * Ideally, we could just use (u)intptr_t everywhere, but this could result in
199 * ABI breakage if khronos_uintptr_t is changed from unsigned long to
200 * unsigned long long or similar (this results in different C++ name mangling).
201 * To avoid changes for existing platforms, we restrict usage of intptr_t to
202 * platforms where the size of a pointer is larger than the size of long.
203 */
204#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)
205#if __SIZEOF_POINTER__ > __SIZEOF_LONG__
206#define KHRONOS_USE_INTPTR_T
207#endif
208#endif
209
210#elif defined(__VMS ) || defined(__sgi)
211
212/*
213 * Using <inttypes.h>
214 */
215#include <inttypes.h>
216typedef int32_t khronos_int32_t;
217typedef uint32_t khronos_uint32_t;
218typedef int64_t khronos_int64_t;
219typedef uint64_t khronos_uint64_t;
220#define KHRONOS_SUPPORT_INT64 1
221#define KHRONOS_SUPPORT_FLOAT 1
222
223#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
224
225/*
226 * Win32
227 */
228typedef __int32 khronos_int32_t;
229typedef unsigned __int32 khronos_uint32_t;
230typedef __int64 khronos_int64_t;
231typedef unsigned __int64 khronos_uint64_t;
232#define KHRONOS_SUPPORT_INT64 1
233#define KHRONOS_SUPPORT_FLOAT 1
234
235#elif defined(__sun__) || defined(__digital__)
236
237/*
238 * Sun or Digital
239 */
240typedef int khronos_int32_t;
241typedef unsigned int khronos_uint32_t;
242#if defined(__arch64__) || defined(_LP64)
243typedef long int khronos_int64_t;
244typedef unsigned long int khronos_uint64_t;
245#else
246typedef long long int khronos_int64_t;
247typedef unsigned long long int khronos_uint64_t;
248#endif /* __arch64__ */
249#define KHRONOS_SUPPORT_INT64 1
250#define KHRONOS_SUPPORT_FLOAT 1
251
252#elif 0
253
254/*
255 * Hypothetical platform with no float or int64 support
256 */
257typedef int khronos_int32_t;
258typedef unsigned int khronos_uint32_t;
259#define KHRONOS_SUPPORT_INT64 0
260#define KHRONOS_SUPPORT_FLOAT 0
261
262#else
263
264/*
265 * Generic fallback
266 */
267#include <stdint.h>
268typedef int32_t khronos_int32_t;
269typedef uint32_t khronos_uint32_t;
270typedef int64_t khronos_int64_t;
271typedef uint64_t khronos_uint64_t;
272#define KHRONOS_SUPPORT_INT64 1
273#define KHRONOS_SUPPORT_FLOAT 1
274
275#endif
276
277
278/*
279 * Types that are (so far) the same on all platforms
280 */
281typedef signed char khronos_int8_t;
282typedef unsigned char khronos_uint8_t;
283typedef signed short int khronos_int16_t;
284typedef unsigned short int khronos_uint16_t;
285
286/*
287 * Types that differ between LLP64 and LP64 architectures - in LLP64,
288 * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
289 * to be the only LLP64 architecture in current use.
290 */
291#ifdef KHRONOS_USE_INTPTR_T
292typedef intptr_t khronos_intptr_t;
293typedef uintptr_t khronos_uintptr_t;
294#elif defined(_WIN64)
295typedef signed long long int khronos_intptr_t;
296typedef unsigned long long int khronos_uintptr_t;
297#else
298typedef signed long int khronos_intptr_t;
299typedef unsigned long int khronos_uintptr_t;
300#endif
301
302#if defined(_WIN64)
303typedef signed long long int khronos_ssize_t;
304typedef unsigned long long int khronos_usize_t;
305#else
306typedef signed long int khronos_ssize_t;
307typedef unsigned long int khronos_usize_t;
308#endif
309
310#if KHRONOS_SUPPORT_FLOAT
311/*
312 * Float type
313 */
314typedef float khronos_float_t;
315#endif
316
317#if KHRONOS_SUPPORT_INT64
318/* Time types
319 *
320 * These types can be used to represent a time interval in nanoseconds or
321 * an absolute Unadjusted System Time. Unadjusted System Time is the number
322 * of nanoseconds since some arbitrary system event (e.g. since the last
323 * time the system booted). The Unadjusted System Time is an unsigned
324 * 64 bit value that wraps back to 0 every 584 years. Time intervals
325 * may be either signed or unsigned.
326 */
327typedef khronos_uint64_t khronos_utime_nanoseconds_t;
328typedef khronos_int64_t khronos_stime_nanoseconds_t;
329#endif
330
331/*
332 * Dummy value used to pad enum types to 32 bits.
333 */
334#ifndef KHRONOS_MAX_ENUM
335#define KHRONOS_MAX_ENUM 0x7FFFFFFF
336#endif
337
338/*
339 * Enumerated boolean type
340 *
341 * Values other than zero should be considered to be true. Therefore
342 * comparisons should not be made against KHRONOS_TRUE.
343 */
344typedef enum {
345 KHRONOS_FALSE = 0,
346 KHRONOS_TRUE = 1,
347 KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
348} khronos_boolean_enum_t;
349
350#endif /* __khrplatform_h_ */
351
352
353#ifndef __eglplatform_h_
354#define __eglplatform_h_
355
356/*
357** Copyright 2007-2020 The Khronos Group Inc.
358** SPDX-License-Identifier: Apache-2.0
359*/
360
361/* Platform-specific types and definitions for egl.h
362 *
363 * Adopters may modify khrplatform.h and this file to suit their platform.
364 * You are encouraged to submit all modifications to the Khronos group so that
365 * they can be included in future versions of this file. Please submit changes
366 * by filing an issue or pull request on the public Khronos EGL Registry, at
367 * https://www.github.com/KhronosGroup/EGL-Registry/
368 */
369
370/*#include <KHR/khrplatform.h>*/
371
372/* Macros used in EGL function prototype declarations.
373 *
374 * EGL functions should be prototyped as:
375 *
376 * EGLAPI return-type EGLAPIENTRY eglFunction(arguments);
377 * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments);
378 *
379 * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h
380 */
381
382#ifndef EGLAPI
383#define EGLAPI KHRONOS_APICALL
384#endif
385
386#ifndef EGLAPIENTRY
387#define EGLAPIENTRY KHRONOS_APIENTRY
388#endif
389#define EGLAPIENTRYP EGLAPIENTRY*
390
391/* The types NativeDisplayType, NativeWindowType, and NativePixmapType
392 * are aliases of window-system-dependent types, such as X Display * or
393 * Windows Device Context. They must be defined in platform-specific
394 * code below. The EGL-prefixed versions of Native*Type are the same
395 * types, renamed in EGL 1.3 so all types in the API start with "EGL".
396 *
397 * Khronos STRONGLY RECOMMENDS that you use the default definitions
398 * provided below, since these changes affect both binary and source
399 * portability of applications using EGL running on different EGL
400 * implementations.
401 */
402
403#if defined(EGL_NO_PLATFORM_SPECIFIC_TYPES)
404
405typedef void *EGLNativeDisplayType;
406typedef void *EGLNativePixmapType;
407typedef void *EGLNativeWindowType;
408
409#elif defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
410#ifndef WIN32_LEAN_AND_MEAN
411#define WIN32_LEAN_AND_MEAN 1
412#endif
413#include <windows.h>
414
415typedef HDC EGLNativeDisplayType;
416typedef HBITMAP EGLNativePixmapType;
417typedef HWND EGLNativeWindowType;
418
419#elif defined(__EMSCRIPTEN__)
420
421typedef int EGLNativeDisplayType;
422typedef int EGLNativePixmapType;
423typedef int EGLNativeWindowType;
424
425#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */
426
427typedef int EGLNativeDisplayType;
428typedef void *EGLNativePixmapType;
429typedef void *EGLNativeWindowType;
430
431#elif defined(WL_EGL_PLATFORM)
432
433typedef struct wl_display *EGLNativeDisplayType;
434typedef struct wl_egl_pixmap *EGLNativePixmapType;
435typedef struct wl_egl_window *EGLNativeWindowType;
436
437#elif defined(__GBM__)
438
439typedef struct gbm_device *EGLNativeDisplayType;
440typedef struct gbm_bo *EGLNativePixmapType;
441typedef void *EGLNativeWindowType;
442
443#elif defined(__ANDROID__) || defined(ANDROID)
444
445struct ANativeWindow;
446struct egl_native_pixmap_t;
447
448typedef void* EGLNativeDisplayType;
449typedef struct egl_native_pixmap_t* EGLNativePixmapType;
450typedef struct ANativeWindow* EGLNativeWindowType;
451
452#elif defined(USE_OZONE)
453
454typedef intptr_t EGLNativeDisplayType;
455typedef intptr_t EGLNativePixmapType;
456typedef intptr_t EGLNativeWindowType;
457
458#elif defined(USE_X11)
459
460/* X11 (tentative) */
461#include <X11/Xlib.h>
462#include <X11/Xutil.h>
463
464typedef Display *EGLNativeDisplayType;
465typedef Pixmap EGLNativePixmapType;
466typedef Window EGLNativeWindowType;
467
468#elif defined(__unix__)
469
470typedef void *EGLNativeDisplayType;
471typedef khronos_uintptr_t EGLNativePixmapType;
472typedef khronos_uintptr_t EGLNativeWindowType;
473
474#elif defined(__APPLE__)
475
476typedef int EGLNativeDisplayType;
477typedef void *EGLNativePixmapType;
478typedef void *EGLNativeWindowType;
479
480#elif defined(__HAIKU__)
481
482#include <kernel/image.h>
483
484typedef void *EGLNativeDisplayType;
485typedef khronos_uintptr_t EGLNativePixmapType;
486typedef khronos_uintptr_t EGLNativeWindowType;
487
488#elif defined(__Fuchsia__)
489
490typedef void *EGLNativeDisplayType;
491typedef khronos_uintptr_t EGLNativePixmapType;
492typedef khronos_uintptr_t EGLNativeWindowType;
493
494#else
495#error "Platform not recognized"
496#endif
497
498/* EGL 1.2 types, renamed for consistency in EGL 1.3 */
499typedef EGLNativeDisplayType NativeDisplayType;
500typedef EGLNativePixmapType NativePixmapType;
501typedef EGLNativeWindowType NativeWindowType;
502
503
504/* Define EGLint. This must be a signed integral type large enough to contain
505 * all legal attribute names and values passed into and out of EGL, whether
506 * their type is boolean, bitmask, enumerant (symbolic constant), integer,
507 * handle, or other. While in general a 32-bit integer will suffice, if
508 * handles are 64 bit types, then EGLint should be defined as a signed 64-bit
509 * integer type.
510 */
511typedef khronos_int32_t EGLint;
512
513
514/* C++ / C typecast macros for special EGL handle values */
515#if defined(__cplusplus)
516#define EGL_CAST(type, value) (static_cast<type>(value))
517#else
518#define EGL_CAST(type, value) ((type) (value))
519#endif
520
521#endif /* __eglplatform_h */
522
523
524#ifndef __egl_h_
525#define __egl_h_ 1
526
527#ifdef __cplusplus
528extern "C" {
529#endif
530
531/*
532** Copyright 2013-2020 The Khronos Group Inc.
533** SPDX-License-Identifier: Apache-2.0
534**
535** This header is generated from the Khronos EGL XML API Registry.
536** The current version of the Registry, generator scripts
537** used to make the header, and the header can be found at
538** http://www.khronos.org/registry/egl
539**
540** Khronos $Git commit SHA1: 6fb1daea15 $ on $Git commit date: 2022-05-25 09:41:13 -0600 $
541*/
542
543/*#include <EGL/eglplatform.h>*/
544
545#ifndef EGL_EGL_PROTOTYPES
546#define EGL_EGL_PROTOTYPES 1
547#endif
548
549/* Generated on date 20220525 */
550
551/* Generated C header for:
552 * API: egl
553 * Versions considered: .*
554 * Versions emitted: .*
555 * Default extensions included: None
556 * Additional extensions included: _nomatch_^
557 * Extensions removed: _nomatch_^
558 */
559
560#ifndef EGL_VERSION_1_0
561#define EGL_VERSION_1_0 1
562typedef unsigned int EGLBoolean;
563typedef void *EGLDisplay;
564/*#include <KHR/khrplatform.h>*/
565/*#include <EGL/eglplatform.h>*/
566typedef void *EGLConfig;
567typedef void *EGLSurface;
568typedef void *EGLContext;
569typedef void (*__eglMustCastToProperFunctionPointerType)(void);
570#define EGL_ALPHA_SIZE 0x3021
571#define EGL_BAD_ACCESS 0x3002
572#define EGL_BAD_ALLOC 0x3003
573#define EGL_BAD_ATTRIBUTE 0x3004
574#define EGL_BAD_CONFIG 0x3005
575#define EGL_BAD_CONTEXT 0x3006
576#define EGL_BAD_CURRENT_SURFACE 0x3007
577#define EGL_BAD_DISPLAY 0x3008
578#define EGL_BAD_MATCH 0x3009
579#define EGL_BAD_NATIVE_PIXMAP 0x300A
580#define EGL_BAD_NATIVE_WINDOW 0x300B
581#define EGL_BAD_PARAMETER 0x300C
582#define EGL_BAD_SURFACE 0x300D
583#define EGL_BLUE_SIZE 0x3022
584#define EGL_BUFFER_SIZE 0x3020
585#define EGL_CONFIG_CAVEAT 0x3027
586#define EGL_CONFIG_ID 0x3028
587#define EGL_CORE_NATIVE_ENGINE 0x305B
588#define EGL_DEPTH_SIZE 0x3025
589#define EGL_DONT_CARE EGL_CAST(EGLint,-1)
590#define EGL_DRAW 0x3059
591#define EGL_EXTENSIONS 0x3055
592#define EGL_FALSE 0
593#define EGL_GREEN_SIZE 0x3023
594#define EGL_HEIGHT 0x3056
595#define EGL_LARGEST_PBUFFER 0x3058
596#define EGL_LEVEL 0x3029
597#define EGL_MAX_PBUFFER_HEIGHT 0x302A
598#define EGL_MAX_PBUFFER_PIXELS 0x302B
599#define EGL_MAX_PBUFFER_WIDTH 0x302C
600#define EGL_NATIVE_RENDERABLE 0x302D
601#define EGL_NATIVE_VISUAL_ID 0x302E
602#define EGL_NATIVE_VISUAL_TYPE 0x302F
603#define EGL_NONE 0x3038
604#define EGL_NON_CONFORMANT_CONFIG 0x3051
605#define EGL_NOT_INITIALIZED 0x3001
606#define EGL_NO_CONTEXT EGL_CAST(EGLContext,0)
607#define EGL_NO_DISPLAY EGL_CAST(EGLDisplay,0)
608#define EGL_NO_SURFACE EGL_CAST(EGLSurface,0)
609#define EGL_PBUFFER_BIT 0x0001
610#define EGL_PIXMAP_BIT 0x0002
611#define EGL_READ 0x305A
612#define EGL_RED_SIZE 0x3024
613#define EGL_SAMPLES 0x3031
614#define EGL_SAMPLE_BUFFERS 0x3032
615#define EGL_SLOW_CONFIG 0x3050
616#define EGL_STENCIL_SIZE 0x3026
617#define EGL_SUCCESS 0x3000
618#define EGL_SURFACE_TYPE 0x3033
619#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
620#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
621#define EGL_TRANSPARENT_RED_VALUE 0x3037
622#define EGL_TRANSPARENT_RGB 0x3052
623#define EGL_TRANSPARENT_TYPE 0x3034
624#define EGL_TRUE 1
625#define EGL_VENDOR 0x3053
626#define EGL_VERSION 0x3054
627#define EGL_WIDTH 0x3057
628#define EGL_WINDOW_BIT 0x0004
629typedef EGLBoolean (EGLAPIENTRYP PFNEGLCHOOSECONFIGPROC) (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
630typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOPYBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
631typedef EGLContext (EGLAPIENTRYP PFNEGLCREATECONTEXTPROC) (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
632typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPBUFFERSURFACEPROC) (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
633typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
634typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);
635typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx);
636typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface);
637typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCONFIGATTRIBPROC) (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
638typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCONFIGSPROC) (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
639typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETCURRENTDISPLAYPROC) (void);
640typedef EGLSurface (EGLAPIENTRYP PFNEGLGETCURRENTSURFACEPROC) (EGLint readdraw);
641typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETDISPLAYPROC) (EGLNativeDisplayType display_id);
642typedef EGLint (EGLAPIENTRYP PFNEGLGETERRORPROC) (void);
643typedef __eglMustCastToProperFunctionPointerType (EGLAPIENTRYP PFNEGLGETPROCADDRESSPROC) (const char *procname);
644typedef EGLBoolean (EGLAPIENTRYP PFNEGLINITIALIZEPROC) (EGLDisplay dpy, EGLint *major, EGLint *minor);
645typedef EGLBoolean (EGLAPIENTRYP PFNEGLMAKECURRENTPROC) (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
646typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
647typedef const char *(EGLAPIENTRYP PFNEGLQUERYSTRINGPROC) (EGLDisplay dpy, EGLint name);
648typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
649typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface);
650typedef EGLBoolean (EGLAPIENTRYP PFNEGLTERMINATEPROC) (EGLDisplay dpy);
651typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITGLPROC) (void);
652typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITNATIVEPROC) (EGLint engine);
653#if EGL_EGL_PROTOTYPES
654EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
655EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
656EGLAPI EGLContext EGLAPIENTRY eglCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
657EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
658EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
659EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);
660EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext (EGLDisplay dpy, EGLContext ctx);
661EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface (EGLDisplay dpy, EGLSurface surface);
662EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
663EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
664EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay (void);
665EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface (EGLint readdraw);
666EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay (EGLNativeDisplayType display_id);
667EGLAPI EGLint EGLAPIENTRY eglGetError (void);
668EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname);
669EGLAPI EGLBoolean EGLAPIENTRY eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor);
670EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
671EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
672EGLAPI const char *EGLAPIENTRY eglQueryString (EGLDisplay dpy, EGLint name);
673EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
674EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers (EGLDisplay dpy, EGLSurface surface);
675EGLAPI EGLBoolean EGLAPIENTRY eglTerminate (EGLDisplay dpy);
676EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL (void);
677EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative (EGLint engine);
678#endif
679#endif /* EGL_VERSION_1_0 */
680
681#ifndef EGL_VERSION_1_1
682#define EGL_VERSION_1_1 1
683#define EGL_BACK_BUFFER 0x3084
684#define EGL_BIND_TO_TEXTURE_RGB 0x3039
685#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
686#define EGL_CONTEXT_LOST 0x300E
687#define EGL_MIN_SWAP_INTERVAL 0x303B
688#define EGL_MAX_SWAP_INTERVAL 0x303C
689#define EGL_MIPMAP_TEXTURE 0x3082
690#define EGL_MIPMAP_LEVEL 0x3083
691#define EGL_NO_TEXTURE 0x305C
692#define EGL_TEXTURE_2D 0x305F
693#define EGL_TEXTURE_FORMAT 0x3080
694#define EGL_TEXTURE_RGB 0x305D
695#define EGL_TEXTURE_RGBA 0x305E
696#define EGL_TEXTURE_TARGET 0x3081
697typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDTEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
698typedef EGLBoolean (EGLAPIENTRYP PFNEGLRELEASETEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
699typedef EGLBoolean (EGLAPIENTRYP PFNEGLSURFACEATTRIBPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
700typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPINTERVALPROC) (EGLDisplay dpy, EGLint interval);
701#if EGL_EGL_PROTOTYPES
702EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
703EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
704EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
705EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval (EGLDisplay dpy, EGLint interval);
706#endif
707#endif /* EGL_VERSION_1_1 */
708
709#ifndef EGL_VERSION_1_2
710#define EGL_VERSION_1_2 1
711typedef unsigned int EGLenum;
712typedef void *EGLClientBuffer;
713#define EGL_ALPHA_FORMAT 0x3088
714#define EGL_ALPHA_FORMAT_NONPRE 0x308B
715#define EGL_ALPHA_FORMAT_PRE 0x308C
716#define EGL_ALPHA_MASK_SIZE 0x303E
717#define EGL_BUFFER_PRESERVED 0x3094
718#define EGL_BUFFER_DESTROYED 0x3095
719#define EGL_CLIENT_APIS 0x308D
720#define EGL_COLORSPACE 0x3087
721#define EGL_COLORSPACE_sRGB 0x3089
722#define EGL_COLORSPACE_LINEAR 0x308A
723#define EGL_COLOR_BUFFER_TYPE 0x303F
724#define EGL_CONTEXT_CLIENT_TYPE 0x3097
725#define EGL_DISPLAY_SCALING 10000
726#define EGL_HORIZONTAL_RESOLUTION 0x3090
727#define EGL_LUMINANCE_BUFFER 0x308F
728#define EGL_LUMINANCE_SIZE 0x303D
729#define EGL_OPENGL_ES_BIT 0x0001
730#define EGL_OPENVG_BIT 0x0002
731#define EGL_OPENGL_ES_API 0x30A0
732#define EGL_OPENVG_API 0x30A1
733#define EGL_OPENVG_IMAGE 0x3096
734#define EGL_PIXEL_ASPECT_RATIO 0x3092
735#define EGL_RENDERABLE_TYPE 0x3040
736#define EGL_RENDER_BUFFER 0x3086
737#define EGL_RGB_BUFFER 0x308E
738#define EGL_SINGLE_BUFFER 0x3085
739#define EGL_SWAP_BEHAVIOR 0x3093
740#define EGL_UNKNOWN EGL_CAST(EGLint,-1)
741#define EGL_VERTICAL_RESOLUTION 0x3091
742typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDAPIPROC) (EGLenum api);
743typedef EGLenum (EGLAPIENTRYP PFNEGLQUERYAPIPROC) (void);
744typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC) (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
745typedef EGLBoolean (EGLAPIENTRYP PFNEGLRELEASETHREADPROC) (void);
746typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITCLIENTPROC) (void);
747#if EGL_EGL_PROTOTYPES
748EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI (EGLenum api);
749EGLAPI EGLenum EGLAPIENTRY eglQueryAPI (void);
750EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
751EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread (void);
752EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient (void);
753#endif
754#endif /* EGL_VERSION_1_2 */
755
756#ifndef EGL_VERSION_1_3
757#define EGL_VERSION_1_3 1
758#define EGL_CONFORMANT 0x3042
759#define EGL_CONTEXT_CLIENT_VERSION 0x3098
760#define EGL_MATCH_NATIVE_PIXMAP 0x3041
761#define EGL_OPENGL_ES2_BIT 0x0004
762#define EGL_VG_ALPHA_FORMAT 0x3088
763#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B
764#define EGL_VG_ALPHA_FORMAT_PRE 0x308C
765#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040
766#define EGL_VG_COLORSPACE 0x3087
767#define EGL_VG_COLORSPACE_sRGB 0x3089
768#define EGL_VG_COLORSPACE_LINEAR 0x308A
769#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020
770#endif /* EGL_VERSION_1_3 */
771
772#ifndef EGL_VERSION_1_4
773#define EGL_VERSION_1_4 1
774#define EGL_DEFAULT_DISPLAY EGL_CAST(EGLNativeDisplayType,0)
775#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200
776#define EGL_MULTISAMPLE_RESOLVE 0x3099
777#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A
778#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B
779#define EGL_OPENGL_API 0x30A2
780#define EGL_OPENGL_BIT 0x0008
781#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400
782typedef EGLContext (EGLAPIENTRYP PFNEGLGETCURRENTCONTEXTPROC) (void);
783#if EGL_EGL_PROTOTYPES
784EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext (void);
785#endif
786#endif /* EGL_VERSION_1_4 */
787
788#ifndef EGL_VERSION_1_5
789#define EGL_VERSION_1_5 1
790typedef void *EGLSync;
791typedef intptr_t EGLAttrib;
792typedef khronos_utime_nanoseconds_t EGLTime;
793typedef void *EGLImage;
794#define EGL_CONTEXT_MAJOR_VERSION 0x3098
795#define EGL_CONTEXT_MINOR_VERSION 0x30FB
796#define EGL_CONTEXT_OPENGL_PROFILE_MASK 0x30FD
797#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY 0x31BD
798#define EGL_NO_RESET_NOTIFICATION 0x31BE
799#define EGL_LOSE_CONTEXT_ON_RESET 0x31BF
800#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT 0x00000001
801#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT 0x00000002
802#define EGL_CONTEXT_OPENGL_DEBUG 0x31B0
803#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE 0x31B1
804#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS 0x31B2
805#define EGL_OPENGL_ES3_BIT 0x00000040
806#define EGL_CL_EVENT_HANDLE 0x309C
807#define EGL_SYNC_CL_EVENT 0x30FE
808#define EGL_SYNC_CL_EVENT_COMPLETE 0x30FF
809#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE 0x30F0
810#define EGL_SYNC_TYPE 0x30F7
811#define EGL_SYNC_STATUS 0x30F1
812#define EGL_SYNC_CONDITION 0x30F8
813#define EGL_SIGNALED 0x30F2
814#define EGL_UNSIGNALED 0x30F3
815#define EGL_SYNC_FLUSH_COMMANDS_BIT 0x0001
816#define EGL_FOREVER 0xFFFFFFFFFFFFFFFFull
817#define EGL_TIMEOUT_EXPIRED 0x30F5
818#define EGL_CONDITION_SATISFIED 0x30F6
819#define EGL_NO_SYNC EGL_CAST(EGLSync,0)
820#define EGL_SYNC_FENCE 0x30F9
821#define EGL_GL_COLORSPACE 0x309D
822#define EGL_GL_COLORSPACE_SRGB 0x3089
823#define EGL_GL_COLORSPACE_LINEAR 0x308A
824#define EGL_GL_RENDERBUFFER 0x30B9
825#define EGL_GL_TEXTURE_2D 0x30B1
826#define EGL_GL_TEXTURE_LEVEL 0x30BC
827#define EGL_GL_TEXTURE_3D 0x30B2
828#define EGL_GL_TEXTURE_ZOFFSET 0x30BD
829#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x30B3
830#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x30B4
831#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x30B5
832#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x30B6
833#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x30B7
834#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x30B8
835#define EGL_IMAGE_PRESERVED 0x30D2
836#define EGL_NO_IMAGE EGL_CAST(EGLImage,0)
837typedef EGLSync (EGLAPIENTRYP PFNEGLCREATESYNCPROC) (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);
838typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCPROC) (EGLDisplay dpy, EGLSync sync);
839typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
840typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBPROC) (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value);
841typedef EGLImage (EGLAPIENTRYP PFNEGLCREATEIMAGEPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);
842typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEPROC) (EGLDisplay dpy, EGLImage image);
843typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYPROC) (EGLenum platform, void *native_display, const EGLAttrib *attrib_list);
844typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);
845typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);
846typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags);
847#if EGL_EGL_PROTOTYPES
848EGLAPI EGLSync EGLAPIENTRY eglCreateSync (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);
849EGLAPI EGLBoolean EGLAPIENTRY eglDestroySync (EGLDisplay dpy, EGLSync sync);
850EGLAPI EGLint EGLAPIENTRY eglClientWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
851EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttrib (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value);
852EGLAPI EGLImage EGLAPIENTRY eglCreateImage (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);
853EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImage (EGLDisplay dpy, EGLImage image);
854EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplay (EGLenum platform, void *native_display, const EGLAttrib *attrib_list);
855EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);
856EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);
857EGLAPI EGLBoolean EGLAPIENTRY eglWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags);
858#endif
859#endif /* EGL_VERSION_1_5 */
860
861#ifdef __cplusplus
862}
863#endif
864
865#endif /* __egl_h_ */
866
867
868#ifndef __eglext_h_
869#define __eglext_h_ 1
870
871#ifdef __cplusplus
872extern "C" {
873#endif
874
875/*
876** Copyright 2013-2020 The Khronos Group Inc.
877** SPDX-License-Identifier: Apache-2.0
878**
879** This header is generated from the Khronos EGL XML API Registry.
880** The current version of the Registry, generator scripts
881** used to make the header, and the header can be found at
882** http://www.khronos.org/registry/egl
883**
884** Khronos $Git commit SHA1: 6fb1daea15 $ on $Git commit date: 2022-05-25 09:41:13 -0600 $
885*/
886
887/*#include <EGL/eglplatform.h>*/
888
889#define EGL_EGLEXT_VERSION 20220525
890
891/* Generated C header for:
892 * API: egl
893 * Versions considered: .*
894 * Versions emitted: _nomatch_^
895 * Default extensions included: egl
896 * Additional extensions included: _nomatch_^
897 * Extensions removed: _nomatch_^
898 */
899
900#ifndef EGL_KHR_cl_event
901#define EGL_KHR_cl_event 1
902#define EGL_CL_EVENT_HANDLE_KHR 0x309C
903#define EGL_SYNC_CL_EVENT_KHR 0x30FE
904#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
905#endif /* EGL_KHR_cl_event */
906
907#ifndef EGL_KHR_cl_event2
908#define EGL_KHR_cl_event2 1
909typedef void *EGLSyncKHR;
910typedef intptr_t EGLAttribKHR;
911typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
912#ifdef EGL_EGLEXT_PROTOTYPES
913EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
914#endif
915#endif /* EGL_KHR_cl_event2 */
916
917#ifndef EGL_KHR_client_get_all_proc_addresses
918#define EGL_KHR_client_get_all_proc_addresses 1
919#endif /* EGL_KHR_client_get_all_proc_addresses */
920
921#ifndef EGL_KHR_config_attribs
922#define EGL_KHR_config_attribs 1
923#define EGL_CONFORMANT_KHR 0x3042
924#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020
925#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040
926#endif /* EGL_KHR_config_attribs */
927
928#ifndef EGL_KHR_context_flush_control
929#define EGL_KHR_context_flush_control 1
930#define EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR 0
931#define EGL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x2097
932#define EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098
933#endif /* EGL_KHR_context_flush_control */
934
935#ifndef EGL_KHR_create_context
936#define EGL_KHR_create_context 1
937#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098
938#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB
939#define EGL_CONTEXT_FLAGS_KHR 0x30FC
940#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
941#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
942#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE
943#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF
944#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001
945#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
946#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
947#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
948#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
949#define EGL_OPENGL_ES3_BIT_KHR 0x00000040
950#endif /* EGL_KHR_create_context */
951
952#ifndef EGL_KHR_create_context_no_error
953#define EGL_KHR_create_context_no_error 1
954#define EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3
955#endif /* EGL_KHR_create_context_no_error */
956
957#ifndef EGL_KHR_debug
958#define EGL_KHR_debug 1
959typedef void *EGLLabelKHR;
960typedef void *EGLObjectKHR;
961typedef void (EGLAPIENTRY *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message);
962#define EGL_OBJECT_THREAD_KHR 0x33B0
963#define EGL_OBJECT_DISPLAY_KHR 0x33B1
964#define EGL_OBJECT_CONTEXT_KHR 0x33B2
965#define EGL_OBJECT_SURFACE_KHR 0x33B3
966#define EGL_OBJECT_IMAGE_KHR 0x33B4
967#define EGL_OBJECT_SYNC_KHR 0x33B5
968#define EGL_OBJECT_STREAM_KHR 0x33B6
969#define EGL_DEBUG_MSG_CRITICAL_KHR 0x33B9
970#define EGL_DEBUG_MSG_ERROR_KHR 0x33BA
971#define EGL_DEBUG_MSG_WARN_KHR 0x33BB
972#define EGL_DEBUG_MSG_INFO_KHR 0x33BC
973#define EGL_DEBUG_CALLBACK_KHR 0x33B8
974typedef EGLint (EGLAPIENTRYP PFNEGLDEBUGMESSAGECONTROLKHRPROC) (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list);
975typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEBUGKHRPROC) (EGLint attribute, EGLAttrib *value);
976typedef EGLint (EGLAPIENTRYP PFNEGLLABELOBJECTKHRPROC) (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
977#ifdef EGL_EGLEXT_PROTOTYPES
978EGLAPI EGLint EGLAPIENTRY eglDebugMessageControlKHR (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list);
979EGLAPI EGLBoolean EGLAPIENTRY eglQueryDebugKHR (EGLint attribute, EGLAttrib *value);
980EGLAPI EGLint EGLAPIENTRY eglLabelObjectKHR (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
981#endif
982#endif /* EGL_KHR_debug */
983
984#ifndef EGL_KHR_display_reference
985#define EGL_KHR_display_reference 1
986#define EGL_TRACK_REFERENCES_KHR 0x3352
987typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBKHRPROC) (EGLDisplay dpy, EGLint name, EGLAttrib *value);
988#ifdef EGL_EGLEXT_PROTOTYPES
989EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribKHR (EGLDisplay dpy, EGLint name, EGLAttrib *value);
990#endif
991#endif /* EGL_KHR_display_reference */
992
993#ifndef EGL_KHR_fence_sync
994#define EGL_KHR_fence_sync 1
995typedef khronos_utime_nanoseconds_t EGLTimeKHR;
996#ifdef KHRONOS_SUPPORT_INT64
997#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
998#define EGL_SYNC_CONDITION_KHR 0x30F8
999#define EGL_SYNC_FENCE_KHR 0x30F9
1000typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
1001typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
1002typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
1003typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
1004#ifdef EGL_EGLEXT_PROTOTYPES
1005EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
1006EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync);
1007EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
1008EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
1009#endif
1010#endif /* KHRONOS_SUPPORT_INT64 */
1011#endif /* EGL_KHR_fence_sync */
1012
1013#ifndef EGL_KHR_get_all_proc_addresses
1014#define EGL_KHR_get_all_proc_addresses 1
1015#endif /* EGL_KHR_get_all_proc_addresses */
1016
1017#ifndef EGL_KHR_gl_colorspace
1018#define EGL_KHR_gl_colorspace 1
1019#define EGL_GL_COLORSPACE_KHR 0x309D
1020#define EGL_GL_COLORSPACE_SRGB_KHR 0x3089
1021#define EGL_GL_COLORSPACE_LINEAR_KHR 0x308A
1022#endif /* EGL_KHR_gl_colorspace */
1023
1024#ifndef EGL_KHR_gl_renderbuffer_image
1025#define EGL_KHR_gl_renderbuffer_image 1
1026#define EGL_GL_RENDERBUFFER_KHR 0x30B9
1027#endif /* EGL_KHR_gl_renderbuffer_image */
1028
1029#ifndef EGL_KHR_gl_texture_2D_image
1030#define EGL_KHR_gl_texture_2D_image 1
1031#define EGL_GL_TEXTURE_2D_KHR 0x30B1
1032#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC
1033#endif /* EGL_KHR_gl_texture_2D_image */
1034
1035#ifndef EGL_KHR_gl_texture_3D_image
1036#define EGL_KHR_gl_texture_3D_image 1
1037#define EGL_GL_TEXTURE_3D_KHR 0x30B2
1038#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD
1039#endif /* EGL_KHR_gl_texture_3D_image */
1040
1041#ifndef EGL_KHR_gl_texture_cubemap_image
1042#define EGL_KHR_gl_texture_cubemap_image 1
1043#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
1044#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
1045#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
1046#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
1047#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
1048#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
1049#endif /* EGL_KHR_gl_texture_cubemap_image */
1050
1051#ifndef EGL_KHR_image
1052#define EGL_KHR_image 1
1053typedef void *EGLImageKHR;
1054#define EGL_NATIVE_PIXMAP_KHR 0x30B0
1055#define EGL_NO_IMAGE_KHR EGL_CAST(EGLImageKHR,0)
1056typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
1057typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
1058#ifdef EGL_EGLEXT_PROTOTYPES
1059EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
1060EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
1061#endif
1062#endif /* EGL_KHR_image */
1063
1064#ifndef EGL_KHR_image_base
1065#define EGL_KHR_image_base 1
1066#define EGL_IMAGE_PRESERVED_KHR 0x30D2
1067#endif /* EGL_KHR_image_base */
1068
1069#ifndef EGL_KHR_image_pixmap
1070#define EGL_KHR_image_pixmap 1
1071#endif /* EGL_KHR_image_pixmap */
1072
1073#ifndef EGL_KHR_lock_surface
1074#define EGL_KHR_lock_surface 1
1075#define EGL_READ_SURFACE_BIT_KHR 0x0001
1076#define EGL_WRITE_SURFACE_BIT_KHR 0x0002
1077#define EGL_LOCK_SURFACE_BIT_KHR 0x0080
1078#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
1079#define EGL_MATCH_FORMAT_KHR 0x3043
1080#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
1081#define EGL_FORMAT_RGB_565_KHR 0x30C1
1082#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
1083#define EGL_FORMAT_RGBA_8888_KHR 0x30C3
1084#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
1085#define EGL_LOCK_USAGE_HINT_KHR 0x30C5
1086#define EGL_BITMAP_POINTER_KHR 0x30C6
1087#define EGL_BITMAP_PITCH_KHR 0x30C7
1088#define EGL_BITMAP_ORIGIN_KHR 0x30C8
1089#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
1090#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
1091#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
1092#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
1093#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
1094#define EGL_LOWER_LEFT_KHR 0x30CE
1095#define EGL_UPPER_LEFT_KHR 0x30CF
1096typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
1097typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface);
1098#ifdef EGL_EGLEXT_PROTOTYPES
1099EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
1100EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface);
1101#endif
1102#endif /* EGL_KHR_lock_surface */
1103
1104#ifndef EGL_KHR_lock_surface2
1105#define EGL_KHR_lock_surface2 1
1106#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
1107#endif /* EGL_KHR_lock_surface2 */
1108
1109#ifndef EGL_KHR_lock_surface3
1110#define EGL_KHR_lock_surface3 1
1111typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACE64KHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
1112#ifdef EGL_EGLEXT_PROTOTYPES
1113EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
1114#endif
1115#endif /* EGL_KHR_lock_surface3 */
1116
1117#ifndef EGL_KHR_mutable_render_buffer
1118#define EGL_KHR_mutable_render_buffer 1
1119#define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000
1120#endif /* EGL_KHR_mutable_render_buffer */
1121
1122#ifndef EGL_KHR_no_config_context
1123#define EGL_KHR_no_config_context 1
1124#define EGL_NO_CONFIG_KHR EGL_CAST(EGLConfig,0)
1125#endif /* EGL_KHR_no_config_context */
1126
1127#ifndef EGL_KHR_partial_update
1128#define EGL_KHR_partial_update 1
1129#define EGL_BUFFER_AGE_KHR 0x313D
1130typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETDAMAGEREGIONKHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
1131#ifdef EGL_EGLEXT_PROTOTYPES
1132EGLAPI EGLBoolean EGLAPIENTRY eglSetDamageRegionKHR (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
1133#endif
1134#endif /* EGL_KHR_partial_update */
1135
1136#ifndef EGL_KHR_platform_android
1137#define EGL_KHR_platform_android 1
1138#define EGL_PLATFORM_ANDROID_KHR 0x3141
1139#endif /* EGL_KHR_platform_android */
1140
1141#ifndef EGL_KHR_platform_gbm
1142#define EGL_KHR_platform_gbm 1
1143#define EGL_PLATFORM_GBM_KHR 0x31D7
1144#endif /* EGL_KHR_platform_gbm */
1145
1146#ifndef EGL_KHR_platform_wayland
1147#define EGL_KHR_platform_wayland 1
1148#define EGL_PLATFORM_WAYLAND_KHR 0x31D8
1149#endif /* EGL_KHR_platform_wayland */
1150
1151#ifndef EGL_KHR_platform_x11
1152#define EGL_KHR_platform_x11 1
1153#define EGL_PLATFORM_X11_KHR 0x31D5
1154#define EGL_PLATFORM_X11_SCREEN_KHR 0x31D6
1155#endif /* EGL_KHR_platform_x11 */
1156
1157#ifndef EGL_KHR_reusable_sync
1158#define EGL_KHR_reusable_sync 1
1159#ifdef KHRONOS_SUPPORT_INT64
1160#define EGL_SYNC_STATUS_KHR 0x30F1
1161#define EGL_SIGNALED_KHR 0x30F2
1162#define EGL_UNSIGNALED_KHR 0x30F3
1163#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5
1164#define EGL_CONDITION_SATISFIED_KHR 0x30F6
1165#define EGL_SYNC_TYPE_KHR 0x30F7
1166#define EGL_SYNC_REUSABLE_KHR 0x30FA
1167#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
1168#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
1169#define EGL_NO_SYNC_KHR EGL_CAST(EGLSyncKHR,0)
1170typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
1171#ifdef EGL_EGLEXT_PROTOTYPES
1172EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
1173#endif
1174#endif /* KHRONOS_SUPPORT_INT64 */
1175#endif /* EGL_KHR_reusable_sync */
1176
1177#ifndef EGL_KHR_stream
1178#define EGL_KHR_stream 1
1179typedef void *EGLStreamKHR;
1180typedef khronos_uint64_t EGLuint64KHR;
1181#ifdef KHRONOS_SUPPORT_INT64
1182#define EGL_NO_STREAM_KHR EGL_CAST(EGLStreamKHR,0)
1183#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
1184#define EGL_PRODUCER_FRAME_KHR 0x3212
1185#define EGL_CONSUMER_FRAME_KHR 0x3213
1186#define EGL_STREAM_STATE_KHR 0x3214
1187#define EGL_STREAM_STATE_CREATED_KHR 0x3215
1188#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216
1189#define EGL_STREAM_STATE_EMPTY_KHR 0x3217
1190#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
1191#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
1192#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
1193#define EGL_BAD_STREAM_KHR 0x321B
1194#define EGL_BAD_STATE_KHR 0x321C
1195typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint *attrib_list);
1196typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
1197typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
1198typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
1199typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
1200#ifdef EGL_EGLEXT_PROTOTYPES
1201EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR (EGLDisplay dpy, const EGLint *attrib_list);
1202EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream);
1203EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
1204EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
1205EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
1206#endif
1207#endif /* KHRONOS_SUPPORT_INT64 */
1208#endif /* EGL_KHR_stream */
1209
1210#ifndef EGL_KHR_stream_attrib
1211#define EGL_KHR_stream_attrib 1
1212#ifdef KHRONOS_SUPPORT_INT64
1213typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMATTRIBKHRPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list);
1214typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);
1215typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib *value);
1216typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
1217typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
1218#ifdef EGL_EGLEXT_PROTOTYPES
1219EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamAttribKHR (EGLDisplay dpy, const EGLAttrib *attrib_list);
1220EGLAPI EGLBoolean EGLAPIENTRY eglSetStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);
1221EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib *value);
1222EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
1223EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
1224#endif
1225#endif /* KHRONOS_SUPPORT_INT64 */
1226#endif /* EGL_KHR_stream_attrib */
1227
1228#ifndef EGL_KHR_stream_consumer_gltexture
1229#define EGL_KHR_stream_consumer_gltexture 1
1230#ifdef EGL_KHR_stream
1231#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
1232typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
1233typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
1234typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
1235#ifdef EGL_EGLEXT_PROTOTYPES
1236EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream);
1237EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream);
1238EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream);
1239#endif
1240#endif /* EGL_KHR_stream */
1241#endif /* EGL_KHR_stream_consumer_gltexture */
1242
1243#ifndef EGL_KHR_stream_cross_process_fd
1244#define EGL_KHR_stream_cross_process_fd 1
1245typedef int EGLNativeFileDescriptorKHR;
1246#ifdef EGL_KHR_stream
1247#define EGL_NO_FILE_DESCRIPTOR_KHR EGL_CAST(EGLNativeFileDescriptorKHR,-1)
1248typedef EGLNativeFileDescriptorKHR (EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
1249typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
1250#ifdef EGL_EGLEXT_PROTOTYPES
1251EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream);
1252EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
1253#endif
1254#endif /* EGL_KHR_stream */
1255#endif /* EGL_KHR_stream_cross_process_fd */
1256
1257#ifndef EGL_KHR_stream_fifo
1258#define EGL_KHR_stream_fifo 1
1259#ifdef EGL_KHR_stream
1260#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC
1261#define EGL_STREAM_TIME_NOW_KHR 0x31FD
1262#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE
1263#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF
1264typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
1265#ifdef EGL_EGLEXT_PROTOTYPES
1266EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
1267#endif
1268#endif /* EGL_KHR_stream */
1269#endif /* EGL_KHR_stream_fifo */
1270
1271#ifndef EGL_KHR_stream_producer_aldatalocator
1272#define EGL_KHR_stream_producer_aldatalocator 1
1273#ifdef EGL_KHR_stream
1274#endif /* EGL_KHR_stream */
1275#endif /* EGL_KHR_stream_producer_aldatalocator */
1276
1277#ifndef EGL_KHR_stream_producer_eglsurface
1278#define EGL_KHR_stream_producer_eglsurface 1
1279#ifdef EGL_KHR_stream
1280#define EGL_STREAM_BIT_KHR 0x0800
1281typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
1282#ifdef EGL_EGLEXT_PROTOTYPES
1283EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
1284#endif
1285#endif /* EGL_KHR_stream */
1286#endif /* EGL_KHR_stream_producer_eglsurface */
1287
1288#ifndef EGL_KHR_surfaceless_context
1289#define EGL_KHR_surfaceless_context 1
1290#endif /* EGL_KHR_surfaceless_context */
1291
1292#ifndef EGL_KHR_swap_buffers_with_damage
1293#define EGL_KHR_swap_buffers_with_damage 1
1294typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
1295#ifdef EGL_EGLEXT_PROTOTYPES
1296EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
1297#endif
1298#endif /* EGL_KHR_swap_buffers_with_damage */
1299
1300#ifndef EGL_KHR_vg_parent_image
1301#define EGL_KHR_vg_parent_image 1
1302#define EGL_VG_PARENT_IMAGE_KHR 0x30BA
1303#endif /* EGL_KHR_vg_parent_image */
1304
1305#ifndef EGL_KHR_wait_sync
1306#define EGL_KHR_wait_sync 1
1307typedef EGLint (EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
1308#ifdef EGL_EGLEXT_PROTOTYPES
1309EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
1310#endif
1311#endif /* EGL_KHR_wait_sync */
1312
1313#ifndef EGL_ANDROID_GLES_layers
1314#define EGL_ANDROID_GLES_layers 1
1315#endif /* EGL_ANDROID_GLES_layers */
1316
1317#ifndef EGL_ANDROID_blob_cache
1318#define EGL_ANDROID_blob_cache 1
1319typedef khronos_ssize_t EGLsizeiANDROID;
1320typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);
1321typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);
1322typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
1323#ifdef EGL_EGLEXT_PROTOTYPES
1324EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
1325#endif
1326#endif /* EGL_ANDROID_blob_cache */
1327
1328#ifndef EGL_ANDROID_create_native_client_buffer
1329#define EGL_ANDROID_create_native_client_buffer 1
1330#define EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143
1331#define EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001
1332#define EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002
1333#define EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004
1334typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC) (const EGLint *attrib_list);
1335#ifdef EGL_EGLEXT_PROTOTYPES
1336EGLAPI EGLClientBuffer EGLAPIENTRY eglCreateNativeClientBufferANDROID (const EGLint *attrib_list);
1337#endif
1338#endif /* EGL_ANDROID_create_native_client_buffer */
1339
1340#ifndef EGL_ANDROID_framebuffer_target
1341#define EGL_ANDROID_framebuffer_target 1
1342#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147
1343#endif /* EGL_ANDROID_framebuffer_target */
1344
1345#ifndef EGL_ANDROID_front_buffer_auto_refresh
1346#define EGL_ANDROID_front_buffer_auto_refresh 1
1347#define EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C
1348#endif /* EGL_ANDROID_front_buffer_auto_refresh */
1349
1350#ifndef EGL_ANDROID_get_frame_timestamps
1351#define EGL_ANDROID_get_frame_timestamps 1
1352typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
1353#define EGL_TIMESTAMP_PENDING_ANDROID EGL_CAST(EGLnsecsANDROID,-2)
1354#define EGL_TIMESTAMP_INVALID_ANDROID EGL_CAST(EGLnsecsANDROID,-1)
1355#define EGL_TIMESTAMPS_ANDROID 0x3430
1356#define EGL_COMPOSITE_DEADLINE_ANDROID 0x3431
1357#define EGL_COMPOSITE_INTERVAL_ANDROID 0x3432
1358#define EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433
1359#define EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434
1360#define EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435
1361#define EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436
1362#define EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437
1363#define EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438
1364#define EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439
1365#define EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A
1366#define EGL_DEQUEUE_READY_TIME_ANDROID 0x343B
1367#define EGL_READS_DONE_TIME_ANDROID 0x343C
1368typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint name);
1369typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values);
1370typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETNEXTFRAMEIDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId);
1371typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint timestamp);
1372typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values);
1373#ifdef EGL_EGLEXT_PROTOTYPES
1374EGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint name);
1375EGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingANDROID (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values);
1376EGLAPI EGLBoolean EGLAPIENTRY eglGetNextFrameIdANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId);
1377EGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint timestamp);
1378EGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampsANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values);
1379#endif
1380#endif /* EGL_ANDROID_get_frame_timestamps */
1381
1382#ifndef EGL_ANDROID_get_native_client_buffer
1383#define EGL_ANDROID_get_native_client_buffer 1
1384struct AHardwareBuffer;
1385typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC) (const struct AHardwareBuffer *buffer);
1386#ifdef EGL_EGLEXT_PROTOTYPES
1387EGLAPI EGLClientBuffer EGLAPIENTRY eglGetNativeClientBufferANDROID (const struct AHardwareBuffer *buffer);
1388#endif
1389#endif /* EGL_ANDROID_get_native_client_buffer */
1390
1391#ifndef EGL_ANDROID_image_native_buffer
1392#define EGL_ANDROID_image_native_buffer 1
1393#define EGL_NATIVE_BUFFER_ANDROID 0x3140
1394#endif /* EGL_ANDROID_image_native_buffer */
1395
1396#ifndef EGL_ANDROID_native_fence_sync
1397#define EGL_ANDROID_native_fence_sync 1
1398#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144
1399#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145
1400#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
1401#define EGL_NO_NATIVE_FENCE_FD_ANDROID -1
1402typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync);
1403#ifdef EGL_EGLEXT_PROTOTYPES
1404EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync);
1405#endif
1406#endif /* EGL_ANDROID_native_fence_sync */
1407
1408#ifndef EGL_ANDROID_presentation_time
1409#define EGL_ANDROID_presentation_time 1
1410typedef EGLBoolean (EGLAPIENTRYP PFNEGLPRESENTATIONTIMEANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
1411#ifdef EGL_EGLEXT_PROTOTYPES
1412EGLAPI EGLBoolean EGLAPIENTRY eglPresentationTimeANDROID (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
1413#endif
1414#endif /* EGL_ANDROID_presentation_time */
1415
1416#ifndef EGL_ANDROID_recordable
1417#define EGL_ANDROID_recordable 1
1418#define EGL_RECORDABLE_ANDROID 0x3142
1419#endif /* EGL_ANDROID_recordable */
1420
1421#ifndef EGL_ANGLE_d3d_share_handle_client_buffer
1422#define EGL_ANGLE_d3d_share_handle_client_buffer 1
1423#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
1424#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
1425
1426#ifndef EGL_ANGLE_device_d3d
1427#define EGL_ANGLE_device_d3d 1
1428#define EGL_D3D9_DEVICE_ANGLE 0x33A0
1429#define EGL_D3D11_DEVICE_ANGLE 0x33A1
1430#endif /* EGL_ANGLE_device_d3d */
1431
1432#ifndef EGL_ANGLE_query_surface_pointer
1433#define EGL_ANGLE_query_surface_pointer 1
1434typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
1435#ifdef EGL_EGLEXT_PROTOTYPES
1436EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
1437#endif
1438#endif /* EGL_ANGLE_query_surface_pointer */
1439
1440#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle
1441#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1
1442#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
1443
1444#ifndef EGL_ANGLE_sync_control_rate
1445#define EGL_ANGLE_sync_control_rate 1
1446typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMSCRATEANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);
1447#ifdef EGL_EGLEXT_PROTOTYPES
1448EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateANGLE (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);
1449#endif
1450#endif /* EGL_ANGLE_sync_control_rate */
1451
1452#ifndef EGL_ANGLE_window_fixed_size
1453#define EGL_ANGLE_window_fixed_size 1
1454#define EGL_FIXED_SIZE_ANGLE 0x3201
1455#endif /* EGL_ANGLE_window_fixed_size */
1456
1457#ifndef EGL_ARM_image_format
1458#define EGL_ARM_image_format 1
1459#define EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM 0x3287
1460#define EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM 0x3288
1461#endif /* EGL_ARM_image_format */
1462
1463#ifndef EGL_ARM_implicit_external_sync
1464#define EGL_ARM_implicit_external_sync 1
1465#define EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM 0x328A
1466#endif /* EGL_ARM_implicit_external_sync */
1467
1468#ifndef EGL_ARM_pixmap_multisample_discard
1469#define EGL_ARM_pixmap_multisample_discard 1
1470#define EGL_DISCARD_SAMPLES_ARM 0x3286
1471#endif /* EGL_ARM_pixmap_multisample_discard */
1472
1473#ifndef EGL_EXT_bind_to_front
1474#define EGL_EXT_bind_to_front 1
1475#define EGL_FRONT_BUFFER_EXT 0x3464
1476#endif /* EGL_EXT_bind_to_front */
1477
1478#ifndef EGL_EXT_buffer_age
1479#define EGL_EXT_buffer_age 1
1480#define EGL_BUFFER_AGE_EXT 0x313D
1481#endif /* EGL_EXT_buffer_age */
1482
1483#ifndef EGL_EXT_client_extensions
1484#define EGL_EXT_client_extensions 1
1485#endif /* EGL_EXT_client_extensions */
1486
1487#ifndef EGL_EXT_client_sync
1488#define EGL_EXT_client_sync 1
1489#define EGL_SYNC_CLIENT_EXT 0x3364
1490#define EGL_SYNC_CLIENT_SIGNAL_EXT 0x3365
1491typedef EGLBoolean (EGLAPIENTRYP PFNEGLCLIENTSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
1492#ifdef EGL_EGLEXT_PROTOTYPES
1493EGLAPI EGLBoolean EGLAPIENTRY eglClientSignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
1494#endif
1495#endif /* EGL_EXT_client_sync */
1496
1497#ifndef EGL_EXT_compositor
1498#define EGL_EXT_compositor 1
1499#define EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT 0x3460
1500#define EGL_EXTERNAL_REF_ID_EXT 0x3461
1501#define EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT 0x3462
1502#define EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT 0x3463
1503typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC) (const EGLint *external_ref_ids, EGLint num_entries);
1504typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC) (EGLint external_ref_id, const EGLint *context_attributes, EGLint num_entries);
1505typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC) (EGLint external_ref_id, const EGLint *external_win_ids, EGLint num_entries);
1506typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC) (EGLint external_win_id, const EGLint *window_attributes, EGLint num_entries);
1507typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC) (EGLint external_win_id);
1508typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETSIZEEXTPROC) (EGLint external_win_id, EGLint width, EGLint height);
1509typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSWAPPOLICYEXTPROC) (EGLint external_win_id, EGLint policy);
1510#ifdef EGL_EGLEXT_PROTOTYPES
1511EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetContextListEXT (const EGLint *external_ref_ids, EGLint num_entries);
1512EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetContextAttributesEXT (EGLint external_ref_id, const EGLint *context_attributes, EGLint num_entries);
1513EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetWindowListEXT (EGLint external_ref_id, const EGLint *external_win_ids, EGLint num_entries);
1514EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetWindowAttributesEXT (EGLint external_win_id, const EGLint *window_attributes, EGLint num_entries);
1515EGLAPI EGLBoolean EGLAPIENTRY eglCompositorBindTexWindowEXT (EGLint external_win_id);
1516EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetSizeEXT (EGLint external_win_id, EGLint width, EGLint height);
1517EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSwapPolicyEXT (EGLint external_win_id, EGLint policy);
1518#endif
1519#endif /* EGL_EXT_compositor */
1520
1521#ifndef EGL_EXT_config_select_group
1522#define EGL_EXT_config_select_group 1
1523#define EGL_CONFIG_SELECT_GROUP_EXT 0x34C0
1524#endif /* EGL_EXT_config_select_group */
1525
1526#ifndef EGL_EXT_create_context_robustness
1527#define EGL_EXT_create_context_robustness 1
1528#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
1529#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
1530#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE
1531#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF
1532#endif /* EGL_EXT_create_context_robustness */
1533
1534#ifndef EGL_EXT_device_base
1535#define EGL_EXT_device_base 1
1536typedef void *EGLDeviceEXT;
1537#define EGL_NO_DEVICE_EXT EGL_CAST(EGLDeviceEXT,0)
1538#define EGL_BAD_DEVICE_EXT 0x322B
1539#define EGL_DEVICE_EXT 0x322C
1540typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEATTRIBEXTPROC) (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
1541typedef const char *(EGLAPIENTRYP PFNEGLQUERYDEVICESTRINGEXTPROC) (EGLDeviceEXT device, EGLint name);
1542typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICESEXTPROC) (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
1543typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBEXTPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
1544#ifdef EGL_EGLEXT_PROTOTYPES
1545EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceAttribEXT (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
1546EGLAPI const char *EGLAPIENTRY eglQueryDeviceStringEXT (EGLDeviceEXT device, EGLint name);
1547EGLAPI EGLBoolean EGLAPIENTRY eglQueryDevicesEXT (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
1548EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
1549#endif
1550#endif /* EGL_EXT_device_base */
1551
1552#ifndef EGL_EXT_device_drm
1553#define EGL_EXT_device_drm 1
1554#define EGL_DRM_DEVICE_FILE_EXT 0x3233
1555#define EGL_DRM_MASTER_FD_EXT 0x333C
1556#endif /* EGL_EXT_device_drm */
1557
1558#ifndef EGL_EXT_device_drm_render_node
1559#define EGL_EXT_device_drm_render_node 1
1560#define EGL_DRM_RENDER_NODE_FILE_EXT 0x3377
1561#endif /* EGL_EXT_device_drm_render_node */
1562
1563#ifndef EGL_EXT_device_enumeration
1564#define EGL_EXT_device_enumeration 1
1565#endif /* EGL_EXT_device_enumeration */
1566
1567#ifndef EGL_EXT_device_openwf
1568#define EGL_EXT_device_openwf 1
1569#define EGL_OPENWF_DEVICE_ID_EXT 0x3237
1570#define EGL_OPENWF_DEVICE_EXT 0x333D
1571#endif /* EGL_EXT_device_openwf */
1572
1573#ifndef EGL_EXT_device_persistent_id
1574#define EGL_EXT_device_persistent_id 1
1575#define EGL_DEVICE_UUID_EXT 0x335C
1576#define EGL_DRIVER_UUID_EXT 0x335D
1577#define EGL_DRIVER_NAME_EXT 0x335E
1578typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEBINARYEXTPROC) (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);
1579#ifdef EGL_EGLEXT_PROTOTYPES
1580EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceBinaryEXT (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);
1581#endif
1582#endif /* EGL_EXT_device_persistent_id */
1583
1584#ifndef EGL_EXT_device_query
1585#define EGL_EXT_device_query 1
1586#endif /* EGL_EXT_device_query */
1587
1588#ifndef EGL_EXT_device_query_name
1589#define EGL_EXT_device_query_name 1
1590#define EGL_RENDERER_EXT 0x335F
1591#endif /* EGL_EXT_device_query_name */
1592
1593#ifndef EGL_EXT_explicit_device
1594#define EGL_EXT_explicit_device 1
1595#endif /* EGL_EXT_explicit_device */
1596
1597#ifndef EGL_EXT_gl_colorspace_bt2020_linear
1598#define EGL_EXT_gl_colorspace_bt2020_linear 1
1599#define EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
1600#endif /* EGL_EXT_gl_colorspace_bt2020_linear */
1601
1602#ifndef EGL_EXT_gl_colorspace_bt2020_pq
1603#define EGL_EXT_gl_colorspace_bt2020_pq 1
1604#define EGL_GL_COLORSPACE_BT2020_PQ_EXT 0x3340
1605#endif /* EGL_EXT_gl_colorspace_bt2020_pq */
1606
1607#ifndef EGL_EXT_gl_colorspace_display_p3
1608#define EGL_EXT_gl_colorspace_display_p3 1
1609#define EGL_GL_COLORSPACE_DISPLAY_P3_EXT 0x3363
1610#endif /* EGL_EXT_gl_colorspace_display_p3 */
1611
1612#ifndef EGL_EXT_gl_colorspace_display_p3_linear
1613#define EGL_EXT_gl_colorspace_display_p3_linear 1
1614#define EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362
1615#endif /* EGL_EXT_gl_colorspace_display_p3_linear */
1616
1617#ifndef EGL_EXT_gl_colorspace_display_p3_passthrough
1618#define EGL_EXT_gl_colorspace_display_p3_passthrough 1
1619#define EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT 0x3490
1620#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */
1621
1622#ifndef EGL_EXT_gl_colorspace_scrgb
1623#define EGL_EXT_gl_colorspace_scrgb 1
1624#define EGL_GL_COLORSPACE_SCRGB_EXT 0x3351
1625#endif /* EGL_EXT_gl_colorspace_scrgb */
1626
1627#ifndef EGL_EXT_gl_colorspace_scrgb_linear
1628#define EGL_EXT_gl_colorspace_scrgb_linear 1
1629#define EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT 0x3350
1630#endif /* EGL_EXT_gl_colorspace_scrgb_linear */
1631
1632#ifndef EGL_EXT_image_dma_buf_import
1633#define EGL_EXT_image_dma_buf_import 1
1634#define EGL_LINUX_DMA_BUF_EXT 0x3270
1635#define EGL_LINUX_DRM_FOURCC_EXT 0x3271
1636#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
1637#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
1638#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
1639#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275
1640#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276
1641#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277
1642#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278
1643#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279
1644#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A
1645#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B
1646#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C
1647#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
1648#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
1649#define EGL_ITU_REC601_EXT 0x327F
1650#define EGL_ITU_REC709_EXT 0x3280
1651#define EGL_ITU_REC2020_EXT 0x3281
1652#define EGL_YUV_FULL_RANGE_EXT 0x3282
1653#define EGL_YUV_NARROW_RANGE_EXT 0x3283
1654#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284
1655#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285
1656#endif /* EGL_EXT_image_dma_buf_import */
1657
1658#ifndef EGL_EXT_image_dma_buf_import_modifiers
1659#define EGL_EXT_image_dma_buf_import_modifiers 1
1660#define EGL_DMA_BUF_PLANE3_FD_EXT 0x3440
1661#define EGL_DMA_BUF_PLANE3_OFFSET_EXT 0x3441
1662#define EGL_DMA_BUF_PLANE3_PITCH_EXT 0x3442
1663#define EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443
1664#define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444
1665#define EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445
1666#define EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446
1667#define EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447
1668#define EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448
1669#define EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449
1670#define EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A
1671typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFFORMATSEXTPROC) (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats);
1672typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFMODIFIERSEXTPROC) (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers);
1673#ifdef EGL_EGLEXT_PROTOTYPES
1674EGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufFormatsEXT (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats);
1675EGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufModifiersEXT (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers);
1676#endif
1677#endif /* EGL_EXT_image_dma_buf_import_modifiers */
1678
1679#ifndef EGL_EXT_image_gl_colorspace
1680#define EGL_EXT_image_gl_colorspace 1
1681#define EGL_GL_COLORSPACE_DEFAULT_EXT 0x314D
1682#endif /* EGL_EXT_image_gl_colorspace */
1683
1684#ifndef EGL_EXT_image_implicit_sync_control
1685#define EGL_EXT_image_implicit_sync_control 1
1686#define EGL_IMPORT_SYNC_TYPE_EXT 0x3470
1687#define EGL_IMPORT_IMPLICIT_SYNC_EXT 0x3471
1688#define EGL_IMPORT_EXPLICIT_SYNC_EXT 0x3472
1689#endif /* EGL_EXT_image_implicit_sync_control */
1690
1691#ifndef EGL_EXT_multiview_window
1692#define EGL_EXT_multiview_window 1
1693#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134
1694#endif /* EGL_EXT_multiview_window */
1695
1696#ifndef EGL_EXT_output_base
1697#define EGL_EXT_output_base 1
1698typedef void *EGLOutputLayerEXT;
1699typedef void *EGLOutputPortEXT;
1700#define EGL_NO_OUTPUT_LAYER_EXT EGL_CAST(EGLOutputLayerEXT,0)
1701#define EGL_NO_OUTPUT_PORT_EXT EGL_CAST(EGLOutputPortEXT,0)
1702#define EGL_BAD_OUTPUT_LAYER_EXT 0x322D
1703#define EGL_BAD_OUTPUT_PORT_EXT 0x322E
1704#define EGL_SWAP_INTERVAL_EXT 0x322F
1705typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTLAYERSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);
1706typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTPORTSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);
1707typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
1708typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);
1709typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
1710typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
1711typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);
1712typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
1713#ifdef EGL_EGLEXT_PROTOTYPES
1714EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputLayersEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);
1715EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputPortsEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);
1716EGLAPI EGLBoolean EGLAPIENTRY eglOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
1717EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);
1718EGLAPI const char *EGLAPIENTRY eglQueryOutputLayerStringEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
1719EGLAPI EGLBoolean EGLAPIENTRY eglOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
1720EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);
1721EGLAPI const char *EGLAPIENTRY eglQueryOutputPortStringEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
1722#endif
1723#endif /* EGL_EXT_output_base */
1724
1725#ifndef EGL_EXT_output_drm
1726#define EGL_EXT_output_drm 1
1727#define EGL_DRM_CRTC_EXT 0x3234
1728#define EGL_DRM_PLANE_EXT 0x3235
1729#define EGL_DRM_CONNECTOR_EXT 0x3236
1730#endif /* EGL_EXT_output_drm */
1731
1732#ifndef EGL_EXT_output_openwf
1733#define EGL_EXT_output_openwf 1
1734#define EGL_OPENWF_PIPELINE_ID_EXT 0x3238
1735#define EGL_OPENWF_PORT_ID_EXT 0x3239
1736#endif /* EGL_EXT_output_openwf */
1737
1738#ifndef EGL_EXT_pixel_format_float
1739#define EGL_EXT_pixel_format_float 1
1740#define EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
1741#define EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A
1742#define EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
1743#endif /* EGL_EXT_pixel_format_float */
1744
1745#ifndef EGL_EXT_platform_base
1746#define EGL_EXT_platform_base 1
1747typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list);
1748typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
1749typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
1750#ifdef EGL_EGLEXT_PROTOTYPES
1751EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT (EGLenum platform, void *native_display, const EGLint *attrib_list);
1752EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
1753EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
1754#endif
1755#endif /* EGL_EXT_platform_base */
1756
1757#ifndef EGL_EXT_platform_device
1758#define EGL_EXT_platform_device 1
1759#define EGL_PLATFORM_DEVICE_EXT 0x313F
1760#endif /* EGL_EXT_platform_device */
1761
1762#ifndef EGL_EXT_platform_wayland
1763#define EGL_EXT_platform_wayland 1
1764#define EGL_PLATFORM_WAYLAND_EXT 0x31D8
1765#endif /* EGL_EXT_platform_wayland */
1766
1767#ifndef EGL_EXT_platform_x11
1768#define EGL_EXT_platform_x11 1
1769#define EGL_PLATFORM_X11_EXT 0x31D5
1770#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
1771#endif /* EGL_EXT_platform_x11 */
1772
1773#ifndef EGL_EXT_platform_xcb
1774#define EGL_EXT_platform_xcb 1
1775#define EGL_PLATFORM_XCB_EXT 0x31DC
1776#define EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE
1777#endif /* EGL_EXT_platform_xcb */
1778
1779#ifndef EGL_EXT_present_opaque
1780#define EGL_EXT_present_opaque 1
1781#define EGL_PRESENT_OPAQUE_EXT 0x31DF
1782#endif /* EGL_EXT_present_opaque */
1783
1784#ifndef EGL_EXT_protected_content
1785#define EGL_EXT_protected_content 1
1786#define EGL_PROTECTED_CONTENT_EXT 0x32C0
1787#endif /* EGL_EXT_protected_content */
1788
1789#ifndef EGL_EXT_protected_surface
1790#define EGL_EXT_protected_surface 1
1791#endif /* EGL_EXT_protected_surface */
1792
1793#ifndef EGL_EXT_stream_consumer_egloutput
1794#define EGL_EXT_stream_consumer_egloutput 1
1795typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMEROUTPUTEXTPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
1796#ifdef EGL_EGLEXT_PROTOTYPES
1797EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerOutputEXT (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
1798#endif
1799#endif /* EGL_EXT_stream_consumer_egloutput */
1800
1801#ifndef EGL_EXT_surface_CTA861_3_metadata
1802#define EGL_EXT_surface_CTA861_3_metadata 1
1803#define EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT 0x3360
1804#define EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT 0x3361
1805#endif /* EGL_EXT_surface_CTA861_3_metadata */
1806
1807#ifndef EGL_EXT_surface_SMPTE2086_metadata
1808#define EGL_EXT_surface_SMPTE2086_metadata 1
1809#define EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT 0x3341
1810#define EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT 0x3342
1811#define EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT 0x3343
1812#define EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT 0x3344
1813#define EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT 0x3345
1814#define EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT 0x3346
1815#define EGL_SMPTE2086_WHITE_POINT_X_EXT 0x3347
1816#define EGL_SMPTE2086_WHITE_POINT_Y_EXT 0x3348
1817#define EGL_SMPTE2086_MAX_LUMINANCE_EXT 0x3349
1818#define EGL_SMPTE2086_MIN_LUMINANCE_EXT 0x334A
1819#define EGL_METADATA_SCALING_EXT 50000
1820#endif /* EGL_EXT_surface_SMPTE2086_metadata */
1821
1822#ifndef EGL_EXT_surface_compression
1823#define EGL_EXT_surface_compression 1
1824#define EGL_SURFACE_COMPRESSION_EXT 0x34B0
1825#define EGL_SURFACE_COMPRESSION_PLANE1_EXT 0x328E
1826#define EGL_SURFACE_COMPRESSION_PLANE2_EXT 0x328F
1827#define EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x34B1
1828#define EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x34B2
1829#define EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x34B4
1830#define EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x34B5
1831#define EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x34B6
1832#define EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x34B7
1833#define EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x34B8
1834#define EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x34B9
1835#define EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x34BA
1836#define EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x34BB
1837#define EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x34BC
1838#define EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x34BD
1839#define EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x34BE
1840#define EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x34BF
1841typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSUPPORTEDCOMPRESSIONRATESEXTPROC) (EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list, EGLint *rates, EGLint rate_size, EGLint *num_rates);
1842#ifdef EGL_EGLEXT_PROTOTYPES
1843EGLAPI EGLBoolean EGLAPIENTRY eglQuerySupportedCompressionRatesEXT (EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list, EGLint *rates, EGLint rate_size, EGLint *num_rates);
1844#endif
1845#endif /* EGL_EXT_surface_compression */
1846
1847#ifndef EGL_EXT_swap_buffers_with_damage
1848#define EGL_EXT_swap_buffers_with_damage 1
1849typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
1850#ifdef EGL_EGLEXT_PROTOTYPES
1851EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
1852#endif
1853#endif /* EGL_EXT_swap_buffers_with_damage */
1854
1855#ifndef EGL_EXT_sync_reuse
1856#define EGL_EXT_sync_reuse 1
1857typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
1858#ifdef EGL_EGLEXT_PROTOTYPES
1859EGLAPI EGLBoolean EGLAPIENTRY eglUnsignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
1860#endif
1861#endif /* EGL_EXT_sync_reuse */
1862
1863#ifndef EGL_EXT_yuv_surface
1864#define EGL_EXT_yuv_surface 1
1865#define EGL_YUV_ORDER_EXT 0x3301
1866#define EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
1867#define EGL_YUV_SUBSAMPLE_EXT 0x3312
1868#define EGL_YUV_DEPTH_RANGE_EXT 0x3317
1869#define EGL_YUV_CSC_STANDARD_EXT 0x330A
1870#define EGL_YUV_PLANE_BPP_EXT 0x331A
1871#define EGL_YUV_BUFFER_EXT 0x3300
1872#define EGL_YUV_ORDER_YUV_EXT 0x3302
1873#define EGL_YUV_ORDER_YVU_EXT 0x3303
1874#define EGL_YUV_ORDER_YUYV_EXT 0x3304
1875#define EGL_YUV_ORDER_UYVY_EXT 0x3305
1876#define EGL_YUV_ORDER_YVYU_EXT 0x3306
1877#define EGL_YUV_ORDER_VYUY_EXT 0x3307
1878#define EGL_YUV_ORDER_AYUV_EXT 0x3308
1879#define EGL_YUV_SUBSAMPLE_4_2_0_EXT 0x3313
1880#define EGL_YUV_SUBSAMPLE_4_2_2_EXT 0x3314
1881#define EGL_YUV_SUBSAMPLE_4_4_4_EXT 0x3315
1882#define EGL_YUV_DEPTH_RANGE_LIMITED_EXT 0x3318
1883#define EGL_YUV_DEPTH_RANGE_FULL_EXT 0x3319
1884#define EGL_YUV_CSC_STANDARD_601_EXT 0x330B
1885#define EGL_YUV_CSC_STANDARD_709_EXT 0x330C
1886#define EGL_YUV_CSC_STANDARD_2020_EXT 0x330D
1887#define EGL_YUV_PLANE_BPP_0_EXT 0x331B
1888#define EGL_YUV_PLANE_BPP_8_EXT 0x331C
1889#define EGL_YUV_PLANE_BPP_10_EXT 0x331D
1890#endif /* EGL_EXT_yuv_surface */
1891
1892#ifndef EGL_HI_clientpixmap
1893#define EGL_HI_clientpixmap 1
1894struct EGLClientPixmapHI {
1895 void *pData;
1896 EGLint iWidth;
1897 EGLint iHeight;
1898 EGLint iStride;
1899};
1900#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74
1901typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
1902#ifdef EGL_EGLEXT_PROTOTYPES
1903EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
1904#endif
1905#endif /* EGL_HI_clientpixmap */
1906
1907#ifndef EGL_HI_colorformats
1908#define EGL_HI_colorformats 1
1909#define EGL_COLOR_FORMAT_HI 0x8F70
1910#define EGL_COLOR_RGB_HI 0x8F71
1911#define EGL_COLOR_RGBA_HI 0x8F72
1912#define EGL_COLOR_ARGB_HI 0x8F73
1913#endif /* EGL_HI_colorformats */
1914
1915#ifndef EGL_IMG_context_priority
1916#define EGL_IMG_context_priority 1
1917#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
1918#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
1919#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
1920#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
1921#endif /* EGL_IMG_context_priority */
1922
1923#ifndef EGL_IMG_image_plane_attribs
1924#define EGL_IMG_image_plane_attribs 1
1925#define EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105
1926#define EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106
1927#endif /* EGL_IMG_image_plane_attribs */
1928
1929#ifndef EGL_MESA_drm_image
1930#define EGL_MESA_drm_image 1
1931#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
1932#define EGL_DRM_BUFFER_USE_MESA 0x31D1
1933#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
1934#define EGL_DRM_BUFFER_MESA 0x31D3
1935#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
1936#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001
1937#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002
1938#define EGL_DRM_BUFFER_USE_CURSOR_MESA 0x00000004
1939typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list);
1940typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
1941#ifdef EGL_EGLEXT_PROTOTYPES
1942EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list);
1943EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
1944#endif
1945#endif /* EGL_MESA_drm_image */
1946
1947#ifndef EGL_MESA_image_dma_buf_export
1948#define EGL_MESA_image_dma_buf_export 1
1949typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);
1950typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);
1951#ifdef EGL_EGLEXT_PROTOTYPES
1952EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageQueryMESA (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);
1953EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageMESA (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);
1954#endif
1955#endif /* EGL_MESA_image_dma_buf_export */
1956
1957#ifndef EGL_MESA_platform_gbm
1958#define EGL_MESA_platform_gbm 1
1959#define EGL_PLATFORM_GBM_MESA 0x31D7
1960#endif /* EGL_MESA_platform_gbm */
1961
1962#ifndef EGL_MESA_platform_surfaceless
1963#define EGL_MESA_platform_surfaceless 1
1964#define EGL_PLATFORM_SURFACELESS_MESA 0x31DD
1965#endif /* EGL_MESA_platform_surfaceless */
1966
1967#ifndef EGL_MESA_query_driver
1968#define EGL_MESA_query_driver 1
1969typedef char *(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERCONFIGPROC) (EGLDisplay dpy);
1970typedef const char *(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERNAMEPROC) (EGLDisplay dpy);
1971#ifdef EGL_EGLEXT_PROTOTYPES
1972EGLAPI char *EGLAPIENTRY eglGetDisplayDriverConfig (EGLDisplay dpy);
1973EGLAPI const char *EGLAPIENTRY eglGetDisplayDriverName (EGLDisplay dpy);
1974#endif
1975#endif /* EGL_MESA_query_driver */
1976
1977#ifndef EGL_NOK_swap_region
1978#define EGL_NOK_swap_region 1
1979typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
1980#ifdef EGL_EGLEXT_PROTOTYPES
1981EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegionNOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
1982#endif
1983#endif /* EGL_NOK_swap_region */
1984
1985#ifndef EGL_NOK_swap_region2
1986#define EGL_NOK_swap_region2 1
1987typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGION2NOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
1988#ifdef EGL_EGLEXT_PROTOTYPES
1989EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegion2NOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
1990#endif
1991#endif /* EGL_NOK_swap_region2 */
1992
1993#ifndef EGL_NOK_texture_from_pixmap
1994#define EGL_NOK_texture_from_pixmap 1
1995#define EGL_Y_INVERTED_NOK 0x307F
1996#endif /* EGL_NOK_texture_from_pixmap */
1997
1998#ifndef EGL_NV_3dvision_surface
1999#define EGL_NV_3dvision_surface 1
2000#define EGL_AUTO_STEREO_NV 0x3136
2001#endif /* EGL_NV_3dvision_surface */
2002
2003#ifndef EGL_NV_context_priority_realtime
2004#define EGL_NV_context_priority_realtime 1
2005#define EGL_CONTEXT_PRIORITY_REALTIME_NV 0x3357
2006#endif /* EGL_NV_context_priority_realtime */
2007
2008#ifndef EGL_NV_coverage_sample
2009#define EGL_NV_coverage_sample 1
2010#define EGL_COVERAGE_BUFFERS_NV 0x30E0
2011#define EGL_COVERAGE_SAMPLES_NV 0x30E1
2012#endif /* EGL_NV_coverage_sample */
2013
2014#ifndef EGL_NV_coverage_sample_resolve
2015#define EGL_NV_coverage_sample_resolve 1
2016#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131
2017#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
2018#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
2019#endif /* EGL_NV_coverage_sample_resolve */
2020
2021#ifndef EGL_NV_cuda_event
2022#define EGL_NV_cuda_event 1
2023#define EGL_CUDA_EVENT_HANDLE_NV 0x323B
2024#define EGL_SYNC_CUDA_EVENT_NV 0x323C
2025#define EGL_SYNC_CUDA_EVENT_COMPLETE_NV 0x323D
2026#endif /* EGL_NV_cuda_event */
2027
2028#ifndef EGL_NV_depth_nonlinear
2029#define EGL_NV_depth_nonlinear 1
2030#define EGL_DEPTH_ENCODING_NV 0x30E2
2031#define EGL_DEPTH_ENCODING_NONE_NV 0
2032#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
2033#endif /* EGL_NV_depth_nonlinear */
2034
2035#ifndef EGL_NV_device_cuda
2036#define EGL_NV_device_cuda 1
2037#define EGL_CUDA_DEVICE_NV 0x323A
2038#endif /* EGL_NV_device_cuda */
2039
2040#ifndef EGL_NV_native_query
2041#define EGL_NV_native_query 1
2042typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC) (EGLDisplay dpy, EGLNativeDisplayType *display_id);
2043typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
2044typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
2045#ifdef EGL_EGLEXT_PROTOTYPES
2046EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType *display_id);
2047EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
2048EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
2049#endif
2050#endif /* EGL_NV_native_query */
2051
2052#ifndef EGL_NV_post_convert_rounding
2053#define EGL_NV_post_convert_rounding 1
2054#endif /* EGL_NV_post_convert_rounding */
2055
2056#ifndef EGL_NV_post_sub_buffer
2057#define EGL_NV_post_sub_buffer 1
2058#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE
2059typedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
2060#ifdef EGL_EGLEXT_PROTOTYPES
2061EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
2062#endif
2063#endif /* EGL_NV_post_sub_buffer */
2064
2065#ifndef EGL_NV_quadruple_buffer
2066#define EGL_NV_quadruple_buffer 1
2067#define EGL_QUADRUPLE_BUFFER_NV 0x3231
2068#endif /* EGL_NV_quadruple_buffer */
2069
2070#ifndef EGL_NV_robustness_video_memory_purge
2071#define EGL_NV_robustness_video_memory_purge 1
2072#define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C
2073#endif /* EGL_NV_robustness_video_memory_purge */
2074
2075#ifndef EGL_NV_stream_consumer_eglimage
2076#define EGL_NV_stream_consumer_eglimage 1
2077#define EGL_STREAM_CONSUMER_IMAGE_NV 0x3373
2078#define EGL_STREAM_IMAGE_ADD_NV 0x3374
2079#define EGL_STREAM_IMAGE_REMOVE_NV 0x3375
2080#define EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376
2081typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR *modifiers, const EGLAttrib *attrib_list);
2082typedef EGLint (EGLAPIENTRYP PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);
2083typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMACQUIREIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);
2084typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMRELEASEIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
2085#ifdef EGL_EGLEXT_PROTOTYPES
2086EGLAPI EGLBoolean EGLAPIENTRY eglStreamImageConsumerConnectNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR *modifiers, const EGLAttrib *attrib_list);
2087EGLAPI EGLint EGLAPIENTRY eglQueryStreamConsumerEventNV (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);
2088EGLAPI EGLBoolean EGLAPIENTRY eglStreamAcquireImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);
2089EGLAPI EGLBoolean EGLAPIENTRY eglStreamReleaseImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
2090#endif
2091#endif /* EGL_NV_stream_consumer_eglimage */
2092
2093#ifndef EGL_NV_stream_consumer_gltexture_yuv
2094#define EGL_NV_stream_consumer_gltexture_yuv 1
2095#define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
2096#define EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D
2097#define EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E
2098typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
2099#ifdef EGL_EGLEXT_PROTOTYPES
2100EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalAttribsNV (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
2101#endif
2102#endif /* EGL_NV_stream_consumer_gltexture_yuv */
2103
2104#ifndef EGL_NV_stream_cross_display
2105#define EGL_NV_stream_cross_display 1
2106#define EGL_STREAM_CROSS_DISPLAY_NV 0x334E
2107#endif /* EGL_NV_stream_cross_display */
2108
2109#ifndef EGL_NV_stream_cross_object
2110#define EGL_NV_stream_cross_object 1
2111#define EGL_STREAM_CROSS_OBJECT_NV 0x334D
2112#endif /* EGL_NV_stream_cross_object */
2113
2114#ifndef EGL_NV_stream_cross_partition
2115#define EGL_NV_stream_cross_partition 1
2116#define EGL_STREAM_CROSS_PARTITION_NV 0x323F
2117#endif /* EGL_NV_stream_cross_partition */
2118
2119#ifndef EGL_NV_stream_cross_process
2120#define EGL_NV_stream_cross_process 1
2121#define EGL_STREAM_CROSS_PROCESS_NV 0x3245
2122#endif /* EGL_NV_stream_cross_process */
2123
2124#ifndef EGL_NV_stream_cross_system
2125#define EGL_NV_stream_cross_system 1
2126#define EGL_STREAM_CROSS_SYSTEM_NV 0x334F
2127#endif /* EGL_NV_stream_cross_system */
2128
2129#ifndef EGL_NV_stream_dma
2130#define EGL_NV_stream_dma 1
2131#define EGL_STREAM_DMA_NV 0x3371
2132#define EGL_STREAM_DMA_SERVER_NV 0x3372
2133#endif /* EGL_NV_stream_dma */
2134
2135#ifndef EGL_NV_stream_fifo_next
2136#define EGL_NV_stream_fifo_next 1
2137#define EGL_PENDING_FRAME_NV 0x3329
2138#define EGL_STREAM_TIME_PENDING_NV 0x332A
2139#endif /* EGL_NV_stream_fifo_next */
2140
2141#ifndef EGL_NV_stream_fifo_synchronous
2142#define EGL_NV_stream_fifo_synchronous 1
2143#define EGL_STREAM_FIFO_SYNCHRONOUS_NV 0x3336
2144#endif /* EGL_NV_stream_fifo_synchronous */
2145
2146#ifndef EGL_NV_stream_flush
2147#define EGL_NV_stream_flush 1
2148typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMFLUSHNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);
2149#ifdef EGL_EGLEXT_PROTOTYPES
2150EGLAPI EGLBoolean EGLAPIENTRY eglStreamFlushNV (EGLDisplay dpy, EGLStreamKHR stream);
2151#endif
2152#endif /* EGL_NV_stream_flush */
2153
2154#ifndef EGL_NV_stream_frame_limits
2155#define EGL_NV_stream_frame_limits 1
2156#define EGL_PRODUCER_MAX_FRAME_HINT_NV 0x3337
2157#define EGL_CONSUMER_MAX_FRAME_HINT_NV 0x3338
2158#endif /* EGL_NV_stream_frame_limits */
2159
2160#ifndef EGL_NV_stream_metadata
2161#define EGL_NV_stream_metadata 1
2162#define EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250
2163#define EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251
2164#define EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252
2165#define EGL_PRODUCER_METADATA_NV 0x3253
2166#define EGL_CONSUMER_METADATA_NV 0x3254
2167#define EGL_PENDING_METADATA_NV 0x3328
2168#define EGL_METADATA0_SIZE_NV 0x3255
2169#define EGL_METADATA1_SIZE_NV 0x3256
2170#define EGL_METADATA2_SIZE_NV 0x3257
2171#define EGL_METADATA3_SIZE_NV 0x3258
2172#define EGL_METADATA0_TYPE_NV 0x3259
2173#define EGL_METADATA1_TYPE_NV 0x325A
2174#define EGL_METADATA2_TYPE_NV 0x325B
2175#define EGL_METADATA3_TYPE_NV 0x325C
2176typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBNVPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
2177typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data);
2178typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data);
2179#ifdef EGL_EGLEXT_PROTOTYPES
2180EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribNV (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
2181EGLAPI EGLBoolean EGLAPIENTRY eglSetStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data);
2182EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data);
2183#endif
2184#endif /* EGL_NV_stream_metadata */
2185
2186#ifndef EGL_NV_stream_origin
2187#define EGL_NV_stream_origin 1
2188#define EGL_STREAM_FRAME_ORIGIN_X_NV 0x3366
2189#define EGL_STREAM_FRAME_ORIGIN_Y_NV 0x3367
2190#define EGL_STREAM_FRAME_MAJOR_AXIS_NV 0x3368
2191#define EGL_CONSUMER_AUTO_ORIENTATION_NV 0x3369
2192#define EGL_PRODUCER_AUTO_ORIENTATION_NV 0x336A
2193#define EGL_LEFT_NV 0x336B
2194#define EGL_RIGHT_NV 0x336C
2195#define EGL_TOP_NV 0x336D
2196#define EGL_BOTTOM_NV 0x336E
2197#define EGL_X_AXIS_NV 0x336F
2198#define EGL_Y_AXIS_NV 0x3370
2199#endif /* EGL_NV_stream_origin */
2200
2201#ifndef EGL_NV_stream_remote
2202#define EGL_NV_stream_remote 1
2203#define EGL_STREAM_STATE_INITIALIZING_NV 0x3240
2204#define EGL_STREAM_TYPE_NV 0x3241
2205#define EGL_STREAM_PROTOCOL_NV 0x3242
2206#define EGL_STREAM_ENDPOINT_NV 0x3243
2207#define EGL_STREAM_LOCAL_NV 0x3244
2208#define EGL_STREAM_PRODUCER_NV 0x3247
2209#define EGL_STREAM_CONSUMER_NV 0x3248
2210#define EGL_STREAM_PROTOCOL_FD_NV 0x3246
2211#endif /* EGL_NV_stream_remote */
2212
2213#ifndef EGL_NV_stream_reset
2214#define EGL_NV_stream_reset 1
2215#define EGL_SUPPORT_RESET_NV 0x3334
2216#define EGL_SUPPORT_REUSE_NV 0x3335
2217typedef EGLBoolean (EGLAPIENTRYP PFNEGLRESETSTREAMNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);
2218#ifdef EGL_EGLEXT_PROTOTYPES
2219EGLAPI EGLBoolean EGLAPIENTRY eglResetStreamNV (EGLDisplay dpy, EGLStreamKHR stream);
2220#endif
2221#endif /* EGL_NV_stream_reset */
2222
2223#ifndef EGL_NV_stream_socket
2224#define EGL_NV_stream_socket 1
2225#define EGL_STREAM_PROTOCOL_SOCKET_NV 0x324B
2226#define EGL_SOCKET_HANDLE_NV 0x324C
2227#define EGL_SOCKET_TYPE_NV 0x324D
2228#endif /* EGL_NV_stream_socket */
2229
2230#ifndef EGL_NV_stream_socket_inet
2231#define EGL_NV_stream_socket_inet 1
2232#define EGL_SOCKET_TYPE_INET_NV 0x324F
2233#endif /* EGL_NV_stream_socket_inet */
2234
2235#ifndef EGL_NV_stream_socket_unix
2236#define EGL_NV_stream_socket_unix 1
2237#define EGL_SOCKET_TYPE_UNIX_NV 0x324E
2238#endif /* EGL_NV_stream_socket_unix */
2239
2240#ifndef EGL_NV_stream_sync
2241#define EGL_NV_stream_sync 1
2242#define EGL_SYNC_NEW_FRAME_NV 0x321F
2243typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESTREAMSYNCNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
2244#ifdef EGL_EGLEXT_PROTOTYPES
2245EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
2246#endif
2247#endif /* EGL_NV_stream_sync */
2248
2249#ifndef EGL_NV_sync
2250#define EGL_NV_sync 1
2251typedef void *EGLSyncNV;
2252typedef khronos_utime_nanoseconds_t EGLTimeNV;
2253#ifdef KHRONOS_SUPPORT_INT64
2254#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
2255#define EGL_SYNC_STATUS_NV 0x30E7
2256#define EGL_SIGNALED_NV 0x30E8
2257#define EGL_UNSIGNALED_NV 0x30E9
2258#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001
2259#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull
2260#define EGL_ALREADY_SIGNALED_NV 0x30EA
2261#define EGL_TIMEOUT_EXPIRED_NV 0x30EB
2262#define EGL_CONDITION_SATISFIED_NV 0x30EC
2263#define EGL_SYNC_TYPE_NV 0x30ED
2264#define EGL_SYNC_CONDITION_NV 0x30EE
2265#define EGL_SYNC_FENCE_NV 0x30EF
2266#define EGL_NO_SYNC_NV EGL_CAST(EGLSyncNV,0)
2267typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
2268typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync);
2269typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync);
2270typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
2271typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode);
2272typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value);
2273#ifdef EGL_EGLEXT_PROTOTYPES
2274EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
2275EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV (EGLSyncNV sync);
2276EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV (EGLSyncNV sync);
2277EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
2278EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV (EGLSyncNV sync, EGLenum mode);
2279EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value);
2280#endif
2281#endif /* KHRONOS_SUPPORT_INT64 */
2282#endif /* EGL_NV_sync */
2283
2284#ifndef EGL_NV_system_time
2285#define EGL_NV_system_time 1
2286typedef khronos_utime_nanoseconds_t EGLuint64NV;
2287#ifdef KHRONOS_SUPPORT_INT64
2288typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void);
2289typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void);
2290#ifdef EGL_EGLEXT_PROTOTYPES
2291EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV (void);
2292EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void);
2293#endif
2294#endif /* KHRONOS_SUPPORT_INT64 */
2295#endif /* EGL_NV_system_time */
2296
2297#ifndef EGL_NV_triple_buffer
2298#define EGL_NV_triple_buffer 1
2299#define EGL_TRIPLE_BUFFER_NV 0x3230
2300#endif /* EGL_NV_triple_buffer */
2301
2302#ifndef EGL_TIZEN_image_native_buffer
2303#define EGL_TIZEN_image_native_buffer 1
2304#define EGL_NATIVE_BUFFER_TIZEN 0x32A0
2305#endif /* EGL_TIZEN_image_native_buffer */
2306
2307#ifndef EGL_TIZEN_image_native_surface
2308#define EGL_TIZEN_image_native_surface 1
2309#define EGL_NATIVE_SURFACE_TIZEN 0x32A1
2310#endif /* EGL_TIZEN_image_native_surface */
2311
2312#ifndef EGL_WL_bind_wayland_display
2313#define EGL_WL_bind_wayland_display 1
2314#define PFNEGLBINDWAYLANDDISPLAYWL PFNEGLBINDWAYLANDDISPLAYWLPROC
2315#define PFNEGLUNBINDWAYLANDDISPLAYWL PFNEGLUNBINDWAYLANDDISPLAYWLPROC
2316#define PFNEGLQUERYWAYLANDBUFFERWL PFNEGLQUERYWAYLANDBUFFERWLPROC
2317struct wl_display;
2318struct wl_resource;
2319#define EGL_WAYLAND_BUFFER_WL 0x31D5
2320#define EGL_WAYLAND_PLANE_WL 0x31D6
2321#define EGL_TEXTURE_Y_U_V_WL 0x31D7
2322#define EGL_TEXTURE_Y_UV_WL 0x31D8
2323#define EGL_TEXTURE_Y_XUXV_WL 0x31D9
2324#define EGL_TEXTURE_EXTERNAL_WL 0x31DA
2325#define EGL_WAYLAND_Y_INVERTED_WL 0x31DB
2326typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display *display);
2327typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display *display);
2328typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWLPROC) (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
2329#ifdef EGL_EGLEXT_PROTOTYPES
2330EGLAPI EGLBoolean EGLAPIENTRY eglBindWaylandDisplayWL (EGLDisplay dpy, struct wl_display *display);
2331EGLAPI EGLBoolean EGLAPIENTRY eglUnbindWaylandDisplayWL (EGLDisplay dpy, struct wl_display *display);
2332EGLAPI EGLBoolean EGLAPIENTRY eglQueryWaylandBufferWL (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
2333#endif
2334#endif /* EGL_WL_bind_wayland_display */
2335
2336#ifndef EGL_WL_create_wayland_buffer_from_image
2337#define EGL_WL_create_wayland_buffer_from_image 1
2338#define PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC
2339struct wl_buffer;
2340typedef struct wl_buffer *(EGLAPIENTRYP PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC) (EGLDisplay dpy, EGLImageKHR image);
2341#ifdef EGL_EGLEXT_PROTOTYPES
2342EGLAPI struct wl_buffer *EGLAPIENTRY eglCreateWaylandBufferFromImageWL (EGLDisplay dpy, EGLImageKHR image);
2343#endif
2344#endif /* EGL_WL_create_wayland_buffer_from_image */
2345
2346#ifdef __cplusplus
2347}
2348#endif
2349
2350#endif /* __eglext_h_ */
2351
2352#endif /* _MSC_VER */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_endian.h b/src/contrib/SDL-2.30.2/include/SDL_endian.h
new file mode 100644
index 0000000..591ccac
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_endian.h
@@ -0,0 +1,348 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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__) || defined(__DragonFly__)
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/* predefs from newer gcc and clang versions: */
69#elif defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__BYTE_ORDER__)
70#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
71#define SDL_BYTEORDER SDL_LIL_ENDIAN
72#elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
73#define SDL_BYTEORDER SDL_BIG_ENDIAN
74#else
75#error Unsupported endianness
76#endif /**/
77#else
78#if defined(__hppa__) || \
79 defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \
80 (defined(__MIPS__) && defined(__MIPSEB__)) || \
81 defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || defined(__PPC__) || \
82 defined(__sparc__)
83#define SDL_BYTEORDER SDL_BIG_ENDIAN
84#else
85#define SDL_BYTEORDER SDL_LIL_ENDIAN
86#endif
87#endif /* __linux__ */
88#endif /* !SDL_BYTEORDER */
89
90#ifndef SDL_FLOATWORDORDER /* Not defined in SDL_config.h? */
91/* predefs from newer gcc versions: */
92#if defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__FLOAT_WORD_ORDER__)
93#if (__FLOAT_WORD_ORDER__ == __ORDER_LITTLE_ENDIAN__)
94#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN
95#elif (__FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__)
96#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN
97#else
98#error Unsupported endianness
99#endif /**/
100#elif defined(__MAVERICK__)
101/* For Maverick, float words are always little-endian. */
102#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN
103#elif (defined(__arm__) || defined(__thumb__)) && !defined(__VFP_FP__) && !defined(__ARM_EABI__)
104/* For FPA, float words are always big-endian. */
105#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN
106#else
107/* By default, assume that floats words follow the memory system mode. */
108#define SDL_FLOATWORDORDER SDL_BYTEORDER
109#endif /* __FLOAT_WORD_ORDER__ */
110#endif /* !SDL_FLOATWORDORDER */
111
112
113#include "begin_code.h"
114/* Set up for C function definitions, even when using C++ */
115#ifdef __cplusplus
116extern "C" {
117#endif
118
119/**
120 * \file SDL_endian.h
121 */
122
123/* various modern compilers may have builtin swap */
124#if defined(__GNUC__) || defined(__clang__)
125# define HAS_BUILTIN_BSWAP16 (_SDL_HAS_BUILTIN(__builtin_bswap16)) || \
126 (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8))
127# define HAS_BUILTIN_BSWAP32 (_SDL_HAS_BUILTIN(__builtin_bswap32)) || \
128 (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
129# define HAS_BUILTIN_BSWAP64 (_SDL_HAS_BUILTIN(__builtin_bswap64)) || \
130 (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
131
132 /* this one is broken */
133# define HAS_BROKEN_BSWAP (__GNUC__ == 2 && __GNUC_MINOR__ <= 95)
134#else
135# define HAS_BUILTIN_BSWAP16 0
136# define HAS_BUILTIN_BSWAP32 0
137# define HAS_BUILTIN_BSWAP64 0
138# define HAS_BROKEN_BSWAP 0
139#endif
140
141#if HAS_BUILTIN_BSWAP16
142#define SDL_Swap16(x) __builtin_bswap16(x)
143#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL)
144#pragma intrinsic(_byteswap_ushort)
145#define SDL_Swap16(x) _byteswap_ushort(x)
146#elif defined(__i386__) && !HAS_BROKEN_BSWAP
147SDL_FORCE_INLINE Uint16
148SDL_Swap16(Uint16 x)
149{
150 __asm__("xchgb %b0,%h0": "=q"(x):"0"(x));
151 return x;
152}
153#elif defined(__x86_64__)
154SDL_FORCE_INLINE Uint16
155SDL_Swap16(Uint16 x)
156{
157 __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x));
158 return x;
159}
160#elif (defined(__powerpc__) || defined(__ppc__))
161SDL_FORCE_INLINE Uint16
162SDL_Swap16(Uint16 x)
163{
164 int result;
165
166 __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x));
167 return (Uint16)result;
168}
169#elif (defined(__m68k__) && !defined(__mcoldfire__))
170SDL_FORCE_INLINE Uint16
171SDL_Swap16(Uint16 x)
172{
173 __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc");
174 return x;
175}
176#elif defined(__WATCOMC__) && defined(__386__)
177extern __inline Uint16 SDL_Swap16(Uint16);
178#pragma aux SDL_Swap16 = \
179 "xchg al, ah" \
180 parm [ax] \
181 modify [ax];
182#else
183SDL_FORCE_INLINE Uint16
184SDL_Swap16(Uint16 x)
185{
186 return SDL_static_cast(Uint16, ((x << 8) | (x >> 8)));
187}
188#endif
189
190#if HAS_BUILTIN_BSWAP32
191#define SDL_Swap32(x) __builtin_bswap32(x)
192#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL)
193#pragma intrinsic(_byteswap_ulong)
194#define SDL_Swap32(x) _byteswap_ulong(x)
195#elif defined(__i386__) && !HAS_BROKEN_BSWAP
196SDL_FORCE_INLINE Uint32
197SDL_Swap32(Uint32 x)
198{
199 __asm__("bswap %0": "=r"(x):"0"(x));
200 return x;
201}
202#elif defined(__x86_64__)
203SDL_FORCE_INLINE Uint32
204SDL_Swap32(Uint32 x)
205{
206 __asm__("bswapl %0": "=r"(x):"0"(x));
207 return x;
208}
209#elif (defined(__powerpc__) || defined(__ppc__))
210SDL_FORCE_INLINE Uint32
211SDL_Swap32(Uint32 x)
212{
213 Uint32 result;
214
215 __asm__("rlwimi %0,%2,24,16,23": "=&r"(result): "0" (x>>24), "r"(x));
216 __asm__("rlwimi %0,%2,8,8,15" : "=&r"(result): "0" (result), "r"(x));
217 __asm__("rlwimi %0,%2,24,0,7" : "=&r"(result): "0" (result), "r"(x));
218 return result;
219}
220#elif (defined(__m68k__) && !defined(__mcoldfire__))
221SDL_FORCE_INLINE Uint32
222SDL_Swap32(Uint32 x)
223{
224 __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc");
225 return x;
226}
227#elif defined(__WATCOMC__) && defined(__386__)
228extern __inline Uint32 SDL_Swap32(Uint32);
229#pragma aux SDL_Swap32 = \
230 "bswap eax" \
231 parm [eax] \
232 modify [eax];
233#else
234SDL_FORCE_INLINE Uint32
235SDL_Swap32(Uint32 x)
236{
237 return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) |
238 ((x >> 8) & 0x0000FF00) | (x >> 24)));
239}
240#endif
241
242#if HAS_BUILTIN_BSWAP64
243#define SDL_Swap64(x) __builtin_bswap64(x)
244#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL)
245#pragma intrinsic(_byteswap_uint64)
246#define SDL_Swap64(x) _byteswap_uint64(x)
247#elif defined(__i386__) && !HAS_BROKEN_BSWAP
248SDL_FORCE_INLINE Uint64
249SDL_Swap64(Uint64 x)
250{
251 union {
252 struct {
253 Uint32 a, b;
254 } s;
255 Uint64 u;
256 } v;
257 v.u = x;
258 __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1"
259 : "=r"(v.s.a), "=r"(v.s.b)
260 : "0" (v.s.a), "1"(v.s.b));
261 return v.u;
262}
263#elif defined(__x86_64__)
264SDL_FORCE_INLINE Uint64
265SDL_Swap64(Uint64 x)
266{
267 __asm__("bswapq %0": "=r"(x):"0"(x));
268 return x;
269}
270#elif defined(__WATCOMC__) && defined(__386__)
271extern __inline Uint64 SDL_Swap64(Uint64);
272#pragma aux SDL_Swap64 = \
273 "bswap eax" \
274 "bswap edx" \
275 "xchg eax,edx" \
276 parm [eax edx] \
277 modify [eax edx];
278#else
279SDL_FORCE_INLINE Uint64
280SDL_Swap64(Uint64 x)
281{
282 Uint32 hi, lo;
283
284 /* Separate into high and low 32-bit values and swap them */
285 lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
286 x >>= 32;
287 hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
288 x = SDL_Swap32(lo);
289 x <<= 32;
290 x |= SDL_Swap32(hi);
291 return (x);
292}
293#endif
294
295
296SDL_FORCE_INLINE float
297SDL_SwapFloat(float x)
298{
299 union {
300 float f;
301 Uint32 ui32;
302 } swapper;
303 swapper.f = x;
304 swapper.ui32 = SDL_Swap32(swapper.ui32);
305 return swapper.f;
306}
307
308/* remove extra macros */
309#undef HAS_BROKEN_BSWAP
310#undef HAS_BUILTIN_BSWAP16
311#undef HAS_BUILTIN_BSWAP32
312#undef HAS_BUILTIN_BSWAP64
313
314/**
315 * \name Swap to native
316 * Byteswap item from the specified endianness to the native endianness.
317 */
318/* @{ */
319#if SDL_BYTEORDER == SDL_LIL_ENDIAN
320#define SDL_SwapLE16(X) (X)
321#define SDL_SwapLE32(X) (X)
322#define SDL_SwapLE64(X) (X)
323#define SDL_SwapFloatLE(X) (X)
324#define SDL_SwapBE16(X) SDL_Swap16(X)
325#define SDL_SwapBE32(X) SDL_Swap32(X)
326#define SDL_SwapBE64(X) SDL_Swap64(X)
327#define SDL_SwapFloatBE(X) SDL_SwapFloat(X)
328#else
329#define SDL_SwapLE16(X) SDL_Swap16(X)
330#define SDL_SwapLE32(X) SDL_Swap32(X)
331#define SDL_SwapLE64(X) SDL_Swap64(X)
332#define SDL_SwapFloatLE(X) SDL_SwapFloat(X)
333#define SDL_SwapBE16(X) (X)
334#define SDL_SwapBE32(X) (X)
335#define SDL_SwapBE64(X) (X)
336#define SDL_SwapFloatBE(X) (X)
337#endif
338/* @} *//* Swap to native */
339
340/* Ends C function definitions when using C++ */
341#ifdef __cplusplus
342}
343#endif
344#include "close_code.h"
345
346#endif /* SDL_endian_h_ */
347
348/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_error.h b/src/contrib/SDL-2.30.2/include/SDL_error.h
new file mode 100644
index 0000000..2df6463
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_error.h
@@ -0,0 +1,163 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_events.h b/src/contrib/SDL-2.30.2/include/SDL_events.h
new file mode 100644
index 0000000..eccbba2
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_events.h
@@ -0,0 +1,1159 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 SDL_TEXTEDITING_EXT, /**< Extended keyboard text editing (composition) */
106
107 /* Mouse events */
108 SDL_MOUSEMOTION = 0x400, /**< Mouse moved */
109 SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */
110 SDL_MOUSEBUTTONUP, /**< Mouse button released */
111 SDL_MOUSEWHEEL, /**< Mouse wheel motion */
112
113 /* Joystick events */
114 SDL_JOYAXISMOTION = 0x600, /**< Joystick axis motion */
115 SDL_JOYBALLMOTION, /**< Joystick trackball motion */
116 SDL_JOYHATMOTION, /**< Joystick hat position change */
117 SDL_JOYBUTTONDOWN, /**< Joystick button pressed */
118 SDL_JOYBUTTONUP, /**< Joystick button released */
119 SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */
120 SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */
121 SDL_JOYBATTERYUPDATED, /**< Joystick battery level change */
122
123 /* Game controller events */
124 SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */
125 SDL_CONTROLLERBUTTONDOWN, /**< Game controller button pressed */
126 SDL_CONTROLLERBUTTONUP, /**< Game controller button released */
127 SDL_CONTROLLERDEVICEADDED, /**< A new Game controller has been inserted into the system */
128 SDL_CONTROLLERDEVICEREMOVED, /**< An opened Game controller has been removed */
129 SDL_CONTROLLERDEVICEREMAPPED, /**< The controller mapping was updated */
130 SDL_CONTROLLERTOUCHPADDOWN, /**< Game controller touchpad was touched */
131 SDL_CONTROLLERTOUCHPADMOTION, /**< Game controller touchpad finger was moved */
132 SDL_CONTROLLERTOUCHPADUP, /**< Game controller touchpad finger was lifted */
133 SDL_CONTROLLERSENSORUPDATE, /**< Game controller sensor was updated */
134 SDL_CONTROLLERUPDATECOMPLETE_RESERVED_FOR_SDL3,
135 SDL_CONTROLLERSTEAMHANDLEUPDATED, /**< Game controller Steam handle has changed */
136
137 /* Touch events */
138 SDL_FINGERDOWN = 0x700,
139 SDL_FINGERUP,
140 SDL_FINGERMOTION,
141
142 /* Gesture events */
143 SDL_DOLLARGESTURE = 0x800,
144 SDL_DOLLARRECORD,
145 SDL_MULTIGESTURE,
146
147 /* Clipboard events */
148 SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard or primary selection changed */
149
150 /* Drag and drop events */
151 SDL_DROPFILE = 0x1000, /**< The system requests a file open */
152 SDL_DROPTEXT, /**< text/plain drag-and-drop event */
153 SDL_DROPBEGIN, /**< A new set of drops is beginning (NULL filename) */
154 SDL_DROPCOMPLETE, /**< Current set of drops is now complete (NULL filename) */
155
156 /* Audio hotplug events */
157 SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */
158 SDL_AUDIODEVICEREMOVED, /**< An audio device has been removed. */
159
160 /* Sensor events */
161 SDL_SENSORUPDATE = 0x1200, /**< A sensor was updated */
162
163 /* Render events */
164 SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */
165 SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */
166
167 /* Internal events */
168 SDL_POLLSENTINEL = 0x7F00, /**< Signals the end of an event poll cycle */
169
170 /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use,
171 * and should be allocated with SDL_RegisterEvents()
172 */
173 SDL_USEREVENT = 0x8000,
174
175 /**
176 * This last event is only for bounding internal arrays
177 */
178 SDL_LASTEVENT = 0xFFFF
179} SDL_EventType;
180
181/**
182 * \brief Fields shared by every event
183 */
184typedef struct SDL_CommonEvent
185{
186 Uint32 type;
187 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
188} SDL_CommonEvent;
189
190/**
191 * \brief Display state change event data (event.display.*)
192 */
193typedef struct SDL_DisplayEvent
194{
195 Uint32 type; /**< ::SDL_DISPLAYEVENT */
196 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
197 Uint32 display; /**< The associated display index */
198 Uint8 event; /**< ::SDL_DisplayEventID */
199 Uint8 padding1;
200 Uint8 padding2;
201 Uint8 padding3;
202 Sint32 data1; /**< event dependent data */
203} SDL_DisplayEvent;
204
205/**
206 * \brief Window state change event data (event.window.*)
207 */
208typedef struct SDL_WindowEvent
209{
210 Uint32 type; /**< ::SDL_WINDOWEVENT */
211 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
212 Uint32 windowID; /**< The associated window */
213 Uint8 event; /**< ::SDL_WindowEventID */
214 Uint8 padding1;
215 Uint8 padding2;
216 Uint8 padding3;
217 Sint32 data1; /**< event dependent data */
218 Sint32 data2; /**< event dependent data */
219} SDL_WindowEvent;
220
221/**
222 * \brief Keyboard button event structure (event.key.*)
223 */
224typedef struct SDL_KeyboardEvent
225{
226 Uint32 type; /**< ::SDL_KEYDOWN or ::SDL_KEYUP */
227 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
228 Uint32 windowID; /**< The window with keyboard focus, if any */
229 Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
230 Uint8 repeat; /**< Non-zero if this is a key repeat */
231 Uint8 padding2;
232 Uint8 padding3;
233 SDL_Keysym keysym; /**< The key that was pressed or released */
234} SDL_KeyboardEvent;
235
236#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32)
237/**
238 * \brief Keyboard text editing event structure (event.edit.*)
239 */
240typedef struct SDL_TextEditingEvent
241{
242 Uint32 type; /**< ::SDL_TEXTEDITING */
243 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
244 Uint32 windowID; /**< The window with keyboard focus, if any */
245 char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; /**< The editing text */
246 Sint32 start; /**< The start cursor of selected editing text */
247 Sint32 length; /**< The length of selected editing text */
248} SDL_TextEditingEvent;
249
250/**
251 * \brief Extended keyboard text editing event structure (event.editExt.*) when text would be
252 * truncated if stored in the text buffer SDL_TextEditingEvent
253 */
254typedef struct SDL_TextEditingExtEvent
255{
256 Uint32 type; /**< ::SDL_TEXTEDITING_EXT */
257 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
258 Uint32 windowID; /**< The window with keyboard focus, if any */
259 char* text; /**< The editing text, which should be freed with SDL_free(), and will not be NULL */
260 Sint32 start; /**< The start cursor of selected editing text */
261 Sint32 length; /**< The length of selected editing text */
262} SDL_TextEditingExtEvent;
263
264#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32)
265/**
266 * \brief Keyboard text input event structure (event.text.*)
267 */
268typedef struct SDL_TextInputEvent
269{
270 Uint32 type; /**< ::SDL_TEXTINPUT */
271 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
272 Uint32 windowID; /**< The window with keyboard focus, if any */
273 char text[SDL_TEXTINPUTEVENT_TEXT_SIZE]; /**< The input text */
274} SDL_TextInputEvent;
275
276/**
277 * \brief Mouse motion event structure (event.motion.*)
278 */
279typedef struct SDL_MouseMotionEvent
280{
281 Uint32 type; /**< ::SDL_MOUSEMOTION */
282 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
283 Uint32 windowID; /**< The window with mouse focus, if any */
284 Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
285 Uint32 state; /**< The current button state */
286 Sint32 x; /**< X coordinate, relative to window */
287 Sint32 y; /**< Y coordinate, relative to window */
288 Sint32 xrel; /**< The relative motion in the X direction */
289 Sint32 yrel; /**< The relative motion in the Y direction */
290} SDL_MouseMotionEvent;
291
292/**
293 * \brief Mouse button event structure (event.button.*)
294 */
295typedef struct SDL_MouseButtonEvent
296{
297 Uint32 type; /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */
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 Uint8 button; /**< The mouse button index */
302 Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
303 Uint8 clicks; /**< 1 for single-click, 2 for double-click, etc. */
304 Uint8 padding1;
305 Sint32 x; /**< X coordinate, relative to window */
306 Sint32 y; /**< Y coordinate, relative to window */
307} SDL_MouseButtonEvent;
308
309/**
310 * \brief Mouse wheel event structure (event.wheel.*)
311 */
312typedef struct SDL_MouseWheelEvent
313{
314 Uint32 type; /**< ::SDL_MOUSEWHEEL */
315 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
316 Uint32 windowID; /**< The window with mouse focus, if any */
317 Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
318 Sint32 x; /**< The amount scrolled horizontally, positive to the right and negative to the left */
319 Sint32 y; /**< The amount scrolled vertically, positive away from the user and negative toward the user */
320 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 */
321 float preciseX; /**< The amount scrolled horizontally, positive to the right and negative to the left, with float precision (added in 2.0.18) */
322 float preciseY; /**< The amount scrolled vertically, positive away from the user and negative toward the user, with float precision (added in 2.0.18) */
323 Sint32 mouseX; /**< X coordinate, relative to window (added in 2.26.0) */
324 Sint32 mouseY; /**< Y coordinate, relative to window (added in 2.26.0) */
325} SDL_MouseWheelEvent;
326
327/**
328 * \brief Joystick axis motion event structure (event.jaxis.*)
329 */
330typedef struct SDL_JoyAxisEvent
331{
332 Uint32 type; /**< ::SDL_JOYAXISMOTION */
333 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
334 SDL_JoystickID which; /**< The joystick instance id */
335 Uint8 axis; /**< The joystick axis index */
336 Uint8 padding1;
337 Uint8 padding2;
338 Uint8 padding3;
339 Sint16 value; /**< The axis value (range: -32768 to 32767) */
340 Uint16 padding4;
341} SDL_JoyAxisEvent;
342
343/**
344 * \brief Joystick trackball motion event structure (event.jball.*)
345 */
346typedef struct SDL_JoyBallEvent
347{
348 Uint32 type; /**< ::SDL_JOYBALLMOTION */
349 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
350 SDL_JoystickID which; /**< The joystick instance id */
351 Uint8 ball; /**< The joystick trackball index */
352 Uint8 padding1;
353 Uint8 padding2;
354 Uint8 padding3;
355 Sint16 xrel; /**< The relative motion in the X direction */
356 Sint16 yrel; /**< The relative motion in the Y direction */
357} SDL_JoyBallEvent;
358
359/**
360 * \brief Joystick hat position change event structure (event.jhat.*)
361 */
362typedef struct SDL_JoyHatEvent
363{
364 Uint32 type; /**< ::SDL_JOYHATMOTION */
365 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
366 SDL_JoystickID which; /**< The joystick instance id */
367 Uint8 hat; /**< The joystick hat index */
368 Uint8 value; /**< The hat position value.
369 * \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP
370 * \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT
371 * \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN
372 *
373 * Note that zero means the POV is centered.
374 */
375 Uint8 padding1;
376 Uint8 padding2;
377} SDL_JoyHatEvent;
378
379/**
380 * \brief Joystick button event structure (event.jbutton.*)
381 */
382typedef struct SDL_JoyButtonEvent
383{
384 Uint32 type; /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */
385 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
386 SDL_JoystickID which; /**< The joystick instance id */
387 Uint8 button; /**< The joystick button index */
388 Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
389 Uint8 padding1;
390 Uint8 padding2;
391} SDL_JoyButtonEvent;
392
393/**
394 * \brief Joystick device event structure (event.jdevice.*)
395 */
396typedef struct SDL_JoyDeviceEvent
397{
398 Uint32 type; /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */
399 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
400 Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED event */
401} SDL_JoyDeviceEvent;
402
403/**
404 * \brief Joysick battery level change event structure (event.jbattery.*)
405 */
406typedef struct SDL_JoyBatteryEvent
407{
408 Uint32 type; /**< ::SDL_JOYBATTERYUPDATED */
409 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
410 SDL_JoystickID which; /**< The joystick instance id */
411 SDL_JoystickPowerLevel level; /**< The joystick battery level */
412} SDL_JoyBatteryEvent;
413
414/**
415 * \brief Game controller axis motion event structure (event.caxis.*)
416 */
417typedef struct SDL_ControllerAxisEvent
418{
419 Uint32 type; /**< ::SDL_CONTROLLERAXISMOTION */
420 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
421 SDL_JoystickID which; /**< The joystick instance id */
422 Uint8 axis; /**< The controller axis (SDL_GameControllerAxis) */
423 Uint8 padding1;
424 Uint8 padding2;
425 Uint8 padding3;
426 Sint16 value; /**< The axis value (range: -32768 to 32767) */
427 Uint16 padding4;
428} SDL_ControllerAxisEvent;
429
430
431/**
432 * \brief Game controller button event structure (event.cbutton.*)
433 */
434typedef struct SDL_ControllerButtonEvent
435{
436 Uint32 type; /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */
437 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
438 SDL_JoystickID which; /**< The joystick instance id */
439 Uint8 button; /**< The controller button (SDL_GameControllerButton) */
440 Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
441 Uint8 padding1;
442 Uint8 padding2;
443} SDL_ControllerButtonEvent;
444
445
446/**
447 * \brief Controller device event structure (event.cdevice.*)
448 */
449typedef struct SDL_ControllerDeviceEvent
450{
451 Uint32 type; /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, ::SDL_CONTROLLERDEVICEREMAPPED, or ::SDL_CONTROLLERSTEAMHANDLEUPDATED */
452 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
453 Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */
454} SDL_ControllerDeviceEvent;
455
456/**
457 * \brief Game controller touchpad event structure (event.ctouchpad.*)
458 */
459typedef struct SDL_ControllerTouchpadEvent
460{
461 Uint32 type; /**< ::SDL_CONTROLLERTOUCHPADDOWN or ::SDL_CONTROLLERTOUCHPADMOTION or ::SDL_CONTROLLERTOUCHPADUP */
462 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
463 SDL_JoystickID which; /**< The joystick instance id */
464 Sint32 touchpad; /**< The index of the touchpad */
465 Sint32 finger; /**< The index of the finger on the touchpad */
466 float x; /**< Normalized in the range 0...1 with 0 being on the left */
467 float y; /**< Normalized in the range 0...1 with 0 being at the top */
468 float pressure; /**< Normalized in the range 0...1 */
469} SDL_ControllerTouchpadEvent;
470
471/**
472 * \brief Game controller sensor event structure (event.csensor.*)
473 */
474typedef struct SDL_ControllerSensorEvent
475{
476 Uint32 type; /**< ::SDL_CONTROLLERSENSORUPDATE */
477 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
478 SDL_JoystickID which; /**< The joystick instance id */
479 Sint32 sensor; /**< The type of the sensor, one of the values of ::SDL_SensorType */
480 float data[3]; /**< Up to 3 values from the sensor, as defined in SDL_sensor.h */
481 Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */
482} SDL_ControllerSensorEvent;
483
484/**
485 * \brief Audio device event structure (event.adevice.*)
486 */
487typedef struct SDL_AudioDeviceEvent
488{
489 Uint32 type; /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */
490 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
491 Uint32 which; /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */
492 Uint8 iscapture; /**< zero if an output device, non-zero if a capture device. */
493 Uint8 padding1;
494 Uint8 padding2;
495 Uint8 padding3;
496} SDL_AudioDeviceEvent;
497
498
499/**
500 * \brief Touch finger event structure (event.tfinger.*)
501 */
502typedef struct SDL_TouchFingerEvent
503{
504 Uint32 type; /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */
505 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
506 SDL_TouchID touchId; /**< The touch device id */
507 SDL_FingerID fingerId;
508 float x; /**< Normalized in the range 0...1 */
509 float y; /**< Normalized in the range 0...1 */
510 float dx; /**< Normalized in the range -1...1 */
511 float dy; /**< Normalized in the range -1...1 */
512 float pressure; /**< Normalized in the range 0...1 */
513 Uint32 windowID; /**< The window underneath the finger, if any */
514} SDL_TouchFingerEvent;
515
516
517/**
518 * \brief Multiple Finger Gesture Event (event.mgesture.*)
519 */
520typedef struct SDL_MultiGestureEvent
521{
522 Uint32 type; /**< ::SDL_MULTIGESTURE */
523 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
524 SDL_TouchID touchId; /**< The touch device id */
525 float dTheta;
526 float dDist;
527 float x;
528 float y;
529 Uint16 numFingers;
530 Uint16 padding;
531} SDL_MultiGestureEvent;
532
533
534/**
535 * \brief Dollar Gesture Event (event.dgesture.*)
536 */
537typedef struct SDL_DollarGestureEvent
538{
539 Uint32 type; /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */
540 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
541 SDL_TouchID touchId; /**< The touch device id */
542 SDL_GestureID gestureId;
543 Uint32 numFingers;
544 float error;
545 float x; /**< Normalized center of gesture */
546 float y; /**< Normalized center of gesture */
547} SDL_DollarGestureEvent;
548
549
550/**
551 * \brief An event used to request a file open by the system (event.drop.*)
552 * This event is enabled by default, you can disable it with SDL_EventState().
553 * \note If this event is enabled, you must free the filename in the event.
554 */
555typedef struct SDL_DropEvent
556{
557 Uint32 type; /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */
558 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
559 char *file; /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */
560 Uint32 windowID; /**< The window that was dropped on, if any */
561} SDL_DropEvent;
562
563
564/**
565 * \brief Sensor event structure (event.sensor.*)
566 */
567typedef struct SDL_SensorEvent
568{
569 Uint32 type; /**< ::SDL_SENSORUPDATE */
570 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
571 Sint32 which; /**< The instance ID of the sensor */
572 float data[6]; /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */
573 Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */
574} SDL_SensorEvent;
575
576/**
577 * \brief The "quit requested" event
578 */
579typedef struct SDL_QuitEvent
580{
581 Uint32 type; /**< ::SDL_QUIT */
582 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
583} SDL_QuitEvent;
584
585/**
586 * \brief A user-defined event type (event.user.*)
587 */
588typedef struct SDL_UserEvent
589{
590 Uint32 type; /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */
591 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
592 Uint32 windowID; /**< The associated window if any */
593 Sint32 code; /**< User defined event code */
594 void *data1; /**< User defined data pointer */
595 void *data2; /**< User defined data pointer */
596} SDL_UserEvent;
597
598
599struct SDL_SysWMmsg;
600typedef struct SDL_SysWMmsg SDL_SysWMmsg;
601
602/**
603 * \brief A video driver dependent system event (event.syswm.*)
604 * This event is disabled by default, you can enable it with SDL_EventState()
605 *
606 * \note If you want to use this event, you should include SDL_syswm.h.
607 */
608typedef struct SDL_SysWMEvent
609{
610 Uint32 type; /**< ::SDL_SYSWMEVENT */
611 Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
612 SDL_SysWMmsg *msg; /**< driver dependent data, defined in SDL_syswm.h */
613} SDL_SysWMEvent;
614
615/**
616 * \brief General event structure
617 */
618typedef union SDL_Event
619{
620 Uint32 type; /**< Event type, shared with all events */
621 SDL_CommonEvent common; /**< Common event data */
622 SDL_DisplayEvent display; /**< Display event data */
623 SDL_WindowEvent window; /**< Window event data */
624 SDL_KeyboardEvent key; /**< Keyboard event data */
625 SDL_TextEditingEvent edit; /**< Text editing event data */
626 SDL_TextEditingExtEvent editExt; /**< Extended text editing event data */
627 SDL_TextInputEvent text; /**< Text input event data */
628 SDL_MouseMotionEvent motion; /**< Mouse motion event data */
629 SDL_MouseButtonEvent button; /**< Mouse button event data */
630 SDL_MouseWheelEvent wheel; /**< Mouse wheel event data */
631 SDL_JoyAxisEvent jaxis; /**< Joystick axis event data */
632 SDL_JoyBallEvent jball; /**< Joystick ball event data */
633 SDL_JoyHatEvent jhat; /**< Joystick hat event data */
634 SDL_JoyButtonEvent jbutton; /**< Joystick button event data */
635 SDL_JoyDeviceEvent jdevice; /**< Joystick device change event data */
636 SDL_JoyBatteryEvent jbattery; /**< Joystick battery event data */
637 SDL_ControllerAxisEvent caxis; /**< Game Controller axis event data */
638 SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */
639 SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */
640 SDL_ControllerTouchpadEvent ctouchpad; /**< Game Controller touchpad event data */
641 SDL_ControllerSensorEvent csensor; /**< Game Controller sensor event data */
642 SDL_AudioDeviceEvent adevice; /**< Audio device event data */
643 SDL_SensorEvent sensor; /**< Sensor event data */
644 SDL_QuitEvent quit; /**< Quit request event data */
645 SDL_UserEvent user; /**< Custom event data */
646 SDL_SysWMEvent syswm; /**< System dependent window event data */
647 SDL_TouchFingerEvent tfinger; /**< Touch finger event data */
648 SDL_MultiGestureEvent mgesture; /**< Gesture event data */
649 SDL_DollarGestureEvent dgesture; /**< Gesture event data */
650 SDL_DropEvent drop; /**< Drag and drop event data */
651
652 /* This is necessary for ABI compatibility between Visual C++ and GCC.
653 Visual C++ will respect the push pack pragma and use 52 bytes (size of
654 SDL_TextEditingEvent, the largest structure for 32-bit and 64-bit
655 architectures) for this union, and GCC will use the alignment of the
656 largest datatype within the union, which is 8 bytes on 64-bit
657 architectures.
658
659 So... we'll add padding to force the size to be 56 bytes for both.
660
661 On architectures where pointers are 16 bytes, this needs rounding up to
662 the next multiple of 16, 64, and on architectures where pointers are
663 even larger the size of SDL_UserEvent will dominate as being 3 pointers.
664 */
665 Uint8 padding[sizeof(void *) <= 8 ? 56 : sizeof(void *) == 16 ? 64 : 3 * sizeof(void *)];
666} SDL_Event;
667
668/* Make sure we haven't broken binary compatibility */
669SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == sizeof(((SDL_Event *)NULL)->padding));
670
671
672/* Function prototypes */
673
674/**
675 * Pump the event loop, gathering events from the input devices.
676 *
677 * This function updates the event queue and internal input device state.
678 *
679 * **WARNING**: This should only be run in the thread that initialized the
680 * video subsystem, and for extra safety, you should consider only doing those
681 * things on the main thread in any case.
682 *
683 * SDL_PumpEvents() gathers all the pending input information from devices and
684 * places it in the event queue. Without calls to SDL_PumpEvents() no events
685 * would ever be placed on the queue. Often the need for calls to
686 * SDL_PumpEvents() is hidden from the user since SDL_PollEvent() and
687 * SDL_WaitEvent() implicitly call SDL_PumpEvents(). However, if you are not
688 * polling or waiting for events (e.g. you are filtering them), then you must
689 * call SDL_PumpEvents() to force an event queue update.
690 *
691 * \since This function is available since SDL 2.0.0.
692 *
693 * \sa SDL_PollEvent
694 * \sa SDL_WaitEvent
695 */
696extern DECLSPEC void SDLCALL SDL_PumpEvents(void);
697
698/* @{ */
699typedef enum
700{
701 SDL_ADDEVENT,
702 SDL_PEEKEVENT,
703 SDL_GETEVENT
704} SDL_eventaction;
705
706/**
707 * Check the event queue for messages and optionally return them.
708 *
709 * `action` may be any of the following:
710 *
711 * - `SDL_ADDEVENT`: up to `numevents` events will be added to the back of the
712 * event queue.
713 * - `SDL_PEEKEVENT`: `numevents` events at the front of the event queue,
714 * within the specified minimum and maximum type, will be returned to the
715 * caller and will _not_ be removed from the queue.
716 * - `SDL_GETEVENT`: up to `numevents` events at the front of the event queue,
717 * within the specified minimum and maximum type, will be returned to the
718 * caller and will be removed from the queue.
719 *
720 * You may have to call SDL_PumpEvents() before calling this function.
721 * Otherwise, the events may not be ready to be filtered when you call
722 * SDL_PeepEvents().
723 *
724 * This function is thread-safe.
725 *
726 * \param events destination buffer for the retrieved events
727 * \param numevents if action is SDL_ADDEVENT, the number of events to add
728 * back to the event queue; if action is SDL_PEEKEVENT or
729 * SDL_GETEVENT, the maximum number of events to retrieve
730 * \param action action to take; see [[#action|Remarks]] for details
731 * \param minType minimum value of the event type to be considered;
732 * SDL_FIRSTEVENT is a safe choice
733 * \param maxType maximum value of the event type to be considered;
734 * SDL_LASTEVENT is a safe choice
735 * \returns the number of events actually stored or a negative error code on
736 * failure; call SDL_GetError() for more information.
737 *
738 * \since This function is available since SDL 2.0.0.
739 *
740 * \sa SDL_PollEvent
741 * \sa SDL_PumpEvents
742 * \sa SDL_PushEvent
743 */
744extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents,
745 SDL_eventaction action,
746 Uint32 minType, Uint32 maxType);
747/* @} */
748
749/**
750 * Check for the existence of a certain event type in the event queue.
751 *
752 * If you need to check for a range of event types, use SDL_HasEvents()
753 * instead.
754 *
755 * \param type the type of event to be queried; see SDL_EventType for details
756 * \returns SDL_TRUE if events matching `type` are present, or SDL_FALSE if
757 * events matching `type` are not present.
758 *
759 * \since This function is available since SDL 2.0.0.
760 *
761 * \sa SDL_HasEvents
762 */
763extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type);
764
765
766/**
767 * Check for the existence of certain event types in the event queue.
768 *
769 * If you need to check for a single event type, use SDL_HasEvent() instead.
770 *
771 * \param minType the low end of event type to be queried, inclusive; see
772 * SDL_EventType for details
773 * \param maxType the high end of event type to be queried, inclusive; see
774 * SDL_EventType for details
775 * \returns SDL_TRUE if events with type >= `minType` and <= `maxType` are
776 * present, or SDL_FALSE if not.
777 *
778 * \since This function is available since SDL 2.0.0.
779 *
780 * \sa SDL_HasEvents
781 */
782extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType);
783
784/**
785 * Clear events of a specific type from the event queue.
786 *
787 * This will unconditionally remove any events from the queue that match
788 * `type`. If you need to remove a range of event types, use SDL_FlushEvents()
789 * instead.
790 *
791 * It's also normal to just ignore events you don't care about in your event
792 * loop without calling this function.
793 *
794 * This function only affects currently queued events. If you want to make
795 * sure that all pending OS events are flushed, you can call SDL_PumpEvents()
796 * on the main thread immediately before the flush call.
797 *
798 * \param type the type of event to be cleared; see SDL_EventType for details
799 *
800 * \since This function is available since SDL 2.0.0.
801 *
802 * \sa SDL_FlushEvents
803 */
804extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type);
805
806/**
807 * Clear events of a range of types from the event queue.
808 *
809 * This will unconditionally remove any events from the queue that are in the
810 * range of `minType` to `maxType`, inclusive. If you need to remove a single
811 * event type, use SDL_FlushEvent() instead.
812 *
813 * It's also normal to just ignore events you don't care about in your event
814 * loop without calling this function.
815 *
816 * This function only affects currently queued events. If you want to make
817 * sure that all pending OS events are flushed, you can call SDL_PumpEvents()
818 * on the main thread immediately before the flush call.
819 *
820 * \param minType the low end of event type to be cleared, inclusive; see
821 * SDL_EventType for details
822 * \param maxType the high end of event type to be cleared, inclusive; see
823 * SDL_EventType for details
824 *
825 * \since This function is available since SDL 2.0.0.
826 *
827 * \sa SDL_FlushEvent
828 */
829extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType);
830
831/**
832 * Poll for currently pending events.
833 *
834 * If `event` is not NULL, the next event is removed from the queue and stored
835 * in the SDL_Event structure pointed to by `event`. The 1 returned refers to
836 * this event, immediately stored in the SDL Event structure -- not an event
837 * to follow.
838 *
839 * If `event` is NULL, it simply returns 1 if there is an event in the queue,
840 * but will not remove it from the queue.
841 *
842 * As this function may implicitly call SDL_PumpEvents(), you can only call
843 * this function in the thread that set the video mode.
844 *
845 * SDL_PollEvent() is the favored way of receiving system events since it can
846 * be done from the main loop and does not suspend the main loop while waiting
847 * on an event to be posted.
848 *
849 * The common practice is to fully process the event queue once every frame,
850 * usually as a first step before updating the game's state:
851 *
852 * ```c
853 * while (game_is_still_running) {
854 * SDL_Event event;
855 * while (SDL_PollEvent(&event)) { // poll until all events are handled!
856 * // decide what to do with this event.
857 * }
858 *
859 * // update game state, draw the current frame
860 * }
861 * ```
862 *
863 * \param event the SDL_Event structure to be filled with the next event from
864 * the queue, or NULL
865 * \returns 1 if there is a pending event or 0 if there are none available.
866 *
867 * \since This function is available since SDL 2.0.0.
868 *
869 * \sa SDL_GetEventFilter
870 * \sa SDL_PeepEvents
871 * \sa SDL_PushEvent
872 * \sa SDL_SetEventFilter
873 * \sa SDL_WaitEvent
874 * \sa SDL_WaitEventTimeout
875 */
876extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event);
877
878/**
879 * Wait indefinitely for the next available event.
880 *
881 * If `event` is not NULL, the next event is removed from the queue and stored
882 * in the SDL_Event structure pointed to by `event`.
883 *
884 * As this function may implicitly call SDL_PumpEvents(), you can only call
885 * this function in the thread that initialized the video subsystem.
886 *
887 * \param event the SDL_Event structure to be filled in with the next event
888 * from the queue, or NULL
889 * \returns 1 on success or 0 if there was an error while waiting for events;
890 * call SDL_GetError() for more information.
891 *
892 * \since This function is available since SDL 2.0.0.
893 *
894 * \sa SDL_PollEvent
895 * \sa SDL_PumpEvents
896 * \sa SDL_WaitEventTimeout
897 */
898extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event);
899
900/**
901 * Wait until the specified timeout (in milliseconds) for the next available
902 * event.
903 *
904 * If `event` is not NULL, the next event is removed from the queue and stored
905 * in the SDL_Event structure pointed to by `event`.
906 *
907 * As this function may implicitly call SDL_PumpEvents(), you can only call
908 * this function in the thread that initialized the video subsystem.
909 *
910 * \param event the SDL_Event structure to be filled in with the next event
911 * from the queue, or NULL
912 * \param timeout the maximum number of milliseconds to wait for the next
913 * available event
914 * \returns 1 on success or 0 if there was an error while waiting for events;
915 * call SDL_GetError() for more information. This also returns 0 if
916 * the timeout elapsed without an event arriving.
917 *
918 * \since This function is available since SDL 2.0.0.
919 *
920 * \sa SDL_PollEvent
921 * \sa SDL_PumpEvents
922 * \sa SDL_WaitEvent
923 */
924extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event,
925 int timeout);
926
927/**
928 * Add an event to the event queue.
929 *
930 * The event queue can actually be used as a two way communication channel.
931 * Not only can events be read from the queue, but the user can also push
932 * their own events onto it. `event` is a pointer to the event structure you
933 * wish to push onto the queue. The event is copied into the queue, and the
934 * caller may dispose of the memory pointed to after SDL_PushEvent() returns.
935 *
936 * Note: Pushing device input events onto the queue doesn't modify the state
937 * of the device within SDL.
938 *
939 * This function is thread-safe, and can be called from other threads safely.
940 *
941 * Note: Events pushed onto the queue with SDL_PushEvent() get passed through
942 * the event filter but events added with SDL_PeepEvents() do not.
943 *
944 * For pushing application-specific events, please use SDL_RegisterEvents() to
945 * get an event type that does not conflict with other code that also wants
946 * its own custom event types.
947 *
948 * \param event the SDL_Event to be added to the queue
949 * \returns 1 on success, 0 if the event was filtered, or a negative error
950 * code on failure; call SDL_GetError() for more information. A
951 * common reason for error is the event queue being full.
952 *
953 * \since This function is available since SDL 2.0.0.
954 *
955 * \sa SDL_PeepEvents
956 * \sa SDL_PollEvent
957 * \sa SDL_RegisterEvents
958 */
959extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event);
960
961/**
962 * A function pointer used for callbacks that watch the event queue.
963 *
964 * \param userdata what was passed as `userdata` to SDL_SetEventFilter()
965 * or SDL_AddEventWatch, etc
966 * \param event the event that triggered the callback
967 * \returns 1 to permit event to be added to the queue, and 0 to disallow
968 * it. When used with SDL_AddEventWatch, the return value is ignored.
969 *
970 * \sa SDL_SetEventFilter
971 * \sa SDL_AddEventWatch
972 */
973typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event);
974
975/**
976 * Set up a filter to process all events before they change internal state and
977 * are posted to the internal event queue.
978 *
979 * If the filter function returns 1 when called, then the event will be added
980 * to the internal queue. If it returns 0, then the event will be dropped from
981 * the queue, but the internal state will still be updated. This allows
982 * selective filtering of dynamically arriving events.
983 *
984 * **WARNING**: Be very careful of what you do in the event filter function,
985 * as it may run in a different thread!
986 *
987 * On platforms that support it, if the quit event is generated by an
988 * interrupt signal (e.g. pressing Ctrl-C), it will be delivered to the
989 * application at the next event poll.
990 *
991 * There is one caveat when dealing with the ::SDL_QuitEvent event type. The
992 * event filter is only called when the window manager desires to close the
993 * application window. If the event filter returns 1, then the window will be
994 * closed, otherwise the window will remain open if possible.
995 *
996 * Note: Disabled events never make it to the event filter function; see
997 * SDL_EventState().
998 *
999 * Note: If you just want to inspect events without filtering, you should use
1000 * SDL_AddEventWatch() instead.
1001 *
1002 * Note: Events pushed onto the queue with SDL_PushEvent() get passed through
1003 * the event filter, but events pushed onto the queue with SDL_PeepEvents() do
1004 * not.
1005 *
1006 * \param filter An SDL_EventFilter function to call when an event happens
1007 * \param userdata a pointer that is passed to `filter`
1008 *
1009 * \since This function is available since SDL 2.0.0.
1010 *
1011 * \sa SDL_AddEventWatch
1012 * \sa SDL_EventState
1013 * \sa SDL_GetEventFilter
1014 * \sa SDL_PeepEvents
1015 * \sa SDL_PushEvent
1016 */
1017extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter,
1018 void *userdata);
1019
1020/**
1021 * Query the current event filter.
1022 *
1023 * This function can be used to "chain" filters, by saving the existing filter
1024 * before replacing it with a function that will call that saved filter.
1025 *
1026 * \param filter the current callback function will be stored here
1027 * \param userdata the pointer that is passed to the current event filter will
1028 * be stored here
1029 * \returns SDL_TRUE on success or SDL_FALSE if there is no event filter set.
1030 *
1031 * \since This function is available since SDL 2.0.0.
1032 *
1033 * \sa SDL_SetEventFilter
1034 */
1035extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter,
1036 void **userdata);
1037
1038/**
1039 * Add a callback to be triggered when an event is added to the event queue.
1040 *
1041 * `filter` will be called when an event happens, and its return value is
1042 * ignored.
1043 *
1044 * **WARNING**: Be very careful of what you do in the event filter function,
1045 * as it may run in a different thread!
1046 *
1047 * If the quit event is generated by a signal (e.g. SIGINT), it will bypass
1048 * the internal queue and be delivered to the watch callback immediately, and
1049 * arrive at the next event poll.
1050 *
1051 * Note: the callback is called for events posted by the user through
1052 * SDL_PushEvent(), but not for disabled events, nor for events by a filter
1053 * callback set with SDL_SetEventFilter(), nor for events posted by the user
1054 * through SDL_PeepEvents().
1055 *
1056 * \param filter an SDL_EventFilter function to call when an event happens.
1057 * \param userdata a pointer that is passed to `filter`
1058 *
1059 * \since This function is available since SDL 2.0.0.
1060 *
1061 * \sa SDL_DelEventWatch
1062 * \sa SDL_SetEventFilter
1063 */
1064extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter,
1065 void *userdata);
1066
1067/**
1068 * Remove an event watch callback added with SDL_AddEventWatch().
1069 *
1070 * This function takes the same input as SDL_AddEventWatch() to identify and
1071 * delete the corresponding callback.
1072 *
1073 * \param filter the function originally passed to SDL_AddEventWatch()
1074 * \param userdata the pointer originally passed to SDL_AddEventWatch()
1075 *
1076 * \since This function is available since SDL 2.0.0.
1077 *
1078 * \sa SDL_AddEventWatch
1079 */
1080extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter,
1081 void *userdata);
1082
1083/**
1084 * Run a specific filter function on the current event queue, removing any
1085 * events for which the filter returns 0.
1086 *
1087 * See SDL_SetEventFilter() for more information. Unlike SDL_SetEventFilter(),
1088 * this function does not change the filter permanently, it only uses the
1089 * supplied filter until this function returns.
1090 *
1091 * \param filter the SDL_EventFilter function to call when an event happens
1092 * \param userdata a pointer that is passed to `filter`
1093 *
1094 * \since This function is available since SDL 2.0.0.
1095 *
1096 * \sa SDL_GetEventFilter
1097 * \sa SDL_SetEventFilter
1098 */
1099extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter,
1100 void *userdata);
1101
1102/* @{ */
1103#define SDL_QUERY -1
1104#define SDL_IGNORE 0
1105#define SDL_DISABLE 0
1106#define SDL_ENABLE 1
1107
1108/**
1109 * Set the state of processing events by type.
1110 *
1111 * `state` may be any of the following:
1112 *
1113 * - `SDL_QUERY`: returns the current processing state of the specified event
1114 * - `SDL_IGNORE` (aka `SDL_DISABLE`): the event will automatically be dropped
1115 * from the event queue and will not be filtered
1116 * - `SDL_ENABLE`: the event will be processed normally
1117 *
1118 * \param type the type of event; see SDL_EventType for details
1119 * \param state how to process the event
1120 * \returns `SDL_DISABLE` or `SDL_ENABLE`, representing the processing state
1121 * of the event before this function makes any changes to it.
1122 *
1123 * \since This function is available since SDL 2.0.0.
1124 *
1125 * \sa SDL_GetEventState
1126 */
1127extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state);
1128/* @} */
1129#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY)
1130
1131/**
1132 * Allocate a set of user-defined events, and return the beginning event
1133 * number for that set of events.
1134 *
1135 * Calling this function with `numevents` <= 0 is an error and will return
1136 * (Uint32)-1.
1137 *
1138 * Note, (Uint32)-1 means the maximum unsigned 32-bit integer value (or
1139 * 0xFFFFFFFF), but is clearer to write.
1140 *
1141 * \param numevents the number of events to be allocated
1142 * \returns the beginning event number, or (Uint32)-1 if there are not enough
1143 * user-defined events left.
1144 *
1145 * \since This function is available since SDL 2.0.0.
1146 *
1147 * \sa SDL_PushEvent
1148 */
1149extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents);
1150
1151/* Ends C function definitions when using C++ */
1152#ifdef __cplusplus
1153}
1154#endif
1155#include "close_code.h"
1156
1157#endif /* SDL_events_h_ */
1158
1159/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_filesystem.h b/src/contrib/SDL-2.30.2/include/SDL_filesystem.h
new file mode 100644
index 0000000..0749889
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_filesystem.h
@@ -0,0 +1,149 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 * **Nintendo 3DS Specific Functionality**: This function returns "romfs"
64 * directory of the application as it is uncommon to store resources outside
65 * the executable. As such it is not a writable directory.
66 *
67 * The returned path is guaranteed to end with a path separator ('\\' on
68 * Windows, '/' on most other platforms).
69 *
70 * The pointer returned is owned by the caller. Please call SDL_free() on the
71 * pointer when done with it.
72 *
73 * \returns an absolute path in UTF-8 encoding to the application data
74 * directory. NULL will be returned on error or when the platform
75 * doesn't implement this functionality, call SDL_GetError() for more
76 * information.
77 *
78 * \since This function is available since SDL 2.0.1.
79 *
80 * \sa SDL_GetPrefPath
81 */
82extern DECLSPEC char *SDLCALL SDL_GetBasePath(void);
83
84/**
85 * Get the user-and-app-specific path where files can be written.
86 *
87 * Get the "pref dir". This is meant to be where users can write personal
88 * files (preferences and save games, etc) that are specific to your
89 * application. This directory is unique per user, per application.
90 *
91 * This function will decide the appropriate location in the native
92 * filesystem, create the directory if necessary, and return a string of the
93 * absolute path to the directory in UTF-8 encoding.
94 *
95 * On Windows, the string might look like:
96 *
97 * `C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\`
98 *
99 * On Linux, the string might look like:
100 *
101 * `/home/bob/.local/share/My Program Name/`
102 *
103 * On Mac OS X, the string might look like:
104 *
105 * `/Users/bob/Library/Application Support/My Program Name/`
106 *
107 * You should assume the path returned by this function is the only safe place
108 * to write files (and that SDL_GetBasePath(), while it might be writable, or
109 * even the parent of the returned path, isn't where you should be writing
110 * things).
111 *
112 * Both the org and app strings may become part of a directory name, so please
113 * follow these rules:
114 *
115 * - Try to use the same org string (_including case-sensitivity_) for all
116 * your applications that use this function.
117 * - Always use a unique app string for each one, and make sure it never
118 * changes for an app once you've decided on it.
119 * - Unicode characters are legal, as long as it's UTF-8 encoded, but...
120 * - ...only use letters, numbers, and spaces. Avoid punctuation like "Game
121 * Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient.
122 *
123 * The returned path is guaranteed to end with a path separator ('\\' on
124 * Windows, '/' on most other platforms).
125 *
126 * The pointer returned is owned by the caller. Please call SDL_free() on the
127 * pointer when done with it.
128 *
129 * \param org the name of your organization
130 * \param app the name of your application
131 * \returns a UTF-8 string of the user directory in platform-dependent
132 * notation. NULL if there's a problem (creating directory failed,
133 * etc.).
134 *
135 * \since This function is available since SDL 2.0.1.
136 *
137 * \sa SDL_GetBasePath
138 */
139extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app);
140
141/* Ends C function definitions when using C++ */
142#ifdef __cplusplus
143}
144#endif
145#include "close_code.h"
146
147#endif /* SDL_filesystem_h_ */
148
149/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_gamecontroller.h b/src/contrib/SDL-2.30.2/include/SDL_gamecontroller.h
new file mode 100644
index 0000000..281fa35
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_gamecontroller.h
@@ -0,0 +1,1096 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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_CONTROLLER_TYPE_NVIDIA_SHIELD,
74 SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT,
75 SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT,
76 SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR,
77 SDL_CONTROLLER_TYPE_MAX
78} SDL_GameControllerType;
79
80typedef enum
81{
82 SDL_CONTROLLER_BINDTYPE_NONE = 0,
83 SDL_CONTROLLER_BINDTYPE_BUTTON,
84 SDL_CONTROLLER_BINDTYPE_AXIS,
85 SDL_CONTROLLER_BINDTYPE_HAT
86} SDL_GameControllerBindType;
87
88/**
89 * Get the SDL joystick layer binding for this controller button/axis mapping
90 */
91typedef struct SDL_GameControllerButtonBind
92{
93 SDL_GameControllerBindType bindType;
94 union
95 {
96 int button;
97 int axis;
98 struct {
99 int hat;
100 int hat_mask;
101 } hat;
102 } value;
103
104} SDL_GameControllerButtonBind;
105
106
107/**
108 * To count the number of game controllers in the system for the following:
109 *
110 * ```c
111 * int nJoysticks = SDL_NumJoysticks();
112 * int nGameControllers = 0;
113 * for (int i = 0; i < nJoysticks; i++) {
114 * if (SDL_IsGameController(i)) {
115 * nGameControllers++;
116 * }
117 * }
118 * ```
119 *
120 * 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:
121 * guid,name,mappings
122 *
123 * 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.
124 * Under Windows there is a reserved GUID of "xinput" that covers any XInput devices.
125 * The mapping format for joystick is:
126 * bX - a joystick button, index X
127 * hX.Y - hat X with value Y
128 * aX - axis X of the joystick
129 * Buttons can be used as a controller axis and vice versa.
130 *
131 * This string shows an example of a valid mapping for a controller
132 *
133 * ```c
134 * "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",
135 * ```
136 */
137
138/**
139 * Load a set of Game Controller mappings from a seekable SDL data stream.
140 *
141 * You can call this function several times, if needed, to load different
142 * database files.
143 *
144 * If a new mapping is loaded for an already known controller GUID, the later
145 * version will overwrite the one currently loaded.
146 *
147 * Mappings not belonging to the current platform or with no platform field
148 * specified will be ignored (i.e. mappings for Linux will be ignored in
149 * Windows, etc).
150 *
151 * This function will load the text database entirely in memory before
152 * processing it, so take this into consideration if you are in a memory
153 * constrained environment.
154 *
155 * \param rw the data stream for the mappings to be added
156 * \param freerw non-zero to close the stream after being read
157 * \returns the number of mappings added or -1 on error; call SDL_GetError()
158 * for more information.
159 *
160 * \since This function is available since SDL 2.0.2.
161 *
162 * \sa SDL_GameControllerAddMapping
163 * \sa SDL_GameControllerAddMappingsFromFile
164 * \sa SDL_GameControllerMappingForGUID
165 */
166extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw);
167
168/**
169 * Load a set of mappings from a file, filtered by the current SDL_GetPlatform()
170 *
171 * Convenience macro.
172 */
173#define SDL_GameControllerAddMappingsFromFile(file) SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1)
174
175/**
176 * Add support for controllers that SDL is unaware of or to cause an existing
177 * controller to have a different binding.
178 *
179 * The mapping string has the format "GUID,name,mapping", where GUID is the
180 * string value from SDL_JoystickGetGUIDString(), name is the human readable
181 * string for the device and mappings are controller mappings to joystick
182 * ones. Under Windows there is a reserved GUID of "xinput" that covers all
183 * XInput devices. The mapping format for joystick is: {| |bX |a joystick
184 * button, index X |- |hX.Y |hat X with value Y |- |aX |axis X of the joystick
185 * |} Buttons can be used as a controller axes and vice versa.
186 *
187 * This string shows an example of a valid mapping for a controller:
188 *
189 * ```c
190 * "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"
191 * ```
192 *
193 * \param mappingString the mapping string
194 * \returns 1 if a new mapping is added, 0 if an existing mapping is updated,
195 * -1 on error; call SDL_GetError() for more information.
196 *
197 * \since This function is available since SDL 2.0.0.
198 *
199 * \sa SDL_GameControllerMapping
200 * \sa SDL_GameControllerMappingForGUID
201 */
202extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString);
203
204/**
205 * Get the number of mappings installed.
206 *
207 * \returns the number of mappings.
208 *
209 * \since This function is available since SDL 2.0.6.
210 */
211extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void);
212
213/**
214 * Get the mapping at a particular index.
215 *
216 * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if
217 * the index is out of range.
218 *
219 * \since This function is available since SDL 2.0.6.
220 */
221extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index);
222
223/**
224 * Get the game controller mapping string for a given GUID.
225 *
226 * The returned string must be freed with SDL_free().
227 *
228 * \param guid a structure containing the GUID for which a mapping is desired
229 * \returns a mapping string or NULL on error; call SDL_GetError() for more
230 * information.
231 *
232 * \since This function is available since SDL 2.0.0.
233 *
234 * \sa SDL_JoystickGetDeviceGUID
235 * \sa SDL_JoystickGetGUID
236 */
237extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid);
238
239/**
240 * Get the current mapping of a Game Controller.
241 *
242 * The returned string must be freed with SDL_free().
243 *
244 * Details about mappings are discussed with SDL_GameControllerAddMapping().
245 *
246 * \param gamecontroller the game controller you want to get the current
247 * mapping for
248 * \returns a string that has the controller's mapping or NULL if no mapping
249 * is available; call SDL_GetError() for more information.
250 *
251 * \since This function is available since SDL 2.0.0.
252 *
253 * \sa SDL_GameControllerAddMapping
254 * \sa SDL_GameControllerMappingForGUID
255 */
256extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController *gamecontroller);
257
258/**
259 * Check if the given joystick is supported by the game controller interface.
260 *
261 * `joystick_index` is the same as the `device_index` passed to
262 * SDL_JoystickOpen().
263 *
264 * \param joystick_index the device_index of a device, up to
265 * SDL_NumJoysticks()
266 * \returns SDL_TRUE if the given joystick is supported by the game controller
267 * interface, SDL_FALSE if it isn't or it's an invalid index.
268 *
269 * \since This function is available since SDL 2.0.0.
270 *
271 * \sa SDL_GameControllerNameForIndex
272 * \sa SDL_GameControllerOpen
273 */
274extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index);
275
276/**
277 * Get the implementation dependent name for the game controller.
278 *
279 * This function can be called before any controllers are opened.
280 *
281 * `joystick_index` is the same as the `device_index` passed to
282 * SDL_JoystickOpen().
283 *
284 * \param joystick_index the device_index of a device, from zero to
285 * SDL_NumJoysticks()-1
286 * \returns the implementation-dependent name for the game controller, or NULL
287 * if there is no name or the index is invalid.
288 *
289 * \since This function is available since SDL 2.0.0.
290 *
291 * \sa SDL_GameControllerName
292 * \sa SDL_GameControllerOpen
293 * \sa SDL_IsGameController
294 */
295extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index);
296
297/**
298 * Get the implementation dependent path for the game controller.
299 *
300 * This function can be called before any controllers are opened.
301 *
302 * `joystick_index` is the same as the `device_index` passed to
303 * SDL_JoystickOpen().
304 *
305 * \param joystick_index the device_index of a device, from zero to
306 * SDL_NumJoysticks()-1
307 * \returns the implementation-dependent path for the game controller, or NULL
308 * if there is no path or the index is invalid.
309 *
310 * \since This function is available since SDL 2.24.0.
311 *
312 * \sa SDL_GameControllerPath
313 */
314extern DECLSPEC const char *SDLCALL SDL_GameControllerPathForIndex(int joystick_index);
315
316/**
317 * Get the type of a game controller.
318 *
319 * This can be called before any controllers are opened.
320 *
321 * \param joystick_index the device_index of a device, from zero to
322 * SDL_NumJoysticks()-1
323 * \returns the controller type.
324 *
325 * \since This function is available since SDL 2.0.12.
326 */
327extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerTypeForIndex(int joystick_index);
328
329/**
330 * Get the mapping of a game controller.
331 *
332 * This can be called before any controllers are opened.
333 *
334 * \param joystick_index the device_index of a device, from zero to
335 * SDL_NumJoysticks()-1
336 * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if
337 * no mapping is available.
338 *
339 * \since This function is available since SDL 2.0.9.
340 */
341extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index);
342
343/**
344 * Open a game controller for use.
345 *
346 * `joystick_index` is the same as the `device_index` passed to
347 * SDL_JoystickOpen().
348 *
349 * The index passed as an argument refers to the N'th game controller on the
350 * system. This index is not the value which will identify this controller in
351 * future controller events. The joystick's instance id (SDL_JoystickID) will
352 * be used there instead.
353 *
354 * \param joystick_index the device_index of a device, up to
355 * SDL_NumJoysticks()
356 * \returns a gamecontroller identifier or NULL if an error occurred; call
357 * SDL_GetError() for more information.
358 *
359 * \since This function is available since SDL 2.0.0.
360 *
361 * \sa SDL_GameControllerClose
362 * \sa SDL_GameControllerNameForIndex
363 * \sa SDL_IsGameController
364 */
365extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index);
366
367/**
368 * Get the SDL_GameController associated with an instance id.
369 *
370 * \param joyid the instance id to get the SDL_GameController for
371 * \returns an SDL_GameController on success or NULL on failure; call
372 * SDL_GetError() for more information.
373 *
374 * \since This function is available since SDL 2.0.4.
375 */
376extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid);
377
378/**
379 * Get the SDL_GameController associated with a player index.
380 *
381 * Please note that the player index is _not_ the device index, nor is it the
382 * instance id!
383 *
384 * \param player_index the player index, which is not the device index or the
385 * instance id!
386 * \returns the SDL_GameController associated with a player index.
387 *
388 * \since This function is available since SDL 2.0.12.
389 *
390 * \sa SDL_GameControllerGetPlayerIndex
391 * \sa SDL_GameControllerSetPlayerIndex
392 */
393extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromPlayerIndex(int player_index);
394
395/**
396 * Get the implementation-dependent name for an opened game controller.
397 *
398 * This is the same name as returned by SDL_GameControllerNameForIndex(), but
399 * it takes a controller identifier instead of the (unstable) device index.
400 *
401 * \param gamecontroller a game controller identifier previously returned by
402 * SDL_GameControllerOpen()
403 * \returns the implementation dependent name for the game controller, or NULL
404 * if there is no name or the identifier passed is invalid.
405 *
406 * \since This function is available since SDL 2.0.0.
407 *
408 * \sa SDL_GameControllerNameForIndex
409 * \sa SDL_GameControllerOpen
410 */
411extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller);
412
413/**
414 * Get the implementation-dependent path for an opened game controller.
415 *
416 * This is the same path as returned by SDL_GameControllerNameForIndex(), but
417 * it takes a controller identifier instead of the (unstable) device index.
418 *
419 * \param gamecontroller a game controller identifier previously returned by
420 * SDL_GameControllerOpen()
421 * \returns the implementation dependent path for the game controller, or NULL
422 * if there is no path or the identifier passed is invalid.
423 *
424 * \since This function is available since SDL 2.24.0.
425 *
426 * \sa SDL_GameControllerPathForIndex
427 */
428extern DECLSPEC const char *SDLCALL SDL_GameControllerPath(SDL_GameController *gamecontroller);
429
430/**
431 * Get the type of this currently opened controller
432 *
433 * This is the same name as returned by SDL_GameControllerTypeForIndex(), but
434 * it takes a controller identifier instead of the (unstable) device index.
435 *
436 * \param gamecontroller the game controller object to query.
437 * \returns the controller type.
438 *
439 * \since This function is available since SDL 2.0.12.
440 */
441extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerGetType(SDL_GameController *gamecontroller);
442
443/**
444 * Get the player index of an opened game controller.
445 *
446 * For XInput controllers this returns the XInput user index.
447 *
448 * \param gamecontroller the game controller object to query.
449 * \returns the player index for controller, or -1 if it's not available.
450 *
451 * \since This function is available since SDL 2.0.9.
452 */
453extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller);
454
455/**
456 * Set the player index of an opened game controller.
457 *
458 * \param gamecontroller the game controller object to adjust.
459 * \param player_index Player index to assign to this controller, or -1 to
460 * clear the player index and turn off player LEDs.
461 *
462 * \since This function is available since SDL 2.0.12.
463 */
464extern DECLSPEC void SDLCALL SDL_GameControllerSetPlayerIndex(SDL_GameController *gamecontroller, int player_index);
465
466/**
467 * Get the USB vendor ID of an opened controller, if available.
468 *
469 * If the vendor ID isn't available this function returns 0.
470 *
471 * \param gamecontroller the game controller object to query.
472 * \return the USB vendor ID, or zero if unavailable.
473 *
474 * \since This function is available since SDL 2.0.6.
475 */
476extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController *gamecontroller);
477
478/**
479 * Get the USB product ID of an opened controller, if available.
480 *
481 * If the product ID isn't available this function returns 0.
482 *
483 * \param gamecontroller the game controller object to query.
484 * \return the USB product ID, or zero if unavailable.
485 *
486 * \since This function is available since SDL 2.0.6.
487 */
488extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController *gamecontroller);
489
490/**
491 * Get the product version of an opened controller, if available.
492 *
493 * If the product version isn't available this function returns 0.
494 *
495 * \param gamecontroller the game controller object to query.
496 * \return the USB product version, or zero if unavailable.
497 *
498 * \since This function is available since SDL 2.0.6.
499 */
500extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController *gamecontroller);
501
502/**
503 * Get the firmware version of an opened controller, if available.
504 *
505 * If the firmware version isn't available this function returns 0.
506 *
507 * \param gamecontroller the game controller object to query.
508 * \return the controller firmware version, or zero if unavailable.
509 *
510 * \since This function is available since SDL 2.24.0.
511 */
512extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetFirmwareVersion(SDL_GameController *gamecontroller);
513
514/**
515 * Get the serial number of an opened controller, if available.
516 *
517 * Returns the serial number of the controller, or NULL if it is not
518 * available.
519 *
520 * \param gamecontroller the game controller object to query.
521 * \return the serial number, or NULL if unavailable.
522 *
523 * \since This function is available since SDL 2.0.14.
524 */
525extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller);
526
527/**
528 * Get the Steam Input handle of an opened controller, if available.
529 *
530 * Returns an InputHandle_t for the controller that can be used with Steam Input API:
531 * https://partner.steamgames.com/doc/api/ISteamInput
532 *
533 * \param gamecontroller the game controller object to query.
534 * \returns the gamepad handle, or 0 if unavailable.
535 *
536 * \since This function is available since SDL 2.30.0.
537 */
538extern DECLSPEC Uint64 SDLCALL SDL_GameControllerGetSteamHandle(SDL_GameController *gamecontroller);
539
540
541/**
542 * Check if a controller has been opened and is currently connected.
543 *
544 * \param gamecontroller a game controller identifier previously returned by
545 * SDL_GameControllerOpen()
546 * \returns SDL_TRUE if the controller has been opened and is currently
547 * connected, or SDL_FALSE if not.
548 *
549 * \since This function is available since SDL 2.0.0.
550 *
551 * \sa SDL_GameControllerClose
552 * \sa SDL_GameControllerOpen
553 */
554extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller);
555
556/**
557 * Get the Joystick ID from a Game Controller.
558 *
559 * This function will give you a SDL_Joystick object, which allows you to use
560 * the SDL_Joystick functions with a SDL_GameController object. This would be
561 * useful for getting a joystick's position at any given time, even if it
562 * hasn't moved (moving it would produce an event, which would have the axis'
563 * value).
564 *
565 * The pointer returned is owned by the SDL_GameController. You should not
566 * call SDL_JoystickClose() on it, for example, since doing so will likely
567 * cause SDL to crash.
568 *
569 * \param gamecontroller the game controller object that you want to get a
570 * joystick from
571 * \returns a SDL_Joystick object; call SDL_GetError() for more information.
572 *
573 * \since This function is available since SDL 2.0.0.
574 */
575extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller);
576
577/**
578 * Query or change current state of Game Controller events.
579 *
580 * If controller events are disabled, you must call SDL_GameControllerUpdate()
581 * yourself and check the state of the controller when you want controller
582 * information.
583 *
584 * Any number can be passed to SDL_GameControllerEventState(), but only -1, 0,
585 * and 1 will have any effect. Other numbers will just be returned.
586 *
587 * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`
588 * \returns the same value passed to the function, with exception to -1
589 * (SDL_QUERY), which will return the current state.
590 *
591 * \since This function is available since SDL 2.0.0.
592 *
593 * \sa SDL_JoystickEventState
594 */
595extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state);
596
597/**
598 * Manually pump game controller updates if not using the loop.
599 *
600 * This function is called automatically by the event loop if events are
601 * enabled. Under such circumstances, it will not be necessary to call this
602 * function.
603 *
604 * \since This function is available since SDL 2.0.0.
605 */
606extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void);
607
608
609/**
610 * The list of axes available from a controller
611 *
612 * Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_JOYSTICK_AXIS_MAX,
613 * and are centered within ~8000 of zero, though advanced UI will allow users to set
614 * or autodetect the dead zone, which varies between controllers.
615 *
616 * Trigger axis values range from 0 (released) to SDL_JOYSTICK_AXIS_MAX
617 * (fully pressed) when reported by SDL_GameControllerGetAxis(). Note that this is not the
618 * same range that will be reported by the lower-level SDL_GetJoystickAxis().
619 */
620typedef enum
621{
622 SDL_CONTROLLER_AXIS_INVALID = -1,
623 SDL_CONTROLLER_AXIS_LEFTX,
624 SDL_CONTROLLER_AXIS_LEFTY,
625 SDL_CONTROLLER_AXIS_RIGHTX,
626 SDL_CONTROLLER_AXIS_RIGHTY,
627 SDL_CONTROLLER_AXIS_TRIGGERLEFT,
628 SDL_CONTROLLER_AXIS_TRIGGERRIGHT,
629 SDL_CONTROLLER_AXIS_MAX
630} SDL_GameControllerAxis;
631
632/**
633 * Convert a string into SDL_GameControllerAxis enum.
634 *
635 * This function is called internally to translate SDL_GameController mapping
636 * strings for the underlying joystick device into the consistent
637 * SDL_GameController mapping. You do not normally need to call this function
638 * unless you are parsing SDL_GameController mappings in your own code.
639 *
640 * Note specially that "righttrigger" and "lefttrigger" map to
641 * `SDL_CONTROLLER_AXIS_TRIGGERRIGHT` and `SDL_CONTROLLER_AXIS_TRIGGERLEFT`,
642 * respectively.
643 *
644 * \param str string representing a SDL_GameController axis
645 * \returns the SDL_GameControllerAxis enum corresponding to the input string,
646 * or `SDL_CONTROLLER_AXIS_INVALID` if no match was found.
647 *
648 * \since This function is available since SDL 2.0.0.
649 *
650 * \sa SDL_GameControllerGetStringForAxis
651 */
652extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *str);
653
654/**
655 * Convert from an SDL_GameControllerAxis enum to a string.
656 *
657 * The caller should not SDL_free() the returned string.
658 *
659 * \param axis an enum value for a given SDL_GameControllerAxis
660 * \returns a string for the given axis, or NULL if an invalid axis is
661 * specified. The string returned is of the format used by
662 * SDL_GameController mapping strings.
663 *
664 * \since This function is available since SDL 2.0.0.
665 *
666 * \sa SDL_GameControllerGetAxisFromString
667 */
668extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis);
669
670/**
671 * Get the SDL joystick layer binding for a controller axis mapping.
672 *
673 * \param gamecontroller a game controller
674 * \param axis an axis enum value (one of the SDL_GameControllerAxis values)
675 * \returns a SDL_GameControllerButtonBind describing the bind. On failure
676 * (like the given Controller axis doesn't exist on the device), its
677 * `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`.
678 *
679 * \since This function is available since SDL 2.0.0.
680 *
681 * \sa SDL_GameControllerGetBindForButton
682 */
683extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
684SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller,
685 SDL_GameControllerAxis axis);
686
687/**
688 * Query whether a game controller has a given axis.
689 *
690 * This merely reports whether the controller's mapping defined this axis, as
691 * that is all the information SDL has about the physical device.
692 *
693 * \param gamecontroller a game controller
694 * \param axis an axis enum value (an SDL_GameControllerAxis value)
695 * \returns SDL_TRUE if the controller has this axis, SDL_FALSE otherwise.
696 *
697 * \since This function is available since SDL 2.0.14.
698 */
699extern DECLSPEC SDL_bool SDLCALL
700SDL_GameControllerHasAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis);
701
702/**
703 * Get the current state of an axis control on a game controller.
704 *
705 * The axis indices start at index 0.
706 *
707 * For thumbsticks, the state is a value ranging from -32768 (up/left)
708 * to 32767 (down/right).
709 *
710 * Triggers range from 0 when released to 32767 when fully pressed, and
711 * never return a negative value. Note that this differs from the value
712 * reported by the lower-level SDL_GetJoystickAxis(), which normally uses
713 * the full range.
714 *
715 * \param gamecontroller a game controller
716 * \param axis an axis index (one of the SDL_GameControllerAxis values)
717 * \returns axis state (including 0) on success or 0 (also) on failure; call
718 * SDL_GetError() for more information.
719 *
720 * \since This function is available since SDL 2.0.0.
721 *
722 * \sa SDL_GameControllerGetButton
723 */
724extern DECLSPEC Sint16 SDLCALL
725SDL_GameControllerGetAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis);
726
727/**
728 * The list of buttons available from a controller
729 */
730typedef enum
731{
732 SDL_CONTROLLER_BUTTON_INVALID = -1,
733 SDL_CONTROLLER_BUTTON_A,
734 SDL_CONTROLLER_BUTTON_B,
735 SDL_CONTROLLER_BUTTON_X,
736 SDL_CONTROLLER_BUTTON_Y,
737 SDL_CONTROLLER_BUTTON_BACK,
738 SDL_CONTROLLER_BUTTON_GUIDE,
739 SDL_CONTROLLER_BUTTON_START,
740 SDL_CONTROLLER_BUTTON_LEFTSTICK,
741 SDL_CONTROLLER_BUTTON_RIGHTSTICK,
742 SDL_CONTROLLER_BUTTON_LEFTSHOULDER,
743 SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,
744 SDL_CONTROLLER_BUTTON_DPAD_UP,
745 SDL_CONTROLLER_BUTTON_DPAD_DOWN,
746 SDL_CONTROLLER_BUTTON_DPAD_LEFT,
747 SDL_CONTROLLER_BUTTON_DPAD_RIGHT,
748 SDL_CONTROLLER_BUTTON_MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button */
749 SDL_CONTROLLER_BUTTON_PADDLE1, /* Xbox Elite paddle P1 (upper left, facing the back) */
750 SDL_CONTROLLER_BUTTON_PADDLE2, /* Xbox Elite paddle P3 (upper right, facing the back) */
751 SDL_CONTROLLER_BUTTON_PADDLE3, /* Xbox Elite paddle P2 (lower left, facing the back) */
752 SDL_CONTROLLER_BUTTON_PADDLE4, /* Xbox Elite paddle P4 (lower right, facing the back) */
753 SDL_CONTROLLER_BUTTON_TOUCHPAD, /* PS4/PS5 touchpad button */
754 SDL_CONTROLLER_BUTTON_MAX
755} SDL_GameControllerButton;
756
757/**
758 * Convert a string into an SDL_GameControllerButton enum.
759 *
760 * This function is called internally to translate SDL_GameController mapping
761 * strings for the underlying joystick device into the consistent
762 * SDL_GameController mapping. You do not normally need to call this function
763 * unless you are parsing SDL_GameController mappings in your own code.
764 *
765 * \param str string representing a SDL_GameController axis
766 * \returns the SDL_GameControllerButton enum corresponding to the input
767 * string, or `SDL_CONTROLLER_AXIS_INVALID` if no match was found.
768 *
769 * \since This function is available since SDL 2.0.0.
770 */
771extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *str);
772
773/**
774 * Convert from an SDL_GameControllerButton enum to a string.
775 *
776 * The caller should not SDL_free() the returned string.
777 *
778 * \param button an enum value for a given SDL_GameControllerButton
779 * \returns a string for the given button, or NULL if an invalid button is
780 * specified. The string returned is of the format used by
781 * SDL_GameController mapping strings.
782 *
783 * \since This function is available since SDL 2.0.0.
784 *
785 * \sa SDL_GameControllerGetButtonFromString
786 */
787extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button);
788
789/**
790 * Get the SDL joystick layer binding for a controller button mapping.
791 *
792 * \param gamecontroller a game controller
793 * \param button an button enum value (an SDL_GameControllerButton value)
794 * \returns a SDL_GameControllerButtonBind describing the bind. On failure
795 * (like the given Controller button doesn't exist on the device),
796 * its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`.
797 *
798 * \since This function is available since SDL 2.0.0.
799 *
800 * \sa SDL_GameControllerGetBindForAxis
801 */
802extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
803SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller,
804 SDL_GameControllerButton button);
805
806/**
807 * Query whether a game controller has a given button.
808 *
809 * This merely reports whether the controller's mapping defined this button,
810 * as that is all the information SDL has about the physical device.
811 *
812 * \param gamecontroller a game controller
813 * \param button a button enum value (an SDL_GameControllerButton value)
814 * \returns SDL_TRUE if the controller has this button, SDL_FALSE otherwise.
815 *
816 * \since This function is available since SDL 2.0.14.
817 */
818extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasButton(SDL_GameController *gamecontroller,
819 SDL_GameControllerButton button);
820
821/**
822 * Get the current state of a button on a game controller.
823 *
824 * \param gamecontroller a game controller
825 * \param button a button index (one of the SDL_GameControllerButton values)
826 * \returns 1 for pressed state or 0 for not pressed state or error; call
827 * SDL_GetError() for more information.
828 *
829 * \since This function is available since SDL 2.0.0.
830 *
831 * \sa SDL_GameControllerGetAxis
832 */
833extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller,
834 SDL_GameControllerButton button);
835
836/**
837 * Get the number of touchpads on a game controller.
838 *
839 * \since This function is available since SDL 2.0.14.
840 */
841extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpads(SDL_GameController *gamecontroller);
842
843/**
844 * Get the number of supported simultaneous fingers on a touchpad on a game
845 * controller.
846 *
847 * \since This function is available since SDL 2.0.14.
848 */
849extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpadFingers(SDL_GameController *gamecontroller, int touchpad);
850
851/**
852 * Get the current state of a finger on a touchpad on a game controller.
853 *
854 * \since This function is available since SDL 2.0.14.
855 */
856extern DECLSPEC int SDLCALL SDL_GameControllerGetTouchpadFinger(SDL_GameController *gamecontroller, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure);
857
858/**
859 * Return whether a game controller has a particular sensor.
860 *
861 * \param gamecontroller The controller to query
862 * \param type The type of sensor to query
863 * \returns SDL_TRUE if the sensor exists, SDL_FALSE otherwise.
864 *
865 * \since This function is available since SDL 2.0.14.
866 */
867extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController *gamecontroller, SDL_SensorType type);
868
869/**
870 * Set whether data reporting for a game controller sensor is enabled.
871 *
872 * \param gamecontroller The controller to update
873 * \param type The type of sensor to enable/disable
874 * \param enabled Whether data reporting should be enabled
875 * \returns 0 or -1 if an error occurred.
876 *
877 * \since This function is available since SDL 2.0.14.
878 */
879extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled);
880
881/**
882 * Query whether sensor data reporting is enabled for a game controller.
883 *
884 * \param gamecontroller The controller to query
885 * \param type The type of sensor to query
886 * \returns SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise.
887 *
888 * \since This function is available since SDL 2.0.14.
889 */
890extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerIsSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type);
891
892/**
893 * Get the data rate (number of events per second) of a game controller
894 * sensor.
895 *
896 * \param gamecontroller The controller to query
897 * \param type The type of sensor to query
898 * \return the data rate, or 0.0f if the data rate is not available.
899 *
900 * \since This function is available since SDL 2.0.16.
901 */
902extern DECLSPEC float SDLCALL SDL_GameControllerGetSensorDataRate(SDL_GameController *gamecontroller, SDL_SensorType type);
903
904/**
905 * Get the current state of a game controller sensor.
906 *
907 * The number of values and interpretation of the data is sensor dependent.
908 * See SDL_sensor.h for the details for each type of sensor.
909 *
910 * \param gamecontroller The controller to query
911 * \param type The type of sensor to query
912 * \param data A pointer filled with the current sensor state
913 * \param num_values The number of values to write to data
914 * \return 0 or -1 if an error occurred.
915 *
916 * \since This function is available since SDL 2.0.14.
917 */
918extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorData(SDL_GameController *gamecontroller, SDL_SensorType type, float *data, int num_values);
919
920/**
921 * Get the current state of a game controller sensor with the timestamp of the
922 * last update.
923 *
924 * The number of values and interpretation of the data is sensor dependent.
925 * See SDL_sensor.h for the details for each type of sensor.
926 *
927 * \param gamecontroller The controller to query
928 * \param type The type of sensor to query
929 * \param timestamp A pointer filled with the timestamp in microseconds of the
930 * current sensor reading if available, or 0 if not
931 * \param data A pointer filled with the current sensor state
932 * \param num_values The number of values to write to data
933 * \return 0 or -1 if an error occurred.
934 *
935 * \since This function is available since SDL 2.26.0.
936 */
937extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorDataWithTimestamp(SDL_GameController *gamecontroller, SDL_SensorType type, Uint64 *timestamp, float *data, int num_values);
938
939/**
940 * Start a rumble effect on a game controller.
941 *
942 * Each call to this function cancels any previous rumble effect, and calling
943 * it with 0 intensity stops any rumbling.
944 *
945 * \param gamecontroller The controller to vibrate
946 * \param low_frequency_rumble The intensity of the low frequency (left)
947 * rumble motor, from 0 to 0xFFFF
948 * \param high_frequency_rumble The intensity of the high frequency (right)
949 * rumble motor, from 0 to 0xFFFF
950 * \param duration_ms The duration of the rumble effect, in milliseconds
951 * \returns 0, or -1 if rumble isn't supported on this controller
952 *
953 * \since This function is available since SDL 2.0.9.
954 *
955 * \sa SDL_GameControllerHasRumble
956 */
957extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms);
958
959/**
960 * Start a rumble effect in the game controller's triggers.
961 *
962 * Each call to this function cancels any previous trigger rumble effect, and
963 * calling it with 0 intensity stops any rumbling.
964 *
965 * Note that this is rumbling of the _triggers_ and not the game controller as
966 * a whole. This is currently only supported on Xbox One controllers. If you
967 * want the (more common) whole-controller rumble, use
968 * SDL_GameControllerRumble() instead.
969 *
970 * \param gamecontroller The controller to vibrate
971 * \param left_rumble The intensity of the left trigger rumble motor, from 0
972 * to 0xFFFF
973 * \param right_rumble The intensity of the right trigger rumble motor, from 0
974 * to 0xFFFF
975 * \param duration_ms The duration of the rumble effect, in milliseconds
976 * \returns 0, or -1 if trigger rumble isn't supported on this controller
977 *
978 * \since This function is available since SDL 2.0.14.
979 *
980 * \sa SDL_GameControllerHasRumbleTriggers
981 */
982extern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms);
983
984/**
985 * Query whether a game controller has an LED.
986 *
987 * \param gamecontroller The controller to query
988 * \returns SDL_TRUE, or SDL_FALSE if this controller does not have a
989 * modifiable LED
990 *
991 * \since This function is available since SDL 2.0.14.
992 */
993extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasLED(SDL_GameController *gamecontroller);
994
995/**
996 * Query whether a game controller has rumble support.
997 *
998 * \param gamecontroller The controller to query
999 * \returns SDL_TRUE, or SDL_FALSE if this controller does not have rumble
1000 * support
1001 *
1002 * \since This function is available since SDL 2.0.18.
1003 *
1004 * \sa SDL_GameControllerRumble
1005 */
1006extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumble(SDL_GameController *gamecontroller);
1007
1008/**
1009 * Query whether a game controller has rumble support on triggers.
1010 *
1011 * \param gamecontroller The controller to query
1012 * \returns SDL_TRUE, or SDL_FALSE if this controller does not have trigger
1013 * rumble support
1014 *
1015 * \since This function is available since SDL 2.0.18.
1016 *
1017 * \sa SDL_GameControllerRumbleTriggers
1018 */
1019extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumbleTriggers(SDL_GameController *gamecontroller);
1020
1021/**
1022 * Update a game controller's LED color.
1023 *
1024 * \param gamecontroller The controller to update
1025 * \param red The intensity of the red LED
1026 * \param green The intensity of the green LED
1027 * \param blue The intensity of the blue LED
1028 * \returns 0, or -1 if this controller does not have a modifiable LED
1029 *
1030 * \since This function is available since SDL 2.0.14.
1031 */
1032extern DECLSPEC int SDLCALL SDL_GameControllerSetLED(SDL_GameController *gamecontroller, Uint8 red, Uint8 green, Uint8 blue);
1033
1034/**
1035 * Send a controller specific effect packet
1036 *
1037 * \param gamecontroller The controller to affect
1038 * \param data The data to send to the controller
1039 * \param size The size of the data to send to the controller
1040 * \returns 0, or -1 if this controller or driver doesn't support effect
1041 * packets
1042 *
1043 * \since This function is available since SDL 2.0.16.
1044 */
1045extern DECLSPEC int SDLCALL SDL_GameControllerSendEffect(SDL_GameController *gamecontroller, const void *data, int size);
1046
1047/**
1048 * Close a game controller previously opened with SDL_GameControllerOpen().
1049 *
1050 * \param gamecontroller a game controller identifier previously returned by
1051 * SDL_GameControllerOpen()
1052 *
1053 * \since This function is available since SDL 2.0.0.
1054 *
1055 * \sa SDL_GameControllerOpen
1056 */
1057extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller);
1058
1059/**
1060 * Return the sfSymbolsName for a given button on a game controller on Apple
1061 * platforms.
1062 *
1063 * \param gamecontroller the controller to query
1064 * \param button a button on the game controller
1065 * \returns the sfSymbolsName or NULL if the name can't be found
1066 *
1067 * \since This function is available since SDL 2.0.18.
1068 *
1069 * \sa SDL_GameControllerGetAppleSFSymbolsNameForAxis
1070 */
1071extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForButton(SDL_GameController *gamecontroller, SDL_GameControllerButton button);
1072
1073/**
1074 * Return the sfSymbolsName for a given axis on a game controller on Apple
1075 * platforms.
1076 *
1077 * \param gamecontroller the controller to query
1078 * \param axis an axis on the game controller
1079 * \returns the sfSymbolsName or NULL if the name can't be found
1080 *
1081 * \since This function is available since SDL 2.0.18.
1082 *
1083 * \sa SDL_GameControllerGetAppleSFSymbolsNameForButton
1084 */
1085extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis);
1086
1087
1088/* Ends C function definitions when using C++ */
1089#ifdef __cplusplus
1090}
1091#endif
1092#include "close_code.h"
1093
1094#endif /* SDL_gamecontroller_h_ */
1095
1096/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_gesture.h b/src/contrib/SDL-2.30.2/include/SDL_gesture.h
new file mode 100644
index 0000000..4fffa5f
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_gesture.h
@@ -0,0 +1,117 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_guid.h b/src/contrib/SDL-2.30.2/include/SDL_guid.h
new file mode 100644
index 0000000..7daa5f1
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_guid.h
@@ -0,0 +1,100 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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_guid.h
24 *
25 * Include file for handling ::SDL_GUID values.
26 */
27
28#ifndef SDL_guid_h_
29#define SDL_guid_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
37extern "C" {
38#endif
39
40/**
41 * An SDL_GUID is a 128-bit identifier for an input device that
42 * identifies that device across runs of SDL programs on the same
43 * platform. If the device is detached and then re-attached to a
44 * different port, or if the base system is rebooted, the device
45 * should still report the same GUID.
46 *
47 * GUIDs are as precise as possible but are not guaranteed to
48 * distinguish physically distinct but equivalent devices. For
49 * example, two game controllers from the same vendor with the same
50 * product ID and revision may have the same GUID.
51 *
52 * GUIDs may be platform-dependent (i.e., the same device may report
53 * different GUIDs on different operating systems).
54 */
55typedef struct {
56 Uint8 data[16];
57} SDL_GUID;
58
59/* Function prototypes */
60
61/**
62 * Get an ASCII string representation for a given ::SDL_GUID.
63 *
64 * You should supply at least 33 bytes for pszGUID.
65 *
66 * \param guid the ::SDL_GUID you wish to convert to string
67 * \param pszGUID buffer in which to write the ASCII string
68 * \param cbGUID the size of pszGUID
69 *
70 * \since This function is available since SDL 2.24.0.
71 *
72 * \sa SDL_GUIDFromString
73 */
74extern DECLSPEC void SDLCALL SDL_GUIDToString(SDL_GUID guid, char *pszGUID, int cbGUID);
75
76/**
77 * Convert a GUID string into a ::SDL_GUID structure.
78 *
79 * Performs no error checking. If this function is given a string containing
80 * an invalid GUID, the function will silently succeed, but the GUID generated
81 * will not be useful.
82 *
83 * \param pchGUID string containing an ASCII representation of a GUID
84 * \returns a ::SDL_GUID structure.
85 *
86 * \since This function is available since SDL 2.24.0.
87 *
88 * \sa SDL_GUIDToString
89 */
90extern DECLSPEC SDL_GUID SDLCALL SDL_GUIDFromString(const char *pchGUID);
91
92/* Ends C function definitions when using C++ */
93#ifdef __cplusplus
94}
95#endif
96#include "close_code.h"
97
98#endif /* SDL_guid_h_ */
99
100/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_haptic.h b/src/contrib/SDL-2.30.2/include/SDL_haptic.h
new file mode 100644
index 0000000..c9ed847
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_haptic.h
@@ -0,0 +1,1341 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_hidapi.h b/src/contrib/SDL-2.30.2/include/SDL_hidapi.h
new file mode 100644
index 0000000..b9d8ffa
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_hidapi.h
@@ -0,0 +1,451 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_hints.h b/src/contrib/SDL-2.30.2/include/SDL_hints.h
new file mode 100644
index 0000000..e775a65
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_hints.h
@@ -0,0 +1,2880 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 * As of SDL 2.26, SDL_ConvertAudio() respects this hint when libsamplerate is available.
282 *
283 * This hint is currently only checked at audio subsystem initialization.
284 *
285 * This variable can be set to the following values:
286 *
287 * "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast)
288 * "1" or "fast" - Use fast, slightly higher quality resampling, if available
289 * "2" or "medium" - Use medium quality resampling, if available
290 * "3" or "best" - Use high quality resampling, if available
291 */
292#define SDL_HINT_AUDIO_RESAMPLING_MODE "SDL_AUDIO_RESAMPLING_MODE"
293
294/**
295 * \brief A variable controlling whether SDL updates joystick state when getting input events
296 *
297 * This variable can be set to the following values:
298 *
299 * "0" - You'll call SDL_JoystickUpdate() manually
300 * "1" - SDL will automatically call SDL_JoystickUpdate() (default)
301 *
302 * This hint can be toggled on and off at runtime.
303 */
304#define SDL_HINT_AUTO_UPDATE_JOYSTICKS "SDL_AUTO_UPDATE_JOYSTICKS"
305
306/**
307 * \brief A variable controlling whether SDL updates sensor state when getting input events
308 *
309 * This variable can be set to the following values:
310 *
311 * "0" - You'll call SDL_SensorUpdate() manually
312 * "1" - SDL will automatically call SDL_SensorUpdate() (default)
313 *
314 * This hint can be toggled on and off at runtime.
315 */
316#define SDL_HINT_AUTO_UPDATE_SENSORS "SDL_AUTO_UPDATE_SENSORS"
317
318/**
319 * \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs.
320 *
321 * The bitmap header version 4 is required for proper alpha channel support and
322 * SDL will use it when required. Should this not be desired, this hint can
323 * force the use of the 40 byte header version which is supported everywhere.
324 *
325 * The variable can be set to the following values:
326 * "0" - Surfaces with a colorkey or an alpha channel are saved to a
327 * 32-bit BMP file with an alpha mask. SDL will use the bitmap
328 * header version 4 and set the alpha mask accordingly.
329 * "1" - Surfaces with a colorkey or an alpha channel are saved to a
330 * 32-bit BMP file without an alpha mask. The alpha channel data
331 * will be in the file, but applications are going to ignore it.
332 *
333 * The default value is "0".
334 */
335#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT"
336
337/**
338 * \brief Override for SDL_GetDisplayUsableBounds()
339 *
340 * If set, this hint will override the expected results for
341 * SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want
342 * to do this, but this allows an embedded system to request that some of the
343 * screen be reserved for other uses when paired with a well-behaved
344 * application.
345 *
346 * The contents of this hint must be 4 comma-separated integers, the first
347 * is the bounds x, then y, width and height, in that order.
348 */
349#define SDL_HINT_DISPLAY_USABLE_BOUNDS "SDL_DISPLAY_USABLE_BOUNDS"
350
351/**
352 * \brief Disable giving back control to the browser automatically
353 * when running with asyncify
354 *
355 * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations
356 * such as refreshing the screen or polling events.
357 *
358 * This hint only applies to the emscripten platform
359 *
360 * The variable can be set to the following values:
361 * "0" - Disable emscripten_sleep calls (if you give back browser control manually or use asyncify for other purposes)
362 * "1" - Enable emscripten_sleep calls (the default)
363 */
364#define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY"
365
366/**
367 * \brief override the binding element for keyboard inputs for Emscripten builds
368 *
369 * This hint only applies to the emscripten platform
370 *
371 * The variable can be one of
372 * "#window" - The javascript window object (this is the default)
373 * "#document" - The javascript document object
374 * "#screen" - the javascript window.screen object
375 * "#canvas" - the WebGL canvas element
376 * any other string without a leading # sign applies to the element on the page with that ID.
377 */
378#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT"
379
380/**
381 * \brief A variable that controls whether the on-screen keyboard should be shown when text input is active
382 *
383 * The variable can be set to the following values:
384 * "0" - Do not show the on-screen keyboard
385 * "1" - Show the on-screen keyboard
386 *
387 * The default value is "1". This hint must be set before text input is activated.
388 */
389#define SDL_HINT_ENABLE_SCREEN_KEYBOARD "SDL_ENABLE_SCREEN_KEYBOARD"
390
391/**
392 * \brief A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs
393 *
394 * The variable can be set to the following values:
395 * "0" - Do not scan for Steam Controllers
396 * "1" - Scan for Steam Controllers (the default)
397 *
398 * The default value is "1". This hint must be set before initializing the joystick subsystem.
399 */
400#define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS"
401
402/**
403 * \brief A variable controlling verbosity of the logging of SDL events pushed onto the internal queue.
404 *
405 * This variable can be set to the following values, from least to most verbose:
406 *
407 * "0" - Don't log any events (default)
408 * "1" - Log most events (other than the really spammy ones).
409 * "2" - Include mouse and finger motion events.
410 * "3" - Include SDL_SysWMEvent events.
411 *
412 * This is generally meant to be used to debug SDL itself, but can be useful
413 * for application developers that need better visibility into what is going
414 * on in the event queue. Logged events are sent through SDL_Log(), which
415 * means by default they appear on stdout on most platforms or maybe
416 * OutputDebugString() on Windows, and can be funneled by the app with
417 * SDL_LogSetOutputFunction(), etc.
418 *
419 * This hint can be toggled on and off at runtime, if you only need to log
420 * events for a small subset of program execution.
421 */
422#define SDL_HINT_EVENT_LOGGING "SDL_EVENT_LOGGING"
423
424/**
425 * \brief A variable controlling whether raising the window should be done more forcefully
426 *
427 * This variable can be set to the following values:
428 * "0" - No forcing (the default)
429 * "1" - Extra level of forcing
430 *
431 * At present, this is only an issue under MS Windows, which makes it nearly impossible to
432 * programmatically move a window to the foreground, for "security" reasons. See
433 * http://stackoverflow.com/a/34414846 for a discussion.
434 */
435#define SDL_HINT_FORCE_RAISEWINDOW "SDL_HINT_FORCE_RAISEWINDOW"
436
437/**
438 * \brief A variable controlling how 3D acceleration is used to accelerate the SDL screen surface.
439 *
440 * SDL can try to accelerate the SDL screen surface by using streaming
441 * textures with a 3D rendering engine. This variable controls whether and
442 * how this is done.
443 *
444 * This variable can be set to the following values:
445 * "0" - Disable 3D acceleration
446 * "1" - Enable 3D acceleration, using the default renderer.
447 * "X" - Enable 3D acceleration, using X where X is one of the valid rendering drivers. (e.g. "direct3d", "opengl", etc.)
448 *
449 * By default SDL tries to make a best guess for each platform whether
450 * to use acceleration or not.
451 */
452#define SDL_HINT_FRAMEBUFFER_ACCELERATION "SDL_FRAMEBUFFER_ACCELERATION"
453
454/**
455 * \brief A variable that lets you manually hint extra gamecontroller db entries.
456 *
457 * The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h
458 *
459 * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
460 * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
461 */
462#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG"
463
464/**
465 * \brief A variable that lets you provide a file with extra gamecontroller db entries.
466 *
467 * The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h
468 *
469 * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
470 * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
471 */
472#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE"
473
474/**
475 * \brief A variable that overrides the automatic controller type detection
476 *
477 * The variable should be comma separated entries, in the form: VID/PID=type
478 *
479 * The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd
480 *
481 * The type should be one of:
482 * Xbox360
483 * XboxOne
484 * PS3
485 * PS4
486 * PS5
487 * SwitchPro
488 *
489 * This hint affects what driver is used, and must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
490 */
491#define SDL_HINT_GAMECONTROLLERTYPE "SDL_GAMECONTROLLERTYPE"
492
493/**
494 * \brief A variable containing a list of devices to skip when scanning for game controllers.
495 *
496 * The format of the string is a comma separated list of USB VID/PID pairs
497 * in hexadecimal form, e.g.
498 *
499 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
500 *
501 * The variable can also take the form of @file, in which case the named
502 * file will be loaded and interpreted as the value of the variable.
503 */
504#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES"
505
506/**
507 * \brief If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable.
508 *
509 * The format of the string is a comma separated list of USB VID/PID pairs
510 * in hexadecimal form, e.g.
511 *
512 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
513 *
514 * The variable can also take the form of @file, in which case the named
515 * file will be loaded and interpreted as the value of the variable.
516 */
517#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT"
518
519/**
520 * \brief If set, game controller face buttons report their values according to their labels instead of their positional layout.
521 *
522 * For example, on Nintendo Switch controllers, normally you'd get:
523 *
524 * (Y)
525 * (X) (B)
526 * (A)
527 *
528 * but if this hint is set, you'll get:
529 *
530 * (X)
531 * (Y) (A)
532 * (B)
533 *
534 * The variable can be set to the following values:
535 * "0" - Report the face buttons by position, as though they were on an Xbox controller.
536 * "1" - Report the face buttons by label instead of position
537 *
538 * The default value is "1". This hint may be set at any time.
539 */
540#define SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS "SDL_GAMECONTROLLER_USE_BUTTON_LABELS"
541
542/**
543 * \brief A variable controlling whether grabbing input grabs the keyboard
544 *
545 * This variable can be set to the following values:
546 * "0" - Grab will affect only the mouse
547 * "1" - Grab will affect mouse and keyboard
548 *
549 * By default SDL will not grab the keyboard so system shortcuts still work.
550 */
551#define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD"
552
553/**
554 * \brief A variable containing a list of devices to ignore in SDL_hid_enumerate()
555 *
556 * For example, to ignore the Shanwan DS3 controller and any Valve controller, you might
557 * have the string "0x2563/0x0523,0x28de/0x0000"
558 */
559#define SDL_HINT_HIDAPI_IGNORE_DEVICES "SDL_HIDAPI_IGNORE_DEVICES"
560
561/**
562 * \brief A variable controlling whether the idle timer is disabled on iOS.
563 *
564 * When an iOS app does not receive touches for some time, the screen is
565 * dimmed automatically. For games where the accelerometer is the only input
566 * this is problematic. This functionality can be disabled by setting this
567 * hint.
568 *
569 * As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver()
570 * accomplish the same thing on iOS. They should be preferred over this hint.
571 *
572 * This variable can be set to the following values:
573 * "0" - Enable idle timer
574 * "1" - Disable idle timer
575 */
576#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED"
577
578/**
579 * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events.
580 *
581 * The variable can be set to the following values:
582 * "0" - SDL_TEXTEDITING events are sent, and it is the application's
583 * responsibility to render the text from these events and
584 * differentiate it somehow from committed text. (default)
585 * "1" - If supported by the IME then SDL_TEXTEDITING events are not sent,
586 * and text that is being composed will be rendered in its own UI.
587 */
588#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING"
589
590/**
591 * \brief A variable to control whether certain IMEs should show native UI components (such as the Candidate List) instead of suppressing them.
592 *
593 * The variable can be set to the following values:
594 * "0" - Native UI components are not display. (default)
595 * "1" - Native UI components are displayed.
596 */
597#define SDL_HINT_IME_SHOW_UI "SDL_IME_SHOW_UI"
598
599/**
600 * \brief A variable to control if extended IME text support is enabled.
601 * If enabled then SDL_TextEditingExtEvent will be issued if the text would be truncated otherwise.
602 * Additionally SDL_TextInputEvent will be dispatched multiple times so that it is not truncated.
603 *
604 * The variable can be set to the following values:
605 * "0" - Legacy behavior. Text can be truncated, no heap allocations. (default)
606 * "1" - Modern behavior.
607 */
608#define SDL_HINT_IME_SUPPORT_EXTENDED_TEXT "SDL_IME_SUPPORT_EXTENDED_TEXT"
609
610/**
611 * \brief A variable controlling whether the home indicator bar on iPhone X
612 * should be hidden.
613 *
614 * This variable can be set to the following values:
615 * "0" - The indicator bar is not hidden (default for windowed applications)
616 * "1" - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications)
617 * "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)
618 */
619#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR"
620
621/**
622 * \brief A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background.
623 *
624 * The variable can be set to the following values:
625 * "0" - Disable joystick & gamecontroller input events when the
626 * application is in the background.
627 * "1" - Enable joystick & gamecontroller input events when the
628 * application is in the background.
629 *
630 * The default value is "0". This hint may be set at any time.
631 */
632#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS"
633
634/**
635 * A variable containing a list of arcade stick style controllers.
636 *
637 * The format of the string is a comma separated list of USB VID/PID pairs
638 * in hexadecimal form, e.g.
639 *
640 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
641 *
642 * The variable can also take the form of @file, in which case the named
643 * file will be loaded and interpreted as the value of the variable.
644 */
645#define SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES "SDL_JOYSTICK_ARCADESTICK_DEVICES"
646
647/**
648 * A variable containing a list of devices that are not arcade stick style controllers. This will override SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES and the built in device list.
649 *
650 * The format of the string is a comma separated list of USB VID/PID pairs
651 * in hexadecimal form, e.g.
652 *
653 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
654 *
655 * The variable can also take the form of @file, in which case the named
656 * file will be loaded and interpreted as the value of the variable.
657 */
658#define SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES_EXCLUDED "SDL_JOYSTICK_ARCADESTICK_DEVICES_EXCLUDED"
659
660/**
661 * A variable containing a list of devices that should not be considerd joysticks.
662 *
663 * The format of the string is a comma separated list of USB VID/PID pairs
664 * in hexadecimal form, e.g.
665 *
666 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
667 *
668 * The variable can also take the form of @file, in which case the named
669 * file will be loaded and interpreted as the value of the variable.
670 */
671#define SDL_HINT_JOYSTICK_BLACKLIST_DEVICES "SDL_JOYSTICK_BLACKLIST_DEVICES"
672
673/**
674 * A variable containing a list of devices that should be considered joysticks. This will override SDL_HINT_JOYSTICK_BLACKLIST_DEVICES and the built in device list.
675 *
676 * The format of the string is a comma separated list of USB VID/PID pairs
677 * in hexadecimal form, e.g.
678 *
679 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
680 *
681 * The variable can also take the form of @file, in which case the named
682 * file will be loaded and interpreted as the value of the variable.
683 */
684#define SDL_HINT_JOYSTICK_BLACKLIST_DEVICES_EXCLUDED "SDL_JOYSTICK_BLACKLIST_DEVICES_EXCLUDED"
685
686/**
687 * A variable containing a list of flightstick style controllers.
688 *
689 * The format of the string is a comma separated list of USB VID/PID pairs
690 * in hexadecimal form, e.g.
691 *
692 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
693 *
694 * The variable can also take the form of @file, in which case the named
695 * file will be loaded and interpreted as the value of the variable.
696 */
697#define SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES "SDL_JOYSTICK_FLIGHTSTICK_DEVICES"
698
699/**
700 * A variable containing a list of devices that are not flightstick style controllers. This will override SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES and the built in device list.
701 *
702 * The format of the string is a comma separated list of USB VID/PID pairs
703 * in hexadecimal form, e.g.
704 *
705 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
706 *
707 * The variable can also take the form of @file, in which case the named
708 * file will be loaded and interpreted as the value of the variable.
709 */
710#define SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES_EXCLUDED "SDL_JOYSTICK_FLIGHTSTICK_DEVICES_EXCLUDED"
711
712/**
713 * A variable containing a list of devices known to have a GameCube form factor.
714 *
715 * The format of the string is a comma separated list of USB VID/PID pairs
716 * in hexadecimal form, e.g.
717 *
718 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
719 *
720 * The variable can also take the form of @file, in which case the named
721 * file will be loaded and interpreted as the value of the variable.
722 */
723#define SDL_HINT_JOYSTICK_GAMECUBE_DEVICES "SDL_JOYSTICK_GAMECUBE_DEVICES"
724
725/**
726 * A variable containing a list of devices known not to have a GameCube form factor. This will override SDL_HINT_JOYSTICK_GAMECUBE_DEVICES and the built in device list.
727 *
728 * The format of the string is a comma separated list of USB VID/PID pairs
729 * in hexadecimal form, e.g.
730 *
731 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
732 *
733 * The variable can also take the form of @file, in which case the named
734 * file will be loaded and interpreted as the value of the variable.
735 */
736#define SDL_HINT_JOYSTICK_GAMECUBE_DEVICES_EXCLUDED "SDL_JOYSTICK_GAMECUBE_DEVICES_EXCLUDED"
737
738/**
739 * \brief A variable controlling whether the HIDAPI joystick drivers should be used.
740 *
741 * This variable can be set to the following values:
742 * "0" - HIDAPI drivers are not used
743 * "1" - HIDAPI drivers are used (the default)
744 *
745 * This variable is the default for all drivers, but can be overridden by the hints for specific drivers below.
746 */
747#define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI"
748
749/**
750 * \brief A variable controlling whether the HIDAPI driver for Nintendo GameCube controllers should be used.
751 *
752 * This variable can be set to the following values:
753 * "0" - HIDAPI driver is not used
754 * "1" - HIDAPI driver is used
755 *
756 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
757 */
758#define SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE "SDL_JOYSTICK_HIDAPI_GAMECUBE"
759
760/**
761 * \brief A variable controlling whether "low_frequency_rumble" and "high_frequency_rumble" is used to implement
762 * the GameCube controller's 3 rumble modes, Stop(0), Rumble(1), and StopHard(2)
763 * this is useful for applications that need full compatibility for things like ADSR envelopes.
764 * Stop is implemented by setting "low_frequency_rumble" to "0" and "high_frequency_rumble" ">0"
765 * Rumble is both at any arbitrary value,
766 * StopHard is implemented by setting both "low_frequency_rumble" and "high_frequency_rumble" to "0"
767 *
768 * This variable can be set to the following values:
769 * "0" - Normal rumble behavior is behavior is used (default)
770 * "1" - Proper GameCube controller rumble behavior is used
771 *
772 */
773#define SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE "SDL_JOYSTICK_GAMECUBE_RUMBLE_BRAKE"
774
775/**
776 * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch Joy-Cons should be used.
777 *
778 * This variable can be set to the following values:
779 * "0" - HIDAPI driver is not used
780 * "1" - HIDAPI driver is used
781 *
782 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
783 */
784#define SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS "SDL_JOYSTICK_HIDAPI_JOY_CONS"
785
786/**
787 * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be combined into a single Pro-like controller when using the HIDAPI driver
788 *
789 * This variable can be set to the following values:
790 * "0" - Left and right Joy-Con controllers will not be combined and each will be a mini-gamepad
791 * "1" - Left and right Joy-Con controllers will be combined into a single controller (the default)
792 */
793#define SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS "SDL_JOYSTICK_HIDAPI_COMBINE_JOY_CONS"
794
795/**
796 * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be in vertical mode when using the HIDAPI driver
797 *
798 * This variable can be set to the following values:
799 * "0" - Left and right Joy-Con controllers will not be in vertical mode (the default)
800 * "1" - Left and right Joy-Con controllers will be in vertical mode
801 *
802 * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
803 */
804#define SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS "SDL_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS"
805
806/**
807 * \brief A variable controlling whether the HIDAPI driver for Amazon Luna controllers connected via Bluetooth should be used.
808 *
809 * This variable can be set to the following values:
810 * "0" - HIDAPI driver is not used
811 * "1" - HIDAPI driver is used
812 *
813 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
814 */
815#define SDL_HINT_JOYSTICK_HIDAPI_LUNA "SDL_JOYSTICK_HIDAPI_LUNA"
816
817/**
818 * \brief A variable controlling whether the HIDAPI driver for Nintendo Online classic controllers should be used.
819 *
820 * This variable can be set to the following values:
821 * "0" - HIDAPI driver is not used
822 * "1" - HIDAPI driver is used
823 *
824 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
825 */
826#define SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC "SDL_JOYSTICK_HIDAPI_NINTENDO_CLASSIC"
827
828/**
829 * \brief A variable controlling whether the HIDAPI driver for NVIDIA SHIELD controllers should be used.
830 *
831 * This variable can be set to the following values:
832 * "0" - HIDAPI driver is not used
833 * "1" - HIDAPI driver is used
834 *
835 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
836 */
837#define SDL_HINT_JOYSTICK_HIDAPI_SHIELD "SDL_JOYSTICK_HIDAPI_SHIELD"
838
839/**
840 * \brief A variable controlling whether the HIDAPI driver for PS3 controllers should be used.
841 *
842 * This variable can be set to the following values:
843 * "0" - HIDAPI driver is not used
844 * "1" - HIDAPI driver is used
845 *
846 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI on macOS, and "0" on other platforms.
847 *
848 * It is not possible to use this driver on Windows, due to limitations in the default drivers
849 * installed. See https://github.com/ViGEm/DsHidMini for an alternative driver on Windows.
850 */
851#define SDL_HINT_JOYSTICK_HIDAPI_PS3 "SDL_JOYSTICK_HIDAPI_PS3"
852
853/**
854 * \brief A variable controlling whether the HIDAPI driver for PS4 controllers should be used.
855 *
856 * This variable can be set to the following values:
857 * "0" - HIDAPI driver is not used
858 * "1" - HIDAPI driver is used
859 *
860 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
861 */
862#define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4"
863
864/**
865 * \brief A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver.
866 *
867 * This variable can be set to the following values:
868 * "0" - extended reports are not enabled (the default)
869 * "1" - extended reports
870 *
871 * Extended input reports allow rumble on Bluetooth PS4 controllers, but
872 * break DirectInput handling for applications that don't use SDL.
873 *
874 * Once extended reports are enabled, they can not be disabled without
875 * power cycling the controller.
876 *
877 * For compatibility with applications written for versions of SDL prior
878 * to the introduction of PS5 controller support, this value will also
879 * control the state of extended reports on PS5 controllers when the
880 * SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE hint is not explicitly set.
881 */
882#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE"
883
884/**
885 * \brief A variable controlling whether the HIDAPI driver for PS5 controllers should be used.
886 *
887 * This variable can be set to the following values:
888 * "0" - HIDAPI driver is not used
889 * "1" - HIDAPI driver is used
890 *
891 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
892 */
893#define SDL_HINT_JOYSTICK_HIDAPI_PS5 "SDL_JOYSTICK_HIDAPI_PS5"
894
895/**
896 * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a PS5 controller.
897 *
898 * This variable can be set to the following values:
899 * "0" - player LEDs are not enabled
900 * "1" - player LEDs are enabled (the default)
901 */
902#define SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED "SDL_JOYSTICK_HIDAPI_PS5_PLAYER_LED"
903
904/**
905 * \brief A variable controlling whether extended input reports should be used for PS5 controllers when using the HIDAPI driver.
906 *
907 * This variable can be set to the following values:
908 * "0" - extended reports are not enabled (the default)
909 * "1" - extended reports
910 *
911 * Extended input reports allow rumble on Bluetooth PS5 controllers, but
912 * break DirectInput handling for applications that don't use SDL.
913 *
914 * Once extended reports are enabled, they can not be disabled without
915 * power cycling the controller.
916 *
917 * For compatibility with applications written for versions of SDL prior
918 * to the introduction of PS5 controller support, this value defaults to
919 * the value of SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE.
920 */
921#define SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE "SDL_JOYSTICK_HIDAPI_PS5_RUMBLE"
922
923/**
924 * \brief A variable controlling whether the HIDAPI driver for Google Stadia controllers should be used.
925 *
926 * This variable can be set to the following values:
927 * "0" - HIDAPI driver is not used
928 * "1" - HIDAPI driver is used
929 *
930 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
931 */
932#define SDL_HINT_JOYSTICK_HIDAPI_STADIA "SDL_JOYSTICK_HIDAPI_STADIA"
933
934/**
935 * \brief A variable controlling whether the HIDAPI driver for Bluetooth Steam Controllers should be used.
936 *
937 * This variable can be set to the following values:
938 * "0" - HIDAPI driver is not used
939 * "1" - HIDAPI driver is used for Steam Controllers, which requires Bluetooth access
940 * and may prompt the user for permission on iOS and Android.
941 *
942 * The default is "0"
943 */
944#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM"
945
946/**
947 * \brief A variable controlling whether the HIDAPI driver for the Steam Deck builtin controller should be used.
948 *
949 * This variable can be set to the following values:
950 * "0" - HIDAPI driver is not used
951 * "1" - HIDAPI driver is used
952 *
953 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
954 */
955#define SDL_HINT_JOYSTICK_HIDAPI_STEAMDECK "SDL_JOYSTICK_HIDAPI_STEAMDECK"
956
957/**
958 * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used.
959 *
960 * This variable can be set to the following values:
961 * "0" - HIDAPI driver is not used
962 * "1" - HIDAPI driver is used
963 *
964 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
965 */
966#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH"
967
968/**
969 * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Pro controller is opened
970 *
971 * This variable can be set to the following values:
972 * "0" - home button LED is turned off
973 * "1" - home button LED is turned on
974 *
975 * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED.
976 */
977#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED "SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED"
978
979/**
980 * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Joy-Con controller is opened
981 *
982 * This variable can be set to the following values:
983 * "0" - home button LED is turned off
984 * "1" - home button LED is turned on
985 *
986 * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED.
987 */
988#define SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED "SDL_JOYSTICK_HIDAPI_JOYCON_HOME_LED"
989
990/**
991 * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Nintendo Switch controller.
992 *
993 * This variable can be set to the following values:
994 * "0" - player LEDs are not enabled
995 * "1" - player LEDs are enabled (the default)
996 */
997#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED "SDL_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED"
998
999/**
1000 * \brief A variable controlling whether the HIDAPI driver for Nintendo Wii and Wii U controllers should be used.
1001 *
1002 * This variable can be set to the following values:
1003 * "0" - HIDAPI driver is not used
1004 * "1" - HIDAPI driver is used
1005 *
1006 * This driver doesn't work with the dolphinbar, so the default is SDL_FALSE for now.
1007 */
1008#define SDL_HINT_JOYSTICK_HIDAPI_WII "SDL_JOYSTICK_HIDAPI_WII"
1009
1010/**
1011 * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Wii controller.
1012 *
1013 * This variable can be set to the following values:
1014 * "0" - player LEDs are not enabled
1015 * "1" - player LEDs are enabled (the default)
1016 */
1017#define SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED "SDL_JOYSTICK_HIDAPI_WII_PLAYER_LED"
1018
1019/**
1020 * \brief A variable controlling whether the HIDAPI driver for XBox controllers should be used.
1021 *
1022 * This variable can be set to the following values:
1023 * "0" - HIDAPI driver is not used
1024 * "1" - HIDAPI driver is used
1025 *
1026 * The default is "0" on Windows, otherwise the value of SDL_HINT_JOYSTICK_HIDAPI
1027 */
1028#define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX"
1029
1030/**
1031 * \brief A variable controlling whether the HIDAPI driver for XBox 360 controllers should be used.
1032 *
1033 * This variable can be set to the following values:
1034 * "0" - HIDAPI driver is not used
1035 * "1" - HIDAPI driver is used
1036 *
1037 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX
1038 */
1039#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 "SDL_JOYSTICK_HIDAPI_XBOX_360"
1040
1041/**
1042 * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with an Xbox 360 controller.
1043 *
1044 * This variable can be set to the following values:
1045 * "0" - player LEDs are not enabled
1046 * "1" - player LEDs are enabled (the default)
1047 */
1048#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED "SDL_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED"
1049
1050/**
1051 * \brief A variable controlling whether the HIDAPI driver for XBox 360 wireless controllers should be used.
1052 *
1053 * This variable can be set to the following values:
1054 * "0" - HIDAPI driver is not used
1055 * "1" - HIDAPI driver is used
1056 *
1057 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX_360
1058 */
1059#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS "SDL_JOYSTICK_HIDAPI_XBOX_360_WIRELESS"
1060
1061/**
1062 * \brief A variable controlling whether the HIDAPI driver for XBox One controllers should be used.
1063 *
1064 * This variable can be set to the following values:
1065 * "0" - HIDAPI driver is not used
1066 * "1" - HIDAPI driver is used
1067 *
1068 * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX
1069 */
1070#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE "SDL_JOYSTICK_HIDAPI_XBOX_ONE"
1071
1072/**
1073 * \brief A variable controlling whether the Home button LED should be turned on when an Xbox One controller is opened
1074 *
1075 * This variable can be set to the following values:
1076 * "0" - home button LED is turned off
1077 * "1" - home button LED is turned on
1078 *
1079 * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. The default brightness is 0.4.
1080 */
1081#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED "SDL_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED"
1082
1083/**
1084 * A variable controlling whether IOKit should be used for controller handling.
1085 *
1086 * This variable can be set to the following values:
1087 * "0" - IOKit is not used
1088 * "1" - IOKit is used (the default)
1089 */
1090#define SDL_HINT_JOYSTICK_IOKIT "SDL_JOYSTICK_IOKIT"
1091
1092/**
1093 * A variable controlling whether GCController should be used for controller handling.
1094 *
1095 * This variable can be set to the following values:
1096 * "0" - GCController is not used
1097 * "1" - GCController is used (the default)
1098 */
1099#define SDL_HINT_JOYSTICK_MFI "SDL_JOYSTICK_MFI"
1100
1101/**
1102 * \brief A variable controlling whether the RAWINPUT joystick drivers should be used for better handling XInput-capable devices.
1103 *
1104 * This variable can be set to the following values:
1105 * "0" - RAWINPUT drivers are not used
1106 * "1" - RAWINPUT drivers are used (the default)
1107 */
1108#define SDL_HINT_JOYSTICK_RAWINPUT "SDL_JOYSTICK_RAWINPUT"
1109
1110/**
1111 * \brief A variable controlling whether the RAWINPUT driver should pull correlated data from XInput.
1112 *
1113 * This variable can be set to the following values:
1114 * "0" - RAWINPUT driver will only use data from raw input APIs
1115 * "1" - RAWINPUT driver will also pull data from XInput, providing
1116 * better trigger axes, guide button presses, and rumble support
1117 * for Xbox controllers
1118 *
1119 * The default is "1". This hint applies to any joysticks opened after setting the hint.
1120 */
1121#define SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT "SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT"
1122
1123/**
1124 * \brief A variable controlling whether the ROG Chakram mice should show up as joysticks
1125 *
1126 * This variable can be set to the following values:
1127 * "0" - ROG Chakram mice do not show up as joysticks (the default)
1128 * "1" - ROG Chakram mice show up as joysticks
1129 */
1130#define SDL_HINT_JOYSTICK_ROG_CHAKRAM "SDL_JOYSTICK_ROG_CHAKRAM"
1131
1132/**
1133 * \brief A variable controlling whether a separate thread should be used
1134 * for handling joystick detection and raw input messages on Windows
1135 *
1136 * This variable can be set to the following values:
1137 * "0" - A separate thread is not used (the default)
1138 * "1" - A separate thread is used for handling raw input messages
1139 *
1140 */
1141#define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD"
1142
1143/**
1144 * A variable containing a list of throttle style controllers.
1145 *
1146 * The format of the string is a comma separated list of USB VID/PID pairs
1147 * in hexadecimal form, e.g.
1148 *
1149 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
1150 *
1151 * The variable can also take the form of @file, in which case the named
1152 * file will be loaded and interpreted as the value of the variable.
1153 */
1154#define SDL_HINT_JOYSTICK_THROTTLE_DEVICES "SDL_JOYSTICK_THROTTLE_DEVICES"
1155
1156/**
1157 * A variable containing a list of devices that are not throttle style controllers. This will override SDL_HINT_JOYSTICK_THROTTLE_DEVICES and the built in device list.
1158 *
1159 * The format of the string is a comma separated list of USB VID/PID pairs
1160 * in hexadecimal form, e.g.
1161 *
1162 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
1163 *
1164 * The variable can also take the form of @file, in which case the named
1165 * file will be loaded and interpreted as the value of the variable.
1166 */
1167#define SDL_HINT_JOYSTICK_THROTTLE_DEVICES_EXCLUDED "SDL_JOYSTICK_THROTTLE_DEVICES_EXCLUDED"
1168
1169/**
1170 * \brief A variable controlling whether Windows.Gaming.Input should be used for controller handling.
1171 *
1172 * This variable can be set to the following values:
1173 * "0" - WGI is not used
1174 * "1" - WGI is used (the default)
1175 */
1176#define SDL_HINT_JOYSTICK_WGI "SDL_JOYSTICK_WGI"
1177
1178/**
1179 * A variable containing a list of wheel style controllers.
1180 *
1181 * The format of the string is a comma separated list of USB VID/PID pairs
1182 * in hexadecimal form, e.g.
1183 *
1184 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
1185 *
1186 * The variable can also take the form of @file, in which case the named
1187 * file will be loaded and interpreted as the value of the variable.
1188 */
1189#define SDL_HINT_JOYSTICK_WHEEL_DEVICES "SDL_JOYSTICK_WHEEL_DEVICES"
1190
1191/**
1192 * A variable containing a list of devices that are not wheel style controllers. This will override SDL_HINT_JOYSTICK_WHEEL_DEVICES and the built in device list.
1193 *
1194 * The format of the string is a comma separated list of USB VID/PID pairs
1195 * in hexadecimal form, e.g.
1196 *
1197 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
1198 *
1199 * The variable can also take the form of @file, in which case the named
1200 * file will be loaded and interpreted as the value of the variable.
1201 */
1202#define SDL_HINT_JOYSTICK_WHEEL_DEVICES_EXCLUDED "SDL_JOYSTICK_WHEEL_DEVICES_EXCLUDED"
1203
1204/**
1205 * A variable containing a list of devices known to have all axes centered at zero.
1206 *
1207 * The format of the string is a comma separated list of USB VID/PID pairs
1208 * in hexadecimal form, e.g.
1209 *
1210 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
1211 *
1212 * The variable can also take the form of @file, in which case the named
1213 * file will be loaded and interpreted as the value of the variable.
1214 */
1215#define SDL_HINT_JOYSTICK_ZERO_CENTERED_DEVICES "SDL_JOYSTICK_ZERO_CENTERED_DEVICES"
1216
1217/**
1218 * \brief Determines whether SDL enforces that DRM master is required in order
1219 * to initialize the KMSDRM video backend.
1220 *
1221 * The DRM subsystem has a concept of a "DRM master" which is a DRM client that
1222 * has the ability to set planes, set cursor, etc. When SDL is DRM master, it
1223 * can draw to the screen using the SDL rendering APIs. Without DRM master, SDL
1224 * is still able to process input and query attributes of attached displays,
1225 * but it cannot change display state or draw to the screen directly.
1226 *
1227 * In some cases, it can be useful to have the KMSDRM backend even if it cannot
1228 * be used for rendering. An app may want to use SDL for input processing while
1229 * using another rendering API (such as an MMAL overlay on Raspberry Pi) or
1230 * using its own code to render to DRM overlays that SDL doesn't support.
1231 *
1232 * This hint must be set before initializing the video subsystem.
1233 *
1234 * This variable can be set to the following values:
1235 * "0" - SDL will allow usage of the KMSDRM backend without DRM master
1236 * "1" - SDL Will require DRM master to use the KMSDRM backend (default)
1237 */
1238#define SDL_HINT_KMSDRM_REQUIRE_DRM_MASTER "SDL_KMSDRM_REQUIRE_DRM_MASTER"
1239
1240/**
1241 * \brief A comma separated list of devices to open as joysticks
1242 *
1243 * This variable is currently only used by the Linux joystick driver.
1244 */
1245#define SDL_HINT_JOYSTICK_DEVICE "SDL_JOYSTICK_DEVICE"
1246
1247/**
1248 * \brief A variable controlling whether joysticks on Linux will always treat 'hat' axis inputs (ABS_HAT0X - ABS_HAT3Y) as 8-way digital hats without checking whether they may be analog.
1249 *
1250 * This variable can be set to the following values:
1251 * "0" - Only map hat axis inputs to digital hat outputs if the input axes appear to actually be digital (the default)
1252 * "1" - Always handle the input axes numbered ABS_HAT0X to ABS_HAT3Y as digital hats
1253 */
1254#define SDL_HINT_LINUX_DIGITAL_HATS "SDL_LINUX_DIGITAL_HATS"
1255
1256/**
1257 * \brief A variable controlling whether digital hats on Linux will apply deadzones to their underlying input axes or use unfiltered values.
1258 *
1259 * This variable can be set to the following values:
1260 * "0" - Return digital hat values based on unfiltered input axis values
1261 * "1" - Return digital hat values with deadzones on the input axes taken into account (the default)
1262 */
1263#define SDL_HINT_LINUX_HAT_DEADZONES "SDL_LINUX_HAT_DEADZONES"
1264
1265/**
1266 * \brief A variable controlling whether to use the classic /dev/input/js* joystick interface or the newer /dev/input/event* joystick interface on Linux
1267 *
1268 * This variable can be set to the following values:
1269 * "0" - Use /dev/input/event*
1270 * "1" - Use /dev/input/js*
1271 *
1272 * By default the /dev/input/event* interfaces are used
1273 */
1274#define SDL_HINT_LINUX_JOYSTICK_CLASSIC "SDL_LINUX_JOYSTICK_CLASSIC"
1275
1276/**
1277 * \brief A variable controlling whether joysticks on Linux adhere to their HID-defined deadzones or return unfiltered values.
1278 *
1279 * This variable can be set to the following values:
1280 * "0" - Return unfiltered joystick axis values (the default)
1281 * "1" - Return axis values with deadzones taken into account
1282 */
1283#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES"
1284
1285/**
1286 * \brief A variable controlling the default SDL log levels.
1287 *
1288 * This variable is a comma separated set of category=level tokens that define the default logging levels for SDL applications.
1289 *
1290 * The category can be a numeric category, one of "app", "error", "assert", "system", "audio", "video", "render", "input", "test", or `*` for any unspecified category.
1291 *
1292 * The level can be a numeric level, one of "verbose", "debug", "info", "warn", "error", "critical", or "quiet" to disable that category.
1293 *
1294 * You can omit the category if you want to set the logging level for all categories.
1295 *
1296 * If this hint isn't set, the default log levels are equivalent to:
1297 * "app=info,assert=warn,test=verbose,*=error"
1298 */
1299#define SDL_HINT_LOGGING "SDL_LOGGING"
1300
1301/**
1302* \brief When set don't force the SDL app to become a foreground process
1303*
1304* This hint only applies to Mac OS X.
1305*
1306*/
1307#define SDL_HINT_MAC_BACKGROUND_APP "SDL_MAC_BACKGROUND_APP"
1308
1309/**
1310 * \brief A variable that determines whether ctrl+click should generate a right-click event on Mac
1311 *
1312 * If present, holding ctrl while left clicking will generate a right click
1313 * event when on Mac.
1314 */
1315#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK"
1316
1317/**
1318 * \brief A variable controlling whether dispatching OpenGL context updates should block the dispatching thread until the main thread finishes processing
1319 *
1320 * This variable can be set to the following values:
1321 * "0" - Dispatching OpenGL context updates will block the dispatching thread until the main thread finishes processing (default).
1322 * "1" - Dispatching OpenGL context updates will allow the dispatching thread to continue execution.
1323 *
1324 * Generally you want the default, but if you have OpenGL code in a background thread on a Mac, and the main thread
1325 * hangs because it's waiting for that background thread, but that background thread is also hanging because it's
1326 * waiting for the main thread to do an update, this might fix your issue.
1327 *
1328 * This hint only applies to macOS.
1329 *
1330 * This hint is available since SDL 2.24.0.
1331 *
1332 */
1333#define SDL_HINT_MAC_OPENGL_ASYNC_DISPATCH "SDL_MAC_OPENGL_ASYNC_DISPATCH"
1334
1335/**
1336 * \brief A variable setting the double click radius, in pixels.
1337 */
1338#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS "SDL_MOUSE_DOUBLE_CLICK_RADIUS"
1339
1340/**
1341 * \brief A variable setting the double click time, in milliseconds.
1342 */
1343#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME "SDL_MOUSE_DOUBLE_CLICK_TIME"
1344
1345/**
1346 * \brief Allow mouse click events when clicking to focus an SDL window
1347 *
1348 * This variable can be set to the following values:
1349 * "0" - Ignore mouse clicks that activate a window
1350 * "1" - Generate events for mouse clicks that activate a window
1351 *
1352 * By default SDL will ignore mouse clicks that activate a window
1353 */
1354#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH"
1355
1356/**
1357 * \brief A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode
1358 */
1359#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE "SDL_MOUSE_NORMAL_SPEED_SCALE"
1360
1361/**
1362 * \brief A variable controlling whether relative mouse mode constrains the mouse to the center of the window
1363 *
1364 * This variable can be set to the following values:
1365 * "0" - Relative mouse mode constrains the mouse to the window
1366 * "1" - Relative mouse mode constrains the mouse to the center of the window
1367 *
1368 * Constraining to the center of the window works better for FPS games and when the
1369 * application is running over RDP. Constraining to the whole window works better
1370 * for 2D games and increases the chance that the mouse will be in the correct
1371 * position when using high DPI mice.
1372 *
1373 * By default SDL will constrain the mouse to the center of the window
1374 */
1375#define SDL_HINT_MOUSE_RELATIVE_MODE_CENTER "SDL_MOUSE_RELATIVE_MODE_CENTER"
1376
1377/**
1378 * \brief A variable controlling whether relative mouse mode is implemented using mouse warping
1379 *
1380 * This variable can be set to the following values:
1381 * "0" - Relative mouse mode uses raw input
1382 * "1" - Relative mouse mode uses mouse warping
1383 *
1384 * By default SDL will use raw input for relative mouse mode
1385 */
1386#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP"
1387
1388/**
1389 * \brief A variable controlling whether relative mouse motion is affected by renderer scaling
1390 *
1391 * This variable can be set to the following values:
1392 * "0" - Relative motion is unaffected by DPI or renderer's logical size
1393 * "1" - Relative motion is scaled according to DPI scaling and logical size
1394 *
1395 * By default relative mouse deltas are affected by DPI and renderer scaling
1396 */
1397#define SDL_HINT_MOUSE_RELATIVE_SCALING "SDL_MOUSE_RELATIVE_SCALING"
1398
1399/**
1400 * \brief A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode
1401 */
1402#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE "SDL_MOUSE_RELATIVE_SPEED_SCALE"
1403
1404/**
1405 * \brief A variable controlling whether the system mouse acceleration curve is used for relative mouse motion.
1406 *
1407 * This variable can be set to the following values:
1408 * "0" - Relative mouse motion will be unscaled (the default)
1409 * "1" - Relative mouse motion will be scaled using the system mouse acceleration curve.
1410 *
1411 * If SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE is set, that will override the system speed scale.
1412 */
1413#define SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE "SDL_MOUSE_RELATIVE_SYSTEM_SCALE"
1414
1415/**
1416 * \brief A variable controlling whether a motion event should be generated for mouse warping in relative mode.
1417 *
1418 * This variable can be set to the following values:
1419 * "0" - Warping the mouse will not generate a motion event in relative mode
1420 * "1" - Warping the mouse will generate a motion event in relative mode
1421 *
1422 * By default warping the mouse will not generate motion events in relative mode. This avoids the application having to filter out large relative motion due to warping.
1423 */
1424#define SDL_HINT_MOUSE_RELATIVE_WARP_MOTION "SDL_MOUSE_RELATIVE_WARP_MOTION"
1425
1426/**
1427 * \brief A variable controlling whether mouse events should generate synthetic touch events
1428 *
1429 * This variable can be set to the following values:
1430 * "0" - Mouse events will not generate touch events (default for desktop platforms)
1431 * "1" - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS)
1432 */
1433#define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS"
1434
1435/**
1436 * \brief A variable controlling whether the mouse is captured while mouse buttons are pressed
1437 *
1438 * This variable can be set to the following values:
1439 * "0" - The mouse is not captured while mouse buttons are pressed
1440 * "1" - The mouse is captured while mouse buttons are pressed
1441 *
1442 * By default the mouse is captured while mouse buttons are pressed so if the mouse is dragged
1443 * outside the window, the application continues to receive mouse events until the button is
1444 * released.
1445 */
1446#define SDL_HINT_MOUSE_AUTO_CAPTURE "SDL_MOUSE_AUTO_CAPTURE"
1447
1448/**
1449 * \brief Tell SDL not to catch the SIGINT or SIGTERM signals.
1450 *
1451 * This hint only applies to Unix-like platforms, and should set before
1452 * any calls to SDL_Init()
1453 *
1454 * The variable can be set to the following values:
1455 * "0" - SDL will install a SIGINT and SIGTERM handler, and when it
1456 * catches a signal, convert it into an SDL_QUIT event.
1457 * "1" - SDL will not install a signal handler at all.
1458 */
1459#define SDL_HINT_NO_SIGNAL_HANDLERS "SDL_NO_SIGNAL_HANDLERS"
1460
1461/**
1462 * \brief A variable controlling what driver to use for OpenGL ES contexts.
1463 *
1464 * On some platforms, currently Windows and X11, OpenGL drivers may support
1465 * creating contexts with an OpenGL ES profile. By default SDL uses these
1466 * profiles, when available, otherwise it attempts to load an OpenGL ES
1467 * library, e.g. that provided by the ANGLE project. This variable controls
1468 * whether SDL follows this default behaviour or will always load an
1469 * OpenGL ES library.
1470 *
1471 * Circumstances where this is useful include
1472 * - Testing an app with a particular OpenGL ES implementation, e.g ANGLE,
1473 * or emulator, e.g. those from ARM, Imagination or Qualcomm.
1474 * - Resolving OpenGL ES function addresses at link time by linking with
1475 * the OpenGL ES library instead of querying them at run time with
1476 * SDL_GL_GetProcAddress().
1477 *
1478 * Caution: for an application to work with the default behaviour across
1479 * different OpenGL drivers it must query the OpenGL ES function
1480 * addresses at run time using SDL_GL_GetProcAddress().
1481 *
1482 * This variable is ignored on most platforms because OpenGL ES is native
1483 * or not supported.
1484 *
1485 * This variable can be set to the following values:
1486 * "0" - Use ES profile of OpenGL, if available. (Default when not set.)
1487 * "1" - Load OpenGL ES library using the default library names.
1488 *
1489 */
1490#define SDL_HINT_OPENGL_ES_DRIVER "SDL_OPENGL_ES_DRIVER"
1491
1492/**
1493 * \brief A variable controlling which orientations are allowed on iOS/Android.
1494 *
1495 * In some circumstances it is necessary to be able to explicitly control
1496 * which UI orientations are allowed.
1497 *
1498 * This variable is a space delimited list of the following values:
1499 * "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown"
1500 */
1501#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS"
1502
1503/**
1504 * \brief A variable controlling the use of a sentinel event when polling the event queue
1505 *
1506 * This variable can be set to the following values:
1507 * "0" - Disable poll sentinels
1508 * "1" - Enable poll sentinels
1509 *
1510 * When polling for events, SDL_PumpEvents is used to gather new events from devices.
1511 * If a device keeps producing new events between calls to SDL_PumpEvents, a poll loop will
1512 * become stuck until the new events stop.
1513 * This is most noticeable when moving a high frequency mouse.
1514 *
1515 * By default, poll sentinels are enabled.
1516 */
1517#define SDL_HINT_POLL_SENTINEL "SDL_POLL_SENTINEL"
1518
1519/**
1520 * \brief Override for SDL_GetPreferredLocales()
1521 *
1522 * If set, this will be favored over anything the OS might report for the
1523 * user's preferred locales. Changing this hint at runtime will not generate
1524 * a SDL_LOCALECHANGED event (but if you can change the hint, you can push
1525 * your own event, if you want).
1526 *
1527 * The format of this hint is a comma-separated list of language and locale,
1528 * combined with an underscore, as is a common format: "en_GB". Locale is
1529 * optional: "en". So you might have a list like this: "en_GB,jp,es_PT"
1530 */
1531#define SDL_HINT_PREFERRED_LOCALES "SDL_PREFERRED_LOCALES"
1532
1533/**
1534 * \brief A variable describing the content orientation on QtWayland-based platforms.
1535 *
1536 * On QtWayland platforms, windows are rotated client-side to allow for custom
1537 * transitions. In order to correctly position overlays (e.g. volume bar) and
1538 * gestures (e.g. events view, close/minimize gestures), the system needs to
1539 * know in which orientation the application is currently drawing its contents.
1540 *
1541 * This does not cause the window to be rotated or resized, the application
1542 * needs to take care of drawing the content in the right orientation (the
1543 * framebuffer is always in portrait mode).
1544 *
1545 * This variable can be one of the following values:
1546 * "primary" (default), "portrait", "landscape", "inverted-portrait", "inverted-landscape"
1547 *
1548 * Since SDL 2.0.22 this variable accepts a comma-separated list of values above.
1549 */
1550#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION"
1551
1552/**
1553 * \brief Flags to set on QtWayland windows to integrate with the native window manager.
1554 *
1555 * On QtWayland platforms, this hint controls the flags to set on the windows.
1556 * For example, on Sailfish OS "OverridesSystemGestures" disables swipe gestures.
1557 *
1558 * This variable is a space-separated list of the following values (empty = no flags):
1559 * "OverridesSystemGestures", "StaysOnTop", "BypassWindowManager"
1560 */
1561#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS"
1562
1563/**
1564 * \brief A variable controlling whether the 2D render API is compatible or efficient.
1565 *
1566 * This variable can be set to the following values:
1567 *
1568 * "0" - Don't use batching to make rendering more efficient.
1569 * "1" - Use batching, but might cause problems if app makes its own direct OpenGL calls.
1570 *
1571 * Up to SDL 2.0.9, the render API would draw immediately when requested. Now
1572 * it batches up draw requests and sends them all to the GPU only when forced
1573 * to (during SDL_RenderPresent, when changing render targets, by updating a
1574 * texture that the batch needs, etc). This is significantly more efficient,
1575 * but it can cause problems for apps that expect to render on top of the
1576 * render API's output. As such, SDL will disable batching if a specific
1577 * render backend is requested (since this might indicate that the app is
1578 * planning to use the underlying graphics API directly). This hint can
1579 * be used to explicitly request batching in this instance. It is a contract
1580 * that you will either never use the underlying graphics API directly, or
1581 * if you do, you will call SDL_RenderFlush() before you do so any current
1582 * batch goes to the GPU before your work begins. Not following this contract
1583 * will result in undefined behavior.
1584 */
1585#define SDL_HINT_RENDER_BATCHING "SDL_RENDER_BATCHING"
1586
1587/**
1588 * \brief A variable controlling how the 2D render API renders lines
1589 *
1590 * This variable can be set to the following values:
1591 * "0" - Use the default line drawing method (Bresenham's line algorithm as of SDL 2.0.20)
1592 * "1" - Use the driver point API using Bresenham's line algorithm (correct, draws many points)
1593 * "2" - Use the driver line API (occasionally misses line endpoints based on hardware driver quirks, was the default before 2.0.20)
1594 * "3" - Use the driver geometry API (correct, draws thicker diagonal lines)
1595 *
1596 * This variable should be set when the renderer is created.
1597 */
1598#define SDL_HINT_RENDER_LINE_METHOD "SDL_RENDER_LINE_METHOD"
1599
1600/**
1601 * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer.
1602 *
1603 * This variable does not have any effect on the Direct3D 9 based renderer.
1604 *
1605 * This variable can be set to the following values:
1606 * "0" - Disable Debug Layer use
1607 * "1" - Enable Debug Layer use
1608 *
1609 * By default, SDL does not use Direct3D Debug Layer.
1610 */
1611#define SDL_HINT_RENDER_DIRECT3D11_DEBUG "SDL_RENDER_DIRECT3D11_DEBUG"
1612
1613/**
1614 * \brief A variable controlling whether the Direct3D device is initialized for thread-safe operations.
1615 *
1616 * This variable can be set to the following values:
1617 * "0" - Thread-safety is not enabled (faster)
1618 * "1" - Thread-safety is enabled
1619 *
1620 * By default the Direct3D device is created with thread-safety disabled.
1621 */
1622#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE"
1623
1624/**
1625 * \brief A variable specifying which render driver to use.
1626 *
1627 * If the application doesn't pick a specific renderer to use, this variable
1628 * specifies the name of the preferred renderer. If the preferred renderer
1629 * can't be initialized, the normal default renderer is used.
1630 *
1631 * This variable is case insensitive and can be set to the following values:
1632 * "direct3d"
1633 * "direct3d11"
1634 * "direct3d12"
1635 * "opengl"
1636 * "opengles2"
1637 * "opengles"
1638 * "metal"
1639 * "software"
1640 *
1641 * The default varies by platform, but it's the first one in the list that
1642 * is available on the current platform.
1643 */
1644#define SDL_HINT_RENDER_DRIVER "SDL_RENDER_DRIVER"
1645
1646/**
1647 * \brief A variable controlling the scaling policy for SDL_RenderSetLogicalSize.
1648 *
1649 * This variable can be set to the following values:
1650 * "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen
1651 * "1" or "overscan" - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen
1652 *
1653 * By default letterbox is used
1654 */
1655#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE "SDL_RENDER_LOGICAL_SIZE_MODE"
1656
1657/**
1658 * \brief A variable controlling whether the OpenGL render driver uses shaders if they are available.
1659 *
1660 * This variable can be set to the following values:
1661 * "0" - Disable shaders
1662 * "1" - Enable shaders
1663 *
1664 * By default shaders are used if OpenGL supports them.
1665 */
1666#define SDL_HINT_RENDER_OPENGL_SHADERS "SDL_RENDER_OPENGL_SHADERS"
1667
1668/**
1669 * \brief A variable controlling the scaling quality
1670 *
1671 * This variable can be set to the following values:
1672 * "0" or "nearest" - Nearest pixel sampling
1673 * "1" or "linear" - Linear filtering (supported by OpenGL and Direct3D)
1674 * "2" or "best" - Currently this is the same as "linear"
1675 *
1676 * By default nearest pixel sampling is used
1677 */
1678#define SDL_HINT_RENDER_SCALE_QUALITY "SDL_RENDER_SCALE_QUALITY"
1679
1680/**
1681 * \brief A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing.
1682 *
1683 * This variable can be set to the following values:
1684 * "0" - Disable vsync
1685 * "1" - Enable vsync
1686 *
1687 * By default SDL does not sync screen surface updates with vertical refresh.
1688 */
1689#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC"
1690
1691/**
1692 * \brief A variable controlling whether the Metal render driver select low power device over default one
1693 *
1694 * This variable can be set to the following values:
1695 * "0" - Use the prefered OS device
1696 * "1" - Select a low power one
1697 *
1698 * By default the prefered OS device is used.
1699 */
1700#define SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE "SDL_RENDER_METAL_PREFER_LOW_POWER_DEVICE"
1701
1702/**
1703 * A variable containing a list of ROG gamepad capable mice.
1704 *
1705 * The format of the string is a comma separated list of USB VID/PID pairs
1706 * in hexadecimal form, e.g.
1707 *
1708 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
1709 *
1710 * The variable can also take the form of @file, in which case the named
1711 * file will be loaded and interpreted as the value of the variable.
1712 */
1713#define SDL_HINT_ROG_GAMEPAD_MICE "SDL_ROG_GAMEPAD_MICE"
1714
1715/**
1716 * A variable containing a list of devices that are not ROG gamepad capable mice. This will override SDL_HINT_ROG_GAMEPAD_MICE and the built in device list.
1717 *
1718 * The format of the string is a comma separated list of USB VID/PID pairs
1719 * in hexadecimal form, e.g.
1720 *
1721 * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
1722 *
1723 * The variable can also take the form of @file, in which case the named
1724 * file will be loaded and interpreted as the value of the variable.
1725 */
1726#define SDL_HINT_ROG_GAMEPAD_MICE_EXCLUDED "SDL_ROG_GAMEPAD_MICE_EXCLUDED"
1727
1728/**
1729 * \brief A variable controlling if VSYNC is automatically disable if doesn't reach the enough FPS
1730 *
1731 * This variable can be set to the following values:
1732 * "0" - It will be using VSYNC as defined in the main flag. Default
1733 * "1" - If VSYNC was previously enabled, then it will disable VSYNC if doesn't reach enough speed
1734 *
1735 * By default SDL does not enable the automatic VSYNC
1736 */
1737#define SDL_HINT_PS2_DYNAMIC_VSYNC "SDL_PS2_DYNAMIC_VSYNC"
1738
1739/**
1740 * \brief A variable to control whether the return key on the soft keyboard
1741 * should hide the soft keyboard on Android and iOS.
1742 *
1743 * The variable can be set to the following values:
1744 * "0" - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default)
1745 * "1" - The return key will hide the keyboard.
1746 *
1747 * The value of this hint is used at runtime, so it can be changed at any time.
1748 */
1749#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME"
1750
1751/**
1752 * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI
1753 *
1754 * Also known as Z-order. The variable can take a negative or positive value.
1755 * The default is 10000.
1756 */
1757#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER"
1758
1759/**
1760 * \brief Specify an "activity name" for screensaver inhibition.
1761 *
1762 * Some platforms, notably Linux desktops, list the applications which are
1763 * inhibiting the screensaver or other power-saving features.
1764 *
1765 * This hint lets you specify the "activity name" sent to the OS when
1766 * SDL_DisableScreenSaver() is used (or the screensaver is automatically
1767 * disabled). The contents of this hint are used when the screensaver is
1768 * disabled. You should use a string that describes what your program is doing
1769 * (and, therefore, why the screensaver is disabled). For example, "Playing a
1770 * game" or "Watching a video".
1771 *
1772 * Setting this to "" or leaving it unset will have SDL use a reasonable
1773 * default: "Playing a game" or something similar.
1774 *
1775 * On targets where this is not supported, this hint does nothing.
1776 */
1777#define SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME "SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME"
1778
1779/**
1780 * \brief Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as realtime.
1781 *
1782 * On some platforms, like Linux, a realtime priority thread may be subject to restrictions
1783 * that require special handling by the application. This hint exists to let SDL know that
1784 * the app is prepared to handle said restrictions.
1785 *
1786 * On Linux, SDL will apply the following configuration to any thread that becomes realtime:
1787 * * The SCHED_RESET_ON_FORK bit will be set on the scheduling policy,
1788 * * An RLIMIT_RTTIME budget will be configured to the rtkit specified limit.
1789 * * Exceeding this limit will result in the kernel sending SIGKILL to the app,
1790 * * Refer to the man pages for more information.
1791 *
1792 * This variable can be set to the following values:
1793 * "0" - default platform specific behaviour
1794 * "1" - Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling policy
1795 */
1796#define SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL"
1797
1798/**
1799* \brief A string specifying additional information to use with SDL_SetThreadPriority.
1800*
1801* By default SDL_SetThreadPriority will make appropriate system changes in order to
1802* apply a thread priority. For example on systems using pthreads the scheduler policy
1803* is changed automatically to a policy that works well with a given priority.
1804* Code which has specific requirements can override SDL's default behavior with this hint.
1805*
1806* pthread hint values are "current", "other", "fifo" and "rr".
1807* Currently no other platform hint values are defined but may be in the future.
1808*
1809* \note On Linux, the kernel may send SIGKILL to realtime tasks which exceed the distro
1810* configured execution budget for rtkit. This budget can be queried through RLIMIT_RTTIME
1811* after calling SDL_SetThreadPriority().
1812*/
1813#define SDL_HINT_THREAD_PRIORITY_POLICY "SDL_THREAD_PRIORITY_POLICY"
1814
1815/**
1816* \brief A string specifying SDL's threads stack size in bytes or "0" for the backend's default size
1817*
1818* Use this hint in case you need to set SDL's threads stack size to other than the default.
1819* This is specially useful if you build SDL against a non glibc libc library (such as musl) which
1820* provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses).
1821* Support for this hint is currently available only in the pthread, Windows, and PSP backend.
1822*
1823* Instead of this hint, in 2.0.9 and later, you can use
1824* SDL_CreateThreadWithStackSize(). This hint only works with the classic
1825* SDL_CreateThread().
1826*/
1827#define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE"
1828
1829/**
1830 * \brief A variable that controls the timer resolution, in milliseconds.
1831 *
1832 * The higher resolution the timer, the more frequently the CPU services
1833 * timer interrupts, and the more precise delays are, but this takes up
1834 * power and CPU time. This hint is only used on Windows.
1835 *
1836 * See this blog post for more information:
1837 * http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/
1838 *
1839 * If this variable is set to "0", the system timer resolution is not set.
1840 *
1841 * The default value is "1". This hint may be set at any time.
1842 */
1843#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION"
1844
1845/**
1846 * \brief A variable controlling whether touch events should generate synthetic mouse events
1847 *
1848 * This variable can be set to the following values:
1849 * "0" - Touch events will not generate mouse events
1850 * "1" - Touch events will generate mouse events
1851 *
1852 * By default SDL will generate mouse events for touch events
1853 */
1854#define SDL_HINT_TOUCH_MOUSE_EVENTS "SDL_TOUCH_MOUSE_EVENTS"
1855
1856/**
1857 * \brief A variable controlling which touchpad should generate synthetic mouse events
1858 *
1859 * This variable can be set to the following values:
1860 * "0" - Only front touchpad should generate mouse events. Default
1861 * "1" - Only back touchpad should generate mouse events.
1862 * "2" - Both touchpads should generate mouse events.
1863 *
1864 * By default SDL will generate mouse events for all touch devices
1865 */
1866#define SDL_HINT_VITA_TOUCH_MOUSE_DEVICE "SDL_HINT_VITA_TOUCH_MOUSE_DEVICE"
1867
1868/**
1869 * \brief A variable controlling whether the Android / tvOS remotes
1870 * should be listed as joystick devices, instead of sending keyboard events.
1871 *
1872 * This variable can be set to the following values:
1873 * "0" - Remotes send enter/escape/arrow key events
1874 * "1" - Remotes are available as 2 axis, 2 button joysticks (the default).
1875 */
1876#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK"
1877
1878/**
1879 * \brief A variable controlling whether the screensaver is enabled.
1880 *
1881 * This variable can be set to the following values:
1882 * "0" - Disable screensaver
1883 * "1" - Enable screensaver
1884 *
1885 * By default SDL will disable the screensaver.
1886 */
1887#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER"
1888
1889/**
1890 * \brief Tell the video driver that we only want a double buffer.
1891 *
1892 * By default, most lowlevel 2D APIs will use a triple buffer scheme that
1893 * wastes no CPU time on waiting for vsync after issuing a flip, but
1894 * introduces a frame of latency. On the other hand, using a double buffer
1895 * scheme instead is recommended for cases where low latency is an important
1896 * factor because we save a whole frame of latency.
1897 * We do so by waiting for vsync immediately after issuing a flip, usually just
1898 * after eglSwapBuffers call in the backend's *_SwapWindow function.
1899 *
1900 * Since it's driver-specific, it's only supported where possible and
1901 * implemented. Currently supported the following drivers:
1902 *
1903 * - KMSDRM (kmsdrm)
1904 * - Raspberry Pi (raspberrypi)
1905 */
1906#define SDL_HINT_VIDEO_DOUBLE_BUFFER "SDL_VIDEO_DOUBLE_BUFFER"
1907
1908/**
1909 * \brief A variable controlling whether the EGL window is allowed to be
1910 * composited as transparent, rather than opaque.
1911 *
1912 * Most window systems will always render windows opaque, even if the surface
1913 * format has an alpha channel. This is not always true, however, so by default
1914 * SDL will try to enforce opaque composition. To override this behavior, you
1915 * can set this hint to "1".
1916 */
1917#define SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY "SDL_VIDEO_EGL_ALLOW_TRANSPARENCY"
1918
1919/**
1920 * \brief A variable controlling whether the graphics context is externally managed.
1921 *
1922 * This variable can be set to the following values:
1923 * "0" - SDL will manage graphics contexts that are attached to windows.
1924 * "1" - Disable graphics context management on windows.
1925 *
1926 * By default SDL will manage OpenGL contexts in certain situations. For example, on Android the
1927 * context will be automatically saved and restored when pausing the application. Additionally, some
1928 * platforms will assume usage of OpenGL if Vulkan isn't used. Setting this to "1" will prevent this
1929 * behavior, which is desireable when the application manages the graphics context, such as
1930 * an externally managed OpenGL context or attaching a Vulkan surface to the window.
1931 */
1932#define SDL_HINT_VIDEO_EXTERNAL_CONTEXT "SDL_VIDEO_EXTERNAL_CONTEXT"
1933
1934/**
1935 * \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS)
1936 */
1937#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED"
1938
1939/**
1940 * \brief A variable that dictates policy for fullscreen Spaces on Mac OS X.
1941 *
1942 * This hint only applies to Mac OS X.
1943 *
1944 * The variable can be set to the following values:
1945 * "0" - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and
1946 * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen"
1947 * button on their titlebars).
1948 * "1" - Enable Spaces support (FULLSCREEN_DESKTOP will use them and
1949 * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen"
1950 * button on their titlebars).
1951 *
1952 * The default value is "1". This hint must be set before any windows are created.
1953 */
1954#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES "SDL_VIDEO_MAC_FULLSCREEN_SPACES"
1955
1956/**
1957 * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to false.
1958 * \warning Before SDL 2.0.14, this defaulted to true! In 2.0.14, we're
1959 * seeing if "true" causes more problems than it solves in modern times.
1960 *
1961 */
1962#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS"
1963
1964/**
1965 * \brief A variable controlling whether the libdecor Wayland backend is allowed to be used.
1966 *
1967 * This variable can be set to the following values:
1968 * "0" - libdecor use is disabled.
1969 * "1" - libdecor use is enabled (default).
1970 *
1971 * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable.
1972 */
1973#define SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR "SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR"
1974
1975/**
1976 * \brief A variable controlling whether the libdecor Wayland backend is preferred over native decrations.
1977 *
1978 * When this hint is set, libdecor will be used to provide window decorations, even if xdg-decoration is
1979 * available. (Note that, by default, libdecor will use xdg-decoration itself if available).
1980 *
1981 * This variable can be set to the following values:
1982 * "0" - libdecor is enabled only if server-side decorations are unavailable.
1983 * "1" - libdecor is always enabled if available.
1984 *
1985 * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable.
1986 */
1987#define SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR "SDL_VIDEO_WAYLAND_PREFER_LIBDECOR"
1988
1989/**
1990 * \brief A variable controlling whether video mode emulation is enabled under Wayland.
1991 *
1992 * When this hint is set, a standard set of emulated CVT video modes will be exposed for use by the application.
1993 * If it is disabled, the only modes exposed will be the logical desktop size and, in the case of a scaled
1994 * desktop, the native display resolution.
1995 *
1996 * This variable can be set to the following values:
1997 * "0" - Video mode emulation is disabled.
1998 * "1" - Video mode emulation is enabled.
1999 *
2000 * By default video mode emulation is enabled.
2001 */
2002#define SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION "SDL_VIDEO_WAYLAND_MODE_EMULATION"
2003
2004/**
2005 * \brief Enable or disable mouse pointer warp emulation, needed by some older games.
2006 *
2007 * When this hint is set, any SDL will emulate mouse warps using relative mouse mode.
2008 * This is required for some older games (such as Source engine games), which warp the
2009 * mouse to the centre of the screen rather than using relative mouse motion. Note that
2010 * relative mouse mode may have different mouse acceleration behaviour than pointer warps.
2011 *
2012 * This variable can be set to the following values:
2013 * "0" - All mouse warps fail, as mouse warping is not available under wayland.
2014 * "1" - Some mouse warps will be emulated by forcing relative mouse mode.
2015 *
2016 * If not set, this is automatically enabled unless an application uses relative mouse
2017 * mode directly.
2018 */
2019#define SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP "SDL_VIDEO_WAYLAND_EMULATE_MOUSE_WARP"
2020
2021/**
2022* \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p").
2023*
2024* If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has
2025* SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly
2026* created SDL_Window:
2027*
2028* 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is
2029* needed for example when sharing an OpenGL context across multiple windows.
2030*
2031* 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for
2032* OpenGL rendering.
2033*
2034* This variable can be set to the following values:
2035* The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should
2036* share a pixel format with.
2037*/
2038#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT"
2039
2040/**
2041 * \brief When calling SDL_CreateWindowFrom(), make the window compatible with OpenGL.
2042 *
2043 * This variable can be set to the following values:
2044 * "0" - Don't add any graphics flags to the SDL_WindowFlags
2045 * "1" - Add SDL_WINDOW_OPENGL to the SDL_WindowFlags
2046 *
2047 * By default SDL will not make the foreign window compatible with OpenGL.
2048 */
2049#define SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL "SDL_VIDEO_FOREIGN_WINDOW_OPENGL"
2050
2051/**
2052 * \brief When calling SDL_CreateWindowFrom(), make the window compatible with Vulkan.
2053 *
2054 * This variable can be set to the following values:
2055 * "0" - Don't add any graphics flags to the SDL_WindowFlags
2056 * "1" - Add SDL_WINDOW_VULKAN to the SDL_WindowFlags
2057 *
2058 * By default SDL will not make the foreign window compatible with Vulkan.
2059 */
2060#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN "SDL_VIDEO_FOREIGN_WINDOW_VULKAN"
2061
2062/**
2063* \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries
2064*
2065* SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It
2066* can use two different sets of binaries, those compiled by the user from source
2067* or those provided by the Chrome browser. In the later case, these binaries require
2068* that SDL loads a DLL providing the shader compiler.
2069*
2070* This variable can be set to the following values:
2071* "d3dcompiler_46.dll" - default, best for Vista or later.
2072* "d3dcompiler_43.dll" - for XP support.
2073* "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries.
2074*
2075*/
2076#define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER"
2077
2078/**
2079 * \brief A variable controlling whether X11 should use GLX or EGL by default
2080 *
2081 * This variable can be set to the following values:
2082 * "0" - Use GLX
2083 * "1" - Use EGL
2084 *
2085 * By default SDL will use GLX when both are present.
2086 */
2087#define SDL_HINT_VIDEO_X11_FORCE_EGL "SDL_VIDEO_X11_FORCE_EGL"
2088
2089/**
2090 * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used.
2091 *
2092 * This variable can be set to the following values:
2093 * "0" - Disable _NET_WM_BYPASS_COMPOSITOR
2094 * "1" - Enable _NET_WM_BYPASS_COMPOSITOR
2095 *
2096 * By default SDL will use _NET_WM_BYPASS_COMPOSITOR
2097 *
2098 */
2099#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR"
2100
2101/**
2102 * \brief A variable controlling whether the X11 _NET_WM_PING protocol should be supported.
2103 *
2104 * This variable can be set to the following values:
2105 * "0" - Disable _NET_WM_PING
2106 * "1" - Enable _NET_WM_PING
2107 *
2108 * By default SDL will use _NET_WM_PING, but for applications that know they
2109 * will not always be able to respond to ping requests in a timely manner they can
2110 * turn it off to avoid the window manager thinking the app is hung.
2111 * The hint is checked in CreateWindow.
2112 */
2113#define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING"
2114
2115/**
2116 * \brief A variable forcing the visual ID chosen for new X11 windows
2117 *
2118 */
2119#define SDL_HINT_VIDEO_X11_WINDOW_VISUALID "SDL_VIDEO_X11_WINDOW_VISUALID"
2120
2121/**
2122 * \brief A no-longer-used variable controlling whether the X11 Xinerama extension should be used.
2123 *
2124 * Before SDL 2.0.24, this would let apps and users disable Xinerama support on X11.
2125 * Now SDL never uses Xinerama, and does not check for this hint at all.
2126 * The preprocessor define is left here for source compatibility.
2127 */
2128#define SDL_HINT_VIDEO_X11_XINERAMA "SDL_VIDEO_X11_XINERAMA"
2129
2130/**
2131 * \brief A variable controlling whether the X11 XRandR extension should be used.
2132 *
2133 * This variable can be set to the following values:
2134 * "0" - Disable XRandR
2135 * "1" - Enable XRandR
2136 *
2137 * By default SDL will use XRandR.
2138 */
2139#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR"
2140
2141/**
2142 * \brief A no-longer-used variable controlling whether the X11 VidMode extension should be used.
2143 *
2144 * Before SDL 2.0.24, this would let apps and users disable XVidMode support on X11.
2145 * Now SDL never uses XVidMode, and does not check for this hint at all.
2146 * The preprocessor define is left here for source compatibility.
2147 */
2148#define SDL_HINT_VIDEO_X11_XVIDMODE "SDL_VIDEO_X11_XVIDMODE"
2149
2150/**
2151 * \brief Controls how the fact chunk affects the loading of a WAVE file.
2152 *
2153 * The fact chunk stores information about the number of samples of a WAVE
2154 * file. The Standards Update from Microsoft notes that this value can be used
2155 * to 'determine the length of the data in seconds'. This is especially useful
2156 * for compressed formats (for which this is a mandatory chunk) if they produce
2157 * multiple sample frames per block and truncating the block is not allowed.
2158 * The fact chunk can exactly specify how many sample frames there should be
2159 * in this case.
2160 *
2161 * Unfortunately, most application seem to ignore the fact chunk and so SDL
2162 * ignores it by default as well.
2163 *
2164 * This variable can be set to the following values:
2165 *
2166 * "truncate" - Use the number of samples to truncate the wave data if
2167 * the fact chunk is present and valid
2168 * "strict" - Like "truncate", but raise an error if the fact chunk
2169 * is invalid, not present for non-PCM formats, or if the
2170 * data chunk doesn't have that many samples
2171 * "ignorezero" - Like "truncate", but ignore fact chunk if the number of
2172 * samples is zero
2173 * "ignore" - Ignore fact chunk entirely (default)
2174 */
2175#define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK"
2176
2177/**
2178 * \brief Controls how the size of the RIFF chunk affects the loading of a WAVE file.
2179 *
2180 * The size of the RIFF chunk (which includes all the sub-chunks of the WAVE
2181 * file) is not always reliable. In case the size is wrong, it's possible to
2182 * just ignore it and step through the chunks until a fixed limit is reached.
2183 *
2184 * Note that files that have trailing data unrelated to the WAVE file or
2185 * corrupt files may slow down the loading process without a reliable boundary.
2186 * By default, SDL stops after 10000 chunks to prevent wasting time. Use the
2187 * environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value.
2188 *
2189 * This variable can be set to the following values:
2190 *
2191 * "force" - Always use the RIFF chunk size as a boundary for the chunk search
2192 * "ignorezero" - Like "force", but a zero size searches up to 4 GiB (default)
2193 * "ignore" - Ignore the RIFF chunk size and always search up to 4 GiB
2194 * "maximum" - Search for chunks until the end of file (not recommended)
2195 */
2196#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE "SDL_WAVE_RIFF_CHUNK_SIZE"
2197
2198/**
2199 * \brief Controls how a truncated WAVE file is handled.
2200 *
2201 * A WAVE file is considered truncated if any of the chunks are incomplete or
2202 * the data chunk size is not a multiple of the block size. By default, SDL
2203 * decodes until the first incomplete block, as most applications seem to do.
2204 *
2205 * This variable can be set to the following values:
2206 *
2207 * "verystrict" - Raise an error if the file is truncated
2208 * "strict" - Like "verystrict", but the size of the RIFF chunk is ignored
2209 * "dropframe" - Decode until the first incomplete sample frame
2210 * "dropblock" - Decode until the first incomplete block (default)
2211 */
2212#define SDL_HINT_WAVE_TRUNCATION "SDL_WAVE_TRUNCATION"
2213
2214/**
2215 * \brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception.
2216 * The 0x406D1388 Exception is a trick used to inform Visual Studio of a
2217 * thread's name, but it tends to cause problems with other debuggers,
2218 * and the .NET runtime. Note that SDL 2.0.6 and later will still use
2219 * the (safer) SetThreadDescription API, introduced in the Windows 10
2220 * Creators Update, if available.
2221 *
2222 * The variable can be set to the following values:
2223 * "0" - SDL will raise the 0x406D1388 Exception to name threads.
2224 * This is the default behavior of SDL <= 2.0.4.
2225 * "1" - SDL will not raise this exception, and threads will be unnamed. (default)
2226 * This is necessary with .NET languages or debuggers that aren't Visual Studio.
2227 */
2228#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING"
2229
2230/**
2231 * \brief Controls whether menus can be opened with their keyboard shortcut (Alt+mnemonic).
2232 *
2233 * If the mnemonics are enabled, then menus can be opened by pressing the Alt
2234 * key and the corresponding mnemonic (for example, Alt+F opens the File menu).
2235 * However, in case an invalid mnemonic is pressed, Windows makes an audible
2236 * beep to convey that nothing happened. This is true even if the window has
2237 * no menu at all!
2238 *
2239 * Because most SDL applications don't have menus, and some want to use the Alt
2240 * key for other purposes, SDL disables mnemonics (and the beeping) by default.
2241 *
2242 * Note: This also affects keyboard events: with mnemonics enabled, when a
2243 * menu is opened from the keyboard, you will not receive a KEYUP event for
2244 * the mnemonic key, and *might* not receive one for Alt.
2245 *
2246 * This variable can be set to the following values:
2247 * "0" - Alt+mnemonic does nothing, no beeping. (default)
2248 * "1" - Alt+mnemonic opens menus, invalid mnemonics produce a beep.
2249 */
2250#define SDL_HINT_WINDOWS_ENABLE_MENU_MNEMONICS "SDL_WINDOWS_ENABLE_MENU_MNEMONICS"
2251
2252/**
2253 * \brief A variable controlling whether the windows message loop is processed by SDL
2254 *
2255 * This variable can be set to the following values:
2256 * "0" - The window message loop is not run
2257 * "1" - The window message loop is processed in SDL_PumpEvents()
2258 *
2259 * By default SDL will process the windows message loop
2260 */
2261#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP"
2262
2263/**
2264 * \brief Force SDL to use Critical Sections for mutexes on Windows.
2265 * On Windows 7 and newer, Slim Reader/Writer Locks are available.
2266 * They offer better performance, allocate no kernel ressources and
2267 * use less memory. SDL will fall back to Critical Sections on older
2268 * OS versions or if forced to by this hint.
2269 *
2270 * This variable can be set to the following values:
2271 * "0" - Use SRW Locks when available. If not, fall back to Critical Sections. (default)
2272 * "1" - Force the use of Critical Sections in all cases.
2273 *
2274 */
2275#define SDL_HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS "SDL_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS"
2276
2277/**
2278 * \brief Force SDL to use Kernel Semaphores on Windows.
2279 * Kernel Semaphores are inter-process and require a context
2280 * switch on every interaction. On Windows 8 and newer, the
2281 * WaitOnAddress API is available. Using that and atomics to
2282 * implement semaphores increases performance.
2283 * SDL will fall back to Kernel Objects on older OS versions
2284 * or if forced to by this hint.
2285 *
2286 * This variable can be set to the following values:
2287 * "0" - Use Atomics and WaitOnAddress API when available. If not, fall back to Kernel Objects. (default)
2288 * "1" - Force the use of Kernel Objects in all cases.
2289 *
2290 */
2291#define SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL "SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL"
2292
2293/**
2294 * \brief A variable to specify custom icon resource id from RC file on Windows platform
2295 */
2296#define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON"
2297#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL"
2298
2299/**
2300 * \brief Tell SDL not to generate window-close events for Alt+F4 on Windows.
2301 *
2302 * The variable can be set to the following values:
2303 * "0" - SDL will generate a window-close event when it sees Alt+F4.
2304 * "1" - SDL will only do normal key handling for Alt+F4.
2305 */
2306#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4"
2307
2308/**
2309 * \brief Use the D3D9Ex API introduced in Windows Vista, instead of normal D3D9.
2310 * Direct3D 9Ex contains changes to state management that can eliminate device
2311 * loss errors during scenarios like Alt+Tab or UAC prompts. D3D9Ex may require
2312 * some changes to your application to cope with the new behavior, so this
2313 * is disabled by default.
2314 *
2315 * This hint must be set before initializing the video subsystem.
2316 *
2317 * For more information on Direct3D 9Ex, see:
2318 * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/graphics-apis-in-windows-vista#direct3d-9ex
2319 * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/direct3d-9ex-improvements
2320 *
2321 * This variable can be set to the following values:
2322 * "0" - Use the original Direct3D 9 API (default)
2323 * "1" - Use the Direct3D 9Ex API on Vista and later (and fall back if D3D9Ex is unavailable)
2324 *
2325 */
2326#define SDL_HINT_WINDOWS_USE_D3D9EX "SDL_WINDOWS_USE_D3D9EX"
2327
2328/**
2329 * \brief Controls whether SDL will declare the process to be DPI aware.
2330 *
2331 * This hint must be set before initializing the video subsystem.
2332 *
2333 * The main purpose of declaring DPI awareness is to disable OS bitmap scaling of SDL windows on monitors with
2334 * a DPI scale factor.
2335 *
2336 * This hint is equivalent to requesting DPI awareness via external means (e.g. calling SetProcessDpiAwarenessContext)
2337 * and does not cause SDL to use a virtualized coordinate system, so it will generally give you 1 SDL coordinate = 1 pixel
2338 * even on high-DPI displays.
2339 *
2340 * For more information, see:
2341 * https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows
2342 *
2343 * This variable can be set to the following values:
2344 * "" - Do not change the DPI awareness (default).
2345 * "unaware" - Declare the process as DPI unaware. (Windows 8.1 and later).
2346 * "system" - Request system DPI awareness. (Vista and later).
2347 * "permonitor" - Request per-monitor DPI awareness. (Windows 8.1 and later).
2348 * "permonitorv2" - Request per-monitor V2 DPI awareness. (Windows 10, version 1607 and later).
2349 * The most visible difference from "permonitor" is that window title bar will be scaled
2350 * to the visually correct size when dragging between monitors with different scale factors.
2351 * This is the preferred DPI awareness level.
2352 *
2353 * If the requested DPI awareness is not available on the currently running OS, SDL will try to request the best
2354 * available match.
2355 */
2356#define SDL_HINT_WINDOWS_DPI_AWARENESS "SDL_WINDOWS_DPI_AWARENESS"
2357
2358/**
2359 * \brief Uses DPI-scaled points as the SDL coordinate system on Windows.
2360 *
2361 * This changes the SDL coordinate system units to be DPI-scaled points, rather than pixels everywhere.
2362 * This means windows will be appropriately sized, even when created on high-DPI displays with scaling.
2363 *
2364 * e.g. requesting a 640x480 window from SDL, on a display with 125% scaling in Windows display settings,
2365 * will create a window with an 800x600 client area (in pixels).
2366 *
2367 * Setting this to "1" implicitly requests process DPI awareness (setting SDL_WINDOWS_DPI_AWARENESS is unnecessary),
2368 * and forces SDL_WINDOW_ALLOW_HIGHDPI on all windows.
2369 *
2370 * This variable can be set to the following values:
2371 * "0" - SDL coordinates equal Windows coordinates. No automatic window resizing when dragging
2372 * between monitors with different scale factors (unless this is performed by
2373 * Windows itself, which is the case when the process is DPI unaware).
2374 * "1" - SDL coordinates are in DPI-scaled points. Automatically resize windows as needed on
2375 * displays with non-100% scale factors.
2376 */
2377#define SDL_HINT_WINDOWS_DPI_SCALING "SDL_WINDOWS_DPI_SCALING"
2378
2379/**
2380 * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden
2381 *
2382 * This variable can be set to the following values:
2383 * "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc)
2384 * "1" - The window frame is interactive when the cursor is hidden
2385 *
2386 * By default SDL will allow interaction with the window frame when the cursor is hidden
2387 */
2388#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN"
2389
2390/**
2391* \brief A variable controlling whether the window is activated when the SDL_ShowWindow function is called
2392*
2393* This variable can be set to the following values:
2394* "0" - The window is activated when the SDL_ShowWindow function is called
2395* "1" - The window is not activated when the SDL_ShowWindow function is called
2396*
2397* By default SDL will activate the window when the SDL_ShowWindow function is called
2398*/
2399#define SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN "SDL_WINDOW_NO_ACTIVATION_WHEN_SHOWN"
2400
2401/** \brief Allows back-button-press events on Windows Phone to be marked as handled
2402 *
2403 * Windows Phone devices typically feature a Back button. When pressed,
2404 * the OS will emit back-button-press events, which apps are expected to
2405 * handle in an appropriate manner. If apps do not explicitly mark these
2406 * events as 'Handled', then the OS will invoke its default behavior for
2407 * unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to
2408 * terminate the app (and attempt to switch to the previous app, or to the
2409 * device's home screen).
2410 *
2411 * Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL
2412 * to mark back-button-press events as Handled, if and when one is sent to
2413 * the app.
2414 *
2415 * Internally, Windows Phone sends back button events as parameters to
2416 * special back-button-press callback functions. Apps that need to respond
2417 * to back-button-press events are expected to register one or more
2418 * callback functions for such, shortly after being launched (during the
2419 * app's initialization phase). After the back button is pressed, the OS
2420 * will invoke these callbacks. If the app's callback(s) do not explicitly
2421 * mark the event as handled by the time they return, or if the app never
2422 * registers one of these callback, the OS will consider the event
2423 * un-handled, and it will apply its default back button behavior (terminate
2424 * the app).
2425 *
2426 * SDL registers its own back-button-press callback with the Windows Phone
2427 * OS. This callback will emit a pair of SDL key-press events (SDL_KEYDOWN
2428 * and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which
2429 * it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON.
2430 * If the hint's value is set to "1", the back button event's Handled
2431 * property will get set to 'true'. If the hint's value is set to something
2432 * else, or if it is unset, SDL will leave the event's Handled property
2433 * alone. (By default, the OS sets this property to 'false', to note.)
2434 *
2435 * SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a
2436 * back button is pressed, or can set it in direct-response to a back button
2437 * being pressed.
2438 *
2439 * In order to get notified when a back button is pressed, SDL apps should
2440 * register a callback function with SDL_AddEventWatch(), and have it listen
2441 * for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK.
2442 * (Alternatively, SDL_KEYUP events can be listened-for. Listening for
2443 * either event type is suitable.) Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON
2444 * set by such a callback, will be applied to the OS' current
2445 * back-button-press event.
2446 *
2447 * More details on back button behavior in Windows Phone apps can be found
2448 * at the following page, on Microsoft's developer site:
2449 * http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx
2450 */
2451#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON"
2452
2453/** \brief Label text for a WinRT app's privacy policy link
2454 *
2455 * Network-enabled WinRT apps must include a privacy policy. On Windows 8, 8.1, and RT,
2456 * Microsoft mandates that this policy be available via the Windows Settings charm.
2457 * SDL provides code to add a link there, with its label text being set via the
2458 * optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
2459 *
2460 * Please note that a privacy policy's contents are not set via this hint. A separate
2461 * hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the
2462 * policy.
2463 *
2464 * The contents of this hint should be encoded as a UTF8 string.
2465 *
2466 * The default value is "Privacy Policy". This hint should only be set during app
2467 * initialization, preferably before any calls to SDL_Init().
2468 *
2469 * For additional information on linking to a privacy policy, see the documentation for
2470 * SDL_HINT_WINRT_PRIVACY_POLICY_URL.
2471 */
2472#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL"
2473
2474/**
2475 * \brief A URL to a WinRT app's privacy policy
2476 *
2477 * All network-enabled WinRT apps must make a privacy policy available to its
2478 * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be
2479 * be available in the Windows Settings charm, as accessed from within the app.
2480 * SDL provides code to add a URL-based link there, which can point to the app's
2481 * privacy policy.
2482 *
2483 * To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL
2484 * before calling any SDL_Init() functions. The contents of the hint should
2485 * be a valid URL. For example, "http://www.example.com".
2486 *
2487 * The default value is "", which will prevent SDL from adding a privacy policy
2488 * link to the Settings charm. This hint should only be set during app init.
2489 *
2490 * The label text of an app's "Privacy Policy" link may be customized via another
2491 * hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
2492 *
2493 * Please note that on Windows Phone, Microsoft does not provide standard UI
2494 * for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL
2495 * will not get used on that platform. Network-enabled phone apps should display
2496 * their privacy policy through some other, in-app means.
2497 */
2498#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL"
2499
2500/**
2501 * \brief Mark X11 windows as override-redirect.
2502 *
2503 * If set, this _might_ increase framerate at the expense of the desktop
2504 * not working as expected. Override-redirect windows aren't noticed by the
2505 * window manager at all.
2506 *
2507 * You should probably only use this for fullscreen windows, and you probably
2508 * shouldn't even use it for that. But it's here if you want to try!
2509 */
2510#define SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT "SDL_X11_FORCE_OVERRIDE_REDIRECT"
2511
2512/**
2513 * \brief A variable that lets you disable the detection and use of Xinput gamepad devices
2514 *
2515 * The variable can be set to the following values:
2516 * "0" - Disable XInput detection (only uses direct input)
2517 * "1" - Enable XInput detection (the default)
2518 */
2519#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED"
2520
2521 /**
2522 * \brief A variable that lets you disable the detection and use of DirectInput gamepad devices
2523 *
2524 * The variable can be set to the following values:
2525 * "0" - Disable DirectInput detection (only uses XInput)
2526 * "1" - Enable DirectInput detection (the default)
2527 */
2528#define SDL_HINT_DIRECTINPUT_ENABLED "SDL_DIRECTINPUT_ENABLED"
2529
2530/**
2531 * \brief A variable that causes SDL to use the old axis and button mapping for XInput devices.
2532 *
2533 * This hint is for backwards compatibility only and will be removed in SDL 2.1
2534 *
2535 * The default value is "0". This hint must be set before SDL_Init()
2536 */
2537#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING"
2538
2539/**
2540 * \brief A variable that causes SDL to not ignore audio "monitors"
2541 *
2542 * This is currently only used for PulseAudio and ignored elsewhere.
2543 *
2544 * By default, SDL ignores audio devices that aren't associated with physical
2545 * hardware. Changing this hint to "1" will expose anything SDL sees that
2546 * appears to be an audio source or sink. This will add "devices" to the list
2547 * that the user probably doesn't want or need, but it can be useful in
2548 * scenarios where you want to hook up SDL to some sort of virtual device,
2549 * etc.
2550 *
2551 * The default value is "0". This hint must be set before SDL_Init().
2552 *
2553 * This hint is available since SDL 2.0.16. Before then, virtual devices are
2554 * always ignored.
2555 */
2556#define SDL_HINT_AUDIO_INCLUDE_MONITORS "SDL_AUDIO_INCLUDE_MONITORS"
2557
2558/**
2559 * \brief A variable that forces X11 windows to create as a custom type.
2560 *
2561 * This is currently only used for X11 and ignored elsewhere.
2562 *
2563 * During SDL_CreateWindow, SDL uses the _NET_WM_WINDOW_TYPE X11 property
2564 * to report to the window manager the type of window it wants to create.
2565 * This might be set to various things if SDL_WINDOW_TOOLTIP or
2566 * SDL_WINDOW_POPUP_MENU, etc, were specified. For "normal" windows that
2567 * haven't set a specific type, this hint can be used to specify a custom
2568 * type. For example, a dock window might set this to
2569 * "_NET_WM_WINDOW_TYPE_DOCK".
2570 *
2571 * If not set or set to "", this hint is ignored. This hint must be set
2572 * before the SDL_CreateWindow() call that it is intended to affect.
2573 *
2574 * This hint is available since SDL 2.0.22.
2575 */
2576#define SDL_HINT_X11_WINDOW_TYPE "SDL_X11_WINDOW_TYPE"
2577
2578/**
2579 * \brief A variable that decides whether to send SDL_QUIT when closing the final window.
2580 *
2581 * By default, SDL sends an SDL_QUIT event when there is only one window
2582 * and it receives an SDL_WINDOWEVENT_CLOSE event, under the assumption most
2583 * apps would also take the loss of this window as a signal to terminate the
2584 * program.
2585 *
2586 * However, it's not unreasonable in some cases to have the program continue
2587 * to live on, perhaps to create new windows later.
2588 *
2589 * Changing this hint to "0" will cause SDL to not send an SDL_QUIT event
2590 * when the final window is requesting to close. Note that in this case,
2591 * there are still other legitimate reasons one might get an SDL_QUIT
2592 * event: choosing "Quit" from the macOS menu bar, sending a SIGINT (ctrl-c)
2593 * on Unix, etc.
2594 *
2595 * The default value is "1". This hint can be changed at any time.
2596 *
2597 * This hint is available since SDL 2.0.22. Before then, you always get
2598 * an SDL_QUIT event when closing the final window.
2599 */
2600#define SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE "SDL_QUIT_ON_LAST_WINDOW_CLOSE"
2601
2602
2603/**
2604 * \brief A variable that decides what video backend to use.
2605 *
2606 * By default, SDL will try all available video backends in a reasonable
2607 * order until it finds one that can work, but this hint allows the app
2608 * or user to force a specific target, such as "x11" if, say, you are
2609 * on Wayland but want to try talking to the X server instead.
2610 *
2611 * This functionality has existed since SDL 2.0.0 (indeed, before that)
2612 * but before 2.0.22 this was an environment variable only. In 2.0.22,
2613 * it was upgraded to a full SDL hint, so you can set the environment
2614 * variable as usual or programatically set the hint with SDL_SetHint,
2615 * which won't propagate to child processes.
2616 *
2617 * The default value is unset, in which case SDL will try to figure out
2618 * the best video backend on your behalf. This hint needs to be set
2619 * before SDL_Init() is called to be useful.
2620 *
2621 * This hint is available since SDL 2.0.22. Before then, you could set
2622 * the environment variable to get the same effect.
2623 */
2624#define SDL_HINT_VIDEODRIVER "SDL_VIDEODRIVER"
2625
2626/**
2627 * \brief A variable that decides what audio backend to use.
2628 *
2629 * By default, SDL will try all available audio backends in a reasonable
2630 * order until it finds one that can work, but this hint allows the app
2631 * or user to force a specific target, such as "alsa" if, say, you are
2632 * on PulseAudio but want to try talking to the lower level instead.
2633 *
2634 * This functionality has existed since SDL 2.0.0 (indeed, before that)
2635 * but before 2.0.22 this was an environment variable only. In 2.0.22,
2636 * it was upgraded to a full SDL hint, so you can set the environment
2637 * variable as usual or programatically set the hint with SDL_SetHint,
2638 * which won't propagate to child processes.
2639 *
2640 * The default value is unset, in which case SDL will try to figure out
2641 * the best audio backend on your behalf. This hint needs to be set
2642 * before SDL_Init() is called to be useful.
2643 *
2644 * This hint is available since SDL 2.0.22. Before then, you could set
2645 * the environment variable to get the same effect.
2646 */
2647#define SDL_HINT_AUDIODRIVER "SDL_AUDIODRIVER"
2648
2649/**
2650 * \brief A variable that decides what KMSDRM device to use.
2651 *
2652 * Internally, SDL might open something like "/dev/dri/cardNN" to
2653 * access KMSDRM functionality, where "NN" is a device index number.
2654 *
2655 * SDL makes a guess at the best index to use (usually zero), but the
2656 * app or user can set this hint to a number between 0 and 99 to
2657 * force selection.
2658 *
2659 * This hint is available since SDL 2.24.0.
2660 */
2661#define SDL_HINT_KMSDRM_DEVICE_INDEX "SDL_KMSDRM_DEVICE_INDEX"
2662
2663
2664/**
2665 * \brief A variable that treats trackpads as touch devices.
2666 *
2667 * On macOS (and possibly other platforms in the future), SDL will report
2668 * touches on a trackpad as mouse input, which is generally what users
2669 * expect from this device; however, these are often actually full
2670 * multitouch-capable touch devices, so it might be preferable to some apps
2671 * to treat them as such.
2672 *
2673 * Setting this hint to true will make the trackpad input report as a
2674 * multitouch device instead of a mouse. The default is false.
2675 *
2676 * Note that most platforms don't support this hint. As of 2.24.0, it
2677 * only supports MacBooks' trackpads on macOS. Others may follow later.
2678 *
2679 * This hint is checked during SDL_Init and can not be changed after.
2680 *
2681 * This hint is available since SDL 2.24.0.
2682 */
2683#define SDL_HINT_TRACKPAD_IS_TOUCH_ONLY "SDL_TRACKPAD_IS_TOUCH_ONLY"
2684
2685/**
2686 * Cause SDL to call dbus_shutdown() on quit.
2687 *
2688 * This is useful as a debug tool to validate memory leaks, but shouldn't ever
2689 * be set in production applications, as other libraries used by the application
2690 * might use dbus under the hood and this cause cause crashes if they continue
2691 * after SDL_Quit().
2692 *
2693 * This variable can be set to the following values:
2694 * "0" - SDL will not call dbus_shutdown() on quit (default)
2695 * "1" - SDL will call dbus_shutdown() on quit
2696 *
2697 * This hint is available since SDL 2.30.0.
2698 */
2699#define SDL_HINT_SHUTDOWN_DBUS_ON_QUIT "SDL_SHUTDOWN_DBUS_ON_QUIT"
2700
2701
2702/**
2703 * \brief An enumeration of hint priorities
2704 */
2705typedef enum
2706{
2707 SDL_HINT_DEFAULT,
2708 SDL_HINT_NORMAL,
2709 SDL_HINT_OVERRIDE
2710} SDL_HintPriority;
2711
2712
2713/**
2714 * Set a hint with a specific priority.
2715 *
2716 * The priority controls the behavior when setting a hint that already has a
2717 * value. Hints will replace existing hints of their priority and lower.
2718 * Environment variables are considered to have override priority.
2719 *
2720 * \param name the hint to set
2721 * \param value the value of the hint variable
2722 * \param priority the SDL_HintPriority level for the hint
2723 * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise.
2724 *
2725 * \since This function is available since SDL 2.0.0.
2726 *
2727 * \sa SDL_GetHint
2728 * \sa SDL_SetHint
2729 */
2730extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name,
2731 const char *value,
2732 SDL_HintPriority priority);
2733
2734/**
2735 * Set a hint with normal priority.
2736 *
2737 * Hints will not be set if there is an existing override hint or environment
2738 * variable that takes precedence. You can use SDL_SetHintWithPriority() to
2739 * set the hint with override priority instead.
2740 *
2741 * \param name the hint to set
2742 * \param value the value of the hint variable
2743 * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise.
2744 *
2745 * \since This function is available since SDL 2.0.0.
2746 *
2747 * \sa SDL_GetHint
2748 * \sa SDL_SetHintWithPriority
2749 */
2750extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name,
2751 const char *value);
2752
2753/**
2754 * Reset a hint to the default value.
2755 *
2756 * This will reset a hint to the value of the environment variable, or NULL if
2757 * the environment isn't set. Callbacks will be called normally with this
2758 * change.
2759 *
2760 * \param name the hint to set
2761 * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise.
2762 *
2763 * \since This function is available since SDL 2.24.0.
2764 *
2765 * \sa SDL_GetHint
2766 * \sa SDL_SetHint
2767 */
2768extern DECLSPEC SDL_bool SDLCALL SDL_ResetHint(const char *name);
2769
2770/**
2771 * Reset all hints to the default values.
2772 *
2773 * This will reset all hints to the value of the associated environment
2774 * variable, or NULL if the environment isn't set. Callbacks will be called
2775 * normally with this change.
2776 *
2777 * \since This function is available since SDL 2.26.0.
2778 *
2779 * \sa SDL_GetHint
2780 * \sa SDL_SetHint
2781 * \sa SDL_ResetHint
2782 */
2783extern DECLSPEC void SDLCALL SDL_ResetHints(void);
2784
2785/**
2786 * Get the value of a hint.
2787 *
2788 * \param name the hint to query
2789 * \returns the string value of a hint or NULL if the hint isn't set.
2790 *
2791 * \since This function is available since SDL 2.0.0.
2792 *
2793 * \sa SDL_SetHint
2794 * \sa SDL_SetHintWithPriority
2795 */
2796extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name);
2797
2798/**
2799 * Get the boolean value of a hint variable.
2800 *
2801 * \param name the name of the hint to get the boolean value from
2802 * \param default_value the value to return if the hint does not exist
2803 * \returns the boolean value of a hint or the provided default value if the
2804 * hint does not exist.
2805 *
2806 * \since This function is available since SDL 2.0.5.
2807 *
2808 * \sa SDL_GetHint
2809 * \sa SDL_SetHint
2810 */
2811extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value);
2812
2813/**
2814 * Type definition of the hint callback function.
2815 *
2816 * \param userdata what was passed as `userdata` to SDL_AddHintCallback()
2817 * \param name what was passed as `name` to SDL_AddHintCallback()
2818 * \param oldValue the previous hint value
2819 * \param newValue the new value hint is to be set to
2820 */
2821typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue);
2822
2823/**
2824 * Add a function to watch a particular hint.
2825 *
2826 * \param name the hint to watch
2827 * \param callback An SDL_HintCallback function that will be called when the
2828 * hint value changes
2829 * \param userdata a pointer to pass to the callback function
2830 *
2831 * \since This function is available since SDL 2.0.0.
2832 *
2833 * \sa SDL_DelHintCallback
2834 */
2835extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name,
2836 SDL_HintCallback callback,
2837 void *userdata);
2838
2839/**
2840 * Remove a function watching a particular hint.
2841 *
2842 * \param name the hint being watched
2843 * \param callback An SDL_HintCallback function that will be called when the
2844 * hint value changes
2845 * \param userdata a pointer being passed to the callback function
2846 *
2847 * \since This function is available since SDL 2.0.0.
2848 *
2849 * \sa SDL_AddHintCallback
2850 */
2851extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name,
2852 SDL_HintCallback callback,
2853 void *userdata);
2854
2855/**
2856 * Clear all hints.
2857 *
2858 * This function is automatically called during SDL_Quit(), and deletes all
2859 * callbacks without calling them and frees all memory associated with hints.
2860 * If you're calling this from application code you probably want to call
2861 * SDL_ResetHints() instead.
2862 *
2863 * This function will be removed from the API the next time we rev the ABI.
2864 *
2865 * \since This function is available since SDL 2.0.0.
2866 *
2867 * \sa SDL_ResetHints
2868 */
2869extern DECLSPEC void SDLCALL SDL_ClearHints(void);
2870
2871
2872/* Ends C function definitions when using C++ */
2873#ifdef __cplusplus
2874}
2875#endif
2876#include "close_code.h"
2877
2878#endif /* SDL_hints_h_ */
2879
2880/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_joystick.h b/src/contrib/SDL-2.30.2/include/SDL_joystick.h
new file mode 100644
index 0000000..561e010
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_joystick.h
@@ -0,0 +1,1069 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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#include "SDL_guid.h"
47#include "SDL_mutex.h"
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/**
56 * \file SDL_joystick.h
57 *
58 * In order to use these functions, SDL_Init() must have been called
59 * with the ::SDL_INIT_JOYSTICK flag. This causes SDL to scan the system
60 * for joysticks, and load appropriate drivers.
61 *
62 * If you would like to receive joystick updates while the application
63 * is in the background, you should set the following hint before calling
64 * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
65 */
66
67/**
68 * The joystick structure used to identify an SDL joystick
69 */
70#ifdef SDL_THREAD_SAFETY_ANALYSIS
71extern SDL_mutex *SDL_joystick_lock;
72#endif
73struct _SDL_Joystick;
74typedef struct _SDL_Joystick SDL_Joystick;
75
76/* A structure that encodes the stable unique id for a joystick device */
77typedef SDL_GUID SDL_JoystickGUID;
78
79/**
80 * This is a unique ID for a joystick for the time it is connected to the system,
81 * and is never reused for the lifetime of the application. If the joystick is
82 * disconnected and reconnected, it will get a new ID.
83 *
84 * The ID value starts at 0 and increments from there. The value -1 is an invalid ID.
85 */
86typedef Sint32 SDL_JoystickID;
87
88typedef enum
89{
90 SDL_JOYSTICK_TYPE_UNKNOWN,
91 SDL_JOYSTICK_TYPE_GAMECONTROLLER,
92 SDL_JOYSTICK_TYPE_WHEEL,
93 SDL_JOYSTICK_TYPE_ARCADE_STICK,
94 SDL_JOYSTICK_TYPE_FLIGHT_STICK,
95 SDL_JOYSTICK_TYPE_DANCE_PAD,
96 SDL_JOYSTICK_TYPE_GUITAR,
97 SDL_JOYSTICK_TYPE_DRUM_KIT,
98 SDL_JOYSTICK_TYPE_ARCADE_PAD,
99 SDL_JOYSTICK_TYPE_THROTTLE
100} SDL_JoystickType;
101
102typedef enum
103{
104 SDL_JOYSTICK_POWER_UNKNOWN = -1,
105 SDL_JOYSTICK_POWER_EMPTY, /* <= 5% */
106 SDL_JOYSTICK_POWER_LOW, /* <= 20% */
107 SDL_JOYSTICK_POWER_MEDIUM, /* <= 70% */
108 SDL_JOYSTICK_POWER_FULL, /* <= 100% */
109 SDL_JOYSTICK_POWER_WIRED,
110 SDL_JOYSTICK_POWER_MAX
111} SDL_JoystickPowerLevel;
112
113/* Set max recognized G-force from accelerometer
114 See src/joystick/uikit/SDL_sysjoystick.m for notes on why this is needed
115 */
116#define SDL_IPHONE_MAX_GFORCE 5.0
117
118
119/* Function prototypes */
120
121/**
122 * Locking for multi-threaded access to the joystick API
123 *
124 * If you are using the joystick API or handling events from multiple threads
125 * you should use these locking functions to protect access to the joysticks.
126 *
127 * In particular, you are guaranteed that the joystick list won't change, so
128 * the API functions that take a joystick index will be valid, and joystick
129 * and game controller events will not be delivered.
130 *
131 * As of SDL 2.26.0, you can take the joystick lock around reinitializing the
132 * joystick subsystem, to prevent other threads from seeing joysticks in an
133 * uninitialized state. However, all open joysticks will be closed and SDL
134 * functions called with them will fail.
135 *
136 * \since This function is available since SDL 2.0.7.
137 */
138extern DECLSPEC void SDLCALL SDL_LockJoysticks(void) SDL_ACQUIRE(SDL_joystick_lock);
139
140
141/**
142 * Unlocking for multi-threaded access to the joystick API
143 *
144 * If you are using the joystick API or handling events from multiple threads
145 * you should use these locking functions to protect access to the joysticks.
146 *
147 * In particular, you are guaranteed that the joystick list won't change, so
148 * the API functions that take a joystick index will be valid, and joystick
149 * and game controller events will not be delivered.
150 *
151 * \since This function is available since SDL 2.0.7.
152 */
153extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void) SDL_RELEASE(SDL_joystick_lock);
154
155/**
156 * Count the number of joysticks attached to the system.
157 *
158 * \returns the number of attached joysticks on success or a negative error
159 * code on failure; call SDL_GetError() for more information.
160 *
161 * \since This function is available since SDL 2.0.0.
162 *
163 * \sa SDL_JoystickName
164 * \sa SDL_JoystickPath
165 * \sa SDL_JoystickOpen
166 */
167extern DECLSPEC int SDLCALL SDL_NumJoysticks(void);
168
169/**
170 * Get the implementation dependent name of a joystick.
171 *
172 * This can be called before any joysticks are opened.
173 *
174 * \param device_index the index of the joystick to query (the N'th joystick
175 * on the system)
176 * \returns the name of the selected joystick. If no name can be found, this
177 * function returns NULL; call SDL_GetError() for more information.
178 *
179 * \since This function is available since SDL 2.0.0.
180 *
181 * \sa SDL_JoystickName
182 * \sa SDL_JoystickOpen
183 */
184extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index);
185
186/**
187 * Get the implementation dependent path of a joystick.
188 *
189 * This 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 path of the selected joystick. If no path can be found, this
194 * function returns NULL; call SDL_GetError() for more information.
195 *
196 * \since This function is available since SDL 2.24.0.
197 *
198 * \sa SDL_JoystickPath
199 * \sa SDL_JoystickOpen
200 */
201extern DECLSPEC const char *SDLCALL SDL_JoystickPathForIndex(int device_index);
202
203/**
204 * Get the player index of a joystick, or -1 if it's not available This can be
205 * called before any joysticks are opened.
206 *
207 * \since This function is available since SDL 2.0.9.
208 */
209extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index);
210
211/**
212 * Get the implementation-dependent GUID for the joystick at a given device
213 * index.
214 *
215 * This function can be called before any joysticks are opened.
216 *
217 * \param device_index the index of the joystick to query (the N'th joystick
218 * on the system
219 * \returns the GUID of the selected joystick. If called on an invalid index,
220 * this function returns a zero GUID
221 *
222 * \since This function is available since SDL 2.0.0.
223 *
224 * \sa SDL_JoystickGetGUID
225 * \sa SDL_JoystickGetGUIDString
226 */
227extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index);
228
229/**
230 * Get the USB vendor ID of a joystick, if available.
231 *
232 * This can be called before any joysticks are opened. If the vendor ID isn't
233 * available this function returns 0.
234 *
235 * \param device_index the index of the joystick to query (the N'th joystick
236 * on the system
237 * \returns the USB vendor ID of the selected joystick. If called on an
238 * invalid index, this function returns zero
239 *
240 * \since This function is available since SDL 2.0.6.
241 */
242extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index);
243
244/**
245 * Get the USB product ID of a joystick, if available.
246 *
247 * This can be called before any joysticks are opened. If the product ID isn't
248 * available this function returns 0.
249 *
250 * \param device_index the index of the joystick to query (the N'th joystick
251 * on the system
252 * \returns the USB product ID of the selected joystick. If called on an
253 * invalid index, this function returns zero
254 *
255 * \since This function is available since SDL 2.0.6.
256 */
257extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index);
258
259/**
260 * Get the product version of a joystick, if available.
261 *
262 * This can be called before any joysticks are opened. If the product version
263 * isn't available this function returns 0.
264 *
265 * \param device_index the index of the joystick to query (the N'th joystick
266 * on the system
267 * \returns the product version of the selected joystick. If called on an
268 * invalid index, this function returns zero
269 *
270 * \since This function is available since SDL 2.0.6.
271 */
272extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index);
273
274/**
275 * Get the type of a joystick, if available.
276 *
277 * This can be called before any joysticks are opened.
278 *
279 * \param device_index the index of the joystick to query (the N'th joystick
280 * on the system
281 * \returns the SDL_JoystickType of the selected joystick. If called on an
282 * invalid index, this function returns `SDL_JOYSTICK_TYPE_UNKNOWN`
283 *
284 * \since This function is available since SDL 2.0.6.
285 */
286extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index);
287
288/**
289 * Get the instance ID of a joystick.
290 *
291 * This can be called before any joysticks are opened.
292 *
293 * \param device_index the index of the joystick to query (the N'th joystick
294 * on the system
295 * \returns the instance id of the selected joystick. If called on an invalid
296 * index, this function returns -1.
297 *
298 * \since This function is available since SDL 2.0.6.
299 */
300extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int device_index);
301
302/**
303 * Open a joystick for use.
304 *
305 * The `device_index` argument refers to the N'th joystick presently
306 * recognized by SDL on the system. It is **NOT** the same as the instance ID
307 * used to identify the joystick in future events. See
308 * SDL_JoystickInstanceID() for more details about instance IDs.
309 *
310 * The joystick subsystem must be initialized before a joystick can be opened
311 * for use.
312 *
313 * \param device_index the index of the joystick to query
314 * \returns a joystick identifier or NULL if an error occurred; call
315 * SDL_GetError() for more information.
316 *
317 * \since This function is available since SDL 2.0.0.
318 *
319 * \sa SDL_JoystickClose
320 * \sa SDL_JoystickInstanceID
321 */
322extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index);
323
324/**
325 * Get the SDL_Joystick associated with an instance id.
326 *
327 * \param instance_id the instance id to get the SDL_Joystick for
328 * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError()
329 * for more information.
330 *
331 * \since This function is available since SDL 2.0.4.
332 */
333extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID instance_id);
334
335/**
336 * Get the SDL_Joystick associated with a player index.
337 *
338 * \param player_index the player index to get the SDL_Joystick for
339 * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError()
340 * for more information.
341 *
342 * \since This function is available since SDL 2.0.12.
343 */
344extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromPlayerIndex(int player_index);
345
346/**
347 * Attach a new virtual joystick.
348 *
349 * \returns the joystick's device index, or -1 if an error occurred.
350 *
351 * \since This function is available since SDL 2.0.14.
352 */
353extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtual(SDL_JoystickType type,
354 int naxes,
355 int nbuttons,
356 int nhats);
357
358/**
359 * The structure that defines an extended virtual joystick description
360 *
361 * The caller must zero the structure and then initialize the version with `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` before passing it to SDL_JoystickAttachVirtualEx()
362 * All other elements of this structure are optional and can be left 0.
363 *
364 * \sa SDL_JoystickAttachVirtualEx
365 */
366typedef struct SDL_VirtualJoystickDesc
367{
368 Uint16 version; /**< `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` */
369 Uint16 type; /**< `SDL_JoystickType` */
370 Uint16 naxes; /**< the number of axes on this joystick */
371 Uint16 nbuttons; /**< the number of buttons on this joystick */
372 Uint16 nhats; /**< the number of hats on this joystick */
373 Uint16 vendor_id; /**< the USB vendor ID of this joystick */
374 Uint16 product_id; /**< the USB product ID of this joystick */
375 Uint16 padding; /**< unused */
376 Uint32 button_mask; /**< A mask of which buttons are valid for this controller
377 e.g. (1 << SDL_CONTROLLER_BUTTON_A) */
378 Uint32 axis_mask; /**< A mask of which axes are valid for this controller
379 e.g. (1 << SDL_CONTROLLER_AXIS_LEFTX) */
380 const char *name; /**< the name of the joystick */
381
382 void *userdata; /**< User data pointer passed to callbacks */
383 void (SDLCALL *Update)(void *userdata); /**< Called when the joystick state should be updated */
384 void (SDLCALL *SetPlayerIndex)(void *userdata, int player_index); /**< Called when the player index is set */
385 int (SDLCALL *Rumble)(void *userdata, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble); /**< Implements SDL_JoystickRumble() */
386 int (SDLCALL *RumbleTriggers)(void *userdata, Uint16 left_rumble, Uint16 right_rumble); /**< Implements SDL_JoystickRumbleTriggers() */
387 int (SDLCALL *SetLED)(void *userdata, Uint8 red, Uint8 green, Uint8 blue); /**< Implements SDL_JoystickSetLED() */
388 int (SDLCALL *SendEffect)(void *userdata, const void *data, int size); /**< Implements SDL_JoystickSendEffect() */
389
390} SDL_VirtualJoystickDesc;
391
392/**
393 * \brief The current version of the SDL_VirtualJoystickDesc structure
394 */
395#define SDL_VIRTUAL_JOYSTICK_DESC_VERSION 1
396
397/**
398 * Attach a new virtual joystick with extended properties.
399 *
400 * \returns the joystick's device index, or -1 if an error occurred.
401 *
402 * \since This function is available since SDL 2.24.0.
403 */
404extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtualEx(const SDL_VirtualJoystickDesc *desc);
405
406/**
407 * Detach a virtual joystick.
408 *
409 * \param device_index a value previously returned from
410 * SDL_JoystickAttachVirtual()
411 * \returns 0 on success, or -1 if an error occurred.
412 *
413 * \since This function is available since SDL 2.0.14.
414 */
415extern DECLSPEC int SDLCALL SDL_JoystickDetachVirtual(int device_index);
416
417/**
418 * Query whether or not the joystick at a given device index is virtual.
419 *
420 * \param device_index a joystick device index.
421 * \returns SDL_TRUE if the joystick is virtual, SDL_FALSE otherwise.
422 *
423 * \since This function is available since SDL 2.0.14.
424 */
425extern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index);
426
427/**
428 * Set values on an opened, virtual-joystick's axis.
429 *
430 * Please note that values set here will not be applied until the next call to
431 * SDL_JoystickUpdate, which can either be called directly, or can be called
432 * indirectly through various other SDL APIs, including, but not limited to
433 * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,
434 * SDL_WaitEvent.
435 *
436 * Note that when sending trigger axes, you should scale the value to the full
437 * range of Sint16. For example, a trigger at rest would have the value of
438 * `SDL_JOYSTICK_AXIS_MIN`.
439 *
440 * \param joystick the virtual joystick on which to set state.
441 * \param axis the specific axis on the virtual joystick to set.
442 * \param value the new value for the specified axis.
443 * \returns 0 on success, -1 on error.
444 *
445 * \since This function is available since SDL 2.0.14.
446 */
447extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualAxis(SDL_Joystick *joystick, int axis, Sint16 value);
448
449/**
450 * Set values on an opened, virtual-joystick's button.
451 *
452 * Please note that values set here will not be applied until the next call to
453 * SDL_JoystickUpdate, which can either be called directly, or can be called
454 * indirectly through various other SDL APIs, including, but not limited to
455 * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,
456 * SDL_WaitEvent.
457 *
458 * \param joystick the virtual joystick on which to set state.
459 * \param button the specific button on the virtual joystick to set.
460 * \param value the new value for the specified button.
461 * \returns 0 on success, -1 on error.
462 *
463 * \since This function is available since SDL 2.0.14.
464 */
465extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualButton(SDL_Joystick *joystick, int button, Uint8 value);
466
467/**
468 * Set values on an opened, virtual-joystick's hat.
469 *
470 * Please note that values set here will not be applied until the next call to
471 * SDL_JoystickUpdate, which can either be called directly, or can be called
472 * indirectly through various other SDL APIs, including, but not limited to
473 * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,
474 * SDL_WaitEvent.
475 *
476 * \param joystick the virtual joystick on which to set state.
477 * \param hat the specific hat on the virtual joystick to set.
478 * \param value the new value for the specified hat.
479 * \returns 0 on success, -1 on error.
480 *
481 * \since This function is available since SDL 2.0.14.
482 */
483extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualHat(SDL_Joystick *joystick, int hat, Uint8 value);
484
485/**
486 * Get the implementation dependent name of a joystick.
487 *
488 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
489 * \returns the name of the selected joystick. If no name can be found, this
490 * function returns NULL; call SDL_GetError() for more information.
491 *
492 * \since This function is available since SDL 2.0.0.
493 *
494 * \sa SDL_JoystickNameForIndex
495 * \sa SDL_JoystickOpen
496 */
497extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick *joystick);
498
499/**
500 * Get the implementation dependent path of a joystick.
501 *
502 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
503 * \returns the path of the selected joystick. If no path can be found, this
504 * function returns NULL; call SDL_GetError() for more information.
505 *
506 * \since This function is available since SDL 2.24.0.
507 *
508 * \sa SDL_JoystickPathForIndex
509 */
510extern DECLSPEC const char *SDLCALL SDL_JoystickPath(SDL_Joystick *joystick);
511
512/**
513 * Get the player index of an opened joystick.
514 *
515 * For XInput controllers this returns the XInput user index. Many joysticks
516 * will not be able to supply this information.
517 *
518 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
519 * \returns the player index, or -1 if it's not available.
520 *
521 * \since This function is available since SDL 2.0.9.
522 */
523extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick *joystick);
524
525/**
526 * Set the player index of an opened joystick.
527 *
528 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
529 * \param player_index Player index to assign to this joystick, or -1 to clear
530 * the player index and turn off player LEDs.
531 *
532 * \since This function is available since SDL 2.0.12.
533 */
534extern DECLSPEC void SDLCALL SDL_JoystickSetPlayerIndex(SDL_Joystick *joystick, int player_index);
535
536/**
537 * Get the implementation-dependent GUID for the joystick.
538 *
539 * This function requires an open joystick.
540 *
541 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
542 * \returns the GUID of the given joystick. If called on an invalid index,
543 * this function returns a zero GUID; call SDL_GetError() for more
544 * information.
545 *
546 * \since This function is available since SDL 2.0.0.
547 *
548 * \sa SDL_JoystickGetDeviceGUID
549 * \sa SDL_JoystickGetGUIDString
550 */
551extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick *joystick);
552
553/**
554 * Get the USB vendor ID of an opened joystick, if available.
555 *
556 * If the vendor ID isn't available this function returns 0.
557 *
558 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
559 * \returns the USB vendor ID of the selected joystick, or 0 if unavailable.
560 *
561 * \since This function is available since SDL 2.0.6.
562 */
563extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick *joystick);
564
565/**
566 * Get the USB product ID of an opened joystick, if available.
567 *
568 * If the product ID isn't available this function returns 0.
569 *
570 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
571 * \returns the USB product ID of the selected joystick, or 0 if unavailable.
572 *
573 * \since This function is available since SDL 2.0.6.
574 */
575extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick *joystick);
576
577/**
578 * Get the product version of an opened joystick, if available.
579 *
580 * If the product version isn't available this function returns 0.
581 *
582 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
583 * \returns the product version of the selected joystick, or 0 if unavailable.
584 *
585 * \since This function is available since SDL 2.0.6.
586 */
587extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick *joystick);
588
589/**
590 * Get the firmware version of an opened joystick, if available.
591 *
592 * If the firmware version isn't available this function returns 0.
593 *
594 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
595 * \returns the firmware version of the selected joystick, or 0 if
596 * unavailable.
597 *
598 * \since This function is available since SDL 2.24.0.
599 */
600extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetFirmwareVersion(SDL_Joystick *joystick);
601
602/**
603 * Get the serial number of an opened joystick, if available.
604 *
605 * Returns the serial number of the joystick, or NULL if it is not available.
606 *
607 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
608 * \returns the serial number of the selected joystick, or NULL if
609 * unavailable.
610 *
611 * \since This function is available since SDL 2.0.14.
612 */
613extern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystick);
614
615/**
616 * Get the type of an opened joystick.
617 *
618 * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
619 * \returns the SDL_JoystickType of the selected joystick.
620 *
621 * \since This function is available since SDL 2.0.6.
622 */
623extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick *joystick);
624
625/**
626 * Get an ASCII string representation for a given SDL_JoystickGUID.
627 *
628 * You should supply at least 33 bytes for pszGUID.
629 *
630 * \param guid the SDL_JoystickGUID you wish to convert to string
631 * \param pszGUID buffer in which to write the ASCII string
632 * \param cbGUID the size of pszGUID
633 *
634 * \since This function is available since SDL 2.0.0.
635 *
636 * \sa SDL_JoystickGetDeviceGUID
637 * \sa SDL_JoystickGetGUID
638 * \sa SDL_JoystickGetGUIDFromString
639 */
640extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID);
641
642/**
643 * Convert a GUID string into a SDL_JoystickGUID structure.
644 *
645 * Performs no error checking. If this function is given a string containing
646 * an invalid GUID, the function will silently succeed, but the GUID generated
647 * will not be useful.
648 *
649 * \param pchGUID string containing an ASCII representation of a GUID
650 * \returns a SDL_JoystickGUID structure.
651 *
652 * \since This function is available since SDL 2.0.0.
653 *
654 * \sa SDL_JoystickGetGUIDString
655 */
656extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID);
657
658/**
659 * Get the device information encoded in a SDL_JoystickGUID structure
660 *
661 * \param guid the SDL_JoystickGUID you wish to get info about
662 * \param vendor A pointer filled in with the device VID, or 0 if not
663 * available
664 * \param product A pointer filled in with the device PID, or 0 if not
665 * available
666 * \param version A pointer filled in with the device version, or 0 if not
667 * available
668 * \param crc16 A pointer filled in with a CRC used to distinguish different
669 * products with the same VID/PID, or 0 if not available
670 *
671 * \since This function is available since SDL 2.26.0.
672 *
673 * \sa SDL_JoystickGetDeviceGUID
674 */
675extern DECLSPEC void SDLCALL SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, Uint16 *vendor, Uint16 *product, Uint16 *version, Uint16 *crc16);
676
677/**
678 * Get the status of a specified joystick.
679 *
680 * \param joystick the joystick to query
681 * \returns SDL_TRUE if the joystick has been opened, SDL_FALSE if it has not;
682 * call SDL_GetError() for more information.
683 *
684 * \since This function is available since SDL 2.0.0.
685 *
686 * \sa SDL_JoystickClose
687 * \sa SDL_JoystickOpen
688 */
689extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick *joystick);
690
691/**
692 * Get the instance ID of an opened joystick.
693 *
694 * \param joystick an SDL_Joystick structure containing joystick information
695 * \returns the instance ID of the specified joystick on success or a negative
696 * error code on failure; call SDL_GetError() for more information.
697 *
698 * \since This function is available since SDL 2.0.0.
699 *
700 * \sa SDL_JoystickOpen
701 */
702extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick *joystick);
703
704/**
705 * Get the number of general axis controls on a joystick.
706 *
707 * Often, the directional pad on a game controller will either look like 4
708 * separate buttons or a POV hat, and not axes, but all of this is up to the
709 * device and platform.
710 *
711 * \param joystick an SDL_Joystick structure containing joystick information
712 * \returns the number of axis controls/number of axes on success or a
713 * negative error code on failure; call SDL_GetError() for more
714 * information.
715 *
716 * \since This function is available since SDL 2.0.0.
717 *
718 * \sa SDL_JoystickGetAxis
719 * \sa SDL_JoystickOpen
720 */
721extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick);
722
723/**
724 * Get the number of trackballs on a joystick.
725 *
726 * Joystick trackballs have only relative motion events associated with them
727 * and their state cannot be polled.
728 *
729 * Most joysticks do not have trackballs.
730 *
731 * \param joystick an SDL_Joystick structure containing joystick information
732 * \returns the number of trackballs on success or a negative error code on
733 * failure; call SDL_GetError() for more information.
734 *
735 * \since This function is available since SDL 2.0.0.
736 *
737 * \sa SDL_JoystickGetBall
738 */
739extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick);
740
741/**
742 * Get the number of POV hats on a joystick.
743 *
744 * \param joystick an SDL_Joystick structure containing joystick information
745 * \returns the number of POV hats on success or a negative error code on
746 * failure; call SDL_GetError() for more information.
747 *
748 * \since This function is available since SDL 2.0.0.
749 *
750 * \sa SDL_JoystickGetHat
751 * \sa SDL_JoystickOpen
752 */
753extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick);
754
755/**
756 * Get the number of buttons on a joystick.
757 *
758 * \param joystick an SDL_Joystick structure containing joystick information
759 * \returns the number of buttons on success or a negative error code on
760 * failure; call SDL_GetError() for more information.
761 *
762 * \since This function is available since SDL 2.0.0.
763 *
764 * \sa SDL_JoystickGetButton
765 * \sa SDL_JoystickOpen
766 */
767extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick);
768
769/**
770 * Update the current state of the open joysticks.
771 *
772 * This is called automatically by the event loop if any joystick events are
773 * enabled.
774 *
775 * \since This function is available since SDL 2.0.0.
776 *
777 * \sa SDL_JoystickEventState
778 */
779extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void);
780
781/**
782 * Enable/disable joystick event polling.
783 *
784 * If joystick events are disabled, you must call SDL_JoystickUpdate()
785 * yourself and manually check the state of the joystick when you want
786 * joystick information.
787 *
788 * It is recommended that you leave joystick event handling enabled.
789 *
790 * **WARNING**: Calling this function may delete all events currently in SDL's
791 * event queue.
792 *
793 * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`
794 * \returns 1 if enabled, 0 if disabled, or a negative error code on failure;
795 * call SDL_GetError() for more information.
796 *
797 * If `state` is `SDL_QUERY` then the current state is returned,
798 * otherwise the new processing state is returned.
799 *
800 * \since This function is available since SDL 2.0.0.
801 *
802 * \sa SDL_GameControllerEventState
803 */
804extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state);
805
806#define SDL_JOYSTICK_AXIS_MAX 32767
807#define SDL_JOYSTICK_AXIS_MIN -32768
808
809/**
810 * Get the current state of an axis control on a joystick.
811 *
812 * SDL makes no promises about what part of the joystick any given axis refers
813 * to. Your game should have some sort of configuration UI to let users
814 * specify what each axis should be bound to. Alternately, SDL's higher-level
815 * Game Controller API makes a great effort to apply order to this lower-level
816 * interface, so you know that a specific axis is the "left thumb stick," etc.
817 *
818 * The value returned by SDL_JoystickGetAxis() is a signed integer (-32768 to
819 * 32767) representing the current position of the axis. It may be necessary
820 * to impose certain tolerances on these values to account for jitter.
821 *
822 * \param joystick an SDL_Joystick structure containing joystick information
823 * \param axis the axis to query; the axis indices start at index 0
824 * \returns a 16-bit signed integer representing the current position of the
825 * axis or 0 on failure; call SDL_GetError() for more information.
826 *
827 * \since This function is available since SDL 2.0.0.
828 *
829 * \sa SDL_JoystickNumAxes
830 */
831extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick,
832 int axis);
833
834/**
835 * Get the initial state of an axis control on a joystick.
836 *
837 * The state is a value ranging from -32768 to 32767.
838 *
839 * The axis indices start at index 0.
840 *
841 * \param joystick an SDL_Joystick structure containing joystick information
842 * \param axis the axis to query; the axis indices start at index 0
843 * \param state Upon return, the initial value is supplied here.
844 * \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not.
845 *
846 * \since This function is available since SDL 2.0.6.
847 */
848extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick *joystick,
849 int axis, Sint16 *state);
850
851/**
852 * \name Hat positions
853 */
854/* @{ */
855#define SDL_HAT_CENTERED 0x00
856#define SDL_HAT_UP 0x01
857#define SDL_HAT_RIGHT 0x02
858#define SDL_HAT_DOWN 0x04
859#define SDL_HAT_LEFT 0x08
860#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP)
861#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN)
862#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP)
863#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN)
864/* @} */
865
866/**
867 * Get the current state of a POV hat on a joystick.
868 *
869 * The returned value will be one of the following positions:
870 *
871 * - `SDL_HAT_CENTERED`
872 * - `SDL_HAT_UP`
873 * - `SDL_HAT_RIGHT`
874 * - `SDL_HAT_DOWN`
875 * - `SDL_HAT_LEFT`
876 * - `SDL_HAT_RIGHTUP`
877 * - `SDL_HAT_RIGHTDOWN`
878 * - `SDL_HAT_LEFTUP`
879 * - `SDL_HAT_LEFTDOWN`
880 *
881 * \param joystick an SDL_Joystick structure containing joystick information
882 * \param hat the hat index to get the state from; indices start at index 0
883 * \returns the current hat position.
884 *
885 * \since This function is available since SDL 2.0.0.
886 *
887 * \sa SDL_JoystickNumHats
888 */
889extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick,
890 int hat);
891
892/**
893 * Get the ball axis change since the last poll.
894 *
895 * Trackballs can only return relative motion since the last call to
896 * SDL_JoystickGetBall(), these motion deltas are placed into `dx` and `dy`.
897 *
898 * Most joysticks do not have trackballs.
899 *
900 * \param joystick the SDL_Joystick to query
901 * \param ball the ball index to query; ball indices start at index 0
902 * \param dx stores the difference in the x axis position since the last poll
903 * \param dy stores the difference in the y axis position since the last poll
904 * \returns 0 on success or a negative error code on failure; call
905 * SDL_GetError() for more information.
906 *
907 * \since This function is available since SDL 2.0.0.
908 *
909 * \sa SDL_JoystickNumBalls
910 */
911extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick,
912 int ball, int *dx, int *dy);
913
914/**
915 * Get the current state of a button on a joystick.
916 *
917 * \param joystick an SDL_Joystick structure containing joystick information
918 * \param button the button index to get the state from; indices start at
919 * index 0
920 * \returns 1 if the specified button is pressed, 0 otherwise.
921 *
922 * \since This function is available since SDL 2.0.0.
923 *
924 * \sa SDL_JoystickNumButtons
925 */
926extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick,
927 int button);
928
929/**
930 * Start a rumble effect.
931 *
932 * Each call to this function cancels any previous rumble effect, and calling
933 * it with 0 intensity stops any rumbling.
934 *
935 * \param joystick The joystick to vibrate
936 * \param low_frequency_rumble The intensity of the low frequency (left)
937 * rumble motor, from 0 to 0xFFFF
938 * \param high_frequency_rumble The intensity of the high frequency (right)
939 * rumble motor, from 0 to 0xFFFF
940 * \param duration_ms The duration of the rumble effect, in milliseconds
941 * \returns 0, or -1 if rumble isn't supported on this joystick
942 *
943 * \since This function is available since SDL 2.0.9.
944 *
945 * \sa SDL_JoystickHasRumble
946 */
947extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms);
948
949/**
950 * Start a rumble effect in the joystick's triggers
951 *
952 * Each call to this function cancels any previous trigger rumble effect, and
953 * calling it with 0 intensity stops any rumbling.
954 *
955 * Note that this is rumbling of the _triggers_ and not the game controller as
956 * a whole. This is currently only supported on Xbox One controllers. If you
957 * want the (more common) whole-controller rumble, use SDL_JoystickRumble()
958 * instead.
959 *
960 * \param joystick The joystick to vibrate
961 * \param left_rumble The intensity of the left trigger rumble motor, from 0
962 * to 0xFFFF
963 * \param right_rumble The intensity of the right trigger rumble motor, from 0
964 * to 0xFFFF
965 * \param duration_ms The duration of the rumble effect, in milliseconds
966 * \returns 0, or -1 if trigger rumble isn't supported on this joystick
967 *
968 * \since This function is available since SDL 2.0.14.
969 *
970 * \sa SDL_JoystickHasRumbleTriggers
971 */
972extern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms);
973
974/**
975 * Query whether a joystick has an LED.
976 *
977 * An example of a joystick LED is the light on the back of a PlayStation 4's
978 * DualShock 4 controller.
979 *
980 * \param joystick The joystick to query
981 * \return SDL_TRUE if the joystick has a modifiable LED, SDL_FALSE otherwise.
982 *
983 * \since This function is available since SDL 2.0.14.
984 */
985extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasLED(SDL_Joystick *joystick);
986
987/**
988 * Query whether a joystick has rumble support.
989 *
990 * \param joystick The joystick to query
991 * \return SDL_TRUE if the joystick has rumble, SDL_FALSE otherwise.
992 *
993 * \since This function is available since SDL 2.0.18.
994 *
995 * \sa SDL_JoystickRumble
996 */
997extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumble(SDL_Joystick *joystick);
998
999/**
1000 * Query whether a joystick has rumble support on triggers.
1001 *
1002 * \param joystick The joystick to query
1003 * \return SDL_TRUE if the joystick has trigger rumble, SDL_FALSE otherwise.
1004 *
1005 * \since This function is available since SDL 2.0.18.
1006 *
1007 * \sa SDL_JoystickRumbleTriggers
1008 */
1009extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumbleTriggers(SDL_Joystick *joystick);
1010
1011/**
1012 * Update a joystick's LED color.
1013 *
1014 * An example of a joystick LED is the light on the back of a PlayStation 4's
1015 * DualShock 4 controller.
1016 *
1017 * \param joystick The joystick to update
1018 * \param red The intensity of the red LED
1019 * \param green The intensity of the green LED
1020 * \param blue The intensity of the blue LED
1021 * \returns 0 on success, -1 if this joystick does not have a modifiable LED
1022 *
1023 * \since This function is available since SDL 2.0.14.
1024 */
1025extern DECLSPEC int SDLCALL SDL_JoystickSetLED(SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue);
1026
1027/**
1028 * Send a joystick specific effect packet
1029 *
1030 * \param joystick The joystick to affect
1031 * \param data The data to send to the joystick
1032 * \param size The size of the data to send to the joystick
1033 * \returns 0, or -1 if this joystick or driver doesn't support effect packets
1034 *
1035 * \since This function is available since SDL 2.0.16.
1036 */
1037extern DECLSPEC int SDLCALL SDL_JoystickSendEffect(SDL_Joystick *joystick, const void *data, int size);
1038
1039/**
1040 * Close a joystick previously opened with SDL_JoystickOpen().
1041 *
1042 * \param joystick The joystick device to close
1043 *
1044 * \since This function is available since SDL 2.0.0.
1045 *
1046 * \sa SDL_JoystickOpen
1047 */
1048extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick);
1049
1050/**
1051 * Get the battery level of a joystick as SDL_JoystickPowerLevel.
1052 *
1053 * \param joystick the SDL_Joystick to query
1054 * \returns the current battery level as SDL_JoystickPowerLevel on success or
1055 * `SDL_JOYSTICK_POWER_UNKNOWN` if it is unknown
1056 *
1057 * \since This function is available since SDL 2.0.4.
1058 */
1059extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick *joystick);
1060
1061/* Ends C function definitions when using C++ */
1062#ifdef __cplusplus
1063}
1064#endif
1065#include "close_code.h"
1066
1067#endif /* SDL_joystick_h_ */
1068
1069/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_keyboard.h b/src/contrib/SDL-2.30.2/include/SDL_keyboard.h
new file mode 100644
index 0000000..03c7b5a
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_keyboard.h
@@ -0,0 +1,355 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 * \sa SDL_ResetKeyboard
94 */
95extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys);
96
97/**
98 * Clear the state of the keyboard
99 *
100 * This function will generate key up events for all pressed keys.
101 *
102 * \since This function is available since SDL 2.24.0.
103 *
104 * \sa SDL_GetKeyboardState
105 */
106extern DECLSPEC void SDLCALL SDL_ResetKeyboard(void);
107
108/**
109 * Get the current key modifier state for the keyboard.
110 *
111 * \returns an OR'd combination of the modifier keys for the keyboard. See
112 * SDL_Keymod for details.
113 *
114 * \since This function is available since SDL 2.0.0.
115 *
116 * \sa SDL_GetKeyboardState
117 * \sa SDL_SetModState
118 */
119extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void);
120
121/**
122 * Set the current key modifier state for the keyboard.
123 *
124 * The inverse of SDL_GetModState(), SDL_SetModState() allows you to impose
125 * modifier key states on your application. Simply pass your desired modifier
126 * states into `modstate`. This value may be a bitwise, OR'd combination of
127 * SDL_Keymod values.
128 *
129 * This does not change the keyboard state, only the key modifier flags that
130 * SDL reports.
131 *
132 * \param modstate the desired SDL_Keymod for the keyboard
133 *
134 * \since This function is available since SDL 2.0.0.
135 *
136 * \sa SDL_GetModState
137 */
138extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate);
139
140/**
141 * Get the key code corresponding to the given scancode according to the
142 * current keyboard layout.
143 *
144 * See SDL_Keycode for details.
145 *
146 * \param scancode the desired SDL_Scancode to query
147 * \returns the SDL_Keycode that corresponds to the given SDL_Scancode.
148 *
149 * \since This function is available since SDL 2.0.0.
150 *
151 * \sa SDL_GetKeyName
152 * \sa SDL_GetScancodeFromKey
153 */
154extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode);
155
156/**
157 * Get the scancode corresponding to the given key code according to the
158 * current keyboard layout.
159 *
160 * See SDL_Scancode for details.
161 *
162 * \param key the desired SDL_Keycode to query
163 * \returns the SDL_Scancode that corresponds to the given SDL_Keycode.
164 *
165 * \since This function is available since SDL 2.0.0.
166 *
167 * \sa SDL_GetKeyFromScancode
168 * \sa SDL_GetScancodeName
169 */
170extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key);
171
172/**
173 * Get a human-readable name for a scancode.
174 *
175 * See SDL_Scancode for details.
176 *
177 * **Warning**: The returned name is by design not stable across platforms,
178 * e.g. the name for `SDL_SCANCODE_LGUI` is "Left GUI" under Linux but "Left
179 * Windows" under Microsoft Windows, and some scancodes like
180 * `SDL_SCANCODE_NONUSBACKSLASH` don't have any name at all. There are even
181 * scancodes that share names, e.g. `SDL_SCANCODE_RETURN` and
182 * `SDL_SCANCODE_RETURN2` (both called "Return"). This function is therefore
183 * unsuitable for creating a stable cross-platform two-way mapping between
184 * strings and scancodes.
185 *
186 * \param scancode the desired SDL_Scancode to query
187 * \returns a pointer to the name for the scancode. If the scancode doesn't
188 * have a name this function returns an empty string ("").
189 *
190 * \since This function is available since SDL 2.0.0.
191 *
192 * \sa SDL_GetScancodeFromKey
193 * \sa SDL_GetScancodeFromName
194 */
195extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode);
196
197/**
198 * Get a scancode from a human-readable name.
199 *
200 * \param name the human-readable scancode name
201 * \returns the SDL_Scancode, or `SDL_SCANCODE_UNKNOWN` if the name wasn't
202 * recognized; call SDL_GetError() for more information.
203 *
204 * \since This function is available since SDL 2.0.0.
205 *
206 * \sa SDL_GetKeyFromName
207 * \sa SDL_GetScancodeFromKey
208 * \sa SDL_GetScancodeName
209 */
210extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name);
211
212/**
213 * Get a human-readable name for a key.
214 *
215 * See SDL_Scancode and SDL_Keycode for details.
216 *
217 * \param key the desired SDL_Keycode to query
218 * \returns a pointer to a UTF-8 string that stays valid at least until the
219 * next call to this function. If you need it around any longer, you
220 * must copy it. If the key doesn't have a name, this function
221 * returns an empty string ("").
222 *
223 * \since This function is available since SDL 2.0.0.
224 *
225 * \sa SDL_GetKeyFromName
226 * \sa SDL_GetKeyFromScancode
227 * \sa SDL_GetScancodeFromKey
228 */
229extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key);
230
231/**
232 * Get a key code from a human-readable name.
233 *
234 * \param name the human-readable key name
235 * \returns key code, or `SDLK_UNKNOWN` if the name wasn't recognized; call
236 * SDL_GetError() for more information.
237 *
238 * \since This function is available since SDL 2.0.0.
239 *
240 * \sa SDL_GetKeyFromScancode
241 * \sa SDL_GetKeyName
242 * \sa SDL_GetScancodeFromName
243 */
244extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name);
245
246/**
247 * Start accepting Unicode text input events.
248 *
249 * This function will start accepting Unicode text input events in the focused
250 * SDL window, and start emitting SDL_TextInputEvent (SDL_TEXTINPUT) and
251 * SDL_TextEditingEvent (SDL_TEXTEDITING) events. Please use this function in
252 * pair with SDL_StopTextInput().
253 *
254 * On some platforms using this function activates the screen keyboard.
255 *
256 * \since This function is available since SDL 2.0.0.
257 *
258 * \sa SDL_SetTextInputRect
259 * \sa SDL_StopTextInput
260 */
261extern DECLSPEC void SDLCALL SDL_StartTextInput(void);
262
263/**
264 * Check whether or not Unicode text input events are enabled.
265 *
266 * \returns SDL_TRUE if text input events are enabled else SDL_FALSE.
267 *
268 * \since This function is available since SDL 2.0.0.
269 *
270 * \sa SDL_StartTextInput
271 */
272extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void);
273
274/**
275 * Stop receiving any text input events.
276 *
277 * \since This function is available since SDL 2.0.0.
278 *
279 * \sa SDL_StartTextInput
280 */
281extern DECLSPEC void SDLCALL SDL_StopTextInput(void);
282
283/**
284 * Dismiss the composition window/IME without disabling the subsystem.
285 *
286 * \since This function is available since SDL 2.0.22.
287 *
288 * \sa SDL_StartTextInput
289 * \sa SDL_StopTextInput
290 */
291extern DECLSPEC void SDLCALL SDL_ClearComposition(void);
292
293/**
294 * Returns if an IME Composite or Candidate window is currently shown.
295 *
296 * \since This function is available since SDL 2.0.22.
297 */
298extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputShown(void);
299
300/**
301 * Set the rectangle used to type Unicode text inputs. Native input methods
302 * will place a window with word suggestions near it, without covering the
303 * text being inputted.
304 *
305 * To start text input in a given location, this function is intended to be
306 * called before SDL_StartTextInput, although some platforms support moving
307 * the rectangle even while text input (and a composition) is active.
308 *
309 * Note: If you want to use the system native IME window, try setting hint
310 * **SDL_HINT_IME_SHOW_UI** to **1**, otherwise this function won't give you
311 * any feedback.
312 *
313 * \param rect the SDL_Rect structure representing the rectangle to receive
314 * text (ignored if NULL)
315 *
316 * \since This function is available since SDL 2.0.0.
317 *
318 * \sa SDL_StartTextInput
319 */
320extern DECLSPEC void SDLCALL SDL_SetTextInputRect(const SDL_Rect *rect);
321
322/**
323 * Check whether the platform has screen keyboard support.
324 *
325 * \returns SDL_TRUE if the platform has some screen keyboard support or
326 * SDL_FALSE if not.
327 *
328 * \since This function is available since SDL 2.0.0.
329 *
330 * \sa SDL_StartTextInput
331 * \sa SDL_IsScreenKeyboardShown
332 */
333extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void);
334
335/**
336 * Check whether the screen keyboard is shown for given window.
337 *
338 * \param window the window for which screen keyboard should be queried
339 * \returns SDL_TRUE if screen keyboard is shown or SDL_FALSE if not.
340 *
341 * \since This function is available since SDL 2.0.0.
342 *
343 * \sa SDL_HasScreenKeyboardSupport
344 */
345extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window);
346
347/* Ends C function definitions when using C++ */
348#ifdef __cplusplus
349}
350#endif
351#include "close_code.h"
352
353#endif /* SDL_keyboard_h_ */
354
355/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_keycode.h b/src/contrib/SDL-2.30.2/include/SDL_keycode.h
new file mode 100644
index 0000000..57a71bd
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_keycode.h
@@ -0,0 +1,358 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 * map to SDLK_0...SDLK_9 on AZERTY layouts.
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
323 SDLK_SOFTLEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTLEFT),
324 SDLK_SOFTRIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTRIGHT),
325 SDLK_CALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALL),
326 SDLK_ENDCALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ENDCALL)
327} SDL_KeyCode;
328
329/**
330 * \brief Enumeration of valid key mods (possibly OR'd together).
331 */
332typedef enum
333{
334 KMOD_NONE = 0x0000,
335 KMOD_LSHIFT = 0x0001,
336 KMOD_RSHIFT = 0x0002,
337 KMOD_LCTRL = 0x0040,
338 KMOD_RCTRL = 0x0080,
339 KMOD_LALT = 0x0100,
340 KMOD_RALT = 0x0200,
341 KMOD_LGUI = 0x0400,
342 KMOD_RGUI = 0x0800,
343 KMOD_NUM = 0x1000,
344 KMOD_CAPS = 0x2000,
345 KMOD_MODE = 0x4000,
346 KMOD_SCROLL = 0x8000,
347
348 KMOD_CTRL = KMOD_LCTRL | KMOD_RCTRL,
349 KMOD_SHIFT = KMOD_LSHIFT | KMOD_RSHIFT,
350 KMOD_ALT = KMOD_LALT | KMOD_RALT,
351 KMOD_GUI = KMOD_LGUI | KMOD_RGUI,
352
353 KMOD_RESERVED = KMOD_SCROLL /* This is for source-level compatibility with SDL 2.0.0. */
354} SDL_Keymod;
355
356#endif /* SDL_keycode_h_ */
357
358/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_loadso.h b/src/contrib/SDL-2.30.2/include/SDL_loadso.h
new file mode 100644
index 0000000..4edc22e
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_loadso.h
@@ -0,0 +1,115 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_locale.h b/src/contrib/SDL-2.30.2/include/SDL_locale.h
new file mode 100644
index 0000000..0b6118f
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_locale.h
@@ -0,0 +1,103 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_log.h b/src/contrib/SDL-2.30.2/include/SDL_log.h
new file mode 100644
index 0000000..bd030c6
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_log.h
@@ -0,0 +1,404 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 prior to SDL 2.0.24
51 *
52 * As of 2.0.24 there is no limit to the length of SDL log messages.
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 * ERROR 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 SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(3);
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/src/contrib/SDL-2.30.2/include/SDL_main.h b/src/contrib/SDL-2.30.2/include/SDL_main.h
new file mode 100644
index 0000000..a66c84b
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_main.h
@@ -0,0 +1,282 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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(__GDK__)
55/* On GDK, SDL provides a main function that initializes the game runtime.
56
57 Please note that #include'ing SDL_main.h is not enough to get a main()
58 function working. You must either link against SDL2main or, if not possible,
59 call the SDL_GDKRunApp function from your entry point.
60*/
61#define SDL_MAIN_NEEDED
62
63#elif defined(__IPHONEOS__)
64/* On iOS SDL provides a main function that creates an application delegate
65 and starts the iOS application run loop.
66
67 If you link with SDL dynamically on iOS, the main function can't be in a
68 shared library, so you need to link with libSDLmain.a, which includes a
69 stub main function that calls into the shared library to start execution.
70
71 See src/video/uikit/SDL_uikitappdelegate.m for more details.
72 */
73#define SDL_MAIN_NEEDED
74
75#elif defined(__ANDROID__)
76/* On Android SDL provides a Java class in SDLActivity.java that is the
77 main activity entry point.
78
79 See docs/README-android.md for more details on extending that class.
80 */
81#define SDL_MAIN_NEEDED
82
83/* We need to export SDL_main so it can be launched from Java */
84#define SDLMAIN_DECLSPEC DECLSPEC
85
86#elif defined(__NACL__)
87/* On NACL we use ppapi_simple to set up the application helper code,
88 then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before
89 starting the user main function.
90 All user code is run in a separate thread by ppapi_simple, thus
91 allowing for blocking io to take place via nacl_io
92*/
93#define SDL_MAIN_NEEDED
94
95#elif defined(__PSP__)
96/* On PSP SDL provides a main function that sets the module info,
97 activates the GPU and starts the thread required to be able to exit
98 the software.
99
100 If you provide this yourself, you may define SDL_MAIN_HANDLED
101 */
102#define SDL_MAIN_AVAILABLE
103
104#elif defined(__PS2__)
105#define SDL_MAIN_AVAILABLE
106
107#define SDL_PS2_SKIP_IOP_RESET() \
108 void reset_IOP(); \
109 void reset_IOP() {}
110
111#elif defined(__3DS__)
112/*
113 On N3DS, SDL provides a main function that sets up the screens
114 and storage.
115
116 If you provide this yourself, you may define SDL_MAIN_HANDLED
117*/
118#define SDL_MAIN_AVAILABLE
119
120#endif
121#endif /* SDL_MAIN_HANDLED */
122
123#ifndef SDLMAIN_DECLSPEC
124#define SDLMAIN_DECLSPEC
125#endif
126
127/**
128 * \file SDL_main.h
129 *
130 * The application's main() function must be called with C linkage,
131 * and should be declared like this:
132 * \code
133 * #ifdef __cplusplus
134 * extern "C"
135 * #endif
136 * int main(int argc, char *argv[])
137 * {
138 * }
139 * \endcode
140 */
141
142#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE)
143#define main SDL_main
144#endif
145
146#include "begin_code.h"
147#ifdef __cplusplus
148extern "C" {
149#endif
150
151/**
152 * The prototype for the application's main() function
153 */
154typedef int (*SDL_main_func)(int argc, char *argv[]);
155extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]);
156
157
158/**
159 * Circumvent failure of SDL_Init() when not using SDL_main() as an entry
160 * point.
161 *
162 * This function is defined in SDL_main.h, along with the preprocessor rule to
163 * redefine main() as SDL_main(). Thus to ensure that your main() function
164 * will not be changed it is necessary to define SDL_MAIN_HANDLED before
165 * including SDL.h.
166 *
167 * \since This function is available since SDL 2.0.0.
168 *
169 * \sa SDL_Init
170 */
171extern DECLSPEC void SDLCALL SDL_SetMainReady(void);
172
173#if defined(__WIN32__) || defined(__GDK__)
174
175/**
176 * Register a win32 window class for SDL's use.
177 *
178 * This can be called to set the application window class at startup. It is
179 * safe to call this multiple times, as long as every call is eventually
180 * paired with a call to SDL_UnregisterApp, but a second registration attempt
181 * while a previous registration is still active will be ignored, other than
182 * to increment a counter.
183 *
184 * Most applications do not need to, and should not, call this directly; SDL
185 * will call it when initializing the video subsystem.
186 *
187 * \param name the window class name, in UTF-8 encoding. If NULL, SDL
188 * currently uses "SDL_app" but this isn't guaranteed.
189 * \param style the value to use in WNDCLASSEX::style. If `name` is NULL, SDL
190 * currently uses `(CS_BYTEALIGNCLIENT | CS_OWNDC)` regardless of
191 * what is specified here.
192 * \param hInst the HINSTANCE to use in WNDCLASSEX::hInstance. If zero, SDL
193 * will use `GetModuleHandle(NULL)` instead.
194 * \returns 0 on success, -1 on error. SDL_GetError() may have details.
195 *
196 * \since This function is available since SDL 2.0.2.
197 */
198extern DECLSPEC int SDLCALL SDL_RegisterApp(const char *name, Uint32 style, void *hInst);
199
200/**
201 * Deregister the win32 window class from an SDL_RegisterApp call.
202 *
203 * This can be called to undo the effects of SDL_RegisterApp.
204 *
205 * Most applications do not need to, and should not, call this directly; SDL
206 * will call it when deinitializing the video subsystem.
207 *
208 * It is safe to call this multiple times, as long as every call is eventually
209 * paired with a prior call to SDL_RegisterApp. The window class will only be
210 * deregistered when the registration counter in SDL_RegisterApp decrements to
211 * zero through calls to this function.
212 *
213 * \since This function is available since SDL 2.0.2.
214 */
215extern DECLSPEC void SDLCALL SDL_UnregisterApp(void);
216
217#endif /* defined(__WIN32__) || defined(__GDK__) */
218
219
220#ifdef __WINRT__
221
222/**
223 * Initialize and launch an SDL/WinRT application.
224 *
225 * \param mainFunction the SDL app's C-style main(), an SDL_main_func
226 * \param reserved reserved for future use; should be NULL
227 * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve
228 * more information on the failure.
229 *
230 * \since This function is available since SDL 2.0.3.
231 */
232extern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * reserved);
233
234#endif /* __WINRT__ */
235
236#if defined(__IPHONEOS__)
237
238/**
239 * Initializes and launches an SDL application.
240 *
241 * \param argc The argc parameter from the application's main() function
242 * \param argv The argv parameter from the application's main() function
243 * \param mainFunction The SDL app's C-style main(), an SDL_main_func
244 * \return the return value from mainFunction
245 *
246 * \since This function is available since SDL 2.0.10.
247 */
248extern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_func mainFunction);
249
250#endif /* __IPHONEOS__ */
251
252#ifdef __GDK__
253
254/**
255 * Initialize and launch an SDL GDK application.
256 *
257 * \param mainFunction the SDL app's C-style main(), an SDL_main_func
258 * \param reserved reserved for future use; should be NULL
259 * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve
260 * more information on the failure.
261 *
262 * \since This function is available since SDL 2.24.0.
263 */
264extern DECLSPEC int SDLCALL SDL_GDKRunApp(SDL_main_func mainFunction, void *reserved);
265
266/**
267 * Callback from the application to let the suspend continue.
268 *
269 * \since This function is available since SDL 2.28.0.
270 */
271extern DECLSPEC void SDLCALL SDL_GDKSuspendComplete(void);
272
273#endif /* __GDK__ */
274
275#ifdef __cplusplus
276}
277#endif
278#include "close_code.h"
279
280#endif /* SDL_main_h_ */
281
282/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_messagebox.h b/src/contrib/SDL-2.30.2/include/SDL_messagebox.h
new file mode 100644
index 0000000..5ace6f2
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_messagebox.h
@@ -0,0 +1,193 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_metal.h b/src/contrib/SDL-2.30.2/include/SDL_metal.h
new file mode 100644
index 0000000..50f7b2a
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_metal.h
@@ -0,0 +1,113 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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_Metal_CreateView
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 * \param h Pointer to variable for storing the height in pixels, may be NULL
96 *
97 * \since This function is available since SDL 2.0.14.
98 *
99 * \sa SDL_GetWindowSize
100 * \sa SDL_CreateWindow
101 */
102extern DECLSPEC void SDLCALL SDL_Metal_GetDrawableSize(SDL_Window* window, int *w,
103 int *h);
104
105/* @} *//* Metal support functions */
106
107/* Ends C function definitions when using C++ */
108#ifdef __cplusplus
109}
110#endif
111#include "close_code.h"
112
113#endif /* SDL_metal_h_ */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_misc.h b/src/contrib/SDL-2.30.2/include/SDL_misc.h
new file mode 100644
index 0000000..113ba7a
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_misc.h
@@ -0,0 +1,79 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_mouse.h b/src/contrib/SDL-2.30.2/include/SDL_mouse.h
new file mode 100644
index 0000000..687ff12
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_mouse.h
@@ -0,0 +1,464 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 if relative mode is not
158 * enabled. If relative mode is enabled, you can force mouse events for the
159 * warp by setting the SDL_HINT_MOUSE_RELATIVE_WARP_MOTION hint.
160 *
161 * Note that this function will appear to succeed, but not actually move the
162 * mouse when used over Microsoft Remote Desktop.
163 *
164 * \param window the window to move the mouse into, or NULL for the current
165 * mouse focus
166 * \param x the x coordinate within the window
167 * \param y the y coordinate within the window
168 *
169 * \since This function is available since SDL 2.0.0.
170 *
171 * \sa SDL_WarpMouseGlobal
172 */
173extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window,
174 int x, int y);
175
176/**
177 * Move the mouse to the given position in global screen space.
178 *
179 * This function generates a mouse motion event.
180 *
181 * A failure of this function usually means that it is unsupported by a
182 * platform.
183 *
184 * Note that this function will appear to succeed, but not actually move the
185 * mouse when used over Microsoft Remote Desktop.
186 *
187 * \param x the x coordinate
188 * \param y the y coordinate
189 * \returns 0 on success or a negative error code on failure; call
190 * SDL_GetError() for more information.
191 *
192 * \since This function is available since SDL 2.0.4.
193 *
194 * \sa SDL_WarpMouseInWindow
195 */
196extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y);
197
198/**
199 * Set relative mouse mode.
200 *
201 * While the mouse is in relative mode, the cursor is hidden, the mouse
202 * position is constrained to the window, and SDL will report continuous
203 * relative mouse motion even if the mouse is at the edge of the window.
204 *
205 * This function will flush any pending mouse motion.
206 *
207 * \param enabled SDL_TRUE to enable relative mode, SDL_FALSE to disable.
208 * \returns 0 on success or a negative error code on failure; call
209 * SDL_GetError() for more information.
210 *
211 * If relative mode is not supported, this returns -1.
212 *
213 * \since This function is available since SDL 2.0.0.
214 *
215 * \sa SDL_GetRelativeMouseMode
216 */
217extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled);
218
219/**
220 * Capture the mouse and to track input outside an SDL window.
221 *
222 * Capturing enables your app to obtain mouse events globally, instead of just
223 * within your window. Not all video targets support this function. When
224 * capturing is enabled, the current window will get all mouse events, but
225 * unlike relative mode, no change is made to the cursor and it is not
226 * restrained to your window.
227 *
228 * This function may also deny mouse input to other windows--both those in
229 * your application and others on the system--so you should use this function
230 * sparingly, and in small bursts. For example, you might want to track the
231 * mouse while the user is dragging something, until the user releases a mouse
232 * button. It is not recommended that you capture the mouse for long periods
233 * of time, such as the entire time your app is running. For that, you should
234 * probably use SDL_SetRelativeMouseMode() or SDL_SetWindowGrab(), depending
235 * on your goals.
236 *
237 * While captured, mouse events still report coordinates relative to the
238 * current (foreground) window, but those coordinates may be outside the
239 * bounds of the window (including negative values). Capturing is only allowed
240 * for the foreground window. If the window loses focus while capturing, the
241 * capture will be disabled automatically.
242 *
243 * While capturing is enabled, the current window will have the
244 * `SDL_WINDOW_MOUSE_CAPTURE` flag set.
245 *
246 * Please note that as of SDL 2.0.22, SDL will attempt to "auto capture" the
247 * mouse while the user is pressing a button; this is to try and make mouse
248 * behavior more consistent between platforms, and deal with the common case
249 * of a user dragging the mouse outside of the window. This means that if you
250 * are calling SDL_CaptureMouse() only to deal with this situation, you no
251 * longer have to (although it is safe to do so). If this causes problems for
252 * your app, you can disable auto capture by setting the
253 * `SDL_HINT_MOUSE_AUTO_CAPTURE` hint to zero.
254 *
255 * \param enabled SDL_TRUE to enable capturing, SDL_FALSE to disable.
256 * \returns 0 on success or -1 if not supported; call SDL_GetError() for more
257 * information.
258 *
259 * \since This function is available since SDL 2.0.4.
260 *
261 * \sa SDL_GetGlobalMouseState
262 */
263extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled);
264
265/**
266 * Query whether relative mouse mode is enabled.
267 *
268 * \returns SDL_TRUE if relative mode is enabled or SDL_FALSE otherwise.
269 *
270 * \since This function is available since SDL 2.0.0.
271 *
272 * \sa SDL_SetRelativeMouseMode
273 */
274extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void);
275
276/**
277 * Create a cursor using the specified bitmap data and mask (in MSB format).
278 *
279 * `mask` has to be in MSB (Most Significant Bit) format.
280 *
281 * The cursor width (`w`) must be a multiple of 8 bits.
282 *
283 * The cursor is created in black and white according to the following:
284 *
285 * - data=0, mask=1: white
286 * - data=1, mask=1: black
287 * - data=0, mask=0: transparent
288 * - data=1, mask=0: inverted color if possible, black if not.
289 *
290 * Cursors created with this function must be freed with SDL_FreeCursor().
291 *
292 * If you want to have a color cursor, or create your cursor from an
293 * SDL_Surface, you should use SDL_CreateColorCursor(). Alternately, you can
294 * hide the cursor and draw your own as part of your game's rendering, but it
295 * will be bound to the framerate.
296 *
297 * Also, since SDL 2.0.0, SDL_CreateSystemCursor() is available, which
298 * provides twelve readily available system cursors to pick from.
299 *
300 * \param data the color value for each pixel of the cursor
301 * \param mask the mask value for each pixel of the cursor
302 * \param w the width of the cursor
303 * \param h the height of the cursor
304 * \param hot_x the X-axis location of the upper left corner of the cursor
305 * relative to the actual mouse position
306 * \param hot_y the Y-axis location of the upper left corner of the cursor
307 * relative to the actual mouse position
308 * \returns a new cursor with the specified parameters on success or NULL on
309 * failure; call SDL_GetError() for more information.
310 *
311 * \since This function is available since SDL 2.0.0.
312 *
313 * \sa SDL_FreeCursor
314 * \sa SDL_SetCursor
315 * \sa SDL_ShowCursor
316 */
317extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data,
318 const Uint8 * mask,
319 int w, int h, int hot_x,
320 int hot_y);
321
322/**
323 * Create a color cursor.
324 *
325 * \param surface an SDL_Surface structure representing the cursor image
326 * \param hot_x the x position of the cursor hot spot
327 * \param hot_y the y position of the cursor hot spot
328 * \returns the new cursor on success or NULL on failure; call SDL_GetError()
329 * for more information.
330 *
331 * \since This function is available since SDL 2.0.0.
332 *
333 * \sa SDL_CreateCursor
334 * \sa SDL_FreeCursor
335 */
336extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface,
337 int hot_x,
338 int hot_y);
339
340/**
341 * Create a system cursor.
342 *
343 * \param id an SDL_SystemCursor enum value
344 * \returns a cursor on success or NULL on failure; call SDL_GetError() for
345 * more information.
346 *
347 * \since This function is available since SDL 2.0.0.
348 *
349 * \sa SDL_FreeCursor
350 */
351extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id);
352
353/**
354 * Set the active cursor.
355 *
356 * This function sets the currently active cursor to the specified one. If the
357 * cursor is currently visible, the change will be immediately represented on
358 * the display. SDL_SetCursor(NULL) can be used to force cursor redraw, if
359 * this is desired for any reason.
360 *
361 * \param cursor a cursor to make active
362 *
363 * \since This function is available since SDL 2.0.0.
364 *
365 * \sa SDL_CreateCursor
366 * \sa SDL_GetCursor
367 * \sa SDL_ShowCursor
368 */
369extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor);
370
371/**
372 * Get the active cursor.
373 *
374 * This function returns a pointer to the current cursor which is owned by the
375 * library. It is not necessary to free the cursor with SDL_FreeCursor().
376 *
377 * \returns the active cursor or NULL if there is no mouse.
378 *
379 * \since This function is available since SDL 2.0.0.
380 *
381 * \sa SDL_SetCursor
382 */
383extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void);
384
385/**
386 * Get the default cursor.
387 *
388 * You do not have to call SDL_FreeCursor() on the return value, but it is
389 * safe to do so.
390 *
391 * \returns the default cursor on success or NULL on failure.
392 *
393 * \since This function is available since SDL 2.0.0.
394 *
395 * \sa SDL_CreateSystemCursor
396 */
397extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void);
398
399/**
400 * Free a previously-created cursor.
401 *
402 * Use this function to free cursor resources created with SDL_CreateCursor(),
403 * SDL_CreateColorCursor() or SDL_CreateSystemCursor().
404 *
405 * \param cursor the cursor to free
406 *
407 * \since This function is available since SDL 2.0.0.
408 *
409 * \sa SDL_CreateColorCursor
410 * \sa SDL_CreateCursor
411 * \sa SDL_CreateSystemCursor
412 */
413extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor);
414
415/**
416 * Toggle whether or not the cursor is shown.
417 *
418 * The cursor starts off displayed but can be turned off. Passing `SDL_ENABLE`
419 * displays the cursor and passing `SDL_DISABLE` hides it.
420 *
421 * The current state of the mouse cursor can be queried by passing
422 * `SDL_QUERY`; either `SDL_DISABLE` or `SDL_ENABLE` will be returned.
423 *
424 * \param toggle `SDL_ENABLE` to show the cursor, `SDL_DISABLE` to hide it,
425 * `SDL_QUERY` to query the current state without changing it.
426 * \returns `SDL_ENABLE` if the cursor is shown, or `SDL_DISABLE` if the
427 * cursor is hidden, or a negative error code on failure; call
428 * SDL_GetError() for more information.
429 *
430 * \since This function is available since SDL 2.0.0.
431 *
432 * \sa SDL_CreateCursor
433 * \sa SDL_SetCursor
434 */
435extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle);
436
437/**
438 * Used as a mask when testing buttons in buttonstate.
439 *
440 * - Button 1: Left mouse button
441 * - Button 2: Middle mouse button
442 * - Button 3: Right mouse button
443 */
444#define SDL_BUTTON(X) (1 << ((X)-1))
445#define SDL_BUTTON_LEFT 1
446#define SDL_BUTTON_MIDDLE 2
447#define SDL_BUTTON_RIGHT 3
448#define SDL_BUTTON_X1 4
449#define SDL_BUTTON_X2 5
450#define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT)
451#define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE)
452#define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT)
453#define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1)
454#define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2)
455
456/* Ends C function definitions when using C++ */
457#ifdef __cplusplus
458}
459#endif
460#include "close_code.h"
461
462#endif /* SDL_mouse_h_ */
463
464/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_mutex.h b/src/contrib/SDL-2.30.2/include/SDL_mutex.h
new file mode 100644
index 0000000..eaa21f2
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_mutex.h
@@ -0,0 +1,545 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/******************************************************************************/
35/* Enable thread safety attributes only with clang.
36 * The attributes can be safely erased when compiling with other compilers.
37 */
38#if defined(SDL_THREAD_SAFETY_ANALYSIS) && \
39 defined(__clang__) && (!defined(SWIG))
40#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
41#else
42#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) /* no-op */
43#endif
44
45#define SDL_CAPABILITY(x) \
46 SDL_THREAD_ANNOTATION_ATTRIBUTE__(capability(x))
47
48#define SDL_SCOPED_CAPABILITY \
49 SDL_THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable)
50
51#define SDL_GUARDED_BY(x) \
52 SDL_THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x))
53
54#define SDL_PT_GUARDED_BY(x) \
55 SDL_THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x))
56
57#define SDL_ACQUIRED_BEFORE(x) \
58 SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(x))
59
60#define SDL_ACQUIRED_AFTER(x) \
61 SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(x))
62
63#define SDL_REQUIRES(x) \
64 SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(x))
65
66#define SDL_REQUIRES_SHARED(x) \
67 SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(x))
68
69#define SDL_ACQUIRE(x) \
70 SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(x))
71
72#define SDL_ACQUIRE_SHARED(x) \
73 SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(x))
74
75#define SDL_RELEASE(x) \
76 SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_capability(x))
77
78#define SDL_RELEASE_SHARED(x) \
79 SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(x))
80
81#define SDL_RELEASE_GENERIC(x) \
82 SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_generic_capability(x))
83
84#define SDL_TRY_ACQUIRE(x, y) \
85 SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(x, y))
86
87#define SDL_TRY_ACQUIRE_SHARED(x, y) \
88 SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(x, y))
89
90#define SDL_EXCLUDES(x) \
91 SDL_THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(x))
92
93#define SDL_ASSERT_CAPABILITY(x) \
94 SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x))
95
96#define SDL_ASSERT_SHARED_CAPABILITY(x) \
97 SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x))
98
99#define SDL_RETURN_CAPABILITY(x) \
100 SDL_THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x))
101
102#define SDL_NO_THREAD_SAFETY_ANALYSIS \
103 SDL_THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis)
104
105/******************************************************************************/
106
107
108#include "begin_code.h"
109/* Set up for C function definitions, even when using C++ */
110#ifdef __cplusplus
111extern "C" {
112#endif
113
114/**
115 * Synchronization functions which can time out return this value
116 * if they time out.
117 */
118#define SDL_MUTEX_TIMEDOUT 1
119
120/**
121 * This is the timeout value which corresponds to never time out.
122 */
123#define SDL_MUTEX_MAXWAIT (~(Uint32)0)
124
125
126/**
127 * \name Mutex functions
128 */
129/* @{ */
130
131/* The SDL mutex structure, defined in SDL_sysmutex.c */
132struct SDL_mutex;
133typedef struct SDL_mutex SDL_mutex;
134
135/**
136 * Create a new mutex.
137 *
138 * All newly-created mutexes begin in the _unlocked_ state.
139 *
140 * Calls to SDL_LockMutex() will not return while the mutex is locked by
141 * another thread. See SDL_TryLockMutex() to attempt to lock without blocking.
142 *
143 * SDL mutexes are reentrant.
144 *
145 * \returns the initialized and unlocked mutex or NULL on failure; call
146 * SDL_GetError() for more information.
147 *
148 * \since This function is available since SDL 2.0.0.
149 *
150 * \sa SDL_DestroyMutex
151 * \sa SDL_LockMutex
152 * \sa SDL_TryLockMutex
153 * \sa SDL_UnlockMutex
154 */
155extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void);
156
157/**
158 * Lock the mutex.
159 *
160 * This will block until the mutex is available, which is to say it is in the
161 * unlocked state and the OS has chosen the caller as the next thread to lock
162 * it. Of all threads waiting to lock the mutex, only one may do so at a time.
163 *
164 * It is legal for the owning thread to lock an already-locked mutex. It must
165 * unlock it the same number of times before it is actually made available for
166 * other threads in the system (this is known as a "recursive mutex").
167 *
168 * \param mutex the mutex to lock
169 * \return 0, or -1 on error.
170 *
171 * \since This function is available since SDL 2.0.0.
172 */
173extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex) SDL_ACQUIRE(mutex);
174#define SDL_mutexP(m) SDL_LockMutex(m)
175
176/**
177 * Try to lock a mutex without blocking.
178 *
179 * This works just like SDL_LockMutex(), but if the mutex is not available,
180 * this function returns `SDL_MUTEX_TIMEOUT` immediately.
181 *
182 * This technique is useful if you need exclusive access to a resource but
183 * don't want to wait for it, and will return to it to try again later.
184 *
185 * \param mutex the mutex to try to lock
186 * \returns 0, `SDL_MUTEX_TIMEDOUT`, or -1 on error; call SDL_GetError() for
187 * more information.
188 *
189 * \since This function is available since SDL 2.0.0.
190 *
191 * \sa SDL_CreateMutex
192 * \sa SDL_DestroyMutex
193 * \sa SDL_LockMutex
194 * \sa SDL_UnlockMutex
195 */
196extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex) SDL_TRY_ACQUIRE(0, mutex);
197
198/**
199 * Unlock the mutex.
200 *
201 * It is legal for the owning thread to lock an already-locked mutex. It must
202 * unlock it the same number of times before it is actually made available for
203 * other threads in the system (this is known as a "recursive mutex").
204 *
205 * It is an error to unlock a mutex that has not been locked by the current
206 * thread, and doing so results in undefined behavior.
207 *
208 * It is also an error to unlock a mutex that isn't locked at all.
209 *
210 * \param mutex the mutex to unlock.
211 * \returns 0, or -1 on error.
212 *
213 * \since This function is available since SDL 2.0.0.
214 */
215extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex) SDL_RELEASE(mutex);
216#define SDL_mutexV(m) SDL_UnlockMutex(m)
217
218/**
219 * Destroy a mutex created with SDL_CreateMutex().
220 *
221 * This function must be called on any mutex that is no longer needed. Failure
222 * to destroy a mutex will result in a system memory or resource leak. While
223 * it is safe to destroy a mutex that is _unlocked_, it is not safe to attempt
224 * to destroy a locked mutex, and may result in undefined behavior depending
225 * on the platform.
226 *
227 * \param mutex the mutex to destroy
228 *
229 * \since This function is available since SDL 2.0.0.
230 *
231 * \sa SDL_CreateMutex
232 * \sa SDL_LockMutex
233 * \sa SDL_TryLockMutex
234 * \sa SDL_UnlockMutex
235 */
236extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex);
237
238/* @} *//* Mutex functions */
239
240
241/**
242 * \name Semaphore functions
243 */
244/* @{ */
245
246/* The SDL semaphore structure, defined in SDL_syssem.c */
247struct SDL_semaphore;
248typedef struct SDL_semaphore SDL_sem;
249
250/**
251 * Create a semaphore.
252 *
253 * This function creates a new semaphore and initializes it with the value
254 * `initial_value`. Each wait operation on the semaphore will atomically
255 * decrement the semaphore value and potentially block if the semaphore value
256 * is 0. Each post operation will atomically increment the semaphore value and
257 * wake waiting threads and allow them to retry the wait operation.
258 *
259 * \param initial_value the starting value of the semaphore
260 * \returns a new semaphore or NULL on failure; call SDL_GetError() for more
261 * information.
262 *
263 * \since This function is available since SDL 2.0.0.
264 *
265 * \sa SDL_DestroySemaphore
266 * \sa SDL_SemPost
267 * \sa SDL_SemTryWait
268 * \sa SDL_SemValue
269 * \sa SDL_SemWait
270 * \sa SDL_SemWaitTimeout
271 */
272extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value);
273
274/**
275 * Destroy a semaphore.
276 *
277 * It is not safe to destroy a semaphore if there are threads currently
278 * waiting on it.
279 *
280 * \param sem the semaphore to destroy
281 *
282 * \since This function is available since SDL 2.0.0.
283 *
284 * \sa SDL_CreateSemaphore
285 * \sa SDL_SemPost
286 * \sa SDL_SemTryWait
287 * \sa SDL_SemValue
288 * \sa SDL_SemWait
289 * \sa SDL_SemWaitTimeout
290 */
291extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem);
292
293/**
294 * Wait until a semaphore has a positive value and then decrements it.
295 *
296 * This function suspends the calling thread until either the semaphore
297 * pointed to by `sem` has a positive value or the call is interrupted by a
298 * signal or error. If the call is successful it will atomically decrement the
299 * semaphore value.
300 *
301 * This function is the equivalent of calling SDL_SemWaitTimeout() with a time
302 * length of `SDL_MUTEX_MAXWAIT`.
303 *
304 * \param sem the semaphore wait on
305 * \returns 0 on success or a negative error code on failure; call
306 * SDL_GetError() for more information.
307 *
308 * \since This function is available since SDL 2.0.0.
309 *
310 * \sa SDL_CreateSemaphore
311 * \sa SDL_DestroySemaphore
312 * \sa SDL_SemPost
313 * \sa SDL_SemTryWait
314 * \sa SDL_SemValue
315 * \sa SDL_SemWait
316 * \sa SDL_SemWaitTimeout
317 */
318extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem);
319
320/**
321 * See if a semaphore has a positive value and decrement it if it does.
322 *
323 * This function checks to see if the semaphore pointed to by `sem` has a
324 * positive value and atomically decrements the semaphore value if it does. If
325 * the semaphore doesn't have a positive value, the function immediately
326 * returns SDL_MUTEX_TIMEDOUT.
327 *
328 * \param sem the semaphore to wait on
329 * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait would
330 * block, or a negative error code on failure; call SDL_GetError()
331 * for more information.
332 *
333 * \since This function is available since SDL 2.0.0.
334 *
335 * \sa SDL_CreateSemaphore
336 * \sa SDL_DestroySemaphore
337 * \sa SDL_SemPost
338 * \sa SDL_SemValue
339 * \sa SDL_SemWait
340 * \sa SDL_SemWaitTimeout
341 */
342extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem);
343
344/**
345 * Wait until a semaphore has a positive value and then decrements it.
346 *
347 * This function suspends the calling thread until either the semaphore
348 * pointed to by `sem` has a positive value, the call is interrupted by a
349 * signal or error, or the specified time has elapsed. If the call is
350 * successful it will atomically decrement the semaphore value.
351 *
352 * \param sem the semaphore to wait on
353 * \param timeout the length of the timeout, in milliseconds
354 * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait does not
355 * succeed in the allotted time, or a negative error code on failure;
356 * call SDL_GetError() for more information.
357 *
358 * \since This function is available since SDL 2.0.0.
359 *
360 * \sa SDL_CreateSemaphore
361 * \sa SDL_DestroySemaphore
362 * \sa SDL_SemPost
363 * \sa SDL_SemTryWait
364 * \sa SDL_SemValue
365 * \sa SDL_SemWait
366 */
367extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout);
368
369/**
370 * Atomically increment a semaphore's value and wake waiting threads.
371 *
372 * \param sem the semaphore to increment
373 * \returns 0 on success or a negative error code on failure; call
374 * SDL_GetError() for more information.
375 *
376 * \since This function is available since SDL 2.0.0.
377 *
378 * \sa SDL_CreateSemaphore
379 * \sa SDL_DestroySemaphore
380 * \sa SDL_SemTryWait
381 * \sa SDL_SemValue
382 * \sa SDL_SemWait
383 * \sa SDL_SemWaitTimeout
384 */
385extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem);
386
387/**
388 * Get the current value of a semaphore.
389 *
390 * \param sem the semaphore to query
391 * \returns the current value of the semaphore.
392 *
393 * \since This function is available since SDL 2.0.0.
394 *
395 * \sa SDL_CreateSemaphore
396 */
397extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem);
398
399/* @} *//* Semaphore functions */
400
401
402/**
403 * \name Condition variable functions
404 */
405/* @{ */
406
407/* The SDL condition variable structure, defined in SDL_syscond.c */
408struct SDL_cond;
409typedef struct SDL_cond SDL_cond;
410
411/**
412 * Create a condition variable.
413 *
414 * \returns a new condition variable or NULL on failure; call SDL_GetError()
415 * for more information.
416 *
417 * \since This function is available since SDL 2.0.0.
418 *
419 * \sa SDL_CondBroadcast
420 * \sa SDL_CondSignal
421 * \sa SDL_CondWait
422 * \sa SDL_CondWaitTimeout
423 * \sa SDL_DestroyCond
424 */
425extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void);
426
427/**
428 * Destroy a condition variable.
429 *
430 * \param cond the condition variable to destroy
431 *
432 * \since This function is available since SDL 2.0.0.
433 *
434 * \sa SDL_CondBroadcast
435 * \sa SDL_CondSignal
436 * \sa SDL_CondWait
437 * \sa SDL_CondWaitTimeout
438 * \sa SDL_CreateCond
439 */
440extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond);
441
442/**
443 * Restart one of the threads that are waiting on the condition variable.
444 *
445 * \param cond the condition variable to signal
446 * \returns 0 on success or a negative error code on failure; call
447 * 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_CondWait
453 * \sa SDL_CondWaitTimeout
454 * \sa SDL_CreateCond
455 * \sa SDL_DestroyCond
456 */
457extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond);
458
459/**
460 * Restart all threads that are waiting on the condition variable.
461 *
462 * \param cond the condition variable to signal
463 * \returns 0 on success or a negative error code on failure; call
464 * SDL_GetError() for more information.
465 *
466 * \since This function is available since SDL 2.0.0.
467 *
468 * \sa SDL_CondSignal
469 * \sa SDL_CondWait
470 * \sa SDL_CondWaitTimeout
471 * \sa SDL_CreateCond
472 * \sa SDL_DestroyCond
473 */
474extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond);
475
476/**
477 * Wait until a condition variable is signaled.
478 *
479 * This function unlocks the specified `mutex` and waits for another thread to
480 * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable
481 * `cond`. Once the condition variable is signaled, the mutex is re-locked and
482 * the function returns.
483 *
484 * The mutex must be locked before calling this function.
485 *
486 * This function is the equivalent of calling SDL_CondWaitTimeout() with a
487 * time length of `SDL_MUTEX_MAXWAIT`.
488 *
489 * \param cond the condition variable to wait on
490 * \param mutex the mutex used to coordinate thread access
491 * \returns 0 when it is signaled or a negative error code on failure; call
492 * SDL_GetError() for more information.
493 *
494 * \since This function is available since SDL 2.0.0.
495 *
496 * \sa SDL_CondBroadcast
497 * \sa SDL_CondSignal
498 * \sa SDL_CondWaitTimeout
499 * \sa SDL_CreateCond
500 * \sa SDL_DestroyCond
501 */
502extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex);
503
504/**
505 * Wait until a condition variable is signaled or a certain time has passed.
506 *
507 * This function unlocks the specified `mutex` and waits for another thread to
508 * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable
509 * `cond`, or for the specified time to elapse. Once the condition variable is
510 * signaled or the time elapsed, the mutex is re-locked and the function
511 * returns.
512 *
513 * The mutex must be locked before calling this function.
514 *
515 * \param cond the condition variable to wait on
516 * \param mutex the mutex used to coordinate thread access
517 * \param ms the maximum time to wait, in milliseconds, or `SDL_MUTEX_MAXWAIT`
518 * to wait indefinitely
519 * \returns 0 if the condition variable is signaled, `SDL_MUTEX_TIMEDOUT` if
520 * the condition is not signaled in the allotted time, or a negative
521 * error code on failure; call SDL_GetError() for more information.
522 *
523 * \since This function is available since SDL 2.0.0.
524 *
525 * \sa SDL_CondBroadcast
526 * \sa SDL_CondSignal
527 * \sa SDL_CondWait
528 * \sa SDL_CreateCond
529 * \sa SDL_DestroyCond
530 */
531extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond,
532 SDL_mutex * mutex, Uint32 ms);
533
534/* @} *//* Condition variable functions */
535
536
537/* Ends C function definitions when using C++ */
538#ifdef __cplusplus
539}
540#endif
541#include "close_code.h"
542
543#endif /* SDL_mutex_h_ */
544
545/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_name.h b/src/contrib/SDL-2.30.2/include/SDL_name.h
new file mode 100644
index 0000000..71e9354
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_name.h
@@ -0,0 +1,33 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_opengl.h b/src/contrib/SDL-2.30.2/include/SDL_opengl.h
new file mode 100644
index 0000000..2bb38c5
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_opengl.h
@@ -0,0 +1,2132 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 * Begin system-specific stuff
2112 */
2113#if defined(PRAGMA_EXPORT_SUPPORTED)
2114#pragma export off
2115#endif
2116
2117/*
2118 * End system-specific stuff
2119 **********************************************************************/
2120
2121
2122#ifdef __cplusplus
2123}
2124#endif
2125
2126#endif /* __gl_h_ */
2127
2128#endif /* !__IPHONEOS__ */
2129
2130#endif /* SDL_opengl_h_ */
2131
2132/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_opengl_glext.h b/src/contrib/SDL-2.30.2/include/SDL_opengl_glext.h
new file mode 100644
index 0000000..ff6ad12
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_opengl_glext.h
@@ -0,0 +1,13213 @@
1/* SDL modified the include guard to be compatible with Mesa and Apple include guards:
2 * - Mesa uses: __gl_glext_h_
3 * - Apple uses: __glext_h_ */
4#if !defined(__glext_h_) && !defined(__gl_glext_h_)
5#define __glext_h_ 1
6#define __gl_glext_h_ 1
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
12/*
13** Copyright 2013-2020 The Khronos Group Inc.
14** SPDX-License-Identifier: MIT
15**
16** This header is generated from the Khronos OpenGL / OpenGL ES XML
17** API Registry. The current version of the Registry, generator scripts
18** used to make the header, and the header can be found at
19** https://github.com/KhronosGroup/OpenGL-Registry
20*/
21
22#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
23#ifndef WIN32_LEAN_AND_MEAN
24#define WIN32_LEAN_AND_MEAN 1
25#endif
26#include <windows.h>
27#endif
28
29#ifndef APIENTRY
30#define APIENTRY
31#endif
32#ifndef APIENTRYP
33#define APIENTRYP APIENTRY *
34#endif
35#ifndef GLAPI
36#define GLAPI extern
37#endif
38
39#define GL_GLEXT_VERSION 20220530
40
41/*#include <KHR/khrplatform.h>*/
42#ifndef __khrplatform_h_
43#define __khrplatform_h_
44
45/*
46** Copyright (c) 2008-2018 The Khronos Group Inc.
47**
48** Permission is hereby granted, free of charge, to any person obtaining a
49** copy of this software and/or associated documentation files (the
50** "Materials"), to deal in the Materials without restriction, including
51** without limitation the rights to use, copy, modify, merge, publish,
52** distribute, sublicense, and/or sell copies of the Materials, and to
53** permit persons to whom the Materials are furnished to do so, subject to
54** the following conditions:
55**
56** The above copyright notice and this permission notice shall be included
57** in all copies or substantial portions of the Materials.
58**
59** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
60** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
61** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
62** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
63** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
64** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
65** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
66*/
67
68/* Khronos platform-specific types and definitions.
69 *
70 * The master copy of khrplatform.h is maintained in the Khronos EGL
71 * Registry repository at https://github.com/KhronosGroup/EGL-Registry
72 * The last semantic modification to khrplatform.h was at commit ID:
73 * 67a3e0864c2d75ea5287b9f3d2eb74a745936692
74 *
75 * Adopters may modify this file to suit their platform. Adopters are
76 * encouraged to submit platform specific modifications to the Khronos
77 * group so that they can be included in future versions of this file.
78 * Please submit changes by filing pull requests or issues on
79 * the EGL Registry repository linked above.
80 *
81 *
82 * See the Implementer's Guidelines for information about where this file
83 * should be located on your system and for more details of its use:
84 * http://www.khronos.org/registry/implementers_guide.pdf
85 *
86 * This file should be included as
87 * #include <KHR/khrplatform.h>
88 * by Khronos client API header files that use its types and defines.
89 *
90 * The types in khrplatform.h should only be used to define API-specific types.
91 *
92 * Types defined in khrplatform.h:
93 * khronos_int8_t signed 8 bit
94 * khronos_uint8_t unsigned 8 bit
95 * khronos_int16_t signed 16 bit
96 * khronos_uint16_t unsigned 16 bit
97 * khronos_int32_t signed 32 bit
98 * khronos_uint32_t unsigned 32 bit
99 * khronos_int64_t signed 64 bit
100 * khronos_uint64_t unsigned 64 bit
101 * khronos_intptr_t signed same number of bits as a pointer
102 * khronos_uintptr_t unsigned same number of bits as a pointer
103 * khronos_ssize_t signed size
104 * khronos_usize_t unsigned size
105 * khronos_float_t signed 32 bit floating point
106 * khronos_time_ns_t unsigned 64 bit time in nanoseconds
107 * khronos_utime_nanoseconds_t unsigned time interval or absolute time in
108 * nanoseconds
109 * khronos_stime_nanoseconds_t signed time interval in nanoseconds
110 * khronos_boolean_enum_t enumerated boolean type. This should
111 * only be used as a base type when a client API's boolean type is
112 * an enum. Client APIs which use an integer or other type for
113 * booleans cannot use this as the base type for their boolean.
114 *
115 * Tokens defined in khrplatform.h:
116 *
117 * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
118 *
119 * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
120 * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
121 *
122 * Calling convention macros defined in this file:
123 * KHRONOS_APICALL
124 * KHRONOS_APIENTRY
125 * KHRONOS_APIATTRIBUTES
126 *
127 * These may be used in function prototypes as:
128 *
129 * KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
130 * int arg1,
131 * int arg2) KHRONOS_APIATTRIBUTES;
132 */
133
134#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)
135# define KHRONOS_STATIC 1
136#endif
137
138/*-------------------------------------------------------------------------
139 * Definition of KHRONOS_APICALL
140 *-------------------------------------------------------------------------
141 * This precedes the return type of the function in the function prototype.
142 */
143#if defined(KHRONOS_STATIC)
144 /* If the preprocessor constant KHRONOS_STATIC is defined, make the
145 * header compatible with static linking. */
146# define KHRONOS_APICALL
147#elif defined(_WIN32)
148# define KHRONOS_APICALL __declspec(dllimport)
149#elif defined (__SYMBIAN32__)
150# define KHRONOS_APICALL IMPORT_C
151#elif defined(__ANDROID__)
152# define KHRONOS_APICALL __attribute__((visibility("default")))
153#else
154# define KHRONOS_APICALL
155#endif
156
157/*-------------------------------------------------------------------------
158 * Definition of KHRONOS_APIENTRY
159 *-------------------------------------------------------------------------
160 * This follows the return type of the function and precedes the function
161 * name in the function prototype.
162 */
163#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
164 /* Win32 but not WinCE */
165# define KHRONOS_APIENTRY __stdcall
166#else
167# define KHRONOS_APIENTRY
168#endif
169
170/*-------------------------------------------------------------------------
171 * Definition of KHRONOS_APIATTRIBUTES
172 *-------------------------------------------------------------------------
173 * This follows the closing parenthesis of the function prototype arguments.
174 */
175#if defined (__ARMCC_2__)
176#define KHRONOS_APIATTRIBUTES __softfp
177#else
178#define KHRONOS_APIATTRIBUTES
179#endif
180
181/*-------------------------------------------------------------------------
182 * basic type definitions
183 *-----------------------------------------------------------------------*/
184#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
185
186
187/*
188 * Using <stdint.h>
189 */
190#include <stdint.h>
191typedef int32_t khronos_int32_t;
192typedef uint32_t khronos_uint32_t;
193typedef int64_t khronos_int64_t;
194typedef uint64_t khronos_uint64_t;
195#define KHRONOS_SUPPORT_INT64 1
196#define KHRONOS_SUPPORT_FLOAT 1
197/*
198 * To support platform where unsigned long cannot be used interchangeably with
199 * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.
200 * Ideally, we could just use (u)intptr_t everywhere, but this could result in
201 * ABI breakage if khronos_uintptr_t is changed from unsigned long to
202 * unsigned long long or similar (this results in different C++ name mangling).
203 * To avoid changes for existing platforms, we restrict usage of intptr_t to
204 * platforms where the size of a pointer is larger than the size of long.
205 */
206#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)
207#if __SIZEOF_POINTER__ > __SIZEOF_LONG__
208#define KHRONOS_USE_INTPTR_T
209#endif
210#endif
211
212#elif defined(__VMS ) || defined(__sgi)
213
214/*
215 * Using <inttypes.h>
216 */
217#include <inttypes.h>
218typedef int32_t khronos_int32_t;
219typedef uint32_t khronos_uint32_t;
220typedef int64_t khronos_int64_t;
221typedef uint64_t khronos_uint64_t;
222#define KHRONOS_SUPPORT_INT64 1
223#define KHRONOS_SUPPORT_FLOAT 1
224
225#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
226
227/*
228 * Win32
229 */
230typedef __int32 khronos_int32_t;
231typedef unsigned __int32 khronos_uint32_t;
232typedef __int64 khronos_int64_t;
233typedef unsigned __int64 khronos_uint64_t;
234#define KHRONOS_SUPPORT_INT64 1
235#define KHRONOS_SUPPORT_FLOAT 1
236
237#elif defined(__sun__) || defined(__digital__)
238
239/*
240 * Sun or Digital
241 */
242typedef int khronos_int32_t;
243typedef unsigned int khronos_uint32_t;
244#if defined(__arch64__) || defined(_LP64)
245typedef long int khronos_int64_t;
246typedef unsigned long int khronos_uint64_t;
247#else
248typedef long long int khronos_int64_t;
249typedef unsigned long long int khronos_uint64_t;
250#endif /* __arch64__ */
251#define KHRONOS_SUPPORT_INT64 1
252#define KHRONOS_SUPPORT_FLOAT 1
253
254#elif 0
255
256/*
257 * Hypothetical platform with no float or int64 support
258 */
259typedef int khronos_int32_t;
260typedef unsigned int khronos_uint32_t;
261#define KHRONOS_SUPPORT_INT64 0
262#define KHRONOS_SUPPORT_FLOAT 0
263
264#else
265
266/*
267 * Generic fallback
268 */
269#include <stdint.h>
270typedef int32_t khronos_int32_t;
271typedef uint32_t khronos_uint32_t;
272typedef int64_t khronos_int64_t;
273typedef uint64_t khronos_uint64_t;
274#define KHRONOS_SUPPORT_INT64 1
275#define KHRONOS_SUPPORT_FLOAT 1
276
277#endif
278
279
280/*
281 * Types that are (so far) the same on all platforms
282 */
283typedef signed char khronos_int8_t;
284typedef unsigned char khronos_uint8_t;
285typedef signed short int khronos_int16_t;
286typedef unsigned short int khronos_uint16_t;
287
288/*
289 * Types that differ between LLP64 and LP64 architectures - in LLP64,
290 * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
291 * to be the only LLP64 architecture in current use.
292 */
293#ifdef KHRONOS_USE_INTPTR_T
294typedef intptr_t khronos_intptr_t;
295typedef uintptr_t khronos_uintptr_t;
296#elif defined(_WIN64)
297typedef signed long long int khronos_intptr_t;
298typedef unsigned long long int khronos_uintptr_t;
299#else
300typedef signed long int khronos_intptr_t;
301typedef unsigned long int khronos_uintptr_t;
302#endif
303
304#if defined(_WIN64)
305typedef signed long long int khronos_ssize_t;
306typedef unsigned long long int khronos_usize_t;
307#else
308typedef signed long int khronos_ssize_t;
309typedef unsigned long int khronos_usize_t;
310#endif
311
312#if KHRONOS_SUPPORT_FLOAT
313/*
314 * Float type
315 */
316typedef float khronos_float_t;
317#endif
318
319#if KHRONOS_SUPPORT_INT64
320/* Time types
321 *
322 * These types can be used to represent a time interval in nanoseconds or
323 * an absolute Unadjusted System Time. Unadjusted System Time is the number
324 * of nanoseconds since some arbitrary system event (e.g. since the last
325 * time the system booted). The Unadjusted System Time is an unsigned
326 * 64 bit value that wraps back to 0 every 584 years. Time intervals
327 * may be either signed or unsigned.
328 */
329typedef khronos_uint64_t khronos_utime_nanoseconds_t;
330typedef khronos_int64_t khronos_stime_nanoseconds_t;
331#endif
332
333/*
334 * Dummy value used to pad enum types to 32 bits.
335 */
336#ifndef KHRONOS_MAX_ENUM
337#define KHRONOS_MAX_ENUM 0x7FFFFFFF
338#endif
339
340/*
341 * Enumerated boolean type
342 *
343 * Values other than zero should be considered to be true. Therefore
344 * comparisons should not be made against KHRONOS_TRUE.
345 */
346typedef enum {
347 KHRONOS_FALSE = 0,
348 KHRONOS_TRUE = 1,
349 KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
350} khronos_boolean_enum_t;
351
352#endif /* __khrplatform_h_ */
353
354/* Generated C header for:
355 * API: gl
356 * Profile: compatibility
357 * Versions considered: .*
358 * Versions emitted: 1\.[2-9]|[234]\.[0-9]
359 * Default extensions included: gl
360 * Additional extensions included: _nomatch_^
361 * Extensions removed: _nomatch_^
362 */
363
364#ifndef GL_VERSION_1_2
365#define GL_VERSION_1_2 1
366#define GL_UNSIGNED_BYTE_3_3_2 0x8032
367#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
368#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
369#define GL_UNSIGNED_INT_8_8_8_8 0x8035
370#define GL_UNSIGNED_INT_10_10_10_2 0x8036
371#define GL_TEXTURE_BINDING_3D 0x806A
372#define GL_PACK_SKIP_IMAGES 0x806B
373#define GL_PACK_IMAGE_HEIGHT 0x806C
374#define GL_UNPACK_SKIP_IMAGES 0x806D
375#define GL_UNPACK_IMAGE_HEIGHT 0x806E
376#define GL_TEXTURE_3D 0x806F
377#define GL_PROXY_TEXTURE_3D 0x8070
378#define GL_TEXTURE_DEPTH 0x8071
379#define GL_TEXTURE_WRAP_R 0x8072
380#define GL_MAX_3D_TEXTURE_SIZE 0x8073
381#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
382#define GL_UNSIGNED_SHORT_5_6_5 0x8363
383#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
384#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
385#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
386#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
387#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
388#define GL_BGR 0x80E0
389#define GL_BGRA 0x80E1
390#define GL_MAX_ELEMENTS_VERTICES 0x80E8
391#define GL_MAX_ELEMENTS_INDICES 0x80E9
392#define GL_CLAMP_TO_EDGE 0x812F
393#define GL_TEXTURE_MIN_LOD 0x813A
394#define GL_TEXTURE_MAX_LOD 0x813B
395#define GL_TEXTURE_BASE_LEVEL 0x813C
396#define GL_TEXTURE_MAX_LEVEL 0x813D
397#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12
398#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13
399#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
400#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
401#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
402#define GL_RESCALE_NORMAL 0x803A
403#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8
404#define GL_SINGLE_COLOR 0x81F9
405#define GL_SEPARATE_SPECULAR_COLOR 0x81FA
406#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
407typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
408typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
409typedef 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);
410typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
411#ifdef GL_GLEXT_PROTOTYPES
412GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
413GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
414GLAPI 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);
415GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
416#endif
417#endif /* GL_VERSION_1_2 */
418
419#ifndef GL_VERSION_1_3
420#define GL_VERSION_1_3 1
421#define GL_TEXTURE0 0x84C0
422#define GL_TEXTURE1 0x84C1
423#define GL_TEXTURE2 0x84C2
424#define GL_TEXTURE3 0x84C3
425#define GL_TEXTURE4 0x84C4
426#define GL_TEXTURE5 0x84C5
427#define GL_TEXTURE6 0x84C6
428#define GL_TEXTURE7 0x84C7
429#define GL_TEXTURE8 0x84C8
430#define GL_TEXTURE9 0x84C9
431#define GL_TEXTURE10 0x84CA
432#define GL_TEXTURE11 0x84CB
433#define GL_TEXTURE12 0x84CC
434#define GL_TEXTURE13 0x84CD
435#define GL_TEXTURE14 0x84CE
436#define GL_TEXTURE15 0x84CF
437#define GL_TEXTURE16 0x84D0
438#define GL_TEXTURE17 0x84D1
439#define GL_TEXTURE18 0x84D2
440#define GL_TEXTURE19 0x84D3
441#define GL_TEXTURE20 0x84D4
442#define GL_TEXTURE21 0x84D5
443#define GL_TEXTURE22 0x84D6
444#define GL_TEXTURE23 0x84D7
445#define GL_TEXTURE24 0x84D8
446#define GL_TEXTURE25 0x84D9
447#define GL_TEXTURE26 0x84DA
448#define GL_TEXTURE27 0x84DB
449#define GL_TEXTURE28 0x84DC
450#define GL_TEXTURE29 0x84DD
451#define GL_TEXTURE30 0x84DE
452#define GL_TEXTURE31 0x84DF
453#define GL_ACTIVE_TEXTURE 0x84E0
454#define GL_MULTISAMPLE 0x809D
455#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
456#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
457#define GL_SAMPLE_COVERAGE 0x80A0
458#define GL_SAMPLE_BUFFERS 0x80A8
459#define GL_SAMPLES 0x80A9
460#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
461#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
462#define GL_TEXTURE_CUBE_MAP 0x8513
463#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
464#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
465#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
466#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
467#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
468#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
469#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
470#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
471#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
472#define GL_COMPRESSED_RGB 0x84ED
473#define GL_COMPRESSED_RGBA 0x84EE
474#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
475#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
476#define GL_TEXTURE_COMPRESSED 0x86A1
477#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
478#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
479#define GL_CLAMP_TO_BORDER 0x812D
480#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
481#define GL_MAX_TEXTURE_UNITS 0x84E2
482#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3
483#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4
484#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5
485#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6
486#define GL_MULTISAMPLE_BIT 0x20000000
487#define GL_NORMAL_MAP 0x8511
488#define GL_REFLECTION_MAP 0x8512
489#define GL_COMPRESSED_ALPHA 0x84E9
490#define GL_COMPRESSED_LUMINANCE 0x84EA
491#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB
492#define GL_COMPRESSED_INTENSITY 0x84EC
493#define GL_COMBINE 0x8570
494#define GL_COMBINE_RGB 0x8571
495#define GL_COMBINE_ALPHA 0x8572
496#define GL_SOURCE0_RGB 0x8580
497#define GL_SOURCE1_RGB 0x8581
498#define GL_SOURCE2_RGB 0x8582
499#define GL_SOURCE0_ALPHA 0x8588
500#define GL_SOURCE1_ALPHA 0x8589
501#define GL_SOURCE2_ALPHA 0x858A
502#define GL_OPERAND0_RGB 0x8590
503#define GL_OPERAND1_RGB 0x8591
504#define GL_OPERAND2_RGB 0x8592
505#define GL_OPERAND0_ALPHA 0x8598
506#define GL_OPERAND1_ALPHA 0x8599
507#define GL_OPERAND2_ALPHA 0x859A
508#define GL_RGB_SCALE 0x8573
509#define GL_ADD_SIGNED 0x8574
510#define GL_INTERPOLATE 0x8575
511#define GL_SUBTRACT 0x84E7
512#define GL_CONSTANT 0x8576
513#define GL_PRIMARY_COLOR 0x8577
514#define GL_PREVIOUS 0x8578
515#define GL_DOT3_RGB 0x86AE
516#define GL_DOT3_RGBA 0x86AF
517typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
518typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert);
519typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
520typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
521typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
522typedef 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);
523typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
524typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
525typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img);
526typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
527typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
528typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
529typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
530typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
531typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
532typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
533typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
534typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
535typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
536typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
537typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
538typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
539typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
540typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
541typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
542typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
543typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
544typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
545typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
546typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
547typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
548typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
549typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
550typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
551typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
552typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
553typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
554typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
555typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
556typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
557typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
558typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
559typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);
560typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);
561typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);
562typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
563#ifdef GL_GLEXT_PROTOTYPES
564GLAPI void APIENTRY glActiveTexture (GLenum texture);
565GLAPI void APIENTRY glSampleCoverage (GLfloat value, GLboolean invert);
566GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
567GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
568GLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
569GLAPI 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);
570GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
571GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
572GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, void *img);
573GLAPI void APIENTRY glClientActiveTexture (GLenum texture);
574GLAPI void APIENTRY glMultiTexCoord1d (GLenum target, GLdouble s);
575GLAPI void APIENTRY glMultiTexCoord1dv (GLenum target, const GLdouble *v);
576GLAPI void APIENTRY glMultiTexCoord1f (GLenum target, GLfloat s);
577GLAPI void APIENTRY glMultiTexCoord1fv (GLenum target, const GLfloat *v);
578GLAPI void APIENTRY glMultiTexCoord1i (GLenum target, GLint s);
579GLAPI void APIENTRY glMultiTexCoord1iv (GLenum target, const GLint *v);
580GLAPI void APIENTRY glMultiTexCoord1s (GLenum target, GLshort s);
581GLAPI void APIENTRY glMultiTexCoord1sv (GLenum target, const GLshort *v);
582GLAPI void APIENTRY glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t);
583GLAPI void APIENTRY glMultiTexCoord2dv (GLenum target, const GLdouble *v);
584GLAPI void APIENTRY glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t);
585GLAPI void APIENTRY glMultiTexCoord2fv (GLenum target, const GLfloat *v);
586GLAPI void APIENTRY glMultiTexCoord2i (GLenum target, GLint s, GLint t);
587GLAPI void APIENTRY glMultiTexCoord2iv (GLenum target, const GLint *v);
588GLAPI void APIENTRY glMultiTexCoord2s (GLenum target, GLshort s, GLshort t);
589GLAPI void APIENTRY glMultiTexCoord2sv (GLenum target, const GLshort *v);
590GLAPI void APIENTRY glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r);
591GLAPI void APIENTRY glMultiTexCoord3dv (GLenum target, const GLdouble *v);
592GLAPI void APIENTRY glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r);
593GLAPI void APIENTRY glMultiTexCoord3fv (GLenum target, const GLfloat *v);
594GLAPI void APIENTRY glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r);
595GLAPI void APIENTRY glMultiTexCoord3iv (GLenum target, const GLint *v);
596GLAPI void APIENTRY glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r);
597GLAPI void APIENTRY glMultiTexCoord3sv (GLenum target, const GLshort *v);
598GLAPI void APIENTRY glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
599GLAPI void APIENTRY glMultiTexCoord4dv (GLenum target, const GLdouble *v);
600GLAPI void APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
601GLAPI void APIENTRY glMultiTexCoord4fv (GLenum target, const GLfloat *v);
602GLAPI void APIENTRY glMultiTexCoord4i (GLenum target, GLint s, GLint t, GLint r, GLint q);
603GLAPI void APIENTRY glMultiTexCoord4iv (GLenum target, const GLint *v);
604GLAPI void APIENTRY glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
605GLAPI void APIENTRY glMultiTexCoord4sv (GLenum target, const GLshort *v);
606GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *m);
607GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *m);
608GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *m);
609GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *m);
610#endif
611#endif /* GL_VERSION_1_3 */
612
613#ifndef GL_VERSION_1_4
614#define GL_VERSION_1_4 1
615#define GL_BLEND_DST_RGB 0x80C8
616#define GL_BLEND_SRC_RGB 0x80C9
617#define GL_BLEND_DST_ALPHA 0x80CA
618#define GL_BLEND_SRC_ALPHA 0x80CB
619#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128
620#define GL_DEPTH_COMPONENT16 0x81A5
621#define GL_DEPTH_COMPONENT24 0x81A6
622#define GL_DEPTH_COMPONENT32 0x81A7
623#define GL_MIRRORED_REPEAT 0x8370
624#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD
625#define GL_TEXTURE_LOD_BIAS 0x8501
626#define GL_INCR_WRAP 0x8507
627#define GL_DECR_WRAP 0x8508
628#define GL_TEXTURE_DEPTH_SIZE 0x884A
629#define GL_TEXTURE_COMPARE_MODE 0x884C
630#define GL_TEXTURE_COMPARE_FUNC 0x884D
631#define GL_POINT_SIZE_MIN 0x8126
632#define GL_POINT_SIZE_MAX 0x8127
633#define GL_POINT_DISTANCE_ATTENUATION 0x8129
634#define GL_GENERATE_MIPMAP 0x8191
635#define GL_GENERATE_MIPMAP_HINT 0x8192
636#define GL_FOG_COORDINATE_SOURCE 0x8450
637#define GL_FOG_COORDINATE 0x8451
638#define GL_FRAGMENT_DEPTH 0x8452
639#define GL_CURRENT_FOG_COORDINATE 0x8453
640#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454
641#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455
642#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456
643#define GL_FOG_COORDINATE_ARRAY 0x8457
644#define GL_COLOR_SUM 0x8458
645#define GL_CURRENT_SECONDARY_COLOR 0x8459
646#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A
647#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B
648#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C
649#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D
650#define GL_SECONDARY_COLOR_ARRAY 0x845E
651#define GL_TEXTURE_FILTER_CONTROL 0x8500
652#define GL_DEPTH_TEXTURE_MODE 0x884B
653#define GL_COMPARE_R_TO_TEXTURE 0x884E
654#define GL_BLEND_COLOR 0x8005
655#define GL_BLEND_EQUATION 0x8009
656#define GL_CONSTANT_COLOR 0x8001
657#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
658#define GL_CONSTANT_ALPHA 0x8003
659#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
660#define GL_FUNC_ADD 0x8006
661#define GL_FUNC_REVERSE_SUBTRACT 0x800B
662#define GL_FUNC_SUBTRACT 0x800A
663#define GL_MIN 0x8007
664#define GL_MAX 0x8008
665typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
666typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
667typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
668typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
669typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
670typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
671typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
672typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord);
673typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
674typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord);
675typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord);
676typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const void *pointer);
677typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
678typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v);
679typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
680typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v);
681typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);
682typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v);
683typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue);
684typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v);
685typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);
686typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v);
687typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);
688typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v);
689typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);
690typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v);
691typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);
692typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v);
693typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
694typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y);
695typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v);
696typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y);
697typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v);
698typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y);
699typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v);
700typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y);
701typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v);
702typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);
703typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v);
704typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);
705typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v);
706typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z);
707typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v);
708typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z);
709typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v);
710typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
711typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
712#ifdef GL_GLEXT_PROTOTYPES
713GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
714GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
715GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
716GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param);
717GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params);
718GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param);
719GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params);
720GLAPI void APIENTRY glFogCoordf (GLfloat coord);
721GLAPI void APIENTRY glFogCoordfv (const GLfloat *coord);
722GLAPI void APIENTRY glFogCoordd (GLdouble coord);
723GLAPI void APIENTRY glFogCoorddv (const GLdouble *coord);
724GLAPI void APIENTRY glFogCoordPointer (GLenum type, GLsizei stride, const void *pointer);
725GLAPI void APIENTRY glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue);
726GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *v);
727GLAPI void APIENTRY glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue);
728GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *v);
729GLAPI void APIENTRY glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue);
730GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *v);
731GLAPI void APIENTRY glSecondaryColor3i (GLint red, GLint green, GLint blue);
732GLAPI void APIENTRY glSecondaryColor3iv (const GLint *v);
733GLAPI void APIENTRY glSecondaryColor3s (GLshort red, GLshort green, GLshort blue);
734GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *v);
735GLAPI void APIENTRY glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue);
736GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *v);
737GLAPI void APIENTRY glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue);
738GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *v);
739GLAPI void APIENTRY glSecondaryColor3us (GLushort red, GLushort green, GLushort blue);
740GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *v);
741GLAPI void APIENTRY glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
742GLAPI void APIENTRY glWindowPos2d (GLdouble x, GLdouble y);
743GLAPI void APIENTRY glWindowPos2dv (const GLdouble *v);
744GLAPI void APIENTRY glWindowPos2f (GLfloat x, GLfloat y);
745GLAPI void APIENTRY glWindowPos2fv (const GLfloat *v);
746GLAPI void APIENTRY glWindowPos2i (GLint x, GLint y);
747GLAPI void APIENTRY glWindowPos2iv (const GLint *v);
748GLAPI void APIENTRY glWindowPos2s (GLshort x, GLshort y);
749GLAPI void APIENTRY glWindowPos2sv (const GLshort *v);
750GLAPI void APIENTRY glWindowPos3d (GLdouble x, GLdouble y, GLdouble z);
751GLAPI void APIENTRY glWindowPos3dv (const GLdouble *v);
752GLAPI void APIENTRY glWindowPos3f (GLfloat x, GLfloat y, GLfloat z);
753GLAPI void APIENTRY glWindowPos3fv (const GLfloat *v);
754GLAPI void APIENTRY glWindowPos3i (GLint x, GLint y, GLint z);
755GLAPI void APIENTRY glWindowPos3iv (const GLint *v);
756GLAPI void APIENTRY glWindowPos3s (GLshort x, GLshort y, GLshort z);
757GLAPI void APIENTRY glWindowPos3sv (const GLshort *v);
758GLAPI void APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
759GLAPI void APIENTRY glBlendEquation (GLenum mode);
760#endif
761#endif /* GL_VERSION_1_4 */
762
763#ifndef GL_VERSION_1_5
764#define GL_VERSION_1_5 1
765typedef khronos_ssize_t GLsizeiptr;
766typedef khronos_intptr_t GLintptr;
767#define GL_BUFFER_SIZE 0x8764
768#define GL_BUFFER_USAGE 0x8765
769#define GL_QUERY_COUNTER_BITS 0x8864
770#define GL_CURRENT_QUERY 0x8865
771#define GL_QUERY_RESULT 0x8866
772#define GL_QUERY_RESULT_AVAILABLE 0x8867
773#define GL_ARRAY_BUFFER 0x8892
774#define GL_ELEMENT_ARRAY_BUFFER 0x8893
775#define GL_ARRAY_BUFFER_BINDING 0x8894
776#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
777#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
778#define GL_READ_ONLY 0x88B8
779#define GL_WRITE_ONLY 0x88B9
780#define GL_READ_WRITE 0x88BA
781#define GL_BUFFER_ACCESS 0x88BB
782#define GL_BUFFER_MAPPED 0x88BC
783#define GL_BUFFER_MAP_POINTER 0x88BD
784#define GL_STREAM_DRAW 0x88E0
785#define GL_STREAM_READ 0x88E1
786#define GL_STREAM_COPY 0x88E2
787#define GL_STATIC_DRAW 0x88E4
788#define GL_STATIC_READ 0x88E5
789#define GL_STATIC_COPY 0x88E6
790#define GL_DYNAMIC_DRAW 0x88E8
791#define GL_DYNAMIC_READ 0x88E9
792#define GL_DYNAMIC_COPY 0x88EA
793#define GL_SAMPLES_PASSED 0x8914
794#define GL_SRC1_ALPHA 0x8589
795#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896
796#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897
797#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898
798#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899
799#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A
800#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B
801#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C
802#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D
803#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E
804#define GL_FOG_COORD_SRC 0x8450
805#define GL_FOG_COORD 0x8451
806#define GL_CURRENT_FOG_COORD 0x8453
807#define GL_FOG_COORD_ARRAY_TYPE 0x8454
808#define GL_FOG_COORD_ARRAY_STRIDE 0x8455
809#define GL_FOG_COORD_ARRAY_POINTER 0x8456
810#define GL_FOG_COORD_ARRAY 0x8457
811#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D
812#define GL_SRC0_RGB 0x8580
813#define GL_SRC1_RGB 0x8581
814#define GL_SRC2_RGB 0x8582
815#define GL_SRC0_ALPHA 0x8588
816#define GL_SRC2_ALPHA 0x858A
817typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
818typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
819typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id);
820typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
821typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target);
822typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
823typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);
824typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
825typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
826typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
827typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
828typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
829typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
830typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
831typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void *data);
832typedef void *(APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
833typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
834typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
835typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void **params);
836#ifdef GL_GLEXT_PROTOTYPES
837GLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids);
838GLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids);
839GLAPI GLboolean APIENTRY glIsQuery (GLuint id);
840GLAPI void APIENTRY glBeginQuery (GLenum target, GLuint id);
841GLAPI void APIENTRY glEndQuery (GLenum target);
842GLAPI void APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params);
843GLAPI void APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params);
844GLAPI void APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params);
845GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer);
846GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);
847GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);
848GLAPI GLboolean APIENTRY glIsBuffer (GLuint buffer);
849GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
850GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
851GLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data);
852GLAPI void *APIENTRY glMapBuffer (GLenum target, GLenum access);
853GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target);
854GLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);
855GLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, void **params);
856#endif
857#endif /* GL_VERSION_1_5 */
858
859#ifndef GL_VERSION_2_0
860#define GL_VERSION_2_0 1
861typedef char GLchar;
862#define GL_BLEND_EQUATION_RGB 0x8009
863#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
864#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
865#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
866#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
867#define GL_CURRENT_VERTEX_ATTRIB 0x8626
868#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642
869#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
870#define GL_STENCIL_BACK_FUNC 0x8800
871#define GL_STENCIL_BACK_FAIL 0x8801
872#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
873#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
874#define GL_MAX_DRAW_BUFFERS 0x8824
875#define GL_DRAW_BUFFER0 0x8825
876#define GL_DRAW_BUFFER1 0x8826
877#define GL_DRAW_BUFFER2 0x8827
878#define GL_DRAW_BUFFER3 0x8828
879#define GL_DRAW_BUFFER4 0x8829
880#define GL_DRAW_BUFFER5 0x882A
881#define GL_DRAW_BUFFER6 0x882B
882#define GL_DRAW_BUFFER7 0x882C
883#define GL_DRAW_BUFFER8 0x882D
884#define GL_DRAW_BUFFER9 0x882E
885#define GL_DRAW_BUFFER10 0x882F
886#define GL_DRAW_BUFFER11 0x8830
887#define GL_DRAW_BUFFER12 0x8831
888#define GL_DRAW_BUFFER13 0x8832
889#define GL_DRAW_BUFFER14 0x8833
890#define GL_DRAW_BUFFER15 0x8834
891#define GL_BLEND_EQUATION_ALPHA 0x883D
892#define GL_MAX_VERTEX_ATTRIBS 0x8869
893#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
894#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
895#define GL_FRAGMENT_SHADER 0x8B30
896#define GL_VERTEX_SHADER 0x8B31
897#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
898#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A
899#define GL_MAX_VARYING_FLOATS 0x8B4B
900#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
901#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
902#define GL_SHADER_TYPE 0x8B4F
903#define GL_FLOAT_VEC2 0x8B50
904#define GL_FLOAT_VEC3 0x8B51
905#define GL_FLOAT_VEC4 0x8B52
906#define GL_INT_VEC2 0x8B53
907#define GL_INT_VEC3 0x8B54
908#define GL_INT_VEC4 0x8B55
909#define GL_BOOL 0x8B56
910#define GL_BOOL_VEC2 0x8B57
911#define GL_BOOL_VEC3 0x8B58
912#define GL_BOOL_VEC4 0x8B59
913#define GL_FLOAT_MAT2 0x8B5A
914#define GL_FLOAT_MAT3 0x8B5B
915#define GL_FLOAT_MAT4 0x8B5C
916#define GL_SAMPLER_1D 0x8B5D
917#define GL_SAMPLER_2D 0x8B5E
918#define GL_SAMPLER_3D 0x8B5F
919#define GL_SAMPLER_CUBE 0x8B60
920#define GL_SAMPLER_1D_SHADOW 0x8B61
921#define GL_SAMPLER_2D_SHADOW 0x8B62
922#define GL_DELETE_STATUS 0x8B80
923#define GL_COMPILE_STATUS 0x8B81
924#define GL_LINK_STATUS 0x8B82
925#define GL_VALIDATE_STATUS 0x8B83
926#define GL_INFO_LOG_LENGTH 0x8B84
927#define GL_ATTACHED_SHADERS 0x8B85
928#define GL_ACTIVE_UNIFORMS 0x8B86
929#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
930#define GL_SHADER_SOURCE_LENGTH 0x8B88
931#define GL_ACTIVE_ATTRIBUTES 0x8B89
932#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
933#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
934#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
935#define GL_CURRENT_PROGRAM 0x8B8D
936#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0
937#define GL_LOWER_LEFT 0x8CA1
938#define GL_UPPER_LEFT 0x8CA2
939#define GL_STENCIL_BACK_REF 0x8CA3
940#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
941#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
942#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643
943#define GL_POINT_SPRITE 0x8861
944#define GL_COORD_REPLACE 0x8862
945#define GL_MAX_TEXTURE_COORDS 0x8871
946typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
947typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
948typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
949typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
950typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
951typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
952typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
953typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
954typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
955typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
956typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
957typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
958typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
959typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
960typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
961typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
962typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
963typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
964typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
965typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
966typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
967typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
968typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
969typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
970typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
971typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
972typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
973typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
974typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
975typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
976typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer);
977typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
978typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
979typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
980typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
981typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
982typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
983typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
984typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
985typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
986typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
987typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
988typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
989typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
990typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
991typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
992typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
993typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
994typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
995typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
996typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
997typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
998typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
999typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1000typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1001typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
1002typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
1003typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
1004typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
1005typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
1006typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
1007typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
1008typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
1009typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
1010typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
1011typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
1012typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
1013typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
1014typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
1015typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
1016typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
1017typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
1018typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
1019typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
1020typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
1021typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
1022typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
1023typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
1024typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
1025typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
1026typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
1027typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
1028typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
1029typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
1030typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
1031typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
1032typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
1033typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
1034typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
1035typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
1036typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
1037typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
1038typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
1039#ifdef GL_GLEXT_PROTOTYPES
1040GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
1041GLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs);
1042GLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
1043GLAPI void APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
1044GLAPI void APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
1045GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader);
1046GLAPI void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
1047GLAPI void APIENTRY glCompileShader (GLuint shader);
1048GLAPI GLuint APIENTRY glCreateProgram (void);
1049GLAPI GLuint APIENTRY glCreateShader (GLenum type);
1050GLAPI void APIENTRY glDeleteProgram (GLuint program);
1051GLAPI void APIENTRY glDeleteShader (GLuint shader);
1052GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader);
1053GLAPI void APIENTRY glDisableVertexAttribArray (GLuint index);
1054GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index);
1055GLAPI void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
1056GLAPI void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
1057GLAPI void APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
1058GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);
1059GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);
1060GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
1061GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
1062GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
1063GLAPI void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
1064GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);
1065GLAPI void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params);
1066GLAPI void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params);
1067GLAPI void APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params);
1068GLAPI void APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params);
1069GLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);
1070GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer);
1071GLAPI GLboolean APIENTRY glIsProgram (GLuint program);
1072GLAPI GLboolean APIENTRY glIsShader (GLuint shader);
1073GLAPI void APIENTRY glLinkProgram (GLuint program);
1074GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
1075GLAPI void APIENTRY glUseProgram (GLuint program);
1076GLAPI void APIENTRY glUniform1f (GLint location, GLfloat v0);
1077GLAPI void APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1);
1078GLAPI void APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
1079GLAPI void APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
1080GLAPI void APIENTRY glUniform1i (GLint location, GLint v0);
1081GLAPI void APIENTRY glUniform2i (GLint location, GLint v0, GLint v1);
1082GLAPI void APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2);
1083GLAPI void APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
1084GLAPI void APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value);
1085GLAPI void APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value);
1086GLAPI void APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value);
1087GLAPI void APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value);
1088GLAPI void APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value);
1089GLAPI void APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value);
1090GLAPI void APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value);
1091GLAPI void APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value);
1092GLAPI void APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1093GLAPI void APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1094GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1095GLAPI void APIENTRY glValidateProgram (GLuint program);
1096GLAPI void APIENTRY glVertexAttrib1d (GLuint index, GLdouble x);
1097GLAPI void APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v);
1098GLAPI void APIENTRY glVertexAttrib1f (GLuint index, GLfloat x);
1099GLAPI void APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v);
1100GLAPI void APIENTRY glVertexAttrib1s (GLuint index, GLshort x);
1101GLAPI void APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v);
1102GLAPI void APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y);
1103GLAPI void APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v);
1104GLAPI void APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y);
1105GLAPI void APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v);
1106GLAPI void APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y);
1107GLAPI void APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v);
1108GLAPI void APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
1109GLAPI void APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v);
1110GLAPI void APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z);
1111GLAPI void APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v);
1112GLAPI void APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z);
1113GLAPI void APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v);
1114GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v);
1115GLAPI void APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v);
1116GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v);
1117GLAPI void APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
1118GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v);
1119GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v);
1120GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v);
1121GLAPI void APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v);
1122GLAPI void APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
1123GLAPI void APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v);
1124GLAPI void APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
1125GLAPI void APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v);
1126GLAPI void APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v);
1127GLAPI void APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
1128GLAPI void APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v);
1129GLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v);
1130GLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v);
1131GLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v);
1132GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
1133#endif
1134#endif /* GL_VERSION_2_0 */
1135
1136#ifndef GL_VERSION_2_1
1137#define GL_VERSION_2_1 1
1138#define GL_PIXEL_PACK_BUFFER 0x88EB
1139#define GL_PIXEL_UNPACK_BUFFER 0x88EC
1140#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED
1141#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF
1142#define GL_FLOAT_MAT2x3 0x8B65
1143#define GL_FLOAT_MAT2x4 0x8B66
1144#define GL_FLOAT_MAT3x2 0x8B67
1145#define GL_FLOAT_MAT3x4 0x8B68
1146#define GL_FLOAT_MAT4x2 0x8B69
1147#define GL_FLOAT_MAT4x3 0x8B6A
1148#define GL_SRGB 0x8C40
1149#define GL_SRGB8 0x8C41
1150#define GL_SRGB_ALPHA 0x8C42
1151#define GL_SRGB8_ALPHA8 0x8C43
1152#define GL_COMPRESSED_SRGB 0x8C48
1153#define GL_COMPRESSED_SRGB_ALPHA 0x8C49
1154#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F
1155#define GL_SLUMINANCE_ALPHA 0x8C44
1156#define GL_SLUMINANCE8_ALPHA8 0x8C45
1157#define GL_SLUMINANCE 0x8C46
1158#define GL_SLUMINANCE8 0x8C47
1159#define GL_COMPRESSED_SLUMINANCE 0x8C4A
1160#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B
1161typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1162typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1163typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1164typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1165typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1166typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1167#ifdef GL_GLEXT_PROTOTYPES
1168GLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1169GLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1170GLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1171GLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1172GLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1173GLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1174#endif
1175#endif /* GL_VERSION_2_1 */
1176
1177#ifndef GL_VERSION_3_0
1178#define GL_VERSION_3_0 1
1179typedef khronos_uint16_t GLhalf;
1180#define GL_COMPARE_REF_TO_TEXTURE 0x884E
1181#define GL_CLIP_DISTANCE0 0x3000
1182#define GL_CLIP_DISTANCE1 0x3001
1183#define GL_CLIP_DISTANCE2 0x3002
1184#define GL_CLIP_DISTANCE3 0x3003
1185#define GL_CLIP_DISTANCE4 0x3004
1186#define GL_CLIP_DISTANCE5 0x3005
1187#define GL_CLIP_DISTANCE6 0x3006
1188#define GL_CLIP_DISTANCE7 0x3007
1189#define GL_MAX_CLIP_DISTANCES 0x0D32
1190#define GL_MAJOR_VERSION 0x821B
1191#define GL_MINOR_VERSION 0x821C
1192#define GL_NUM_EXTENSIONS 0x821D
1193#define GL_CONTEXT_FLAGS 0x821E
1194#define GL_COMPRESSED_RED 0x8225
1195#define GL_COMPRESSED_RG 0x8226
1196#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001
1197#define GL_RGBA32F 0x8814
1198#define GL_RGB32F 0x8815
1199#define GL_RGBA16F 0x881A
1200#define GL_RGB16F 0x881B
1201#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD
1202#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF
1203#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904
1204#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905
1205#define GL_CLAMP_READ_COLOR 0x891C
1206#define GL_FIXED_ONLY 0x891D
1207#define GL_MAX_VARYING_COMPONENTS 0x8B4B
1208#define GL_TEXTURE_1D_ARRAY 0x8C18
1209#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19
1210#define GL_TEXTURE_2D_ARRAY 0x8C1A
1211#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B
1212#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C
1213#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D
1214#define GL_R11F_G11F_B10F 0x8C3A
1215#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B
1216#define GL_RGB9_E5 0x8C3D
1217#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E
1218#define GL_TEXTURE_SHARED_SIZE 0x8C3F
1219#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76
1220#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F
1221#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80
1222#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83
1223#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84
1224#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85
1225#define GL_PRIMITIVES_GENERATED 0x8C87
1226#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88
1227#define GL_RASTERIZER_DISCARD 0x8C89
1228#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A
1229#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B
1230#define GL_INTERLEAVED_ATTRIBS 0x8C8C
1231#define GL_SEPARATE_ATTRIBS 0x8C8D
1232#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E
1233#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F
1234#define GL_RGBA32UI 0x8D70
1235#define GL_RGB32UI 0x8D71
1236#define GL_RGBA16UI 0x8D76
1237#define GL_RGB16UI 0x8D77
1238#define GL_RGBA8UI 0x8D7C
1239#define GL_RGB8UI 0x8D7D
1240#define GL_RGBA32I 0x8D82
1241#define GL_RGB32I 0x8D83
1242#define GL_RGBA16I 0x8D88
1243#define GL_RGB16I 0x8D89
1244#define GL_RGBA8I 0x8D8E
1245#define GL_RGB8I 0x8D8F
1246#define GL_RED_INTEGER 0x8D94
1247#define GL_GREEN_INTEGER 0x8D95
1248#define GL_BLUE_INTEGER 0x8D96
1249#define GL_RGB_INTEGER 0x8D98
1250#define GL_RGBA_INTEGER 0x8D99
1251#define GL_BGR_INTEGER 0x8D9A
1252#define GL_BGRA_INTEGER 0x8D9B
1253#define GL_SAMPLER_1D_ARRAY 0x8DC0
1254#define GL_SAMPLER_2D_ARRAY 0x8DC1
1255#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3
1256#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4
1257#define GL_SAMPLER_CUBE_SHADOW 0x8DC5
1258#define GL_UNSIGNED_INT_VEC2 0x8DC6
1259#define GL_UNSIGNED_INT_VEC3 0x8DC7
1260#define GL_UNSIGNED_INT_VEC4 0x8DC8
1261#define GL_INT_SAMPLER_1D 0x8DC9
1262#define GL_INT_SAMPLER_2D 0x8DCA
1263#define GL_INT_SAMPLER_3D 0x8DCB
1264#define GL_INT_SAMPLER_CUBE 0x8DCC
1265#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE
1266#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF
1267#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1
1268#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2
1269#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3
1270#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4
1271#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6
1272#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7
1273#define GL_QUERY_WAIT 0x8E13
1274#define GL_QUERY_NO_WAIT 0x8E14
1275#define GL_QUERY_BY_REGION_WAIT 0x8E15
1276#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16
1277#define GL_BUFFER_ACCESS_FLAGS 0x911F
1278#define GL_BUFFER_MAP_LENGTH 0x9120
1279#define GL_BUFFER_MAP_OFFSET 0x9121
1280#define GL_DEPTH_COMPONENT32F 0x8CAC
1281#define GL_DEPTH32F_STENCIL8 0x8CAD
1282#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
1283#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
1284#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
1285#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
1286#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
1287#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
1288#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
1289#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
1290#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
1291#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
1292#define GL_FRAMEBUFFER_DEFAULT 0x8218
1293#define GL_FRAMEBUFFER_UNDEFINED 0x8219
1294#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A
1295#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
1296#define GL_DEPTH_STENCIL 0x84F9
1297#define GL_UNSIGNED_INT_24_8 0x84FA
1298#define GL_DEPTH24_STENCIL8 0x88F0
1299#define GL_TEXTURE_STENCIL_SIZE 0x88F1
1300#define GL_TEXTURE_RED_TYPE 0x8C10
1301#define GL_TEXTURE_GREEN_TYPE 0x8C11
1302#define GL_TEXTURE_BLUE_TYPE 0x8C12
1303#define GL_TEXTURE_ALPHA_TYPE 0x8C13
1304#define GL_TEXTURE_DEPTH_TYPE 0x8C16
1305#define GL_UNSIGNED_NORMALIZED 0x8C17
1306#define GL_FRAMEBUFFER_BINDING 0x8CA6
1307#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6
1308#define GL_RENDERBUFFER_BINDING 0x8CA7
1309#define GL_READ_FRAMEBUFFER 0x8CA8
1310#define GL_DRAW_FRAMEBUFFER 0x8CA9
1311#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA
1312#define GL_RENDERBUFFER_SAMPLES 0x8CAB
1313#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
1314#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
1315#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
1316#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
1317#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
1318#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
1319#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
1320#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
1321#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
1322#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
1323#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
1324#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF
1325#define GL_COLOR_ATTACHMENT0 0x8CE0
1326#define GL_COLOR_ATTACHMENT1 0x8CE1
1327#define GL_COLOR_ATTACHMENT2 0x8CE2
1328#define GL_COLOR_ATTACHMENT3 0x8CE3
1329#define GL_COLOR_ATTACHMENT4 0x8CE4
1330#define GL_COLOR_ATTACHMENT5 0x8CE5
1331#define GL_COLOR_ATTACHMENT6 0x8CE6
1332#define GL_COLOR_ATTACHMENT7 0x8CE7
1333#define GL_COLOR_ATTACHMENT8 0x8CE8
1334#define GL_COLOR_ATTACHMENT9 0x8CE9
1335#define GL_COLOR_ATTACHMENT10 0x8CEA
1336#define GL_COLOR_ATTACHMENT11 0x8CEB
1337#define GL_COLOR_ATTACHMENT12 0x8CEC
1338#define GL_COLOR_ATTACHMENT13 0x8CED
1339#define GL_COLOR_ATTACHMENT14 0x8CEE
1340#define GL_COLOR_ATTACHMENT15 0x8CEF
1341#define GL_COLOR_ATTACHMENT16 0x8CF0
1342#define GL_COLOR_ATTACHMENT17 0x8CF1
1343#define GL_COLOR_ATTACHMENT18 0x8CF2
1344#define GL_COLOR_ATTACHMENT19 0x8CF3
1345#define GL_COLOR_ATTACHMENT20 0x8CF4
1346#define GL_COLOR_ATTACHMENT21 0x8CF5
1347#define GL_COLOR_ATTACHMENT22 0x8CF6
1348#define GL_COLOR_ATTACHMENT23 0x8CF7
1349#define GL_COLOR_ATTACHMENT24 0x8CF8
1350#define GL_COLOR_ATTACHMENT25 0x8CF9
1351#define GL_COLOR_ATTACHMENT26 0x8CFA
1352#define GL_COLOR_ATTACHMENT27 0x8CFB
1353#define GL_COLOR_ATTACHMENT28 0x8CFC
1354#define GL_COLOR_ATTACHMENT29 0x8CFD
1355#define GL_COLOR_ATTACHMENT30 0x8CFE
1356#define GL_COLOR_ATTACHMENT31 0x8CFF
1357#define GL_DEPTH_ATTACHMENT 0x8D00
1358#define GL_STENCIL_ATTACHMENT 0x8D20
1359#define GL_FRAMEBUFFER 0x8D40
1360#define GL_RENDERBUFFER 0x8D41
1361#define GL_RENDERBUFFER_WIDTH 0x8D42
1362#define GL_RENDERBUFFER_HEIGHT 0x8D43
1363#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
1364#define GL_STENCIL_INDEX1 0x8D46
1365#define GL_STENCIL_INDEX4 0x8D47
1366#define GL_STENCIL_INDEX8 0x8D48
1367#define GL_STENCIL_INDEX16 0x8D49
1368#define GL_RENDERBUFFER_RED_SIZE 0x8D50
1369#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51
1370#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52
1371#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
1372#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
1373#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
1374#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
1375#define GL_MAX_SAMPLES 0x8D57
1376#define GL_INDEX 0x8222
1377#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14
1378#define GL_TEXTURE_INTENSITY_TYPE 0x8C15
1379#define GL_FRAMEBUFFER_SRGB 0x8DB9
1380#define GL_HALF_FLOAT 0x140B
1381#define GL_MAP_READ_BIT 0x0001
1382#define GL_MAP_WRITE_BIT 0x0002
1383#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004
1384#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
1385#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010
1386#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020
1387#define GL_COMPRESSED_RED_RGTC1 0x8DBB
1388#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC
1389#define GL_COMPRESSED_RG_RGTC2 0x8DBD
1390#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE
1391#define GL_RG 0x8227
1392#define GL_RG_INTEGER 0x8228
1393#define GL_R8 0x8229
1394#define GL_R16 0x822A
1395#define GL_RG8 0x822B
1396#define GL_RG16 0x822C
1397#define GL_R16F 0x822D
1398#define GL_R32F 0x822E
1399#define GL_RG16F 0x822F
1400#define GL_RG32F 0x8230
1401#define GL_R8I 0x8231
1402#define GL_R8UI 0x8232
1403#define GL_R16I 0x8233
1404#define GL_R16UI 0x8234
1405#define GL_R32I 0x8235
1406#define GL_R32UI 0x8236
1407#define GL_RG8I 0x8237
1408#define GL_RG8UI 0x8238
1409#define GL_RG16I 0x8239
1410#define GL_RG16UI 0x823A
1411#define GL_RG32I 0x823B
1412#define GL_RG32UI 0x823C
1413#define GL_VERTEX_ARRAY_BINDING 0x85B5
1414#define GL_CLAMP_VERTEX_COLOR 0x891A
1415#define GL_CLAMP_FRAGMENT_COLOR 0x891B
1416#define GL_ALPHA_INTEGER 0x8D97
1417typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
1418typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
1419typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);
1420typedef void (APIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index);
1421typedef void (APIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index);
1422typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index);
1423typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);
1424typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void);
1425typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
1426typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
1427typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
1428typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
1429typedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp);
1430typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode);
1431typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void);
1432typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
1433typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params);
1434typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params);
1435typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x);
1436typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y);
1437typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z);
1438typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
1439typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x);
1440typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y);
1441typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
1442typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
1443typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v);
1444typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v);
1445typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v);
1446typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v);
1447typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v);
1448typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v);
1449typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v);
1450typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v);
1451typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v);
1452typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v);
1453typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v);
1454typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v);
1455typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params);
1456typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name);
1457typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name);
1458typedef void (APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
1459typedef void (APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
1460typedef void (APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
1461typedef void (APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
1462typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value);
1463typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value);
1464typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value);
1465typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value);
1466typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params);
1467typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params);
1468typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params);
1469typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params);
1470typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value);
1471typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value);
1472typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value);
1473typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
1474typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
1475typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
1476typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
1477typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
1478typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
1479typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
1480typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
1481typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
1482typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
1483typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
1484typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
1485typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
1486typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
1487typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
1488typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
1489typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
1490typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
1491typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);
1492typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
1493typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1494typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
1495typedef void *(APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
1496typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
1497typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
1498typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
1499typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
1500typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
1501#ifdef GL_GLEXT_PROTOTYPES
1502GLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
1503GLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data);
1504GLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data);
1505GLAPI void APIENTRY glEnablei (GLenum target, GLuint index);
1506GLAPI void APIENTRY glDisablei (GLenum target, GLuint index);
1507GLAPI GLboolean APIENTRY glIsEnabledi (GLenum target, GLuint index);
1508GLAPI void APIENTRY glBeginTransformFeedback (GLenum primitiveMode);
1509GLAPI void APIENTRY glEndTransformFeedback (void);
1510GLAPI void APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
1511GLAPI void APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer);
1512GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
1513GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
1514GLAPI void APIENTRY glClampColor (GLenum target, GLenum clamp);
1515GLAPI void APIENTRY glBeginConditionalRender (GLuint id, GLenum mode);
1516GLAPI void APIENTRY glEndConditionalRender (void);
1517GLAPI void APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
1518GLAPI void APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params);
1519GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params);
1520GLAPI void APIENTRY glVertexAttribI1i (GLuint index, GLint x);
1521GLAPI void APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y);
1522GLAPI void APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z);
1523GLAPI void APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w);
1524GLAPI void APIENTRY glVertexAttribI1ui (GLuint index, GLuint x);
1525GLAPI void APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y);
1526GLAPI void APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z);
1527GLAPI void APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
1528GLAPI void APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v);
1529GLAPI void APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v);
1530GLAPI void APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v);
1531GLAPI void APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v);
1532GLAPI void APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v);
1533GLAPI void APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v);
1534GLAPI void APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v);
1535GLAPI void APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v);
1536GLAPI void APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v);
1537GLAPI void APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v);
1538GLAPI void APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v);
1539GLAPI void APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v);
1540GLAPI void APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params);
1541GLAPI void APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name);
1542GLAPI GLint APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name);
1543GLAPI void APIENTRY glUniform1ui (GLint location, GLuint v0);
1544GLAPI void APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1);
1545GLAPI void APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2);
1546GLAPI void APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
1547GLAPI void APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value);
1548GLAPI void APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value);
1549GLAPI void APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value);
1550GLAPI void APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value);
1551GLAPI void APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params);
1552GLAPI void APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params);
1553GLAPI void APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params);
1554GLAPI void APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params);
1555GLAPI void APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value);
1556GLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value);
1557GLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value);
1558GLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
1559GLAPI const GLubyte *APIENTRY glGetStringi (GLenum name, GLuint index);
1560GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer);
1561GLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
1562GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);
1563GLAPI void APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);
1564GLAPI void APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
1565GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params);
1566GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint framebuffer);
1567GLAPI void APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
1568GLAPI void APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);
1569GLAPI void APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers);
1570GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum target);
1571GLAPI void APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
1572GLAPI void APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
1573GLAPI void APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
1574GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
1575GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params);
1576GLAPI void APIENTRY glGenerateMipmap (GLenum target);
1577GLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
1578GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1579GLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
1580GLAPI void *APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
1581GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length);
1582GLAPI void APIENTRY glBindVertexArray (GLuint array);
1583GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays);
1584GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays);
1585GLAPI GLboolean APIENTRY glIsVertexArray (GLuint array);
1586#endif
1587#endif /* GL_VERSION_3_0 */
1588
1589#ifndef GL_VERSION_3_1
1590#define GL_VERSION_3_1 1
1591#define GL_SAMPLER_2D_RECT 0x8B63
1592#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64
1593#define GL_SAMPLER_BUFFER 0x8DC2
1594#define GL_INT_SAMPLER_2D_RECT 0x8DCD
1595#define GL_INT_SAMPLER_BUFFER 0x8DD0
1596#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5
1597#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8
1598#define GL_TEXTURE_BUFFER 0x8C2A
1599#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B
1600#define GL_TEXTURE_BINDING_BUFFER 0x8C2C
1601#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D
1602#define GL_TEXTURE_RECTANGLE 0x84F5
1603#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6
1604#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7
1605#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8
1606#define GL_R8_SNORM 0x8F94
1607#define GL_RG8_SNORM 0x8F95
1608#define GL_RGB8_SNORM 0x8F96
1609#define GL_RGBA8_SNORM 0x8F97
1610#define GL_R16_SNORM 0x8F98
1611#define GL_RG16_SNORM 0x8F99
1612#define GL_RGB16_SNORM 0x8F9A
1613#define GL_RGBA16_SNORM 0x8F9B
1614#define GL_SIGNED_NORMALIZED 0x8F9C
1615#define GL_PRIMITIVE_RESTART 0x8F9D
1616#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E
1617#define GL_COPY_READ_BUFFER 0x8F36
1618#define GL_COPY_WRITE_BUFFER 0x8F37
1619#define GL_UNIFORM_BUFFER 0x8A11
1620#define GL_UNIFORM_BUFFER_BINDING 0x8A28
1621#define GL_UNIFORM_BUFFER_START 0x8A29
1622#define GL_UNIFORM_BUFFER_SIZE 0x8A2A
1623#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B
1624#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C
1625#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D
1626#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E
1627#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F
1628#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30
1629#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
1630#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
1631#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
1632#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
1633#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
1634#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36
1635#define GL_UNIFORM_TYPE 0x8A37
1636#define GL_UNIFORM_SIZE 0x8A38
1637#define GL_UNIFORM_NAME_LENGTH 0x8A39
1638#define GL_UNIFORM_BLOCK_INDEX 0x8A3A
1639#define GL_UNIFORM_OFFSET 0x8A3B
1640#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C
1641#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D
1642#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E
1643#define GL_UNIFORM_BLOCK_BINDING 0x8A3F
1644#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40
1645#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41
1646#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42
1647#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
1648#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
1649#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45
1650#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
1651#define GL_INVALID_INDEX 0xFFFFFFFFu
1652typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
1653typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
1654typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer);
1655typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index);
1656typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
1657typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
1658typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
1659typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
1660typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName);
1661typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
1662typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
1663typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
1664#ifdef GL_GLEXT_PROTOTYPES
1665GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
1666GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
1667GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer);
1668GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index);
1669GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
1670GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
1671GLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
1672GLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
1673GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName);
1674GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
1675GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
1676GLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
1677#endif
1678#endif /* GL_VERSION_3_1 */
1679
1680#ifndef GL_VERSION_3_2
1681#define GL_VERSION_3_2 1
1682typedef struct __GLsync *GLsync;
1683typedef khronos_uint64_t GLuint64;
1684typedef khronos_int64_t GLint64;
1685#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001
1686#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002
1687#define GL_LINES_ADJACENCY 0x000A
1688#define GL_LINE_STRIP_ADJACENCY 0x000B
1689#define GL_TRIANGLES_ADJACENCY 0x000C
1690#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D
1691#define GL_PROGRAM_POINT_SIZE 0x8642
1692#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29
1693#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7
1694#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8
1695#define GL_GEOMETRY_SHADER 0x8DD9
1696#define GL_GEOMETRY_VERTICES_OUT 0x8916
1697#define GL_GEOMETRY_INPUT_TYPE 0x8917
1698#define GL_GEOMETRY_OUTPUT_TYPE 0x8918
1699#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF
1700#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0
1701#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1
1702#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122
1703#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123
1704#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124
1705#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125
1706#define GL_CONTEXT_PROFILE_MASK 0x9126
1707#define GL_DEPTH_CLAMP 0x864F
1708#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C
1709#define GL_FIRST_VERTEX_CONVENTION 0x8E4D
1710#define GL_LAST_VERTEX_CONVENTION 0x8E4E
1711#define GL_PROVOKING_VERTEX 0x8E4F
1712#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
1713#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111
1714#define GL_OBJECT_TYPE 0x9112
1715#define GL_SYNC_CONDITION 0x9113
1716#define GL_SYNC_STATUS 0x9114
1717#define GL_SYNC_FLAGS 0x9115
1718#define GL_SYNC_FENCE 0x9116
1719#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117
1720#define GL_UNSIGNALED 0x9118
1721#define GL_SIGNALED 0x9119
1722#define GL_ALREADY_SIGNALED 0x911A
1723#define GL_TIMEOUT_EXPIRED 0x911B
1724#define GL_CONDITION_SATISFIED 0x911C
1725#define GL_WAIT_FAILED 0x911D
1726#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull
1727#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001
1728#define GL_SAMPLE_POSITION 0x8E50
1729#define GL_SAMPLE_MASK 0x8E51
1730#define GL_SAMPLE_MASK_VALUE 0x8E52
1731#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59
1732#define GL_TEXTURE_2D_MULTISAMPLE 0x9100
1733#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101
1734#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
1735#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
1736#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
1737#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
1738#define GL_TEXTURE_SAMPLES 0x9106
1739#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
1740#define GL_SAMPLER_2D_MULTISAMPLE 0x9108
1741#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109
1742#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
1743#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B
1744#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
1745#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
1746#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E
1747#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F
1748#define GL_MAX_INTEGER_SAMPLES 0x9110
1749typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
1750typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
1751typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
1752typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
1753typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
1754typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags);
1755typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync);
1756typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync);
1757typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
1758typedef void (APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
1759typedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *data);
1760typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values);
1761typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
1762typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params);
1763typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
1764typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
1765typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
1766typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val);
1767typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask);
1768#ifdef GL_GLEXT_PROTOTYPES
1769GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
1770GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
1771GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
1772GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
1773GLAPI void APIENTRY glProvokingVertex (GLenum mode);
1774GLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags);
1775GLAPI GLboolean APIENTRY glIsSync (GLsync sync);
1776GLAPI void APIENTRY glDeleteSync (GLsync sync);
1777GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
1778GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
1779GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *data);
1780GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values);
1781GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data);
1782GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params);
1783GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level);
1784GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
1785GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
1786GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);
1787GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask);
1788#endif
1789#endif /* GL_VERSION_3_2 */
1790
1791#ifndef GL_VERSION_3_3
1792#define GL_VERSION_3_3 1
1793#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE
1794#define GL_SRC1_COLOR 0x88F9
1795#define GL_ONE_MINUS_SRC1_COLOR 0x88FA
1796#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB
1797#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC
1798#define GL_ANY_SAMPLES_PASSED 0x8C2F
1799#define GL_SAMPLER_BINDING 0x8919
1800#define GL_RGB10_A2UI 0x906F
1801#define GL_TEXTURE_SWIZZLE_R 0x8E42
1802#define GL_TEXTURE_SWIZZLE_G 0x8E43
1803#define GL_TEXTURE_SWIZZLE_B 0x8E44
1804#define GL_TEXTURE_SWIZZLE_A 0x8E45
1805#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46
1806#define GL_TIME_ELAPSED 0x88BF
1807#define GL_TIMESTAMP 0x8E28
1808#define GL_INT_2_10_10_10_REV 0x8D9F
1809typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
1810typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name);
1811typedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers);
1812typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers);
1813typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler);
1814typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
1815typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
1816typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
1817typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
1818typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param);
1819typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
1820typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param);
1821typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params);
1822typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params);
1823typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);
1824typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params);
1825typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
1826typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params);
1827typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params);
1828typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor);
1829typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1830typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1831typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1832typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1833typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1834typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1835typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1836typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1837typedef void (APIENTRYP PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value);
1838typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value);
1839typedef void (APIENTRYP PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value);
1840typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value);
1841typedef void (APIENTRYP PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value);
1842typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value);
1843typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords);
1844typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords);
1845typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords);
1846typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords);
1847typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords);
1848typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords);
1849typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords);
1850typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords);
1851typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords);
1852typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
1853typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords);
1854typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
1855typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords);
1856typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
1857typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords);
1858typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
1859typedef void (APIENTRYP PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords);
1860typedef void (APIENTRYP PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords);
1861typedef void (APIENTRYP PFNGLCOLORP3UIPROC) (GLenum type, GLuint color);
1862typedef void (APIENTRYP PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint *color);
1863typedef void (APIENTRYP PFNGLCOLORP4UIPROC) (GLenum type, GLuint color);
1864typedef void (APIENTRYP PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint *color);
1865typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color);
1866typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color);
1867#ifdef GL_GLEXT_PROTOTYPES
1868GLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
1869GLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name);
1870GLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers);
1871GLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers);
1872GLAPI GLboolean APIENTRY glIsSampler (GLuint sampler);
1873GLAPI void APIENTRY glBindSampler (GLuint unit, GLuint sampler);
1874GLAPI void APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param);
1875GLAPI void APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param);
1876GLAPI void APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param);
1877GLAPI void APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param);
1878GLAPI void APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param);
1879GLAPI void APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param);
1880GLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params);
1881GLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params);
1882GLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params);
1883GLAPI void APIENTRY glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params);
1884GLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target);
1885GLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params);
1886GLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params);
1887GLAPI void APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor);
1888GLAPI void APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1889GLAPI void APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1890GLAPI void APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1891GLAPI void APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1892GLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1893GLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1894GLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
1895GLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
1896GLAPI void APIENTRY glVertexP2ui (GLenum type, GLuint value);
1897GLAPI void APIENTRY glVertexP2uiv (GLenum type, const GLuint *value);
1898GLAPI void APIENTRY glVertexP3ui (GLenum type, GLuint value);
1899GLAPI void APIENTRY glVertexP3uiv (GLenum type, const GLuint *value);
1900GLAPI void APIENTRY glVertexP4ui (GLenum type, GLuint value);
1901GLAPI void APIENTRY glVertexP4uiv (GLenum type, const GLuint *value);
1902GLAPI void APIENTRY glTexCoordP1ui (GLenum type, GLuint coords);
1903GLAPI void APIENTRY glTexCoordP1uiv (GLenum type, const GLuint *coords);
1904GLAPI void APIENTRY glTexCoordP2ui (GLenum type, GLuint coords);
1905GLAPI void APIENTRY glTexCoordP2uiv (GLenum type, const GLuint *coords);
1906GLAPI void APIENTRY glTexCoordP3ui (GLenum type, GLuint coords);
1907GLAPI void APIENTRY glTexCoordP3uiv (GLenum type, const GLuint *coords);
1908GLAPI void APIENTRY glTexCoordP4ui (GLenum type, GLuint coords);
1909GLAPI void APIENTRY glTexCoordP4uiv (GLenum type, const GLuint *coords);
1910GLAPI void APIENTRY glMultiTexCoordP1ui (GLenum texture, GLenum type, GLuint coords);
1911GLAPI void APIENTRY glMultiTexCoordP1uiv (GLenum texture, GLenum type, const GLuint *coords);
1912GLAPI void APIENTRY glMultiTexCoordP2ui (GLenum texture, GLenum type, GLuint coords);
1913GLAPI void APIENTRY glMultiTexCoordP2uiv (GLenum texture, GLenum type, const GLuint *coords);
1914GLAPI void APIENTRY glMultiTexCoordP3ui (GLenum texture, GLenum type, GLuint coords);
1915GLAPI void APIENTRY glMultiTexCoordP3uiv (GLenum texture, GLenum type, const GLuint *coords);
1916GLAPI void APIENTRY glMultiTexCoordP4ui (GLenum texture, GLenum type, GLuint coords);
1917GLAPI void APIENTRY glMultiTexCoordP4uiv (GLenum texture, GLenum type, const GLuint *coords);
1918GLAPI void APIENTRY glNormalP3ui (GLenum type, GLuint coords);
1919GLAPI void APIENTRY glNormalP3uiv (GLenum type, const GLuint *coords);
1920GLAPI void APIENTRY glColorP3ui (GLenum type, GLuint color);
1921GLAPI void APIENTRY glColorP3uiv (GLenum type, const GLuint *color);
1922GLAPI void APIENTRY glColorP4ui (GLenum type, GLuint color);
1923GLAPI void APIENTRY glColorP4uiv (GLenum type, const GLuint *color);
1924GLAPI void APIENTRY glSecondaryColorP3ui (GLenum type, GLuint color);
1925GLAPI void APIENTRY glSecondaryColorP3uiv (GLenum type, const GLuint *color);
1926#endif
1927#endif /* GL_VERSION_3_3 */
1928
1929#ifndef GL_VERSION_4_0
1930#define GL_VERSION_4_0 1
1931#define GL_SAMPLE_SHADING 0x8C36
1932#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37
1933#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E
1934#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F
1935#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009
1936#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A
1937#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B
1938#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C
1939#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D
1940#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E
1941#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F
1942#define GL_DRAW_INDIRECT_BUFFER 0x8F3F
1943#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43
1944#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
1945#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
1946#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
1947#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
1948#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
1949#define GL_MAX_VERTEX_STREAMS 0x8E71
1950#define GL_DOUBLE_VEC2 0x8FFC
1951#define GL_DOUBLE_VEC3 0x8FFD
1952#define GL_DOUBLE_VEC4 0x8FFE
1953#define GL_DOUBLE_MAT2 0x8F46
1954#define GL_DOUBLE_MAT3 0x8F47
1955#define GL_DOUBLE_MAT4 0x8F48
1956#define GL_DOUBLE_MAT2x3 0x8F49
1957#define GL_DOUBLE_MAT2x4 0x8F4A
1958#define GL_DOUBLE_MAT3x2 0x8F4B
1959#define GL_DOUBLE_MAT3x4 0x8F4C
1960#define GL_DOUBLE_MAT4x2 0x8F4D
1961#define GL_DOUBLE_MAT4x3 0x8F4E
1962#define GL_ACTIVE_SUBROUTINES 0x8DE5
1963#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6
1964#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
1965#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48
1966#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
1967#define GL_MAX_SUBROUTINES 0x8DE7
1968#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
1969#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A
1970#define GL_COMPATIBLE_SUBROUTINES 0x8E4B
1971#define GL_PATCHES 0x000E
1972#define GL_PATCH_VERTICES 0x8E72
1973#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73
1974#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74
1975#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75
1976#define GL_TESS_GEN_MODE 0x8E76
1977#define GL_TESS_GEN_SPACING 0x8E77
1978#define GL_TESS_GEN_VERTEX_ORDER 0x8E78
1979#define GL_TESS_GEN_POINT_MODE 0x8E79
1980#define GL_ISOLINES 0x8E7A
1981#define GL_FRACTIONAL_ODD 0x8E7B
1982#define GL_FRACTIONAL_EVEN 0x8E7C
1983#define GL_MAX_PATCH_VERTICES 0x8E7D
1984#define GL_MAX_TESS_GEN_LEVEL 0x8E7E
1985#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
1986#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
1987#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
1988#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
1989#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
1990#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84
1991#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
1992#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
1993#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
1994#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
1995#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
1996#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
1997#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
1998#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
1999#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
2000#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
2001#define GL_TESS_EVALUATION_SHADER 0x8E87
2002#define GL_TESS_CONTROL_SHADER 0x8E88
2003#define GL_TRANSFORM_FEEDBACK 0x8E22
2004#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
2005#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
2006#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25
2007#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
2008typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLfloat value);
2009typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode);
2010typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
2011typedef void (APIENTRYP PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst);
2012typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
2013typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect);
2014typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect);
2015typedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x);
2016typedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y);
2017typedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z);
2018typedef void (APIENTRYP PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
2019typedef void (APIENTRYP PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value);
2020typedef void (APIENTRYP PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value);
2021typedef void (APIENTRYP PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value);
2022typedef void (APIENTRYP PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value);
2023typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2024typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2025typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2026typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2027typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2028typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2029typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2030typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2031typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2032typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params);
2033typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name);
2034typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name);
2035typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
2036typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
2037typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
2038typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices);
2039typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params);
2040typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
2041typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);
2042typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values);
2043typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
2044typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids);
2045typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
2046typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
2047typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
2048typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
2049typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id);
2050typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream);
2051typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id);
2052typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index);
2053typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
2054#ifdef GL_GLEXT_PROTOTYPES
2055GLAPI void APIENTRY glMinSampleShading (GLfloat value);
2056GLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode);
2057GLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
2058GLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst);
2059GLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
2060GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const void *indirect);
2061GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect);
2062GLAPI void APIENTRY glUniform1d (GLint location, GLdouble x);
2063GLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y);
2064GLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z);
2065GLAPI void APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
2066GLAPI void APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value);
2067GLAPI void APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value);
2068GLAPI void APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value);
2069GLAPI void APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value);
2070GLAPI void APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2071GLAPI void APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2072GLAPI void APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2073GLAPI void APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2074GLAPI void APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2075GLAPI void APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2076GLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2077GLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2078GLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2079GLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params);
2080GLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name);
2081GLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name);
2082GLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
2083GLAPI void APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
2084GLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
2085GLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices);
2086GLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params);
2087GLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
2088GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value);
2089GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values);
2090GLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id);
2091GLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids);
2092GLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids);
2093GLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id);
2094GLAPI void APIENTRY glPauseTransformFeedback (void);
2095GLAPI void APIENTRY glResumeTransformFeedback (void);
2096GLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id);
2097GLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream);
2098GLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id);
2099GLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index);
2100GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params);
2101#endif
2102#endif /* GL_VERSION_4_0 */
2103
2104#ifndef GL_VERSION_4_1
2105#define GL_VERSION_4_1 1
2106#define GL_FIXED 0x140C
2107#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
2108#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
2109#define GL_LOW_FLOAT 0x8DF0
2110#define GL_MEDIUM_FLOAT 0x8DF1
2111#define GL_HIGH_FLOAT 0x8DF2
2112#define GL_LOW_INT 0x8DF3
2113#define GL_MEDIUM_INT 0x8DF4
2114#define GL_HIGH_INT 0x8DF5
2115#define GL_SHADER_COMPILER 0x8DFA
2116#define GL_SHADER_BINARY_FORMATS 0x8DF8
2117#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
2118#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
2119#define GL_MAX_VARYING_VECTORS 0x8DFC
2120#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
2121#define GL_RGB565 0x8D62
2122#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
2123#define GL_PROGRAM_BINARY_LENGTH 0x8741
2124#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
2125#define GL_PROGRAM_BINARY_FORMATS 0x87FF
2126#define GL_VERTEX_SHADER_BIT 0x00000001
2127#define GL_FRAGMENT_SHADER_BIT 0x00000002
2128#define GL_GEOMETRY_SHADER_BIT 0x00000004
2129#define GL_TESS_CONTROL_SHADER_BIT 0x00000008
2130#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010
2131#define GL_ALL_SHADER_BITS 0xFFFFFFFF
2132#define GL_PROGRAM_SEPARABLE 0x8258
2133#define GL_ACTIVE_PROGRAM 0x8259
2134#define GL_PROGRAM_PIPELINE_BINDING 0x825A
2135#define GL_MAX_VIEWPORTS 0x825B
2136#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C
2137#define GL_VIEWPORT_BOUNDS_RANGE 0x825D
2138#define GL_LAYER_PROVOKING_VERTEX 0x825E
2139#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F
2140#define GL_UNDEFINED_VERTEX 0x8260
2141typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void);
2142typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length);
2143typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
2144typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f);
2145typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d);
2146typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
2147typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
2148typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);
2149typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
2150typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program);
2151typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar *const*strings);
2152typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);
2153typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines);
2154typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);
2155typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline);
2156typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params);
2157typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0);
2158typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
2159typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0);
2160typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
2161typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0);
2162typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
2163typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0);
2164typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
2165typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1);
2166typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
2167typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
2168typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
2169typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1);
2170typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
2171typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
2172typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
2173typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
2174typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
2175typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
2176typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
2177typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
2178typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
2179typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
2180typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
2181typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
2182typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
2183typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
2184typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
2185typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
2186typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
2187typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
2188typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
2189typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2190typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2191typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2192typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2193typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2194typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2195typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2196typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2197typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2198typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2199typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2200typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2201typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2202typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2203typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2204typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2205typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2206typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2207typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline);
2208typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
2209typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x);
2210typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y);
2211typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
2212typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
2213typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v);
2214typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v);
2215typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v);
2216typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v);
2217typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
2218typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params);
2219typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v);
2220typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
2221typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v);
2222typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v);
2223typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
2224typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v);
2225typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble *v);
2226typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f);
2227typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data);
2228typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data);
2229#ifdef GL_GLEXT_PROTOTYPES
2230GLAPI void APIENTRY glReleaseShaderCompiler (void);
2231GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length);
2232GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
2233GLAPI void APIENTRY glDepthRangef (GLfloat n, GLfloat f);
2234GLAPI void APIENTRY glClearDepthf (GLfloat d);
2235GLAPI void APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
2236GLAPI void APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
2237GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value);
2238GLAPI void APIENTRY glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program);
2239GLAPI void APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program);
2240GLAPI GLuint APIENTRY glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar *const*strings);
2241GLAPI void APIENTRY glBindProgramPipeline (GLuint pipeline);
2242GLAPI void APIENTRY glDeleteProgramPipelines (GLsizei n, const GLuint *pipelines);
2243GLAPI void APIENTRY glGenProgramPipelines (GLsizei n, GLuint *pipelines);
2244GLAPI GLboolean APIENTRY glIsProgramPipeline (GLuint pipeline);
2245GLAPI void APIENTRY glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params);
2246GLAPI void APIENTRY glProgramUniform1i (GLuint program, GLint location, GLint v0);
2247GLAPI void APIENTRY glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value);
2248GLAPI void APIENTRY glProgramUniform1f (GLuint program, GLint location, GLfloat v0);
2249GLAPI void APIENTRY glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
2250GLAPI void APIENTRY glProgramUniform1d (GLuint program, GLint location, GLdouble v0);
2251GLAPI void APIENTRY glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
2252GLAPI void APIENTRY glProgramUniform1ui (GLuint program, GLint location, GLuint v0);
2253GLAPI void APIENTRY glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
2254GLAPI void APIENTRY glProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1);
2255GLAPI void APIENTRY glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value);
2256GLAPI void APIENTRY glProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1);
2257GLAPI void APIENTRY glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
2258GLAPI void APIENTRY glProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1);
2259GLAPI void APIENTRY glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
2260GLAPI void APIENTRY glProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1);
2261GLAPI void APIENTRY glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
2262GLAPI void APIENTRY glProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
2263GLAPI void APIENTRY glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value);
2264GLAPI void APIENTRY glProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
2265GLAPI void APIENTRY glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
2266GLAPI void APIENTRY glProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
2267GLAPI void APIENTRY glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
2268GLAPI void APIENTRY glProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
2269GLAPI void APIENTRY glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
2270GLAPI void APIENTRY glProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
2271GLAPI void APIENTRY glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value);
2272GLAPI void APIENTRY glProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
2273GLAPI void APIENTRY glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
2274GLAPI void APIENTRY glProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
2275GLAPI void APIENTRY glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
2276GLAPI void APIENTRY glProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
2277GLAPI void APIENTRY glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
2278GLAPI void APIENTRY glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2279GLAPI void APIENTRY glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2280GLAPI void APIENTRY glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2281GLAPI void APIENTRY glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2282GLAPI void APIENTRY glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2283GLAPI void APIENTRY glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2284GLAPI void APIENTRY glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2285GLAPI void APIENTRY glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2286GLAPI void APIENTRY glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2287GLAPI void APIENTRY glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2288GLAPI void APIENTRY glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2289GLAPI void APIENTRY glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
2290GLAPI void APIENTRY glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2291GLAPI void APIENTRY glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2292GLAPI void APIENTRY glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2293GLAPI void APIENTRY glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2294GLAPI void APIENTRY glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2295GLAPI void APIENTRY glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
2296GLAPI void APIENTRY glValidateProgramPipeline (GLuint pipeline);
2297GLAPI void APIENTRY glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
2298GLAPI void APIENTRY glVertexAttribL1d (GLuint index, GLdouble x);
2299GLAPI void APIENTRY glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y);
2300GLAPI void APIENTRY glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
2301GLAPI void APIENTRY glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
2302GLAPI void APIENTRY glVertexAttribL1dv (GLuint index, const GLdouble *v);
2303GLAPI void APIENTRY glVertexAttribL2dv (GLuint index, const GLdouble *v);
2304GLAPI void APIENTRY glVertexAttribL3dv (GLuint index, const GLdouble *v);
2305GLAPI void APIENTRY glVertexAttribL4dv (GLuint index, const GLdouble *v);
2306GLAPI void APIENTRY glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
2307GLAPI void APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params);
2308GLAPI void APIENTRY glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v);
2309GLAPI void APIENTRY glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
2310GLAPI void APIENTRY glViewportIndexedfv (GLuint index, const GLfloat *v);
2311GLAPI void APIENTRY glScissorArrayv (GLuint first, GLsizei count, const GLint *v);
2312GLAPI void APIENTRY glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
2313GLAPI void APIENTRY glScissorIndexedv (GLuint index, const GLint *v);
2314GLAPI void APIENTRY glDepthRangeArrayv (GLuint first, GLsizei count, const GLdouble *v);
2315GLAPI void APIENTRY glDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f);
2316GLAPI void APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data);
2317GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data);
2318#endif
2319#endif /* GL_VERSION_4_1 */
2320
2321#ifndef GL_VERSION_4_2
2322#define GL_VERSION_4_2 1
2323#define GL_COPY_READ_BUFFER_BINDING 0x8F36
2324#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37
2325#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24
2326#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23
2327#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127
2328#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128
2329#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129
2330#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A
2331#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B
2332#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C
2333#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D
2334#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E
2335#define GL_NUM_SAMPLE_COUNTS 0x9380
2336#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC
2337#define GL_ATOMIC_COUNTER_BUFFER 0x92C0
2338#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1
2339#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2
2340#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3
2341#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4
2342#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5
2343#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6
2344#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7
2345#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8
2346#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9
2347#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA
2348#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB
2349#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC
2350#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD
2351#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE
2352#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF
2353#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0
2354#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1
2355#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2
2356#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3
2357#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4
2358#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5
2359#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6
2360#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7
2361#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8
2362#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC
2363#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9
2364#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA
2365#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB
2366#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001
2367#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002
2368#define GL_UNIFORM_BARRIER_BIT 0x00000004
2369#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008
2370#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020
2371#define GL_COMMAND_BARRIER_BIT 0x00000040
2372#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080
2373#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100
2374#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200
2375#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400
2376#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800
2377#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000
2378#define GL_ALL_BARRIER_BITS 0xFFFFFFFF
2379#define GL_MAX_IMAGE_UNITS 0x8F38
2380#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39
2381#define GL_IMAGE_BINDING_NAME 0x8F3A
2382#define GL_IMAGE_BINDING_LEVEL 0x8F3B
2383#define GL_IMAGE_BINDING_LAYERED 0x8F3C
2384#define GL_IMAGE_BINDING_LAYER 0x8F3D
2385#define GL_IMAGE_BINDING_ACCESS 0x8F3E
2386#define GL_IMAGE_1D 0x904C
2387#define GL_IMAGE_2D 0x904D
2388#define GL_IMAGE_3D 0x904E
2389#define GL_IMAGE_2D_RECT 0x904F
2390#define GL_IMAGE_CUBE 0x9050
2391#define GL_IMAGE_BUFFER 0x9051
2392#define GL_IMAGE_1D_ARRAY 0x9052
2393#define GL_IMAGE_2D_ARRAY 0x9053
2394#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054
2395#define GL_IMAGE_2D_MULTISAMPLE 0x9055
2396#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056
2397#define GL_INT_IMAGE_1D 0x9057
2398#define GL_INT_IMAGE_2D 0x9058
2399#define GL_INT_IMAGE_3D 0x9059
2400#define GL_INT_IMAGE_2D_RECT 0x905A
2401#define GL_INT_IMAGE_CUBE 0x905B
2402#define GL_INT_IMAGE_BUFFER 0x905C
2403#define GL_INT_IMAGE_1D_ARRAY 0x905D
2404#define GL_INT_IMAGE_2D_ARRAY 0x905E
2405#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F
2406#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060
2407#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061
2408#define GL_UNSIGNED_INT_IMAGE_1D 0x9062
2409#define GL_UNSIGNED_INT_IMAGE_2D 0x9063
2410#define GL_UNSIGNED_INT_IMAGE_3D 0x9064
2411#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065
2412#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066
2413#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067
2414#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068
2415#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069
2416#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A
2417#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B
2418#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C
2419#define GL_MAX_IMAGE_SAMPLES 0x906D
2420#define GL_IMAGE_BINDING_FORMAT 0x906E
2421#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7
2422#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8
2423#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9
2424#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA
2425#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB
2426#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC
2427#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD
2428#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE
2429#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF
2430#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C
2431#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
2432#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
2433#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
2434#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
2435typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
2436typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
2437typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
2438typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint *params);
2439typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
2440typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
2441typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers);
2442typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
2443typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
2444typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
2445typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount);
2446typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
2447#ifdef GL_GLEXT_PROTOTYPES
2448GLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
2449GLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
2450GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
2451GLAPI void APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint *params);
2452GLAPI void APIENTRY glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
2453GLAPI void APIENTRY glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
2454GLAPI void APIENTRY glMemoryBarrier (GLbitfield barriers);
2455GLAPI void APIENTRY glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
2456GLAPI void APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
2457GLAPI void APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
2458GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount);
2459GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
2460#endif
2461#endif /* GL_VERSION_4_2 */
2462
2463#ifndef GL_VERSION_4_3
2464#define GL_VERSION_4_3 1
2465typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
2466#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9
2467#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E
2468#define GL_COMPRESSED_RGB8_ETC2 0x9274
2469#define GL_COMPRESSED_SRGB8_ETC2 0x9275
2470#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
2471#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
2472#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278
2473#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
2474#define GL_COMPRESSED_R11_EAC 0x9270
2475#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271
2476#define GL_COMPRESSED_RG11_EAC 0x9272
2477#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273
2478#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69
2479#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
2480#define GL_MAX_ELEMENT_INDEX 0x8D6B
2481#define GL_COMPUTE_SHADER 0x91B9
2482#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB
2483#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC
2484#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD
2485#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262
2486#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263
2487#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264
2488#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265
2489#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266
2490#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB
2491#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE
2492#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF
2493#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267
2494#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC
2495#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED
2496#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE
2497#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF
2498#define GL_COMPUTE_SHADER_BIT 0x00000020
2499#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
2500#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
2501#define GL_DEBUG_CALLBACK_FUNCTION 0x8244
2502#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245
2503#define GL_DEBUG_SOURCE_API 0x8246
2504#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
2505#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
2506#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
2507#define GL_DEBUG_SOURCE_APPLICATION 0x824A
2508#define GL_DEBUG_SOURCE_OTHER 0x824B
2509#define GL_DEBUG_TYPE_ERROR 0x824C
2510#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
2511#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
2512#define GL_DEBUG_TYPE_PORTABILITY 0x824F
2513#define GL_DEBUG_TYPE_PERFORMANCE 0x8250
2514#define GL_DEBUG_TYPE_OTHER 0x8251
2515#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
2516#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
2517#define GL_DEBUG_LOGGED_MESSAGES 0x9145
2518#define GL_DEBUG_SEVERITY_HIGH 0x9146
2519#define GL_DEBUG_SEVERITY_MEDIUM 0x9147
2520#define GL_DEBUG_SEVERITY_LOW 0x9148
2521#define GL_DEBUG_TYPE_MARKER 0x8268
2522#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269
2523#define GL_DEBUG_TYPE_POP_GROUP 0x826A
2524#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B
2525#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C
2526#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D
2527#define GL_BUFFER 0x82E0
2528#define GL_SHADER 0x82E1
2529#define GL_PROGRAM 0x82E2
2530#define GL_QUERY 0x82E3
2531#define GL_PROGRAM_PIPELINE 0x82E4
2532#define GL_SAMPLER 0x82E6
2533#define GL_MAX_LABEL_LENGTH 0x82E8
2534#define GL_DEBUG_OUTPUT 0x92E0
2535#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
2536#define GL_MAX_UNIFORM_LOCATIONS 0x826E
2537#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310
2538#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311
2539#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312
2540#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313
2541#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314
2542#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315
2543#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316
2544#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317
2545#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318
2546#define GL_INTERNALFORMAT_SUPPORTED 0x826F
2547#define GL_INTERNALFORMAT_PREFERRED 0x8270
2548#define GL_INTERNALFORMAT_RED_SIZE 0x8271
2549#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272
2550#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273
2551#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274
2552#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275
2553#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276
2554#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277
2555#define GL_INTERNALFORMAT_RED_TYPE 0x8278
2556#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279
2557#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A
2558#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B
2559#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C
2560#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D
2561#define GL_MAX_WIDTH 0x827E
2562#define GL_MAX_HEIGHT 0x827F
2563#define GL_MAX_DEPTH 0x8280
2564#define GL_MAX_LAYERS 0x8281
2565#define GL_MAX_COMBINED_DIMENSIONS 0x8282
2566#define GL_COLOR_COMPONENTS 0x8283
2567#define GL_DEPTH_COMPONENTS 0x8284
2568#define GL_STENCIL_COMPONENTS 0x8285
2569#define GL_COLOR_RENDERABLE 0x8286
2570#define GL_DEPTH_RENDERABLE 0x8287
2571#define GL_STENCIL_RENDERABLE 0x8288
2572#define GL_FRAMEBUFFER_RENDERABLE 0x8289
2573#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A
2574#define GL_FRAMEBUFFER_BLEND 0x828B
2575#define GL_READ_PIXELS 0x828C
2576#define GL_READ_PIXELS_FORMAT 0x828D
2577#define GL_READ_PIXELS_TYPE 0x828E
2578#define GL_TEXTURE_IMAGE_FORMAT 0x828F
2579#define GL_TEXTURE_IMAGE_TYPE 0x8290
2580#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291
2581#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292
2582#define GL_MIPMAP 0x8293
2583#define GL_MANUAL_GENERATE_MIPMAP 0x8294
2584#define GL_AUTO_GENERATE_MIPMAP 0x8295
2585#define GL_COLOR_ENCODING 0x8296
2586#define GL_SRGB_READ 0x8297
2587#define GL_SRGB_WRITE 0x8298
2588#define GL_FILTER 0x829A
2589#define GL_VERTEX_TEXTURE 0x829B
2590#define GL_TESS_CONTROL_TEXTURE 0x829C
2591#define GL_TESS_EVALUATION_TEXTURE 0x829D
2592#define GL_GEOMETRY_TEXTURE 0x829E
2593#define GL_FRAGMENT_TEXTURE 0x829F
2594#define GL_COMPUTE_TEXTURE 0x82A0
2595#define GL_TEXTURE_SHADOW 0x82A1
2596#define GL_TEXTURE_GATHER 0x82A2
2597#define GL_TEXTURE_GATHER_SHADOW 0x82A3
2598#define GL_SHADER_IMAGE_LOAD 0x82A4
2599#define GL_SHADER_IMAGE_STORE 0x82A5
2600#define GL_SHADER_IMAGE_ATOMIC 0x82A6
2601#define GL_IMAGE_TEXEL_SIZE 0x82A7
2602#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8
2603#define GL_IMAGE_PIXEL_FORMAT 0x82A9
2604#define GL_IMAGE_PIXEL_TYPE 0x82AA
2605#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC
2606#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD
2607#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE
2608#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF
2609#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1
2610#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2
2611#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3
2612#define GL_CLEAR_BUFFER 0x82B4
2613#define GL_TEXTURE_VIEW 0x82B5
2614#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6
2615#define GL_FULL_SUPPORT 0x82B7
2616#define GL_CAVEAT_SUPPORT 0x82B8
2617#define GL_IMAGE_CLASS_4_X_32 0x82B9
2618#define GL_IMAGE_CLASS_2_X_32 0x82BA
2619#define GL_IMAGE_CLASS_1_X_32 0x82BB
2620#define GL_IMAGE_CLASS_4_X_16 0x82BC
2621#define GL_IMAGE_CLASS_2_X_16 0x82BD
2622#define GL_IMAGE_CLASS_1_X_16 0x82BE
2623#define GL_IMAGE_CLASS_4_X_8 0x82BF
2624#define GL_IMAGE_CLASS_2_X_8 0x82C0
2625#define GL_IMAGE_CLASS_1_X_8 0x82C1
2626#define GL_IMAGE_CLASS_11_11_10 0x82C2
2627#define GL_IMAGE_CLASS_10_10_10_2 0x82C3
2628#define GL_VIEW_CLASS_128_BITS 0x82C4
2629#define GL_VIEW_CLASS_96_BITS 0x82C5
2630#define GL_VIEW_CLASS_64_BITS 0x82C6
2631#define GL_VIEW_CLASS_48_BITS 0x82C7
2632#define GL_VIEW_CLASS_32_BITS 0x82C8
2633#define GL_VIEW_CLASS_24_BITS 0x82C9
2634#define GL_VIEW_CLASS_16_BITS 0x82CA
2635#define GL_VIEW_CLASS_8_BITS 0x82CB
2636#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC
2637#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD
2638#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE
2639#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF
2640#define GL_VIEW_CLASS_RGTC1_RED 0x82D0
2641#define GL_VIEW_CLASS_RGTC2_RG 0x82D1
2642#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2
2643#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3
2644#define GL_UNIFORM 0x92E1
2645#define GL_UNIFORM_BLOCK 0x92E2
2646#define GL_PROGRAM_INPUT 0x92E3
2647#define GL_PROGRAM_OUTPUT 0x92E4
2648#define GL_BUFFER_VARIABLE 0x92E5
2649#define GL_SHADER_STORAGE_BLOCK 0x92E6
2650#define GL_VERTEX_SUBROUTINE 0x92E8
2651#define GL_TESS_CONTROL_SUBROUTINE 0x92E9
2652#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA
2653#define GL_GEOMETRY_SUBROUTINE 0x92EB
2654#define GL_FRAGMENT_SUBROUTINE 0x92EC
2655#define GL_COMPUTE_SUBROUTINE 0x92ED
2656#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE
2657#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF
2658#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0
2659#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1
2660#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2
2661#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3
2662#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4
2663#define GL_ACTIVE_RESOURCES 0x92F5
2664#define GL_MAX_NAME_LENGTH 0x92F6
2665#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7
2666#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8
2667#define GL_NAME_LENGTH 0x92F9
2668#define GL_TYPE 0x92FA
2669#define GL_ARRAY_SIZE 0x92FB
2670#define GL_OFFSET 0x92FC
2671#define GL_BLOCK_INDEX 0x92FD
2672#define GL_ARRAY_STRIDE 0x92FE
2673#define GL_MATRIX_STRIDE 0x92FF
2674#define GL_IS_ROW_MAJOR 0x9300
2675#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301
2676#define GL_BUFFER_BINDING 0x9302
2677#define GL_BUFFER_DATA_SIZE 0x9303
2678#define GL_NUM_ACTIVE_VARIABLES 0x9304
2679#define GL_ACTIVE_VARIABLES 0x9305
2680#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306
2681#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
2682#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
2683#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309
2684#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A
2685#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B
2686#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C
2687#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D
2688#define GL_LOCATION 0x930E
2689#define GL_LOCATION_INDEX 0x930F
2690#define GL_IS_PER_PATCH 0x92E7
2691#define GL_SHADER_STORAGE_BUFFER 0x90D2
2692#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3
2693#define GL_SHADER_STORAGE_BUFFER_START 0x90D4
2694#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5
2695#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6
2696#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
2697#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
2698#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
2699#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA
2700#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB
2701#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
2702#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
2703#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE
2704#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
2705#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000
2706#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
2707#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA
2708#define GL_TEXTURE_BUFFER_OFFSET 0x919D
2709#define GL_TEXTURE_BUFFER_SIZE 0x919E
2710#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F
2711#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB
2712#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC
2713#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD
2714#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE
2715#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
2716#define GL_VERTEX_ATTRIB_BINDING 0x82D4
2717#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5
2718#define GL_VERTEX_BINDING_DIVISOR 0x82D6
2719#define GL_VERTEX_BINDING_OFFSET 0x82D7
2720#define GL_VERTEX_BINDING_STRIDE 0x82D8
2721#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
2722#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
2723#define GL_VERTEX_BINDING_BUFFER 0x8F4F
2724#define GL_DISPLAY_LIST 0x82E7
2725typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
2726typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
2727typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
2728typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect);
2729typedef 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);
2730typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
2731typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
2732typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint64 *params);
2733typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
2734typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level);
2735typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
2736typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer);
2737typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
2738typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
2739typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
2740typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
2741typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
2742typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
2743typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
2744typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLint *params);
2745typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name);
2746typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
2747typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
2748typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
2749typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
2750typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
2751typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
2752typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
2753typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
2754typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
2755typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
2756typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex);
2757typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor);
2758typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
2759typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
2760typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam);
2761typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
2762typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
2763typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void);
2764typedef void (APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
2765typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
2766typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label);
2767typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
2768#ifdef GL_GLEXT_PROTOTYPES
2769GLAPI void APIENTRY glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
2770GLAPI void APIENTRY glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
2771GLAPI void APIENTRY glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
2772GLAPI void APIENTRY glDispatchComputeIndirect (GLintptr indirect);
2773GLAPI 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);
2774GLAPI void APIENTRY glFramebufferParameteri (GLenum target, GLenum pname, GLint param);
2775GLAPI void APIENTRY glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params);
2776GLAPI void APIENTRY glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint64 *params);
2777GLAPI void APIENTRY glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
2778GLAPI void APIENTRY glInvalidateTexImage (GLuint texture, GLint level);
2779GLAPI void APIENTRY glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length);
2780GLAPI void APIENTRY glInvalidateBufferData (GLuint buffer);
2781GLAPI void APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments);
2782GLAPI void APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
2783GLAPI void APIENTRY glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
2784GLAPI void APIENTRY glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
2785GLAPI void APIENTRY glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
2786GLAPI GLuint APIENTRY glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar *name);
2787GLAPI void APIENTRY glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
2788GLAPI void APIENTRY glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLint *params);
2789GLAPI GLint APIENTRY glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar *name);
2790GLAPI GLint APIENTRY glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar *name);
2791GLAPI void APIENTRY glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
2792GLAPI void APIENTRY glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
2793GLAPI void APIENTRY glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
2794GLAPI void APIENTRY glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
2795GLAPI void APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
2796GLAPI void APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
2797GLAPI void APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
2798GLAPI void APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
2799GLAPI void APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
2800GLAPI void APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex);
2801GLAPI void APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor);
2802GLAPI void APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
2803GLAPI void APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
2804GLAPI void APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam);
2805GLAPI GLuint APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
2806GLAPI void APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message);
2807GLAPI void APIENTRY glPopDebugGroup (void);
2808GLAPI void APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
2809GLAPI void APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
2810GLAPI void APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label);
2811GLAPI void APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
2812#endif
2813#endif /* GL_VERSION_4_3 */
2814
2815#ifndef GL_VERSION_4_4
2816#define GL_VERSION_4_4 1
2817#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5
2818#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
2819#define GL_TEXTURE_BUFFER_BINDING 0x8C2A
2820#define GL_MAP_PERSISTENT_BIT 0x0040
2821#define GL_MAP_COHERENT_BIT 0x0080
2822#define GL_DYNAMIC_STORAGE_BIT 0x0100
2823#define GL_CLIENT_STORAGE_BIT 0x0200
2824#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000
2825#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F
2826#define GL_BUFFER_STORAGE_FLAGS 0x8220
2827#define GL_CLEAR_TEXTURE 0x9365
2828#define GL_LOCATION_COMPONENT 0x934A
2829#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B
2830#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C
2831#define GL_QUERY_BUFFER 0x9192
2832#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000
2833#define GL_QUERY_BUFFER_BINDING 0x9193
2834#define GL_QUERY_RESULT_NO_WAIT 0x9194
2835#define GL_MIRROR_CLAMP_TO_EDGE 0x8743
2836typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
2837typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
2838typedef 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);
2839typedef void (APIENTRYP PFNGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
2840typedef void (APIENTRYP PFNGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
2841typedef void (APIENTRYP PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
2842typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers);
2843typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
2844typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
2845#ifdef GL_GLEXT_PROTOTYPES
2846GLAPI void APIENTRY glBufferStorage (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
2847GLAPI void APIENTRY glClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
2848GLAPI 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);
2849GLAPI void APIENTRY glBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
2850GLAPI void APIENTRY glBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
2851GLAPI void APIENTRY glBindTextures (GLuint first, GLsizei count, const GLuint *textures);
2852GLAPI void APIENTRY glBindSamplers (GLuint first, GLsizei count, const GLuint *samplers);
2853GLAPI void APIENTRY glBindImageTextures (GLuint first, GLsizei count, const GLuint *textures);
2854GLAPI void APIENTRY glBindVertexBuffers (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
2855#endif
2856#endif /* GL_VERSION_4_4 */
2857
2858#ifndef GL_VERSION_4_5
2859#define GL_VERSION_4_5 1
2860#define GL_CONTEXT_LOST 0x0507
2861#define GL_NEGATIVE_ONE_TO_ONE 0x935E
2862#define GL_ZERO_TO_ONE 0x935F
2863#define GL_CLIP_ORIGIN 0x935C
2864#define GL_CLIP_DEPTH_MODE 0x935D
2865#define GL_QUERY_WAIT_INVERTED 0x8E17
2866#define GL_QUERY_NO_WAIT_INVERTED 0x8E18
2867#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19
2868#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A
2869#define GL_MAX_CULL_DISTANCES 0x82F9
2870#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA
2871#define GL_TEXTURE_TARGET 0x1006
2872#define GL_QUERY_TARGET 0x82EA
2873#define GL_GUILTY_CONTEXT_RESET 0x8253
2874#define GL_INNOCENT_CONTEXT_RESET 0x8254
2875#define GL_UNKNOWN_CONTEXT_RESET 0x8255
2876#define GL_RESET_NOTIFICATION_STRATEGY 0x8256
2877#define GL_LOSE_CONTEXT_ON_RESET 0x8252
2878#define GL_NO_RESET_NOTIFICATION 0x8261
2879#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004
2880#define GL_COLOR_TABLE 0x80D0
2881#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
2882#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
2883#define GL_PROXY_COLOR_TABLE 0x80D3
2884#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
2885#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
2886#define GL_CONVOLUTION_1D 0x8010
2887#define GL_CONVOLUTION_2D 0x8011
2888#define GL_SEPARABLE_2D 0x8012
2889#define GL_HISTOGRAM 0x8024
2890#define GL_PROXY_HISTOGRAM 0x8025
2891#define GL_MINMAX 0x802E
2892#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB
2893#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC
2894typedef void (APIENTRYP PFNGLCLIPCONTROLPROC) (GLenum origin, GLenum depth);
2895typedef void (APIENTRYP PFNGLCREATETRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
2896typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC) (GLuint xfb, GLuint index, GLuint buffer);
2897typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC) (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
2898typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKIVPROC) (GLuint xfb, GLenum pname, GLint *param);
2899typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint *param);
2900typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI64_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint64 *param);
2901typedef void (APIENTRYP PFNGLCREATEBUFFERSPROC) (GLsizei n, GLuint *buffers);
2902typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
2903typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
2904typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
2905typedef void (APIENTRYP PFNGLCOPYNAMEDBUFFERSUBDATAPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
2906typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
2907typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
2908typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERPROC) (GLuint buffer, GLenum access);
2909typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
2910typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFERPROC) (GLuint buffer);
2911typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
2912typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVPROC) (GLuint buffer, GLenum pname, GLint *params);
2913typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERI64VPROC) (GLuint buffer, GLenum pname, GLint64 *params);
2914typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVPROC) (GLuint buffer, GLenum pname, void **params);
2915typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
2916typedef void (APIENTRYP PFNGLCREATEFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
2917typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
2918typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC) (GLuint framebuffer, GLenum pname, GLint param);
2919typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
2920typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
2921typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC) (GLuint framebuffer, GLenum buf);
2922typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs);
2923typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC) (GLuint framebuffer, GLenum src);
2924typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments);
2925typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
2926typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);
2927typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);
2928typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);
2929typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
2930typedef void (APIENTRYP PFNGLBLITNAMEDFRAMEBUFFERPROC) (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
2931typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC) (GLuint framebuffer, GLenum target);
2932typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC) (GLuint framebuffer, GLenum pname, GLint *param);
2933typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
2934typedef void (APIENTRYP PFNGLCREATERENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
2935typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
2936typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
2937typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC) (GLuint renderbuffer, GLenum pname, GLint *params);
2938typedef void (APIENTRYP PFNGLCREATETEXTURESPROC) (GLenum target, GLsizei n, GLuint *textures);
2939typedef void (APIENTRYP PFNGLTEXTUREBUFFERPROC) (GLuint texture, GLenum internalformat, GLuint buffer);
2940typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEPROC) (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
2941typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);
2942typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
2943typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
2944typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
2945typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
2946typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
2947typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
2948typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
2949typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
2950typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
2951typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
2952typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
2953typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
2954typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
2955typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFPROC) (GLuint texture, GLenum pname, GLfloat param);
2956typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, const GLfloat *param);
2957typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIPROC) (GLuint texture, GLenum pname, GLint param);
2958typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, const GLint *params);
2959typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, const GLuint *params);
2960typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, const GLint *param);
2961typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPPROC) (GLuint texture);
2962typedef void (APIENTRYP PFNGLBINDTEXTUREUNITPROC) (GLuint unit, GLuint texture);
2963typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
2964typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLsizei bufSize, void *pixels);
2965typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVPROC) (GLuint texture, GLint level, GLenum pname, GLfloat *params);
2966typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVPROC) (GLuint texture, GLint level, GLenum pname, GLint *params);
2967typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, GLfloat *params);
2968typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, GLint *params);
2969typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, GLuint *params);
2970typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, GLint *params);
2971typedef void (APIENTRYP PFNGLCREATEVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
2972typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index);
2973typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index);
2974typedef void (APIENTRYP PFNGLVERTEXARRAYELEMENTBUFFERPROC) (GLuint vaobj, GLuint buffer);
2975typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
2976typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERSPROC) (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
2977typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBBINDINGPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
2978typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
2979typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBIFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
2980typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBLFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
2981typedef void (APIENTRYP PFNGLVERTEXARRAYBINDINGDIVISORPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
2982typedef void (APIENTRYP PFNGLGETVERTEXARRAYIVPROC) (GLuint vaobj, GLenum pname, GLint *param);
2983typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXEDIVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
2984typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXED64IVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param);
2985typedef void (APIENTRYP PFNGLCREATESAMPLERSPROC) (GLsizei n, GLuint *samplers);
2986typedef void (APIENTRYP PFNGLCREATEPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);
2987typedef void (APIENTRYP PFNGLCREATEQUERIESPROC) (GLenum target, GLsizei n, GLuint *ids);
2988typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
2989typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
2990typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
2991typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
2992typedef void (APIENTRYP PFNGLMEMORYBARRIERBYREGIONPROC) (GLbitfield barriers);
2993typedef void (APIENTRYP PFNGLGETTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
2994typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels);
2995typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSPROC) (void);
2996typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLsizei bufSize, void *pixels);
2997typedef void (APIENTRYP PFNGLGETNTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
2998typedef void (APIENTRYP PFNGLGETNUNIFORMDVPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
2999typedef void (APIENTRYP PFNGLGETNUNIFORMFVPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
3000typedef void (APIENTRYP PFNGLGETNUNIFORMIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
3001typedef void (APIENTRYP PFNGLGETNUNIFORMUIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
3002typedef void (APIENTRYP PFNGLREADNPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
3003typedef void (APIENTRYP PFNGLGETNMAPDVPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
3004typedef void (APIENTRYP PFNGLGETNMAPFVPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
3005typedef void (APIENTRYP PFNGLGETNMAPIVPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v);
3006typedef void (APIENTRYP PFNGLGETNPIXELMAPFVPROC) (GLenum map, GLsizei bufSize, GLfloat *values);
3007typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVPROC) (GLenum map, GLsizei bufSize, GLuint *values);
3008typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVPROC) (GLenum map, GLsizei bufSize, GLushort *values);
3009typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEPROC) (GLsizei bufSize, GLubyte *pattern);
3010typedef void (APIENTRYP PFNGLGETNCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);
3011typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);
3012typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);
3013typedef void (APIENTRYP PFNGLGETNHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
3014typedef void (APIENTRYP PFNGLGETNMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
3015typedef void (APIENTRYP PFNGLTEXTUREBARRIERPROC) (void);
3016#ifdef GL_GLEXT_PROTOTYPES
3017GLAPI void APIENTRY glClipControl (GLenum origin, GLenum depth);
3018GLAPI void APIENTRY glCreateTransformFeedbacks (GLsizei n, GLuint *ids);
3019GLAPI void APIENTRY glTransformFeedbackBufferBase (GLuint xfb, GLuint index, GLuint buffer);
3020GLAPI void APIENTRY glTransformFeedbackBufferRange (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
3021GLAPI void APIENTRY glGetTransformFeedbackiv (GLuint xfb, GLenum pname, GLint *param);
3022GLAPI void APIENTRY glGetTransformFeedbacki_v (GLuint xfb, GLenum pname, GLuint index, GLint *param);
3023GLAPI void APIENTRY glGetTransformFeedbacki64_v (GLuint xfb, GLenum pname, GLuint index, GLint64 *param);
3024GLAPI void APIENTRY glCreateBuffers (GLsizei n, GLuint *buffers);
3025GLAPI void APIENTRY glNamedBufferStorage (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
3026GLAPI void APIENTRY glNamedBufferData (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
3027GLAPI void APIENTRY glNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
3028GLAPI void APIENTRY glCopyNamedBufferSubData (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
3029GLAPI void APIENTRY glClearNamedBufferData (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
3030GLAPI void APIENTRY glClearNamedBufferSubData (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
3031GLAPI void *APIENTRY glMapNamedBuffer (GLuint buffer, GLenum access);
3032GLAPI void *APIENTRY glMapNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
3033GLAPI GLboolean APIENTRY glUnmapNamedBuffer (GLuint buffer);
3034GLAPI void APIENTRY glFlushMappedNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length);
3035GLAPI void APIENTRY glGetNamedBufferParameteriv (GLuint buffer, GLenum pname, GLint *params);
3036GLAPI void APIENTRY glGetNamedBufferParameteri64v (GLuint buffer, GLenum pname, GLint64 *params);
3037GLAPI void APIENTRY glGetNamedBufferPointerv (GLuint buffer, GLenum pname, void **params);
3038GLAPI void APIENTRY glGetNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
3039GLAPI void APIENTRY glCreateFramebuffers (GLsizei n, GLuint *framebuffers);
3040GLAPI void APIENTRY glNamedFramebufferRenderbuffer (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
3041GLAPI void APIENTRY glNamedFramebufferParameteri (GLuint framebuffer, GLenum pname, GLint param);
3042GLAPI void APIENTRY glNamedFramebufferTexture (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
3043GLAPI void APIENTRY glNamedFramebufferTextureLayer (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
3044GLAPI void APIENTRY glNamedFramebufferDrawBuffer (GLuint framebuffer, GLenum buf);
3045GLAPI void APIENTRY glNamedFramebufferDrawBuffers (GLuint framebuffer, GLsizei n, const GLenum *bufs);
3046GLAPI void APIENTRY glNamedFramebufferReadBuffer (GLuint framebuffer, GLenum src);
3047GLAPI void APIENTRY glInvalidateNamedFramebufferData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments);
3048GLAPI void APIENTRY glInvalidateNamedFramebufferSubData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
3049GLAPI void APIENTRY glClearNamedFramebufferiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);
3050GLAPI void APIENTRY glClearNamedFramebufferuiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);
3051GLAPI void APIENTRY glClearNamedFramebufferfv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);
3052GLAPI void APIENTRY glClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
3053GLAPI void APIENTRY glBlitNamedFramebuffer (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
3054GLAPI GLenum APIENTRY glCheckNamedFramebufferStatus (GLuint framebuffer, GLenum target);
3055GLAPI void APIENTRY glGetNamedFramebufferParameteriv (GLuint framebuffer, GLenum pname, GLint *param);
3056GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameteriv (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
3057GLAPI void APIENTRY glCreateRenderbuffers (GLsizei n, GLuint *renderbuffers);
3058GLAPI void APIENTRY glNamedRenderbufferStorage (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
3059GLAPI void APIENTRY glNamedRenderbufferStorageMultisample (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
3060GLAPI void APIENTRY glGetNamedRenderbufferParameteriv (GLuint renderbuffer, GLenum pname, GLint *params);
3061GLAPI void APIENTRY glCreateTextures (GLenum target, GLsizei n, GLuint *textures);
3062GLAPI void APIENTRY glTextureBuffer (GLuint texture, GLenum internalformat, GLuint buffer);
3063GLAPI void APIENTRY glTextureBufferRange (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
3064GLAPI void APIENTRY glTextureStorage1D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);
3065GLAPI void APIENTRY glTextureStorage2D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
3066GLAPI void APIENTRY glTextureStorage3D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
3067GLAPI void APIENTRY glTextureStorage2DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
3068GLAPI void APIENTRY glTextureStorage3DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
3069GLAPI void APIENTRY glTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
3070GLAPI void APIENTRY glTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
3071GLAPI void APIENTRY glTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
3072GLAPI void APIENTRY glCompressedTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
3073GLAPI void APIENTRY glCompressedTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
3074GLAPI void APIENTRY glCompressedTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
3075GLAPI void APIENTRY glCopyTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
3076GLAPI void APIENTRY glCopyTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
3077GLAPI void APIENTRY glCopyTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
3078GLAPI void APIENTRY glTextureParameterf (GLuint texture, GLenum pname, GLfloat param);
3079GLAPI void APIENTRY glTextureParameterfv (GLuint texture, GLenum pname, const GLfloat *param);
3080GLAPI void APIENTRY glTextureParameteri (GLuint texture, GLenum pname, GLint param);
3081GLAPI void APIENTRY glTextureParameterIiv (GLuint texture, GLenum pname, const GLint *params);
3082GLAPI void APIENTRY glTextureParameterIuiv (GLuint texture, GLenum pname, const GLuint *params);
3083GLAPI void APIENTRY glTextureParameteriv (GLuint texture, GLenum pname, const GLint *param);
3084GLAPI void APIENTRY glGenerateTextureMipmap (GLuint texture);
3085GLAPI void APIENTRY glBindTextureUnit (GLuint unit, GLuint texture);
3086GLAPI void APIENTRY glGetTextureImage (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
3087GLAPI void APIENTRY glGetCompressedTextureImage (GLuint texture, GLint level, GLsizei bufSize, void *pixels);
3088GLAPI void APIENTRY glGetTextureLevelParameterfv (GLuint texture, GLint level, GLenum pname, GLfloat *params);
3089GLAPI void APIENTRY glGetTextureLevelParameteriv (GLuint texture, GLint level, GLenum pname, GLint *params);
3090GLAPI void APIENTRY glGetTextureParameterfv (GLuint texture, GLenum pname, GLfloat *params);
3091GLAPI void APIENTRY glGetTextureParameterIiv (GLuint texture, GLenum pname, GLint *params);
3092GLAPI void APIENTRY glGetTextureParameterIuiv (GLuint texture, GLenum pname, GLuint *params);
3093GLAPI void APIENTRY glGetTextureParameteriv (GLuint texture, GLenum pname, GLint *params);
3094GLAPI void APIENTRY glCreateVertexArrays (GLsizei n, GLuint *arrays);
3095GLAPI void APIENTRY glDisableVertexArrayAttrib (GLuint vaobj, GLuint index);
3096GLAPI void APIENTRY glEnableVertexArrayAttrib (GLuint vaobj, GLuint index);
3097GLAPI void APIENTRY glVertexArrayElementBuffer (GLuint vaobj, GLuint buffer);
3098GLAPI void APIENTRY glVertexArrayVertexBuffer (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
3099GLAPI void APIENTRY glVertexArrayVertexBuffers (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
3100GLAPI void APIENTRY glVertexArrayAttribBinding (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
3101GLAPI void APIENTRY glVertexArrayAttribFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
3102GLAPI void APIENTRY glVertexArrayAttribIFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
3103GLAPI void APIENTRY glVertexArrayAttribLFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
3104GLAPI void APIENTRY glVertexArrayBindingDivisor (GLuint vaobj, GLuint bindingindex, GLuint divisor);
3105GLAPI void APIENTRY glGetVertexArrayiv (GLuint vaobj, GLenum pname, GLint *param);
3106GLAPI void APIENTRY glGetVertexArrayIndexediv (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
3107GLAPI void APIENTRY glGetVertexArrayIndexed64iv (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param);
3108GLAPI void APIENTRY glCreateSamplers (GLsizei n, GLuint *samplers);
3109GLAPI void APIENTRY glCreateProgramPipelines (GLsizei n, GLuint *pipelines);
3110GLAPI void APIENTRY glCreateQueries (GLenum target, GLsizei n, GLuint *ids);
3111GLAPI void APIENTRY glGetQueryBufferObjecti64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
3112GLAPI void APIENTRY glGetQueryBufferObjectiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
3113GLAPI void APIENTRY glGetQueryBufferObjectui64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
3114GLAPI void APIENTRY glGetQueryBufferObjectuiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
3115GLAPI void APIENTRY glMemoryBarrierByRegion (GLbitfield barriers);
3116GLAPI void APIENTRY glGetTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
3117GLAPI void APIENTRY glGetCompressedTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels);
3118GLAPI GLenum APIENTRY glGetGraphicsResetStatus (void);
3119GLAPI void APIENTRY glGetnCompressedTexImage (GLenum target, GLint lod, GLsizei bufSize, void *pixels);
3120GLAPI void APIENTRY glGetnTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
3121GLAPI void APIENTRY glGetnUniformdv (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
3122GLAPI void APIENTRY glGetnUniformfv (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
3123GLAPI void APIENTRY glGetnUniformiv (GLuint program, GLint location, GLsizei bufSize, GLint *params);
3124GLAPI void APIENTRY glGetnUniformuiv (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
3125GLAPI void APIENTRY glReadnPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
3126GLAPI void APIENTRY glGetnMapdv (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
3127GLAPI void APIENTRY glGetnMapfv (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
3128GLAPI void APIENTRY glGetnMapiv (GLenum target, GLenum query, GLsizei bufSize, GLint *v);
3129GLAPI void APIENTRY glGetnPixelMapfv (GLenum map, GLsizei bufSize, GLfloat *values);
3130GLAPI void APIENTRY glGetnPixelMapuiv (GLenum map, GLsizei bufSize, GLuint *values);
3131GLAPI void APIENTRY glGetnPixelMapusv (GLenum map, GLsizei bufSize, GLushort *values);
3132GLAPI void APIENTRY glGetnPolygonStipple (GLsizei bufSize, GLubyte *pattern);
3133GLAPI void APIENTRY glGetnColorTable (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);
3134GLAPI void APIENTRY glGetnConvolutionFilter (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);
3135GLAPI void APIENTRY glGetnSeparableFilter (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);
3136GLAPI void APIENTRY glGetnHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
3137GLAPI void APIENTRY glGetnMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
3138GLAPI void APIENTRY glTextureBarrier (void);
3139#endif
3140#endif /* GL_VERSION_4_5 */
3141
3142#ifndef GL_VERSION_4_6
3143#define GL_VERSION_4_6 1
3144#define GL_SHADER_BINARY_FORMAT_SPIR_V 0x9551
3145#define GL_SPIR_V_BINARY 0x9552
3146#define GL_PARAMETER_BUFFER 0x80EE
3147#define GL_PARAMETER_BUFFER_BINDING 0x80EF
3148#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x00000008
3149#define GL_VERTICES_SUBMITTED 0x82EE
3150#define GL_PRIMITIVES_SUBMITTED 0x82EF
3151#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0
3152#define GL_TESS_CONTROL_SHADER_PATCHES 0x82F1
3153#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2
3154#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3
3155#define GL_FRAGMENT_SHADER_INVOCATIONS 0x82F4
3156#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5
3157#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6
3158#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7
3159#define GL_POLYGON_OFFSET_CLAMP 0x8E1B
3160#define GL_SPIR_V_EXTENSIONS 0x9553
3161#define GL_NUM_SPIR_V_EXTENSIONS 0x9554
3162#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE
3163#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF
3164#define GL_TRANSFORM_FEEDBACK_OVERFLOW 0x82EC
3165#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED
3166typedef void (APIENTRYP PFNGLSPECIALIZESHADERPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
3167typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
3168typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
3169typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC) (GLfloat factor, GLfloat units, GLfloat clamp);
3170#ifdef GL_GLEXT_PROTOTYPES
3171GLAPI void APIENTRY glSpecializeShader (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
3172GLAPI void APIENTRY glMultiDrawArraysIndirectCount (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
3173GLAPI void APIENTRY glMultiDrawElementsIndirectCount (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
3174GLAPI void APIENTRY glPolygonOffsetClamp (GLfloat factor, GLfloat units, GLfloat clamp);
3175#endif
3176#endif /* GL_VERSION_4_6 */
3177
3178#ifndef GL_ARB_ES2_compatibility
3179#define GL_ARB_ES2_compatibility 1
3180#endif /* GL_ARB_ES2_compatibility */
3181
3182#ifndef GL_ARB_ES3_1_compatibility
3183#define GL_ARB_ES3_1_compatibility 1
3184#endif /* GL_ARB_ES3_1_compatibility */
3185
3186#ifndef GL_ARB_ES3_2_compatibility
3187#define GL_ARB_ES3_2_compatibility 1
3188#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE
3189#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381
3190#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382
3191typedef void (APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXARBPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
3192#ifdef GL_GLEXT_PROTOTYPES
3193GLAPI void APIENTRY glPrimitiveBoundingBoxARB (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
3194#endif
3195#endif /* GL_ARB_ES3_2_compatibility */
3196
3197#ifndef GL_ARB_ES3_compatibility
3198#define GL_ARB_ES3_compatibility 1
3199#endif /* GL_ARB_ES3_compatibility */
3200
3201#ifndef GL_ARB_arrays_of_arrays
3202#define GL_ARB_arrays_of_arrays 1
3203#endif /* GL_ARB_arrays_of_arrays */
3204
3205#ifndef GL_ARB_base_instance
3206#define GL_ARB_base_instance 1
3207#endif /* GL_ARB_base_instance */
3208
3209#ifndef GL_ARB_bindless_texture
3210#define GL_ARB_bindless_texture 1
3211typedef khronos_uint64_t GLuint64EXT;
3212#define GL_UNSIGNED_INT64_ARB 0x140F
3213typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLEARBPROC) (GLuint texture);
3214typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler);
3215typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
3216typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle);
3217typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
3218typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access);
3219typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle);
3220typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value);
3221typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
3222typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value);
3223typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
3224typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
3225typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle);
3226typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x);
3227typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT *v);
3228typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT *params);
3229#ifdef GL_GLEXT_PROTOTYPES
3230GLAPI GLuint64 APIENTRY glGetTextureHandleARB (GLuint texture);
3231GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleARB (GLuint texture, GLuint sampler);
3232GLAPI void APIENTRY glMakeTextureHandleResidentARB (GLuint64 handle);
3233GLAPI void APIENTRY glMakeTextureHandleNonResidentARB (GLuint64 handle);
3234GLAPI GLuint64 APIENTRY glGetImageHandleARB (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
3235GLAPI void APIENTRY glMakeImageHandleResidentARB (GLuint64 handle, GLenum access);
3236GLAPI void APIENTRY glMakeImageHandleNonResidentARB (GLuint64 handle);
3237GLAPI void APIENTRY glUniformHandleui64ARB (GLint location, GLuint64 value);
3238GLAPI void APIENTRY glUniformHandleui64vARB (GLint location, GLsizei count, const GLuint64 *value);
3239GLAPI void APIENTRY glProgramUniformHandleui64ARB (GLuint program, GLint location, GLuint64 value);
3240GLAPI void APIENTRY glProgramUniformHandleui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
3241GLAPI GLboolean APIENTRY glIsTextureHandleResidentARB (GLuint64 handle);
3242GLAPI GLboolean APIENTRY glIsImageHandleResidentARB (GLuint64 handle);
3243GLAPI void APIENTRY glVertexAttribL1ui64ARB (GLuint index, GLuint64EXT x);
3244GLAPI void APIENTRY glVertexAttribL1ui64vARB (GLuint index, const GLuint64EXT *v);
3245GLAPI void APIENTRY glGetVertexAttribLui64vARB (GLuint index, GLenum pname, GLuint64EXT *params);
3246#endif
3247#endif /* GL_ARB_bindless_texture */
3248
3249#ifndef GL_ARB_blend_func_extended
3250#define GL_ARB_blend_func_extended 1
3251#endif /* GL_ARB_blend_func_extended */
3252
3253#ifndef GL_ARB_buffer_storage
3254#define GL_ARB_buffer_storage 1
3255#endif /* GL_ARB_buffer_storage */
3256
3257#ifndef GL_ARB_cl_event
3258#define GL_ARB_cl_event 1
3259struct _cl_context;
3260struct _cl_event;
3261#define GL_SYNC_CL_EVENT_ARB 0x8240
3262#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241
3263typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);
3264#ifdef GL_GLEXT_PROTOTYPES
3265GLAPI GLsync APIENTRY glCreateSyncFromCLeventARB (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);
3266#endif
3267#endif /* GL_ARB_cl_event */
3268
3269#ifndef GL_ARB_clear_buffer_object
3270#define GL_ARB_clear_buffer_object 1
3271#endif /* GL_ARB_clear_buffer_object */
3272
3273#ifndef GL_ARB_clear_texture
3274#define GL_ARB_clear_texture 1
3275#endif /* GL_ARB_clear_texture */
3276
3277#ifndef GL_ARB_clip_control
3278#define GL_ARB_clip_control 1
3279#endif /* GL_ARB_clip_control */
3280
3281#ifndef GL_ARB_color_buffer_float
3282#define GL_ARB_color_buffer_float 1
3283#define GL_RGBA_FLOAT_MODE_ARB 0x8820
3284#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A
3285#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B
3286#define GL_CLAMP_READ_COLOR_ARB 0x891C
3287#define GL_FIXED_ONLY_ARB 0x891D
3288typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
3289#ifdef GL_GLEXT_PROTOTYPES
3290GLAPI void APIENTRY glClampColorARB (GLenum target, GLenum clamp);
3291#endif
3292#endif /* GL_ARB_color_buffer_float */
3293
3294#ifndef GL_ARB_compatibility
3295#define GL_ARB_compatibility 1
3296#endif /* GL_ARB_compatibility */
3297
3298#ifndef GL_ARB_compressed_texture_pixel_storage
3299#define GL_ARB_compressed_texture_pixel_storage 1
3300#endif /* GL_ARB_compressed_texture_pixel_storage */
3301
3302#ifndef GL_ARB_compute_shader
3303#define GL_ARB_compute_shader 1
3304#endif /* GL_ARB_compute_shader */
3305
3306#ifndef GL_ARB_compute_variable_group_size
3307#define GL_ARB_compute_variable_group_size 1
3308#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344
3309#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB
3310#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345
3311#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF
3312typedef 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);
3313#ifdef GL_GLEXT_PROTOTYPES
3314GLAPI 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);
3315#endif
3316#endif /* GL_ARB_compute_variable_group_size */
3317
3318#ifndef GL_ARB_conditional_render_inverted
3319#define GL_ARB_conditional_render_inverted 1
3320#endif /* GL_ARB_conditional_render_inverted */
3321
3322#ifndef GL_ARB_conservative_depth
3323#define GL_ARB_conservative_depth 1
3324#endif /* GL_ARB_conservative_depth */
3325
3326#ifndef GL_ARB_copy_buffer
3327#define GL_ARB_copy_buffer 1
3328#endif /* GL_ARB_copy_buffer */
3329
3330#ifndef GL_ARB_copy_image
3331#define GL_ARB_copy_image 1
3332#endif /* GL_ARB_copy_image */
3333
3334#ifndef GL_ARB_cull_distance
3335#define GL_ARB_cull_distance 1
3336#endif /* GL_ARB_cull_distance */
3337
3338#ifndef GL_ARB_debug_output
3339#define GL_ARB_debug_output 1
3340typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
3341#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242
3342#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
3343#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244
3344#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245
3345#define GL_DEBUG_SOURCE_API_ARB 0x8246
3346#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
3347#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
3348#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249
3349#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A
3350#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B
3351#define GL_DEBUG_TYPE_ERROR_ARB 0x824C
3352#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
3353#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
3354#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F
3355#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250
3356#define GL_DEBUG_TYPE_OTHER_ARB 0x8251
3357#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143
3358#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144
3359#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145
3360#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146
3361#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147
3362#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148
3363typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
3364typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
3365typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam);
3366typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
3367#ifdef GL_GLEXT_PROTOTYPES
3368GLAPI void APIENTRY glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
3369GLAPI void APIENTRY glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
3370GLAPI void APIENTRY glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const void *userParam);
3371GLAPI GLuint APIENTRY glGetDebugMessageLogARB (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
3372#endif
3373#endif /* GL_ARB_debug_output */
3374
3375#ifndef GL_ARB_depth_buffer_float
3376#define GL_ARB_depth_buffer_float 1
3377#endif /* GL_ARB_depth_buffer_float */
3378
3379#ifndef GL_ARB_depth_clamp
3380#define GL_ARB_depth_clamp 1
3381#endif /* GL_ARB_depth_clamp */
3382
3383#ifndef GL_ARB_depth_texture
3384#define GL_ARB_depth_texture 1
3385#define GL_DEPTH_COMPONENT16_ARB 0x81A5
3386#define GL_DEPTH_COMPONENT24_ARB 0x81A6
3387#define GL_DEPTH_COMPONENT32_ARB 0x81A7
3388#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A
3389#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B
3390#endif /* GL_ARB_depth_texture */
3391
3392#ifndef GL_ARB_derivative_control
3393#define GL_ARB_derivative_control 1
3394#endif /* GL_ARB_derivative_control */
3395
3396#ifndef GL_ARB_direct_state_access
3397#define GL_ARB_direct_state_access 1
3398#endif /* GL_ARB_direct_state_access */
3399
3400#ifndef GL_ARB_draw_buffers
3401#define GL_ARB_draw_buffers 1
3402#define GL_MAX_DRAW_BUFFERS_ARB 0x8824
3403#define GL_DRAW_BUFFER0_ARB 0x8825
3404#define GL_DRAW_BUFFER1_ARB 0x8826
3405#define GL_DRAW_BUFFER2_ARB 0x8827
3406#define GL_DRAW_BUFFER3_ARB 0x8828
3407#define GL_DRAW_BUFFER4_ARB 0x8829
3408#define GL_DRAW_BUFFER5_ARB 0x882A
3409#define GL_DRAW_BUFFER6_ARB 0x882B
3410#define GL_DRAW_BUFFER7_ARB 0x882C
3411#define GL_DRAW_BUFFER8_ARB 0x882D
3412#define GL_DRAW_BUFFER9_ARB 0x882E
3413#define GL_DRAW_BUFFER10_ARB 0x882F
3414#define GL_DRAW_BUFFER11_ARB 0x8830
3415#define GL_DRAW_BUFFER12_ARB 0x8831
3416#define GL_DRAW_BUFFER13_ARB 0x8832
3417#define GL_DRAW_BUFFER14_ARB 0x8833
3418#define GL_DRAW_BUFFER15_ARB 0x8834
3419typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs);
3420#ifdef GL_GLEXT_PROTOTYPES
3421GLAPI void APIENTRY glDrawBuffersARB (GLsizei n, const GLenum *bufs);
3422#endif
3423#endif /* GL_ARB_draw_buffers */
3424
3425#ifndef GL_ARB_draw_buffers_blend
3426#define GL_ARB_draw_buffers_blend 1
3427typedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode);
3428typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
3429typedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst);
3430typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
3431#ifdef GL_GLEXT_PROTOTYPES
3432GLAPI void APIENTRY glBlendEquationiARB (GLuint buf, GLenum mode);
3433GLAPI void APIENTRY glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
3434GLAPI void APIENTRY glBlendFunciARB (GLuint buf, GLenum src, GLenum dst);
3435GLAPI void APIENTRY glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
3436#endif
3437#endif /* GL_ARB_draw_buffers_blend */
3438
3439#ifndef GL_ARB_draw_elements_base_vertex
3440#define GL_ARB_draw_elements_base_vertex 1
3441#endif /* GL_ARB_draw_elements_base_vertex */
3442
3443#ifndef GL_ARB_draw_indirect
3444#define GL_ARB_draw_indirect 1
3445#endif /* GL_ARB_draw_indirect */
3446
3447#ifndef GL_ARB_draw_instanced
3448#define GL_ARB_draw_instanced 1
3449typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
3450typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
3451#ifdef GL_GLEXT_PROTOTYPES
3452GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
3453GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
3454#endif
3455#endif /* GL_ARB_draw_instanced */
3456
3457#ifndef GL_ARB_enhanced_layouts
3458#define GL_ARB_enhanced_layouts 1
3459#endif /* GL_ARB_enhanced_layouts */
3460
3461#ifndef GL_ARB_explicit_attrib_location
3462#define GL_ARB_explicit_attrib_location 1
3463#endif /* GL_ARB_explicit_attrib_location */
3464
3465#ifndef GL_ARB_explicit_uniform_location
3466#define GL_ARB_explicit_uniform_location 1
3467#endif /* GL_ARB_explicit_uniform_location */
3468
3469#ifndef GL_ARB_fragment_coord_conventions
3470#define GL_ARB_fragment_coord_conventions 1
3471#endif /* GL_ARB_fragment_coord_conventions */
3472
3473#ifndef GL_ARB_fragment_layer_viewport
3474#define GL_ARB_fragment_layer_viewport 1
3475#endif /* GL_ARB_fragment_layer_viewport */
3476
3477#ifndef GL_ARB_fragment_program
3478#define GL_ARB_fragment_program 1
3479#define GL_FRAGMENT_PROGRAM_ARB 0x8804
3480#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875
3481#define GL_PROGRAM_LENGTH_ARB 0x8627
3482#define GL_PROGRAM_FORMAT_ARB 0x8876
3483#define GL_PROGRAM_BINDING_ARB 0x8677
3484#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0
3485#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1
3486#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
3487#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
3488#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4
3489#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5
3490#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
3491#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
3492#define GL_PROGRAM_PARAMETERS_ARB 0x88A8
3493#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9
3494#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA
3495#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
3496#define GL_PROGRAM_ATTRIBS_ARB 0x88AC
3497#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD
3498#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE
3499#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
3500#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
3501#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
3502#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
3503#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805
3504#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806
3505#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807
3506#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
3507#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
3508#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
3509#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
3510#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
3511#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
3512#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
3513#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
3514#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
3515#define GL_PROGRAM_STRING_ARB 0x8628
3516#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B
3517#define GL_CURRENT_MATRIX_ARB 0x8641
3518#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7
3519#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
3520#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F
3521#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
3522#define GL_MAX_TEXTURE_COORDS_ARB 0x8871
3523#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872
3524#define GL_PROGRAM_ERROR_STRING_ARB 0x8874
3525#define GL_MATRIX0_ARB 0x88C0
3526#define GL_MATRIX1_ARB 0x88C1
3527#define GL_MATRIX2_ARB 0x88C2
3528#define GL_MATRIX3_ARB 0x88C3
3529#define GL_MATRIX4_ARB 0x88C4
3530#define GL_MATRIX5_ARB 0x88C5
3531#define GL_MATRIX6_ARB 0x88C6
3532#define GL_MATRIX7_ARB 0x88C7
3533#define GL_MATRIX8_ARB 0x88C8
3534#define GL_MATRIX9_ARB 0x88C9
3535#define GL_MATRIX10_ARB 0x88CA
3536#define GL_MATRIX11_ARB 0x88CB
3537#define GL_MATRIX12_ARB 0x88CC
3538#define GL_MATRIX13_ARB 0x88CD
3539#define GL_MATRIX14_ARB 0x88CE
3540#define GL_MATRIX15_ARB 0x88CF
3541#define GL_MATRIX16_ARB 0x88D0
3542#define GL_MATRIX17_ARB 0x88D1
3543#define GL_MATRIX18_ARB 0x88D2
3544#define GL_MATRIX19_ARB 0x88D3
3545#define GL_MATRIX20_ARB 0x88D4
3546#define GL_MATRIX21_ARB 0x88D5
3547#define GL_MATRIX22_ARB 0x88D6
3548#define GL_MATRIX23_ARB 0x88D7
3549#define GL_MATRIX24_ARB 0x88D8
3550#define GL_MATRIX25_ARB 0x88D9
3551#define GL_MATRIX26_ARB 0x88DA
3552#define GL_MATRIX27_ARB 0x88DB
3553#define GL_MATRIX28_ARB 0x88DC
3554#define GL_MATRIX29_ARB 0x88DD
3555#define GL_MATRIX30_ARB 0x88DE
3556#define GL_MATRIX31_ARB 0x88DF
3557typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void *string);
3558typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
3559typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs);
3560typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs);
3561typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
3562typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
3563typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
3564typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
3565typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
3566typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
3567typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
3568typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
3569typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
3570typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
3571typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
3572typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
3573typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params);
3574typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void *string);
3575typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program);
3576#ifdef GL_GLEXT_PROTOTYPES
3577GLAPI void APIENTRY glProgramStringARB (GLenum target, GLenum format, GLsizei len, const void *string);
3578GLAPI void APIENTRY glBindProgramARB (GLenum target, GLuint program);
3579GLAPI void APIENTRY glDeleteProgramsARB (GLsizei n, const GLuint *programs);
3580GLAPI void APIENTRY glGenProgramsARB (GLsizei n, GLuint *programs);
3581GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
3582GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
3583GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
3584GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
3585GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
3586GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
3587GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
3588GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
3589GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble *params);
3590GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat *params);
3591GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble *params);
3592GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat *params);
3593GLAPI void APIENTRY glGetProgramivARB (GLenum target, GLenum pname, GLint *params);
3594GLAPI void APIENTRY glGetProgramStringARB (GLenum target, GLenum pname, void *string);
3595GLAPI GLboolean APIENTRY glIsProgramARB (GLuint program);
3596#endif
3597#endif /* GL_ARB_fragment_program */
3598
3599#ifndef GL_ARB_fragment_program_shadow
3600#define GL_ARB_fragment_program_shadow 1
3601#endif /* GL_ARB_fragment_program_shadow */
3602
3603#ifndef GL_ARB_fragment_shader
3604#define GL_ARB_fragment_shader 1
3605#define GL_FRAGMENT_SHADER_ARB 0x8B30
3606#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
3607#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B
3608#endif /* GL_ARB_fragment_shader */
3609
3610#ifndef GL_ARB_fragment_shader_interlock
3611#define GL_ARB_fragment_shader_interlock 1
3612#endif /* GL_ARB_fragment_shader_interlock */
3613
3614#ifndef GL_ARB_framebuffer_no_attachments
3615#define GL_ARB_framebuffer_no_attachments 1
3616#endif /* GL_ARB_framebuffer_no_attachments */
3617
3618#ifndef GL_ARB_framebuffer_object
3619#define GL_ARB_framebuffer_object 1
3620#endif /* GL_ARB_framebuffer_object */
3621
3622#ifndef GL_ARB_framebuffer_sRGB
3623#define GL_ARB_framebuffer_sRGB 1
3624#endif /* GL_ARB_framebuffer_sRGB */
3625
3626#ifndef GL_ARB_geometry_shader4
3627#define GL_ARB_geometry_shader4 1
3628#define GL_LINES_ADJACENCY_ARB 0x000A
3629#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B
3630#define GL_TRIANGLES_ADJACENCY_ARB 0x000C
3631#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D
3632#define GL_PROGRAM_POINT_SIZE_ARB 0x8642
3633#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29
3634#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7
3635#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8
3636#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9
3637#define GL_GEOMETRY_SHADER_ARB 0x8DD9
3638#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA
3639#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB
3640#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC
3641#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD
3642#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE
3643#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF
3644#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0
3645#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1
3646typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value);
3647typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
3648typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
3649typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
3650#ifdef GL_GLEXT_PROTOTYPES
3651GLAPI void APIENTRY glProgramParameteriARB (GLuint program, GLenum pname, GLint value);
3652GLAPI void APIENTRY glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level);
3653GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
3654GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
3655#endif
3656#endif /* GL_ARB_geometry_shader4 */
3657
3658#ifndef GL_ARB_get_program_binary
3659#define GL_ARB_get_program_binary 1
3660#endif /* GL_ARB_get_program_binary */
3661
3662#ifndef GL_ARB_get_texture_sub_image
3663#define GL_ARB_get_texture_sub_image 1
3664#endif /* GL_ARB_get_texture_sub_image */
3665
3666#ifndef GL_ARB_gl_spirv
3667#define GL_ARB_gl_spirv 1
3668#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551
3669#define GL_SPIR_V_BINARY_ARB 0x9552
3670typedef void (APIENTRYP PFNGLSPECIALIZESHADERARBPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
3671#ifdef GL_GLEXT_PROTOTYPES
3672GLAPI void APIENTRY glSpecializeShaderARB (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
3673#endif
3674#endif /* GL_ARB_gl_spirv */
3675
3676#ifndef GL_ARB_gpu_shader5
3677#define GL_ARB_gpu_shader5 1
3678#endif /* GL_ARB_gpu_shader5 */
3679
3680#ifndef GL_ARB_gpu_shader_fp64
3681#define GL_ARB_gpu_shader_fp64 1
3682#endif /* GL_ARB_gpu_shader_fp64 */
3683
3684#ifndef GL_ARB_gpu_shader_int64
3685#define GL_ARB_gpu_shader_int64 1
3686#define GL_INT64_ARB 0x140E
3687#define GL_INT64_VEC2_ARB 0x8FE9
3688#define GL_INT64_VEC3_ARB 0x8FEA
3689#define GL_INT64_VEC4_ARB 0x8FEB
3690#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5
3691#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6
3692#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7
3693typedef void (APIENTRYP PFNGLUNIFORM1I64ARBPROC) (GLint location, GLint64 x);
3694typedef void (APIENTRYP PFNGLUNIFORM2I64ARBPROC) (GLint location, GLint64 x, GLint64 y);
3695typedef void (APIENTRYP PFNGLUNIFORM3I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z);
3696typedef void (APIENTRYP PFNGLUNIFORM4I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
3697typedef void (APIENTRYP PFNGLUNIFORM1I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);
3698typedef void (APIENTRYP PFNGLUNIFORM2I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);
3699typedef void (APIENTRYP PFNGLUNIFORM3I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);
3700typedef void (APIENTRYP PFNGLUNIFORM4I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);
3701typedef void (APIENTRYP PFNGLUNIFORM1UI64ARBPROC) (GLint location, GLuint64 x);
3702typedef void (APIENTRYP PFNGLUNIFORM2UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y);
3703typedef void (APIENTRYP PFNGLUNIFORM3UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
3704typedef void (APIENTRYP PFNGLUNIFORM4UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
3705typedef void (APIENTRYP PFNGLUNIFORM1UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
3706typedef void (APIENTRYP PFNGLUNIFORM2UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
3707typedef void (APIENTRYP PFNGLUNIFORM3UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
3708typedef void (APIENTRYP PFNGLUNIFORM4UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
3709typedef void (APIENTRYP PFNGLGETUNIFORMI64VARBPROC) (GLuint program, GLint location, GLint64 *params);
3710typedef void (APIENTRYP PFNGLGETUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLuint64 *params);
3711typedef void (APIENTRYP PFNGLGETNUNIFORMI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint64 *params);
3712typedef void (APIENTRYP PFNGLGETNUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint64 *params);
3713typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64ARBPROC) (GLuint program, GLint location, GLint64 x);
3714typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y);
3715typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z);
3716typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
3717typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);
3718typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);
3719typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);
3720typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);
3721typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64ARBPROC) (GLuint program, GLint location, GLuint64 x);
3722typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y);
3723typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
3724typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
3725typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
3726typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
3727typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
3728typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
3729#ifdef GL_GLEXT_PROTOTYPES
3730GLAPI void APIENTRY glUniform1i64ARB (GLint location, GLint64 x);
3731GLAPI void APIENTRY glUniform2i64ARB (GLint location, GLint64 x, GLint64 y);
3732GLAPI void APIENTRY glUniform3i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z);
3733GLAPI void APIENTRY glUniform4i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
3734GLAPI void APIENTRY glUniform1i64vARB (GLint location, GLsizei count, const GLint64 *value);
3735GLAPI void APIENTRY glUniform2i64vARB (GLint location, GLsizei count, const GLint64 *value);
3736GLAPI void APIENTRY glUniform3i64vARB (GLint location, GLsizei count, const GLint64 *value);
3737GLAPI void APIENTRY glUniform4i64vARB (GLint location, GLsizei count, const GLint64 *value);
3738GLAPI void APIENTRY glUniform1ui64ARB (GLint location, GLuint64 x);
3739GLAPI void APIENTRY glUniform2ui64ARB (GLint location, GLuint64 x, GLuint64 y);
3740GLAPI void APIENTRY glUniform3ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
3741GLAPI void APIENTRY glUniform4ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
3742GLAPI void APIENTRY glUniform1ui64vARB (GLint location, GLsizei count, const GLuint64 *value);
3743GLAPI void APIENTRY glUniform2ui64vARB (GLint location, GLsizei count, const GLuint64 *value);
3744GLAPI void APIENTRY glUniform3ui64vARB (GLint location, GLsizei count, const GLuint64 *value);
3745GLAPI void APIENTRY glUniform4ui64vARB (GLint location, GLsizei count, const GLuint64 *value);
3746GLAPI void APIENTRY glGetUniformi64vARB (GLuint program, GLint location, GLint64 *params);
3747GLAPI void APIENTRY glGetUniformui64vARB (GLuint program, GLint location, GLuint64 *params);
3748GLAPI void APIENTRY glGetnUniformi64vARB (GLuint program, GLint location, GLsizei bufSize, GLint64 *params);
3749GLAPI void APIENTRY glGetnUniformui64vARB (GLuint program, GLint location, GLsizei bufSize, GLuint64 *params);
3750GLAPI void APIENTRY glProgramUniform1i64ARB (GLuint program, GLint location, GLint64 x);
3751GLAPI void APIENTRY glProgramUniform2i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y);
3752GLAPI void APIENTRY glProgramUniform3i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z);
3753GLAPI void APIENTRY glProgramUniform4i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
3754GLAPI void APIENTRY glProgramUniform1i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);
3755GLAPI void APIENTRY glProgramUniform2i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);
3756GLAPI void APIENTRY glProgramUniform3i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);
3757GLAPI void APIENTRY glProgramUniform4i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);
3758GLAPI void APIENTRY glProgramUniform1ui64ARB (GLuint program, GLint location, GLuint64 x);
3759GLAPI void APIENTRY glProgramUniform2ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y);
3760GLAPI void APIENTRY glProgramUniform3ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
3761GLAPI void APIENTRY glProgramUniform4ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
3762GLAPI void APIENTRY glProgramUniform1ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
3763GLAPI void APIENTRY glProgramUniform2ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
3764GLAPI void APIENTRY glProgramUniform3ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
3765GLAPI void APIENTRY glProgramUniform4ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);
3766#endif
3767#endif /* GL_ARB_gpu_shader_int64 */
3768
3769#ifndef GL_ARB_half_float_pixel
3770#define GL_ARB_half_float_pixel 1
3771typedef khronos_uint16_t GLhalfARB;
3772#define GL_HALF_FLOAT_ARB 0x140B
3773#endif /* GL_ARB_half_float_pixel */
3774
3775#ifndef GL_ARB_half_float_vertex
3776#define GL_ARB_half_float_vertex 1
3777#endif /* GL_ARB_half_float_vertex */
3778
3779#ifndef GL_ARB_imaging
3780#define GL_ARB_imaging 1
3781#define GL_CONVOLUTION_BORDER_MODE 0x8013
3782#define GL_CONVOLUTION_FILTER_SCALE 0x8014
3783#define GL_CONVOLUTION_FILTER_BIAS 0x8015
3784#define GL_REDUCE 0x8016
3785#define GL_CONVOLUTION_FORMAT 0x8017
3786#define GL_CONVOLUTION_WIDTH 0x8018
3787#define GL_CONVOLUTION_HEIGHT 0x8019
3788#define GL_MAX_CONVOLUTION_WIDTH 0x801A
3789#define GL_MAX_CONVOLUTION_HEIGHT 0x801B
3790#define GL_POST_CONVOLUTION_RED_SCALE 0x801C
3791#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
3792#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
3793#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
3794#define GL_POST_CONVOLUTION_RED_BIAS 0x8020
3795#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
3796#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
3797#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
3798#define GL_HISTOGRAM_WIDTH 0x8026
3799#define GL_HISTOGRAM_FORMAT 0x8027
3800#define GL_HISTOGRAM_RED_SIZE 0x8028
3801#define GL_HISTOGRAM_GREEN_SIZE 0x8029
3802#define GL_HISTOGRAM_BLUE_SIZE 0x802A
3803#define GL_HISTOGRAM_ALPHA_SIZE 0x802B
3804#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
3805#define GL_HISTOGRAM_SINK 0x802D
3806#define GL_MINMAX_FORMAT 0x802F
3807#define GL_MINMAX_SINK 0x8030
3808#define GL_TABLE_TOO_LARGE 0x8031
3809#define GL_COLOR_MATRIX 0x80B1
3810#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
3811#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
3812#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
3813#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
3814#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
3815#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
3816#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
3817#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
3818#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
3819#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
3820#define GL_COLOR_TABLE_SCALE 0x80D6
3821#define GL_COLOR_TABLE_BIAS 0x80D7
3822#define GL_COLOR_TABLE_FORMAT 0x80D8
3823#define GL_COLOR_TABLE_WIDTH 0x80D9
3824#define GL_COLOR_TABLE_RED_SIZE 0x80DA
3825#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB
3826#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC
3827#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
3828#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
3829#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
3830#define GL_CONSTANT_BORDER 0x8151
3831#define GL_REPLICATE_BORDER 0x8153
3832#define GL_CONVOLUTION_BORDER_COLOR 0x8154
3833typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
3834typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
3835typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
3836typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
3837typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, void *table);
3838typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
3839typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
3840typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
3841typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
3842typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
3843typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
3844typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
3845typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
3846typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
3847typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
3848typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
3849typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
3850typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, void *image);
3851typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
3852typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
3853typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
3854typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
3855typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
3856typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
3857typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
3858typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
3859typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
3860typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
3861typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
3862typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
3863typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target);
3864typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);
3865#ifdef GL_GLEXT_PROTOTYPES
3866GLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
3867GLAPI void APIENTRY glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params);
3868GLAPI void APIENTRY glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params);
3869GLAPI void APIENTRY glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
3870GLAPI void APIENTRY glGetColorTable (GLenum target, GLenum format, GLenum type, void *table);
3871GLAPI void APIENTRY glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params);
3872GLAPI void APIENTRY glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params);
3873GLAPI void APIENTRY glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
3874GLAPI void APIENTRY glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
3875GLAPI void APIENTRY glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
3876GLAPI void APIENTRY glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
3877GLAPI void APIENTRY glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params);
3878GLAPI void APIENTRY glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params);
3879GLAPI void APIENTRY glConvolutionParameteri (GLenum target, GLenum pname, GLint params);
3880GLAPI void APIENTRY glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params);
3881GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
3882GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
3883GLAPI void APIENTRY glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, void *image);
3884GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params);
3885GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params);
3886GLAPI void APIENTRY glGetSeparableFilter (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
3887GLAPI void APIENTRY glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
3888GLAPI void APIENTRY glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
3889GLAPI void APIENTRY glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params);
3890GLAPI void APIENTRY glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params);
3891GLAPI void APIENTRY glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
3892GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params);
3893GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params);
3894GLAPI void APIENTRY glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
3895GLAPI void APIENTRY glMinmax (GLenum target, GLenum internalformat, GLboolean sink);
3896GLAPI void APIENTRY glResetHistogram (GLenum target);
3897GLAPI void APIENTRY glResetMinmax (GLenum target);
3898#endif
3899#endif /* GL_ARB_imaging */
3900
3901#ifndef GL_ARB_indirect_parameters
3902#define GL_ARB_indirect_parameters 1
3903#define GL_PARAMETER_BUFFER_ARB 0x80EE
3904#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF
3905typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
3906typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
3907#ifdef GL_GLEXT_PROTOTYPES
3908GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
3909GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
3910#endif
3911#endif /* GL_ARB_indirect_parameters */
3912
3913#ifndef GL_ARB_instanced_arrays
3914#define GL_ARB_instanced_arrays 1
3915#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE
3916typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor);
3917#ifdef GL_GLEXT_PROTOTYPES
3918GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor);
3919#endif
3920#endif /* GL_ARB_instanced_arrays */
3921
3922#ifndef GL_ARB_internalformat_query
3923#define GL_ARB_internalformat_query 1
3924#endif /* GL_ARB_internalformat_query */
3925
3926#ifndef GL_ARB_internalformat_query2
3927#define GL_ARB_internalformat_query2 1
3928#define GL_SRGB_DECODE_ARB 0x8299
3929#define GL_VIEW_CLASS_EAC_R11 0x9383
3930#define GL_VIEW_CLASS_EAC_RG11 0x9384
3931#define GL_VIEW_CLASS_ETC2_RGB 0x9385
3932#define GL_VIEW_CLASS_ETC2_RGBA 0x9386
3933#define GL_VIEW_CLASS_ETC2_EAC_RGBA 0x9387
3934#define GL_VIEW_CLASS_ASTC_4x4_RGBA 0x9388
3935#define GL_VIEW_CLASS_ASTC_5x4_RGBA 0x9389
3936#define GL_VIEW_CLASS_ASTC_5x5_RGBA 0x938A
3937#define GL_VIEW_CLASS_ASTC_6x5_RGBA 0x938B
3938#define GL_VIEW_CLASS_ASTC_6x6_RGBA 0x938C
3939#define GL_VIEW_CLASS_ASTC_8x5_RGBA 0x938D
3940#define GL_VIEW_CLASS_ASTC_8x6_RGBA 0x938E
3941#define GL_VIEW_CLASS_ASTC_8x8_RGBA 0x938F
3942#define GL_VIEW_CLASS_ASTC_10x5_RGBA 0x9390
3943#define GL_VIEW_CLASS_ASTC_10x6_RGBA 0x9391
3944#define GL_VIEW_CLASS_ASTC_10x8_RGBA 0x9392
3945#define GL_VIEW_CLASS_ASTC_10x10_RGBA 0x9393
3946#define GL_VIEW_CLASS_ASTC_12x10_RGBA 0x9394
3947#define GL_VIEW_CLASS_ASTC_12x12_RGBA 0x9395
3948#endif /* GL_ARB_internalformat_query2 */
3949
3950#ifndef GL_ARB_invalidate_subdata
3951#define GL_ARB_invalidate_subdata 1
3952#endif /* GL_ARB_invalidate_subdata */
3953
3954#ifndef GL_ARB_map_buffer_alignment
3955#define GL_ARB_map_buffer_alignment 1
3956#endif /* GL_ARB_map_buffer_alignment */
3957
3958#ifndef GL_ARB_map_buffer_range
3959#define GL_ARB_map_buffer_range 1
3960#endif /* GL_ARB_map_buffer_range */
3961
3962#ifndef GL_ARB_matrix_palette
3963#define GL_ARB_matrix_palette 1
3964#define GL_MATRIX_PALETTE_ARB 0x8840
3965#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
3966#define GL_MAX_PALETTE_MATRICES_ARB 0x8842
3967#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843
3968#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844
3969#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845
3970#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846
3971#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847
3972#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848
3973#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
3974typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
3975typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices);
3976typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices);
3977typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices);
3978typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
3979#ifdef GL_GLEXT_PROTOTYPES
3980GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint index);
3981GLAPI void APIENTRY glMatrixIndexubvARB (GLint size, const GLubyte *indices);
3982GLAPI void APIENTRY glMatrixIndexusvARB (GLint size, const GLushort *indices);
3983GLAPI void APIENTRY glMatrixIndexuivARB (GLint size, const GLuint *indices);
3984GLAPI void APIENTRY glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer);
3985#endif
3986#endif /* GL_ARB_matrix_palette */
3987
3988#ifndef GL_ARB_multi_bind
3989#define GL_ARB_multi_bind 1
3990#endif /* GL_ARB_multi_bind */
3991
3992#ifndef GL_ARB_multi_draw_indirect
3993#define GL_ARB_multi_draw_indirect 1
3994#endif /* GL_ARB_multi_draw_indirect */
3995
3996#ifndef GL_ARB_multisample
3997#define GL_ARB_multisample 1
3998#define GL_MULTISAMPLE_ARB 0x809D
3999#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E
4000#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F
4001#define GL_SAMPLE_COVERAGE_ARB 0x80A0
4002#define GL_SAMPLE_BUFFERS_ARB 0x80A8
4003#define GL_SAMPLES_ARB 0x80A9
4004#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA
4005#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB
4006#define GL_MULTISAMPLE_BIT_ARB 0x20000000
4007typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLfloat value, GLboolean invert);
4008#ifdef GL_GLEXT_PROTOTYPES
4009GLAPI void APIENTRY glSampleCoverageARB (GLfloat value, GLboolean invert);
4010#endif
4011#endif /* GL_ARB_multisample */
4012
4013#ifndef GL_ARB_multitexture
4014#define GL_ARB_multitexture 1
4015#define GL_TEXTURE0_ARB 0x84C0
4016#define GL_TEXTURE1_ARB 0x84C1
4017#define GL_TEXTURE2_ARB 0x84C2
4018#define GL_TEXTURE3_ARB 0x84C3
4019#define GL_TEXTURE4_ARB 0x84C4
4020#define GL_TEXTURE5_ARB 0x84C5
4021#define GL_TEXTURE6_ARB 0x84C6
4022#define GL_TEXTURE7_ARB 0x84C7
4023#define GL_TEXTURE8_ARB 0x84C8
4024#define GL_TEXTURE9_ARB 0x84C9
4025#define GL_TEXTURE10_ARB 0x84CA
4026#define GL_TEXTURE11_ARB 0x84CB
4027#define GL_TEXTURE12_ARB 0x84CC
4028#define GL_TEXTURE13_ARB 0x84CD
4029#define GL_TEXTURE14_ARB 0x84CE
4030#define GL_TEXTURE15_ARB 0x84CF
4031#define GL_TEXTURE16_ARB 0x84D0
4032#define GL_TEXTURE17_ARB 0x84D1
4033#define GL_TEXTURE18_ARB 0x84D2
4034#define GL_TEXTURE19_ARB 0x84D3
4035#define GL_TEXTURE20_ARB 0x84D4
4036#define GL_TEXTURE21_ARB 0x84D5
4037#define GL_TEXTURE22_ARB 0x84D6
4038#define GL_TEXTURE23_ARB 0x84D7
4039#define GL_TEXTURE24_ARB 0x84D8
4040#define GL_TEXTURE25_ARB 0x84D9
4041#define GL_TEXTURE26_ARB 0x84DA
4042#define GL_TEXTURE27_ARB 0x84DB
4043#define GL_TEXTURE28_ARB 0x84DC
4044#define GL_TEXTURE29_ARB 0x84DD
4045#define GL_TEXTURE30_ARB 0x84DE
4046#define GL_TEXTURE31_ARB 0x84DF
4047#define GL_ACTIVE_TEXTURE_ARB 0x84E0
4048#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
4049#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
4050typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
4051typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
4052typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
4053typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
4054typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
4055typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
4056typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
4057typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
4058typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
4059typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
4060typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
4061typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
4062typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
4063typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
4064typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
4065typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
4066typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
4067typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
4068typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
4069typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
4070typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
4071typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
4072typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
4073typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
4074typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
4075typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
4076typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
4077typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
4078typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
4079typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
4080typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
4081typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
4082typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
4083typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
4084#ifdef GL_GLEXT_PROTOTYPES
4085GLAPI void APIENTRY glActiveTextureARB (GLenum texture);
4086GLAPI void APIENTRY glClientActiveTextureARB (GLenum texture);
4087GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum target, GLdouble s);
4088GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum target, const GLdouble *v);
4089GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum target, GLfloat s);
4090GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum target, const GLfloat *v);
4091GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum target, GLint s);
4092GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum target, const GLint *v);
4093GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum target, GLshort s);
4094GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum target, const GLshort *v);
4095GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t);
4096GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum target, const GLdouble *v);
4097GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t);
4098GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum target, const GLfloat *v);
4099GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum target, GLint s, GLint t);
4100GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum target, const GLint *v);
4101GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t);
4102GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum target, const GLshort *v);
4103GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r);
4104GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum target, const GLdouble *v);
4105GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r);
4106GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum target, const GLfloat *v);
4107GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r);
4108GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum target, const GLint *v);
4109GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r);
4110GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum target, const GLshort *v);
4111GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
4112GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum target, const GLdouble *v);
4113GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
4114GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum target, const GLfloat *v);
4115GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q);
4116GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum target, const GLint *v);
4117GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
4118GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum target, const GLshort *v);
4119#endif
4120#endif /* GL_ARB_multitexture */
4121
4122#ifndef GL_ARB_occlusion_query
4123#define GL_ARB_occlusion_query 1
4124#define GL_QUERY_COUNTER_BITS_ARB 0x8864
4125#define GL_CURRENT_QUERY_ARB 0x8865
4126#define GL_QUERY_RESULT_ARB 0x8866
4127#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867
4128#define GL_SAMPLES_PASSED_ARB 0x8914
4129typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids);
4130typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids);
4131typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id);
4132typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id);
4133typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target);
4134typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params);
4135typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params);
4136typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params);
4137#ifdef GL_GLEXT_PROTOTYPES
4138GLAPI void APIENTRY glGenQueriesARB (GLsizei n, GLuint *ids);
4139GLAPI void APIENTRY glDeleteQueriesARB (GLsizei n, const GLuint *ids);
4140GLAPI GLboolean APIENTRY glIsQueryARB (GLuint id);
4141GLAPI void APIENTRY glBeginQueryARB (GLenum target, GLuint id);
4142GLAPI void APIENTRY glEndQueryARB (GLenum target);
4143GLAPI void APIENTRY glGetQueryivARB (GLenum target, GLenum pname, GLint *params);
4144GLAPI void APIENTRY glGetQueryObjectivARB (GLuint id, GLenum pname, GLint *params);
4145GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint *params);
4146#endif
4147#endif /* GL_ARB_occlusion_query */
4148
4149#ifndef GL_ARB_occlusion_query2
4150#define GL_ARB_occlusion_query2 1
4151#endif /* GL_ARB_occlusion_query2 */
4152
4153#ifndef GL_ARB_parallel_shader_compile
4154#define GL_ARB_parallel_shader_compile 1
4155#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0
4156#define GL_COMPLETION_STATUS_ARB 0x91B1
4157typedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSARBPROC) (GLuint count);
4158#ifdef GL_GLEXT_PROTOTYPES
4159GLAPI void APIENTRY glMaxShaderCompilerThreadsARB (GLuint count);
4160#endif
4161#endif /* GL_ARB_parallel_shader_compile */
4162
4163#ifndef GL_ARB_pipeline_statistics_query
4164#define GL_ARB_pipeline_statistics_query 1
4165#define GL_VERTICES_SUBMITTED_ARB 0x82EE
4166#define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF
4167#define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0
4168#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1
4169#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2
4170#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3
4171#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4
4172#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5
4173#define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6
4174#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7
4175#endif /* GL_ARB_pipeline_statistics_query */
4176
4177#ifndef GL_ARB_pixel_buffer_object
4178#define GL_ARB_pixel_buffer_object 1
4179#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB
4180#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC
4181#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED
4182#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
4183#endif /* GL_ARB_pixel_buffer_object */
4184
4185#ifndef GL_ARB_point_parameters
4186#define GL_ARB_point_parameters 1
4187#define GL_POINT_SIZE_MIN_ARB 0x8126
4188#define GL_POINT_SIZE_MAX_ARB 0x8127
4189#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128
4190#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
4191typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
4192typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params);
4193#ifdef GL_GLEXT_PROTOTYPES
4194GLAPI void APIENTRY glPointParameterfARB (GLenum pname, GLfloat param);
4195GLAPI void APIENTRY glPointParameterfvARB (GLenum pname, const GLfloat *params);
4196#endif
4197#endif /* GL_ARB_point_parameters */
4198
4199#ifndef GL_ARB_point_sprite
4200#define GL_ARB_point_sprite 1
4201#define GL_POINT_SPRITE_ARB 0x8861
4202#define GL_COORD_REPLACE_ARB 0x8862
4203#endif /* GL_ARB_point_sprite */
4204
4205#ifndef GL_ARB_polygon_offset_clamp
4206#define GL_ARB_polygon_offset_clamp 1
4207#endif /* GL_ARB_polygon_offset_clamp */
4208
4209#ifndef GL_ARB_post_depth_coverage
4210#define GL_ARB_post_depth_coverage 1
4211#endif /* GL_ARB_post_depth_coverage */
4212
4213#ifndef GL_ARB_program_interface_query
4214#define GL_ARB_program_interface_query 1
4215#endif /* GL_ARB_program_interface_query */
4216
4217#ifndef GL_ARB_provoking_vertex
4218#define GL_ARB_provoking_vertex 1
4219#endif /* GL_ARB_provoking_vertex */
4220
4221#ifndef GL_ARB_query_buffer_object
4222#define GL_ARB_query_buffer_object 1
4223#endif /* GL_ARB_query_buffer_object */
4224
4225#ifndef GL_ARB_robust_buffer_access_behavior
4226#define GL_ARB_robust_buffer_access_behavior 1
4227#endif /* GL_ARB_robust_buffer_access_behavior */
4228
4229#ifndef GL_ARB_robustness
4230#define GL_ARB_robustness 1
4231#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004
4232#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
4233#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253
4234#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254
4235#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255
4236#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
4237#define GL_NO_RESET_NOTIFICATION_ARB 0x8261
4238typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void);
4239typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);
4240typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
4241typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void *img);
4242typedef void (APIENTRYP PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
4243typedef void (APIENTRYP PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
4244typedef void (APIENTRYP PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
4245typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
4246typedef void (APIENTRYP PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
4247typedef void (APIENTRYP PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
4248typedef void (APIENTRYP PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v);
4249typedef void (APIENTRYP PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat *values);
4250typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint *values);
4251typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort *values);
4252typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte *pattern);
4253typedef void (APIENTRYP PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);
4254typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);
4255typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);
4256typedef void (APIENTRYP PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
4257typedef void (APIENTRYP PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
4258#ifdef GL_GLEXT_PROTOTYPES
4259GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void);
4260GLAPI void APIENTRY glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);
4261GLAPI void APIENTRY glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
4262GLAPI void APIENTRY glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, void *img);
4263GLAPI void APIENTRY glGetnUniformfvARB (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
4264GLAPI void APIENTRY glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint *params);
4265GLAPI void APIENTRY glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
4266GLAPI void APIENTRY glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
4267GLAPI void APIENTRY glGetnMapdvARB (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
4268GLAPI void APIENTRY glGetnMapfvARB (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
4269GLAPI void APIENTRY glGetnMapivARB (GLenum target, GLenum query, GLsizei bufSize, GLint *v);
4270GLAPI void APIENTRY glGetnPixelMapfvARB (GLenum map, GLsizei bufSize, GLfloat *values);
4271GLAPI void APIENTRY glGetnPixelMapuivARB (GLenum map, GLsizei bufSize, GLuint *values);
4272GLAPI void APIENTRY glGetnPixelMapusvARB (GLenum map, GLsizei bufSize, GLushort *values);
4273GLAPI void APIENTRY glGetnPolygonStippleARB (GLsizei bufSize, GLubyte *pattern);
4274GLAPI void APIENTRY glGetnColorTableARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);
4275GLAPI void APIENTRY glGetnConvolutionFilterARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);
4276GLAPI void APIENTRY glGetnSeparableFilterARB (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);
4277GLAPI void APIENTRY glGetnHistogramARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
4278GLAPI void APIENTRY glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
4279#endif
4280#endif /* GL_ARB_robustness */
4281
4282#ifndef GL_ARB_robustness_isolation
4283#define GL_ARB_robustness_isolation 1
4284#endif /* GL_ARB_robustness_isolation */
4285
4286#ifndef GL_ARB_sample_locations
4287#define GL_ARB_sample_locations 1
4288#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D
4289#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E
4290#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F
4291#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340
4292#define GL_SAMPLE_LOCATION_ARB 0x8E50
4293#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341
4294#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342
4295#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343
4296typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v);
4297typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
4298typedef void (APIENTRYP PFNGLEVALUATEDEPTHVALUESARBPROC) (void);
4299#ifdef GL_GLEXT_PROTOTYPES
4300GLAPI void APIENTRY glFramebufferSampleLocationsfvARB (GLenum target, GLuint start, GLsizei count, const GLfloat *v);
4301GLAPI void APIENTRY glNamedFramebufferSampleLocationsfvARB (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
4302GLAPI void APIENTRY glEvaluateDepthValuesARB (void);
4303#endif
4304#endif /* GL_ARB_sample_locations */
4305
4306#ifndef GL_ARB_sample_shading
4307#define GL_ARB_sample_shading 1
4308#define GL_SAMPLE_SHADING_ARB 0x8C36
4309#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37
4310typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLfloat value);
4311#ifdef GL_GLEXT_PROTOTYPES
4312GLAPI void APIENTRY glMinSampleShadingARB (GLfloat value);
4313#endif
4314#endif /* GL_ARB_sample_shading */
4315
4316#ifndef GL_ARB_sampler_objects
4317#define GL_ARB_sampler_objects 1
4318#endif /* GL_ARB_sampler_objects */
4319
4320#ifndef GL_ARB_seamless_cube_map
4321#define GL_ARB_seamless_cube_map 1
4322#endif /* GL_ARB_seamless_cube_map */
4323
4324#ifndef GL_ARB_seamless_cubemap_per_texture
4325#define GL_ARB_seamless_cubemap_per_texture 1
4326#endif /* GL_ARB_seamless_cubemap_per_texture */
4327
4328#ifndef GL_ARB_separate_shader_objects
4329#define GL_ARB_separate_shader_objects 1
4330#endif /* GL_ARB_separate_shader_objects */
4331
4332#ifndef GL_ARB_shader_atomic_counter_ops
4333#define GL_ARB_shader_atomic_counter_ops 1
4334#endif /* GL_ARB_shader_atomic_counter_ops */
4335
4336#ifndef GL_ARB_shader_atomic_counters
4337#define GL_ARB_shader_atomic_counters 1
4338#endif /* GL_ARB_shader_atomic_counters */
4339
4340#ifndef GL_ARB_shader_ballot
4341#define GL_ARB_shader_ballot 1
4342#endif /* GL_ARB_shader_ballot */
4343
4344#ifndef GL_ARB_shader_bit_encoding
4345#define GL_ARB_shader_bit_encoding 1
4346#endif /* GL_ARB_shader_bit_encoding */
4347
4348#ifndef GL_ARB_shader_clock
4349#define GL_ARB_shader_clock 1
4350#endif /* GL_ARB_shader_clock */
4351
4352#ifndef GL_ARB_shader_draw_parameters
4353#define GL_ARB_shader_draw_parameters 1
4354#endif /* GL_ARB_shader_draw_parameters */
4355
4356#ifndef GL_ARB_shader_group_vote
4357#define GL_ARB_shader_group_vote 1
4358#endif /* GL_ARB_shader_group_vote */
4359
4360#ifndef GL_ARB_shader_image_load_store
4361#define GL_ARB_shader_image_load_store 1
4362#endif /* GL_ARB_shader_image_load_store */
4363
4364#ifndef GL_ARB_shader_image_size
4365#define GL_ARB_shader_image_size 1
4366#endif /* GL_ARB_shader_image_size */
4367
4368#ifndef GL_ARB_shader_objects
4369#define GL_ARB_shader_objects 1
4370#ifdef __APPLE__
4371typedef void *GLhandleARB;
4372#else
4373typedef unsigned int GLhandleARB;
4374#endif
4375typedef char GLcharARB;
4376#define GL_PROGRAM_OBJECT_ARB 0x8B40
4377#define GL_SHADER_OBJECT_ARB 0x8B48
4378#define GL_OBJECT_TYPE_ARB 0x8B4E
4379#define GL_OBJECT_SUBTYPE_ARB 0x8B4F
4380#define GL_FLOAT_VEC2_ARB 0x8B50
4381#define GL_FLOAT_VEC3_ARB 0x8B51
4382#define GL_FLOAT_VEC4_ARB 0x8B52
4383#define GL_INT_VEC2_ARB 0x8B53
4384#define GL_INT_VEC3_ARB 0x8B54
4385#define GL_INT_VEC4_ARB 0x8B55
4386#define GL_BOOL_ARB 0x8B56
4387#define GL_BOOL_VEC2_ARB 0x8B57
4388#define GL_BOOL_VEC3_ARB 0x8B58
4389#define GL_BOOL_VEC4_ARB 0x8B59
4390#define GL_FLOAT_MAT2_ARB 0x8B5A
4391#define GL_FLOAT_MAT3_ARB 0x8B5B
4392#define GL_FLOAT_MAT4_ARB 0x8B5C
4393#define GL_SAMPLER_1D_ARB 0x8B5D
4394#define GL_SAMPLER_2D_ARB 0x8B5E
4395#define GL_SAMPLER_3D_ARB 0x8B5F
4396#define GL_SAMPLER_CUBE_ARB 0x8B60
4397#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61
4398#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62
4399#define GL_SAMPLER_2D_RECT_ARB 0x8B63
4400#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
4401#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80
4402#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81
4403#define GL_OBJECT_LINK_STATUS_ARB 0x8B82
4404#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83
4405#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84
4406#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85
4407#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86
4408#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
4409#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88
4410typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
4411typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname);
4412typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
4413typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
4414typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length);
4415typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
4416typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
4417typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
4418typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
4419typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
4420typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);
4421typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
4422typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
4423typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
4424typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
4425typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
4426typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
4427typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
4428typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
4429typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
4430typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
4431typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
4432typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
4433typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value);
4434typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value);
4435typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value);
4436typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value);
4437typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
4438typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
4439typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
4440typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params);
4441typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params);
4442typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
4443typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
4444typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
4445typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
4446typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params);
4447typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params);
4448typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
4449#ifdef GL_GLEXT_PROTOTYPES
4450GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB obj);
4451GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum pname);
4452GLAPI void APIENTRY glDetachObjectARB (GLhandleARB containerObj, GLhandleARB attachedObj);
4453GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum shaderType);
4454GLAPI void APIENTRY glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length);
4455GLAPI void APIENTRY glCompileShaderARB (GLhandleARB shaderObj);
4456GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void);
4457GLAPI void APIENTRY glAttachObjectARB (GLhandleARB containerObj, GLhandleARB obj);
4458GLAPI void APIENTRY glLinkProgramARB (GLhandleARB programObj);
4459GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB programObj);
4460GLAPI void APIENTRY glValidateProgramARB (GLhandleARB programObj);
4461GLAPI void APIENTRY glUniform1fARB (GLint location, GLfloat v0);
4462GLAPI void APIENTRY glUniform2fARB (GLint location, GLfloat v0, GLfloat v1);
4463GLAPI void APIENTRY glUniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
4464GLAPI void APIENTRY glUniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
4465GLAPI void APIENTRY glUniform1iARB (GLint location, GLint v0);
4466GLAPI void APIENTRY glUniform2iARB (GLint location, GLint v0, GLint v1);
4467GLAPI void APIENTRY glUniform3iARB (GLint location, GLint v0, GLint v1, GLint v2);
4468GLAPI void APIENTRY glUniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
4469GLAPI void APIENTRY glUniform1fvARB (GLint location, GLsizei count, const GLfloat *value);
4470GLAPI void APIENTRY glUniform2fvARB (GLint location, GLsizei count, const GLfloat *value);
4471GLAPI void APIENTRY glUniform3fvARB (GLint location, GLsizei count, const GLfloat *value);
4472GLAPI void APIENTRY glUniform4fvARB (GLint location, GLsizei count, const GLfloat *value);
4473GLAPI void APIENTRY glUniform1ivARB (GLint location, GLsizei count, const GLint *value);
4474GLAPI void APIENTRY glUniform2ivARB (GLint location, GLsizei count, const GLint *value);
4475GLAPI void APIENTRY glUniform3ivARB (GLint location, GLsizei count, const GLint *value);
4476GLAPI void APIENTRY glUniform4ivARB (GLint location, GLsizei count, const GLint *value);
4477GLAPI void APIENTRY glUniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
4478GLAPI void APIENTRY glUniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
4479GLAPI void APIENTRY glUniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
4480GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat *params);
4481GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint *params);
4482GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
4483GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
4484GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name);
4485GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
4486GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat *params);
4487GLAPI void APIENTRY glGetUniformivARB (GLhandleARB programObj, GLint location, GLint *params);
4488GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
4489#endif
4490#endif /* GL_ARB_shader_objects */
4491
4492#ifndef GL_ARB_shader_precision
4493#define GL_ARB_shader_precision 1
4494#endif /* GL_ARB_shader_precision */
4495
4496#ifndef GL_ARB_shader_stencil_export
4497#define GL_ARB_shader_stencil_export 1
4498#endif /* GL_ARB_shader_stencil_export */
4499
4500#ifndef GL_ARB_shader_storage_buffer_object
4501#define GL_ARB_shader_storage_buffer_object 1
4502#endif /* GL_ARB_shader_storage_buffer_object */
4503
4504#ifndef GL_ARB_shader_subroutine
4505#define GL_ARB_shader_subroutine 1
4506#endif /* GL_ARB_shader_subroutine */
4507
4508#ifndef GL_ARB_shader_texture_image_samples
4509#define GL_ARB_shader_texture_image_samples 1
4510#endif /* GL_ARB_shader_texture_image_samples */
4511
4512#ifndef GL_ARB_shader_texture_lod
4513#define GL_ARB_shader_texture_lod 1
4514#endif /* GL_ARB_shader_texture_lod */
4515
4516#ifndef GL_ARB_shader_viewport_layer_array
4517#define GL_ARB_shader_viewport_layer_array 1
4518#endif /* GL_ARB_shader_viewport_layer_array */
4519
4520#ifndef GL_ARB_shading_language_100
4521#define GL_ARB_shading_language_100 1
4522#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C
4523#endif /* GL_ARB_shading_language_100 */
4524
4525#ifndef GL_ARB_shading_language_420pack
4526#define GL_ARB_shading_language_420pack 1
4527#endif /* GL_ARB_shading_language_420pack */
4528
4529#ifndef GL_ARB_shading_language_include
4530#define GL_ARB_shading_language_include 1
4531#define GL_SHADER_INCLUDE_ARB 0x8DAE
4532#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9
4533#define GL_NAMED_STRING_TYPE_ARB 0x8DEA
4534typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
4535typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
4536typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);
4537typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
4538typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
4539typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
4540#ifdef GL_GLEXT_PROTOTYPES
4541GLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
4542GLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name);
4543GLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);
4544GLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name);
4545GLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
4546GLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
4547#endif
4548#endif /* GL_ARB_shading_language_include */
4549
4550#ifndef GL_ARB_shading_language_packing
4551#define GL_ARB_shading_language_packing 1
4552#endif /* GL_ARB_shading_language_packing */
4553
4554#ifndef GL_ARB_shadow
4555#define GL_ARB_shadow 1
4556#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C
4557#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D
4558#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E
4559#endif /* GL_ARB_shadow */
4560
4561#ifndef GL_ARB_shadow_ambient
4562#define GL_ARB_shadow_ambient 1
4563#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
4564#endif /* GL_ARB_shadow_ambient */
4565
4566#ifndef GL_ARB_sparse_buffer
4567#define GL_ARB_sparse_buffer 1
4568#define GL_SPARSE_STORAGE_BIT_ARB 0x0400
4569#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8
4570typedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTARBPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit);
4571typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
4572typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
4573#ifdef GL_GLEXT_PROTOTYPES
4574GLAPI void APIENTRY glBufferPageCommitmentARB (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit);
4575GLAPI void APIENTRY glNamedBufferPageCommitmentEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
4576GLAPI void APIENTRY glNamedBufferPageCommitmentARB (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
4577#endif
4578#endif /* GL_ARB_sparse_buffer */
4579
4580#ifndef GL_ARB_sparse_texture
4581#define GL_ARB_sparse_texture 1
4582#define GL_TEXTURE_SPARSE_ARB 0x91A6
4583#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7
4584#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA
4585#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8
4586#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195
4587#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196
4588#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197
4589#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198
4590#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199
4591#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A
4592#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9
4593typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
4594#ifdef GL_GLEXT_PROTOTYPES
4595GLAPI void APIENTRY glTexPageCommitmentARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
4596#endif
4597#endif /* GL_ARB_sparse_texture */
4598
4599#ifndef GL_ARB_sparse_texture2
4600#define GL_ARB_sparse_texture2 1
4601#endif /* GL_ARB_sparse_texture2 */
4602
4603#ifndef GL_ARB_sparse_texture_clamp
4604#define GL_ARB_sparse_texture_clamp 1
4605#endif /* GL_ARB_sparse_texture_clamp */
4606
4607#ifndef GL_ARB_spirv_extensions
4608#define GL_ARB_spirv_extensions 1
4609#endif /* GL_ARB_spirv_extensions */
4610
4611#ifndef GL_ARB_stencil_texturing
4612#define GL_ARB_stencil_texturing 1
4613#endif /* GL_ARB_stencil_texturing */
4614
4615#ifndef GL_ARB_sync
4616#define GL_ARB_sync 1
4617#endif /* GL_ARB_sync */
4618
4619#ifndef GL_ARB_tessellation_shader
4620#define GL_ARB_tessellation_shader 1
4621#endif /* GL_ARB_tessellation_shader */
4622
4623#ifndef GL_ARB_texture_barrier
4624#define GL_ARB_texture_barrier 1
4625#endif /* GL_ARB_texture_barrier */
4626
4627#ifndef GL_ARB_texture_border_clamp
4628#define GL_ARB_texture_border_clamp 1
4629#define GL_CLAMP_TO_BORDER_ARB 0x812D
4630#endif /* GL_ARB_texture_border_clamp */
4631
4632#ifndef GL_ARB_texture_buffer_object
4633#define GL_ARB_texture_buffer_object 1
4634#define GL_TEXTURE_BUFFER_ARB 0x8C2A
4635#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B
4636#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C
4637#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D
4638#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E
4639typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer);
4640#ifdef GL_GLEXT_PROTOTYPES
4641GLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer);
4642#endif
4643#endif /* GL_ARB_texture_buffer_object */
4644
4645#ifndef GL_ARB_texture_buffer_object_rgb32
4646#define GL_ARB_texture_buffer_object_rgb32 1
4647#endif /* GL_ARB_texture_buffer_object_rgb32 */
4648
4649#ifndef GL_ARB_texture_buffer_range
4650#define GL_ARB_texture_buffer_range 1
4651#endif /* GL_ARB_texture_buffer_range */
4652
4653#ifndef GL_ARB_texture_compression
4654#define GL_ARB_texture_compression 1
4655#define GL_COMPRESSED_ALPHA_ARB 0x84E9
4656#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA
4657#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
4658#define GL_COMPRESSED_INTENSITY_ARB 0x84EC
4659#define GL_COMPRESSED_RGB_ARB 0x84ED
4660#define GL_COMPRESSED_RGBA_ARB 0x84EE
4661#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF
4662#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
4663#define GL_TEXTURE_COMPRESSED_ARB 0x86A1
4664#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
4665#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
4666typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
4667typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
4668typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
4669typedef 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);
4670typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
4671typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
4672typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img);
4673#ifdef GL_GLEXT_PROTOTYPES
4674GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
4675GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
4676GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
4677GLAPI 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);
4678GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
4679GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
4680GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum target, GLint level, void *img);
4681#endif
4682#endif /* GL_ARB_texture_compression */
4683
4684#ifndef GL_ARB_texture_compression_bptc
4685#define GL_ARB_texture_compression_bptc 1
4686#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
4687#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
4688#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
4689#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
4690#endif /* GL_ARB_texture_compression_bptc */
4691
4692#ifndef GL_ARB_texture_compression_rgtc
4693#define GL_ARB_texture_compression_rgtc 1
4694#endif /* GL_ARB_texture_compression_rgtc */
4695
4696#ifndef GL_ARB_texture_cube_map
4697#define GL_ARB_texture_cube_map 1
4698#define GL_NORMAL_MAP_ARB 0x8511
4699#define GL_REFLECTION_MAP_ARB 0x8512
4700#define GL_TEXTURE_CUBE_MAP_ARB 0x8513
4701#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514
4702#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
4703#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
4704#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
4705#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
4706#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
4707#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
4708#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
4709#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C
4710#endif /* GL_ARB_texture_cube_map */
4711
4712#ifndef GL_ARB_texture_cube_map_array
4713#define GL_ARB_texture_cube_map_array 1
4714#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009
4715#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A
4716#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B
4717#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C
4718#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D
4719#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E
4720#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F
4721#endif /* GL_ARB_texture_cube_map_array */
4722
4723#ifndef GL_ARB_texture_env_add
4724#define GL_ARB_texture_env_add 1
4725#endif /* GL_ARB_texture_env_add */
4726
4727#ifndef GL_ARB_texture_env_combine
4728#define GL_ARB_texture_env_combine 1
4729#define GL_COMBINE_ARB 0x8570
4730#define GL_COMBINE_RGB_ARB 0x8571
4731#define GL_COMBINE_ALPHA_ARB 0x8572
4732#define GL_SOURCE0_RGB_ARB 0x8580
4733#define GL_SOURCE1_RGB_ARB 0x8581
4734#define GL_SOURCE2_RGB_ARB 0x8582
4735#define GL_SOURCE0_ALPHA_ARB 0x8588
4736#define GL_SOURCE1_ALPHA_ARB 0x8589
4737#define GL_SOURCE2_ALPHA_ARB 0x858A
4738#define GL_OPERAND0_RGB_ARB 0x8590
4739#define GL_OPERAND1_RGB_ARB 0x8591
4740#define GL_OPERAND2_RGB_ARB 0x8592
4741#define GL_OPERAND0_ALPHA_ARB 0x8598
4742#define GL_OPERAND1_ALPHA_ARB 0x8599
4743#define GL_OPERAND2_ALPHA_ARB 0x859A
4744#define GL_RGB_SCALE_ARB 0x8573
4745#define GL_ADD_SIGNED_ARB 0x8574
4746#define GL_INTERPOLATE_ARB 0x8575
4747#define GL_SUBTRACT_ARB 0x84E7
4748#define GL_CONSTANT_ARB 0x8576
4749#define GL_PRIMARY_COLOR_ARB 0x8577
4750#define GL_PREVIOUS_ARB 0x8578
4751#endif /* GL_ARB_texture_env_combine */
4752
4753#ifndef GL_ARB_texture_env_crossbar
4754#define GL_ARB_texture_env_crossbar 1
4755#endif /* GL_ARB_texture_env_crossbar */
4756
4757#ifndef GL_ARB_texture_env_dot3
4758#define GL_ARB_texture_env_dot3 1
4759#define GL_DOT3_RGB_ARB 0x86AE
4760#define GL_DOT3_RGBA_ARB 0x86AF
4761#endif /* GL_ARB_texture_env_dot3 */
4762
4763#ifndef GL_ARB_texture_filter_anisotropic
4764#define GL_ARB_texture_filter_anisotropic 1
4765#endif /* GL_ARB_texture_filter_anisotropic */
4766
4767#ifndef GL_ARB_texture_filter_minmax
4768#define GL_ARB_texture_filter_minmax 1
4769#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366
4770#define GL_WEIGHTED_AVERAGE_ARB 0x9367
4771#endif /* GL_ARB_texture_filter_minmax */
4772
4773#ifndef GL_ARB_texture_float
4774#define GL_ARB_texture_float 1
4775#define GL_TEXTURE_RED_TYPE_ARB 0x8C10
4776#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11
4777#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12
4778#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13
4779#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14
4780#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15
4781#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16
4782#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17
4783#define GL_RGBA32F_ARB 0x8814
4784#define GL_RGB32F_ARB 0x8815
4785#define GL_ALPHA32F_ARB 0x8816
4786#define GL_INTENSITY32F_ARB 0x8817
4787#define GL_LUMINANCE32F_ARB 0x8818
4788#define GL_LUMINANCE_ALPHA32F_ARB 0x8819
4789#define GL_RGBA16F_ARB 0x881A
4790#define GL_RGB16F_ARB 0x881B
4791#define GL_ALPHA16F_ARB 0x881C
4792#define GL_INTENSITY16F_ARB 0x881D
4793#define GL_LUMINANCE16F_ARB 0x881E
4794#define GL_LUMINANCE_ALPHA16F_ARB 0x881F
4795#endif /* GL_ARB_texture_float */
4796
4797#ifndef GL_ARB_texture_gather
4798#define GL_ARB_texture_gather 1
4799#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
4800#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
4801#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F
4802#endif /* GL_ARB_texture_gather */
4803
4804#ifndef GL_ARB_texture_mirror_clamp_to_edge
4805#define GL_ARB_texture_mirror_clamp_to_edge 1
4806#endif /* GL_ARB_texture_mirror_clamp_to_edge */
4807
4808#ifndef GL_ARB_texture_mirrored_repeat
4809#define GL_ARB_texture_mirrored_repeat 1
4810#define GL_MIRRORED_REPEAT_ARB 0x8370
4811#endif /* GL_ARB_texture_mirrored_repeat */
4812
4813#ifndef GL_ARB_texture_multisample
4814#define GL_ARB_texture_multisample 1
4815#endif /* GL_ARB_texture_multisample */
4816
4817#ifndef GL_ARB_texture_non_power_of_two
4818#define GL_ARB_texture_non_power_of_two 1
4819#endif /* GL_ARB_texture_non_power_of_two */
4820
4821#ifndef GL_ARB_texture_query_levels
4822#define GL_ARB_texture_query_levels 1
4823#endif /* GL_ARB_texture_query_levels */
4824
4825#ifndef GL_ARB_texture_query_lod
4826#define GL_ARB_texture_query_lod 1
4827#endif /* GL_ARB_texture_query_lod */
4828
4829#ifndef GL_ARB_texture_rectangle
4830#define GL_ARB_texture_rectangle 1
4831#define GL_TEXTURE_RECTANGLE_ARB 0x84F5
4832#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6
4833#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7
4834#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
4835#endif /* GL_ARB_texture_rectangle */
4836
4837#ifndef GL_ARB_texture_rg
4838#define GL_ARB_texture_rg 1
4839#endif /* GL_ARB_texture_rg */
4840
4841#ifndef GL_ARB_texture_rgb10_a2ui
4842#define GL_ARB_texture_rgb10_a2ui 1
4843#endif /* GL_ARB_texture_rgb10_a2ui */
4844
4845#ifndef GL_ARB_texture_stencil8
4846#define GL_ARB_texture_stencil8 1
4847#endif /* GL_ARB_texture_stencil8 */
4848
4849#ifndef GL_ARB_texture_storage
4850#define GL_ARB_texture_storage 1
4851#endif /* GL_ARB_texture_storage */
4852
4853#ifndef GL_ARB_texture_storage_multisample
4854#define GL_ARB_texture_storage_multisample 1
4855#endif /* GL_ARB_texture_storage_multisample */
4856
4857#ifndef GL_ARB_texture_swizzle
4858#define GL_ARB_texture_swizzle 1
4859#endif /* GL_ARB_texture_swizzle */
4860
4861#ifndef GL_ARB_texture_view
4862#define GL_ARB_texture_view 1
4863#endif /* GL_ARB_texture_view */
4864
4865#ifndef GL_ARB_timer_query
4866#define GL_ARB_timer_query 1
4867#endif /* GL_ARB_timer_query */
4868
4869#ifndef GL_ARB_transform_feedback2
4870#define GL_ARB_transform_feedback2 1
4871#endif /* GL_ARB_transform_feedback2 */
4872
4873#ifndef GL_ARB_transform_feedback3
4874#define GL_ARB_transform_feedback3 1
4875#endif /* GL_ARB_transform_feedback3 */
4876
4877#ifndef GL_ARB_transform_feedback_instanced
4878#define GL_ARB_transform_feedback_instanced 1
4879#endif /* GL_ARB_transform_feedback_instanced */
4880
4881#ifndef GL_ARB_transform_feedback_overflow_query
4882#define GL_ARB_transform_feedback_overflow_query 1
4883#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC
4884#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED
4885#endif /* GL_ARB_transform_feedback_overflow_query */
4886
4887#ifndef GL_ARB_transpose_matrix
4888#define GL_ARB_transpose_matrix 1
4889#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
4890#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
4891#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5
4892#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6
4893typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
4894typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
4895typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
4896typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
4897#ifdef GL_GLEXT_PROTOTYPES
4898GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *m);
4899GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *m);
4900GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *m);
4901GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *m);
4902#endif
4903#endif /* GL_ARB_transpose_matrix */
4904
4905#ifndef GL_ARB_uniform_buffer_object
4906#define GL_ARB_uniform_buffer_object 1
4907#endif /* GL_ARB_uniform_buffer_object */
4908
4909#ifndef GL_ARB_vertex_array_bgra
4910#define GL_ARB_vertex_array_bgra 1
4911#endif /* GL_ARB_vertex_array_bgra */
4912
4913#ifndef GL_ARB_vertex_array_object
4914#define GL_ARB_vertex_array_object 1
4915#endif /* GL_ARB_vertex_array_object */
4916
4917#ifndef GL_ARB_vertex_attrib_64bit
4918#define GL_ARB_vertex_attrib_64bit 1
4919#endif /* GL_ARB_vertex_attrib_64bit */
4920
4921#ifndef GL_ARB_vertex_attrib_binding
4922#define GL_ARB_vertex_attrib_binding 1
4923#endif /* GL_ARB_vertex_attrib_binding */
4924
4925#ifndef GL_ARB_vertex_blend
4926#define GL_ARB_vertex_blend 1
4927#define GL_MAX_VERTEX_UNITS_ARB 0x86A4
4928#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5
4929#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6
4930#define GL_VERTEX_BLEND_ARB 0x86A7
4931#define GL_CURRENT_WEIGHT_ARB 0x86A8
4932#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9
4933#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA
4934#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB
4935#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC
4936#define GL_WEIGHT_ARRAY_ARB 0x86AD
4937#define GL_MODELVIEW0_ARB 0x1700
4938#define GL_MODELVIEW1_ARB 0x850A
4939#define GL_MODELVIEW2_ARB 0x8722
4940#define GL_MODELVIEW3_ARB 0x8723
4941#define GL_MODELVIEW4_ARB 0x8724
4942#define GL_MODELVIEW5_ARB 0x8725
4943#define GL_MODELVIEW6_ARB 0x8726
4944#define GL_MODELVIEW7_ARB 0x8727
4945#define GL_MODELVIEW8_ARB 0x8728
4946#define GL_MODELVIEW9_ARB 0x8729
4947#define GL_MODELVIEW10_ARB 0x872A
4948#define GL_MODELVIEW11_ARB 0x872B
4949#define GL_MODELVIEW12_ARB 0x872C
4950#define GL_MODELVIEW13_ARB 0x872D
4951#define GL_MODELVIEW14_ARB 0x872E
4952#define GL_MODELVIEW15_ARB 0x872F
4953#define GL_MODELVIEW16_ARB 0x8730
4954#define GL_MODELVIEW17_ARB 0x8731
4955#define GL_MODELVIEW18_ARB 0x8732
4956#define GL_MODELVIEW19_ARB 0x8733
4957#define GL_MODELVIEW20_ARB 0x8734
4958#define GL_MODELVIEW21_ARB 0x8735
4959#define GL_MODELVIEW22_ARB 0x8736
4960#define GL_MODELVIEW23_ARB 0x8737
4961#define GL_MODELVIEW24_ARB 0x8738
4962#define GL_MODELVIEW25_ARB 0x8739
4963#define GL_MODELVIEW26_ARB 0x873A
4964#define GL_MODELVIEW27_ARB 0x873B
4965#define GL_MODELVIEW28_ARB 0x873C
4966#define GL_MODELVIEW29_ARB 0x873D
4967#define GL_MODELVIEW30_ARB 0x873E
4968#define GL_MODELVIEW31_ARB 0x873F
4969typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights);
4970typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights);
4971typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights);
4972typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights);
4973typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights);
4974typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights);
4975typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights);
4976typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights);
4977typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
4978typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count);
4979#ifdef GL_GLEXT_PROTOTYPES
4980GLAPI void APIENTRY glWeightbvARB (GLint size, const GLbyte *weights);
4981GLAPI void APIENTRY glWeightsvARB (GLint size, const GLshort *weights);
4982GLAPI void APIENTRY glWeightivARB (GLint size, const GLint *weights);
4983GLAPI void APIENTRY glWeightfvARB (GLint size, const GLfloat *weights);
4984GLAPI void APIENTRY glWeightdvARB (GLint size, const GLdouble *weights);
4985GLAPI void APIENTRY glWeightubvARB (GLint size, const GLubyte *weights);
4986GLAPI void APIENTRY glWeightusvARB (GLint size, const GLushort *weights);
4987GLAPI void APIENTRY glWeightuivARB (GLint size, const GLuint *weights);
4988GLAPI void APIENTRY glWeightPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer);
4989GLAPI void APIENTRY glVertexBlendARB (GLint count);
4990#endif
4991#endif /* GL_ARB_vertex_blend */
4992
4993#ifndef GL_ARB_vertex_buffer_object
4994#define GL_ARB_vertex_buffer_object 1
4995typedef khronos_ssize_t GLsizeiptrARB;
4996typedef khronos_intptr_t GLintptrARB;
4997#define GL_BUFFER_SIZE_ARB 0x8764
4998#define GL_BUFFER_USAGE_ARB 0x8765
4999#define GL_ARRAY_BUFFER_ARB 0x8892
5000#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893
5001#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894
5002#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
5003#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
5004#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
5005#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
5006#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
5007#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
5008#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
5009#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
5010#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
5011#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
5012#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
5013#define GL_READ_ONLY_ARB 0x88B8
5014#define GL_WRITE_ONLY_ARB 0x88B9
5015#define GL_READ_WRITE_ARB 0x88BA
5016#define GL_BUFFER_ACCESS_ARB 0x88BB
5017#define GL_BUFFER_MAPPED_ARB 0x88BC
5018#define GL_BUFFER_MAP_POINTER_ARB 0x88BD
5019#define GL_STREAM_DRAW_ARB 0x88E0
5020#define GL_STREAM_READ_ARB 0x88E1
5021#define GL_STREAM_COPY_ARB 0x88E2
5022#define GL_STATIC_DRAW_ARB 0x88E4
5023#define GL_STATIC_READ_ARB 0x88E5
5024#define GL_STATIC_COPY_ARB 0x88E6
5025#define GL_DYNAMIC_DRAW_ARB 0x88E8
5026#define GL_DYNAMIC_READ_ARB 0x88E9
5027#define GL_DYNAMIC_COPY_ARB 0x88EA
5028typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
5029typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
5030typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
5031typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer);
5032typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage);
5033typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data);
5034typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data);
5035typedef void *(APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access);
5036typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target);
5037typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params);
5038typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, void **params);
5039#ifdef GL_GLEXT_PROTOTYPES
5040GLAPI void APIENTRY glBindBufferARB (GLenum target, GLuint buffer);
5041GLAPI void APIENTRY glDeleteBuffersARB (GLsizei n, const GLuint *buffers);
5042GLAPI void APIENTRY glGenBuffersARB (GLsizei n, GLuint *buffers);
5043GLAPI GLboolean APIENTRY glIsBufferARB (GLuint buffer);
5044GLAPI void APIENTRY glBufferDataARB (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage);
5045GLAPI void APIENTRY glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data);
5046GLAPI void APIENTRY glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data);
5047GLAPI void *APIENTRY glMapBufferARB (GLenum target, GLenum access);
5048GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum target);
5049GLAPI void APIENTRY glGetBufferParameterivARB (GLenum target, GLenum pname, GLint *params);
5050GLAPI void APIENTRY glGetBufferPointervARB (GLenum target, GLenum pname, void **params);
5051#endif
5052#endif /* GL_ARB_vertex_buffer_object */
5053
5054#ifndef GL_ARB_vertex_program
5055#define GL_ARB_vertex_program 1
5056#define GL_COLOR_SUM_ARB 0x8458
5057#define GL_VERTEX_PROGRAM_ARB 0x8620
5058#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
5059#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623
5060#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
5061#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625
5062#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626
5063#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642
5064#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643
5065#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
5066#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869
5067#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
5068#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0
5069#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
5070#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
5071#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
5072typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
5073typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v);
5074typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
5075typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v);
5076typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);
5077typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v);
5078typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);
5079typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v);
5080typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);
5081typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v);
5082typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);
5083typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v);
5084typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
5085typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v);
5086typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
5087typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v);
5088typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
5089typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v);
5090typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v);
5091typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v);
5092typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v);
5093typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
5094typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v);
5095typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v);
5096typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v);
5097typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v);
5098typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
5099typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v);
5100typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
5101typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v);
5102typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v);
5103typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
5104typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v);
5105typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v);
5106typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v);
5107typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v);
5108typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
5109typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
5110typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
5111typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params);
5112typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params);
5113typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params);
5114typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, void **pointer);
5115#ifdef GL_GLEXT_PROTOTYPES
5116GLAPI void APIENTRY glVertexAttrib1dARB (GLuint index, GLdouble x);
5117GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint index, const GLdouble *v);
5118GLAPI void APIENTRY glVertexAttrib1fARB (GLuint index, GLfloat x);
5119GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint index, const GLfloat *v);
5120GLAPI void APIENTRY glVertexAttrib1sARB (GLuint index, GLshort x);
5121GLAPI void APIENTRY glVertexAttrib1svARB (GLuint index, const GLshort *v);
5122GLAPI void APIENTRY glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y);
5123GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint index, const GLdouble *v);
5124GLAPI void APIENTRY glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y);
5125GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint index, const GLfloat *v);
5126GLAPI void APIENTRY glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y);
5127GLAPI void APIENTRY glVertexAttrib2svARB (GLuint index, const GLshort *v);
5128GLAPI void APIENTRY glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z);
5129GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint index, const GLdouble *v);
5130GLAPI void APIENTRY glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z);
5131GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint index, const GLfloat *v);
5132GLAPI void APIENTRY glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z);
5133GLAPI void APIENTRY glVertexAttrib3svARB (GLuint index, const GLshort *v);
5134GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint index, const GLbyte *v);
5135GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint index, const GLint *v);
5136GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint index, const GLshort *v);
5137GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
5138GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint index, const GLubyte *v);
5139GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint index, const GLuint *v);
5140GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint index, const GLushort *v);
5141GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint index, const GLbyte *v);
5142GLAPI void APIENTRY glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
5143GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint index, const GLdouble *v);
5144GLAPI void APIENTRY glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
5145GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint index, const GLfloat *v);
5146GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint index, const GLint *v);
5147GLAPI void APIENTRY glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
5148GLAPI void APIENTRY glVertexAttrib4svARB (GLuint index, const GLshort *v);
5149GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint index, const GLubyte *v);
5150GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint index, const GLuint *v);
5151GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint index, const GLushort *v);
5152GLAPI void APIENTRY glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
5153GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint index);
5154GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint index);
5155GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble *params);
5156GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat *params);
5157GLAPI void APIENTRY glGetVertexAttribivARB (GLuint index, GLenum pname, GLint *params);
5158GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint index, GLenum pname, void **pointer);
5159#endif
5160#endif /* GL_ARB_vertex_program */
5161
5162#ifndef GL_ARB_vertex_shader
5163#define GL_ARB_vertex_shader 1
5164#define GL_VERTEX_SHADER_ARB 0x8B31
5165#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
5166#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B
5167#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
5168#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
5169#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89
5170#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A
5171typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name);
5172typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
5173typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
5174#ifdef GL_GLEXT_PROTOTYPES
5175GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB *name);
5176GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
5177GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name);
5178#endif
5179#endif /* GL_ARB_vertex_shader */
5180
5181#ifndef GL_ARB_vertex_type_10f_11f_11f_rev
5182#define GL_ARB_vertex_type_10f_11f_11f_rev 1
5183#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */
5184
5185#ifndef GL_ARB_vertex_type_2_10_10_10_rev
5186#define GL_ARB_vertex_type_2_10_10_10_rev 1
5187#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
5188
5189#ifndef GL_ARB_viewport_array
5190#define GL_ARB_viewport_array 1
5191typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYDVNVPROC) (GLuint first, GLsizei count, const GLdouble *v);
5192typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDDNVPROC) (GLuint index, GLdouble n, GLdouble f);
5193#ifdef GL_GLEXT_PROTOTYPES
5194GLAPI void APIENTRY glDepthRangeArraydvNV (GLuint first, GLsizei count, const GLdouble *v);
5195GLAPI void APIENTRY glDepthRangeIndexeddNV (GLuint index, GLdouble n, GLdouble f);
5196#endif
5197#endif /* GL_ARB_viewport_array */
5198
5199#ifndef GL_ARB_window_pos
5200#define GL_ARB_window_pos 1
5201typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
5202typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v);
5203typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y);
5204typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v);
5205typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y);
5206typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v);
5207typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y);
5208typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v);
5209typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z);
5210typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v);
5211typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z);
5212typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v);
5213typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z);
5214typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v);
5215typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z);
5216typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v);
5217#ifdef GL_GLEXT_PROTOTYPES
5218GLAPI void APIENTRY glWindowPos2dARB (GLdouble x, GLdouble y);
5219GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *v);
5220GLAPI void APIENTRY glWindowPos2fARB (GLfloat x, GLfloat y);
5221GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *v);
5222GLAPI void APIENTRY glWindowPos2iARB (GLint x, GLint y);
5223GLAPI void APIENTRY glWindowPos2ivARB (const GLint *v);
5224GLAPI void APIENTRY glWindowPos2sARB (GLshort x, GLshort y);
5225GLAPI void APIENTRY glWindowPos2svARB (const GLshort *v);
5226GLAPI void APIENTRY glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z);
5227GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *v);
5228GLAPI void APIENTRY glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z);
5229GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *v);
5230GLAPI void APIENTRY glWindowPos3iARB (GLint x, GLint y, GLint z);
5231GLAPI void APIENTRY glWindowPos3ivARB (const GLint *v);
5232GLAPI void APIENTRY glWindowPos3sARB (GLshort x, GLshort y, GLshort z);
5233GLAPI void APIENTRY glWindowPos3svARB (const GLshort *v);
5234#endif
5235#endif /* GL_ARB_window_pos */
5236
5237#ifndef GL_KHR_blend_equation_advanced
5238#define GL_KHR_blend_equation_advanced 1
5239#define GL_MULTIPLY_KHR 0x9294
5240#define GL_SCREEN_KHR 0x9295
5241#define GL_OVERLAY_KHR 0x9296
5242#define GL_DARKEN_KHR 0x9297
5243#define GL_LIGHTEN_KHR 0x9298
5244#define GL_COLORDODGE_KHR 0x9299
5245#define GL_COLORBURN_KHR 0x929A
5246#define GL_HARDLIGHT_KHR 0x929B
5247#define GL_SOFTLIGHT_KHR 0x929C
5248#define GL_DIFFERENCE_KHR 0x929E
5249#define GL_EXCLUSION_KHR 0x92A0
5250#define GL_HSL_HUE_KHR 0x92AD
5251#define GL_HSL_SATURATION_KHR 0x92AE
5252#define GL_HSL_COLOR_KHR 0x92AF
5253#define GL_HSL_LUMINOSITY_KHR 0x92B0
5254typedef void (APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void);
5255#ifdef GL_GLEXT_PROTOTYPES
5256GLAPI void APIENTRY glBlendBarrierKHR (void);
5257#endif
5258#endif /* GL_KHR_blend_equation_advanced */
5259
5260#ifndef GL_KHR_blend_equation_advanced_coherent
5261#define GL_KHR_blend_equation_advanced_coherent 1
5262#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285
5263#endif /* GL_KHR_blend_equation_advanced_coherent */
5264
5265#ifndef GL_KHR_context_flush_control
5266#define GL_KHR_context_flush_control 1
5267#endif /* GL_KHR_context_flush_control */
5268
5269#ifndef GL_KHR_debug
5270#define GL_KHR_debug 1
5271#endif /* GL_KHR_debug */
5272
5273#ifndef GL_KHR_no_error
5274#define GL_KHR_no_error 1
5275#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008
5276#endif /* GL_KHR_no_error */
5277
5278#ifndef GL_KHR_parallel_shader_compile
5279#define GL_KHR_parallel_shader_compile 1
5280#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0
5281#define GL_COMPLETION_STATUS_KHR 0x91B1
5282typedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count);
5283#ifdef GL_GLEXT_PROTOTYPES
5284GLAPI void APIENTRY glMaxShaderCompilerThreadsKHR (GLuint count);
5285#endif
5286#endif /* GL_KHR_parallel_shader_compile */
5287
5288#ifndef GL_KHR_robust_buffer_access_behavior
5289#define GL_KHR_robust_buffer_access_behavior 1
5290#endif /* GL_KHR_robust_buffer_access_behavior */
5291
5292#ifndef GL_KHR_robustness
5293#define GL_KHR_robustness 1
5294#define GL_CONTEXT_ROBUST_ACCESS 0x90F3
5295#endif /* GL_KHR_robustness */
5296
5297#ifndef GL_KHR_shader_subgroup
5298#define GL_KHR_shader_subgroup 1
5299#define GL_SUBGROUP_SIZE_KHR 0x9532
5300#define GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533
5301#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534
5302#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535
5303#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001
5304#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002
5305#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004
5306#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008
5307#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010
5308#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020
5309#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040
5310#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080
5311#endif /* GL_KHR_shader_subgroup */
5312
5313#ifndef GL_KHR_texture_compression_astc_hdr
5314#define GL_KHR_texture_compression_astc_hdr 1
5315#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
5316#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
5317#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
5318#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
5319#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
5320#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
5321#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
5322#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
5323#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
5324#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
5325#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
5326#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
5327#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
5328#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
5329#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
5330#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
5331#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
5332#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
5333#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
5334#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
5335#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
5336#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
5337#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
5338#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
5339#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
5340#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
5341#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
5342#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
5343#endif /* GL_KHR_texture_compression_astc_hdr */
5344
5345#ifndef GL_KHR_texture_compression_astc_ldr
5346#define GL_KHR_texture_compression_astc_ldr 1
5347#endif /* GL_KHR_texture_compression_astc_ldr */
5348
5349#ifndef GL_KHR_texture_compression_astc_sliced_3d
5350#define GL_KHR_texture_compression_astc_sliced_3d 1
5351#endif /* GL_KHR_texture_compression_astc_sliced_3d */
5352
5353#ifndef GL_OES_byte_coordinates
5354#define GL_OES_byte_coordinates 1
5355typedef void (APIENTRYP PFNGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s);
5356typedef void (APIENTRYP PFNGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte *coords);
5357typedef void (APIENTRYP PFNGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t);
5358typedef void (APIENTRYP PFNGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte *coords);
5359typedef void (APIENTRYP PFNGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r);
5360typedef void (APIENTRYP PFNGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte *coords);
5361typedef void (APIENTRYP PFNGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q);
5362typedef void (APIENTRYP PFNGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte *coords);
5363typedef void (APIENTRYP PFNGLTEXCOORD1BOESPROC) (GLbyte s);
5364typedef void (APIENTRYP PFNGLTEXCOORD1BVOESPROC) (const GLbyte *coords);
5365typedef void (APIENTRYP PFNGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t);
5366typedef void (APIENTRYP PFNGLTEXCOORD2BVOESPROC) (const GLbyte *coords);
5367typedef void (APIENTRYP PFNGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r);
5368typedef void (APIENTRYP PFNGLTEXCOORD3BVOESPROC) (const GLbyte *coords);
5369typedef void (APIENTRYP PFNGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q);
5370typedef void (APIENTRYP PFNGLTEXCOORD4BVOESPROC) (const GLbyte *coords);
5371typedef void (APIENTRYP PFNGLVERTEX2BOESPROC) (GLbyte x, GLbyte y);
5372typedef void (APIENTRYP PFNGLVERTEX2BVOESPROC) (const GLbyte *coords);
5373typedef void (APIENTRYP PFNGLVERTEX3BOESPROC) (GLbyte x, GLbyte y, GLbyte z);
5374typedef void (APIENTRYP PFNGLVERTEX3BVOESPROC) (const GLbyte *coords);
5375typedef void (APIENTRYP PFNGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z, GLbyte w);
5376typedef void (APIENTRYP PFNGLVERTEX4BVOESPROC) (const GLbyte *coords);
5377#ifdef GL_GLEXT_PROTOTYPES
5378GLAPI void APIENTRY glMultiTexCoord1bOES (GLenum texture, GLbyte s);
5379GLAPI void APIENTRY glMultiTexCoord1bvOES (GLenum texture, const GLbyte *coords);
5380GLAPI void APIENTRY glMultiTexCoord2bOES (GLenum texture, GLbyte s, GLbyte t);
5381GLAPI void APIENTRY glMultiTexCoord2bvOES (GLenum texture, const GLbyte *coords);
5382GLAPI void APIENTRY glMultiTexCoord3bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r);
5383GLAPI void APIENTRY glMultiTexCoord3bvOES (GLenum texture, const GLbyte *coords);
5384GLAPI void APIENTRY glMultiTexCoord4bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q);
5385GLAPI void APIENTRY glMultiTexCoord4bvOES (GLenum texture, const GLbyte *coords);
5386GLAPI void APIENTRY glTexCoord1bOES (GLbyte s);
5387GLAPI void APIENTRY glTexCoord1bvOES (const GLbyte *coords);
5388GLAPI void APIENTRY glTexCoord2bOES (GLbyte s, GLbyte t);
5389GLAPI void APIENTRY glTexCoord2bvOES (const GLbyte *coords);
5390GLAPI void APIENTRY glTexCoord3bOES (GLbyte s, GLbyte t, GLbyte r);
5391GLAPI void APIENTRY glTexCoord3bvOES (const GLbyte *coords);
5392GLAPI void APIENTRY glTexCoord4bOES (GLbyte s, GLbyte t, GLbyte r, GLbyte q);
5393GLAPI void APIENTRY glTexCoord4bvOES (const GLbyte *coords);
5394GLAPI void APIENTRY glVertex2bOES (GLbyte x, GLbyte y);
5395GLAPI void APIENTRY glVertex2bvOES (const GLbyte *coords);
5396GLAPI void APIENTRY glVertex3bOES (GLbyte x, GLbyte y, GLbyte z);
5397GLAPI void APIENTRY glVertex3bvOES (const GLbyte *coords);
5398GLAPI void APIENTRY glVertex4bOES (GLbyte x, GLbyte y, GLbyte z, GLbyte w);
5399GLAPI void APIENTRY glVertex4bvOES (const GLbyte *coords);
5400#endif
5401#endif /* GL_OES_byte_coordinates */
5402
5403#ifndef GL_OES_compressed_paletted_texture
5404#define GL_OES_compressed_paletted_texture 1
5405#define GL_PALETTE4_RGB8_OES 0x8B90
5406#define GL_PALETTE4_RGBA8_OES 0x8B91
5407#define GL_PALETTE4_R5_G6_B5_OES 0x8B92
5408#define GL_PALETTE4_RGBA4_OES 0x8B93
5409#define GL_PALETTE4_RGB5_A1_OES 0x8B94
5410#define GL_PALETTE8_RGB8_OES 0x8B95
5411#define GL_PALETTE8_RGBA8_OES 0x8B96
5412#define GL_PALETTE8_R5_G6_B5_OES 0x8B97
5413#define GL_PALETTE8_RGBA4_OES 0x8B98
5414#define GL_PALETTE8_RGB5_A1_OES 0x8B99
5415#endif /* GL_OES_compressed_paletted_texture */
5416
5417#ifndef GL_OES_fixed_point
5418#define GL_OES_fixed_point 1
5419typedef khronos_int32_t GLfixed;
5420#define GL_FIXED_OES 0x140C
5421typedef void (APIENTRYP PFNGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref);
5422typedef void (APIENTRYP PFNGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
5423typedef void (APIENTRYP PFNGLCLEARDEPTHXOESPROC) (GLfixed depth);
5424typedef void (APIENTRYP PFNGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation);
5425typedef void (APIENTRYP PFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
5426typedef void (APIENTRYP PFNGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f);
5427typedef void (APIENTRYP PFNGLFOGXOESPROC) (GLenum pname, GLfixed param);
5428typedef void (APIENTRYP PFNGLFOGXVOESPROC) (GLenum pname, const GLfixed *param);
5429typedef void (APIENTRYP PFNGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
5430typedef void (APIENTRYP PFNGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed *equation);
5431typedef void (APIENTRYP PFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params);
5432typedef void (APIENTRYP PFNGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
5433typedef void (APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
5434typedef void (APIENTRYP PFNGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param);
5435typedef void (APIENTRYP PFNGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *param);
5436typedef void (APIENTRYP PFNGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param);
5437typedef void (APIENTRYP PFNGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params);
5438typedef void (APIENTRYP PFNGLLINEWIDTHXOESPROC) (GLfixed width);
5439typedef void (APIENTRYP PFNGLLOADMATRIXXOESPROC) (const GLfixed *m);
5440typedef void (APIENTRYP PFNGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param);
5441typedef void (APIENTRYP PFNGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *param);
5442typedef void (APIENTRYP PFNGLMULTMATRIXXOESPROC) (const GLfixed *m);
5443typedef void (APIENTRYP PFNGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
5444typedef void (APIENTRYP PFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz);
5445typedef void (APIENTRYP PFNGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
5446typedef void (APIENTRYP PFNGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params);
5447typedef void (APIENTRYP PFNGLPOINTSIZEXOESPROC) (GLfixed size);
5448typedef void (APIENTRYP PFNGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units);
5449typedef void (APIENTRYP PFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
5450typedef void (APIENTRYP PFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z);
5451typedef void (APIENTRYP PFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param);
5452typedef void (APIENTRYP PFNGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
5453typedef void (APIENTRYP PFNGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param);
5454typedef void (APIENTRYP PFNGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
5455typedef void (APIENTRYP PFNGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z);
5456typedef void (APIENTRYP PFNGLACCUMXOESPROC) (GLenum op, GLfixed value);
5457typedef void (APIENTRYP PFNGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap);
5458typedef void (APIENTRYP PFNGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
5459typedef void (APIENTRYP PFNGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
5460typedef void (APIENTRYP PFNGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue);
5461typedef void (APIENTRYP PFNGLCOLOR3XVOESPROC) (const GLfixed *components);
5462typedef void (APIENTRYP PFNGLCOLOR4XVOESPROC) (const GLfixed *components);
5463typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param);
5464typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
5465typedef void (APIENTRYP PFNGLEVALCOORD1XOESPROC) (GLfixed u);
5466typedef void (APIENTRYP PFNGLEVALCOORD1XVOESPROC) (const GLfixed *coords);
5467typedef void (APIENTRYP PFNGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v);
5468typedef void (APIENTRYP PFNGLEVALCOORD2XVOESPROC) (const GLfixed *coords);
5469typedef void (APIENTRYP PFNGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer);
5470typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
5471typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
5472typedef void (APIENTRYP PFNGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed *params);
5473typedef void (APIENTRYP PFNGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed *v);
5474typedef void (APIENTRYP PFNGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param);
5475typedef void (APIENTRYP PFNGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed *values);
5476typedef void (APIENTRYP PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params);
5477typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params);
5478typedef void (APIENTRYP PFNGLINDEXXOESPROC) (GLfixed component);
5479typedef void (APIENTRYP PFNGLINDEXXVOESPROC) (const GLfixed *component);
5480typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed *m);
5481typedef void (APIENTRYP PFNGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points);
5482typedef void (APIENTRYP PFNGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points);
5483typedef void (APIENTRYP PFNGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2);
5484typedef void (APIENTRYP PFNGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2);
5485typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m);
5486typedef void (APIENTRYP PFNGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s);
5487typedef void (APIENTRYP PFNGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords);
5488typedef void (APIENTRYP PFNGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t);
5489typedef void (APIENTRYP PFNGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords);
5490typedef void (APIENTRYP PFNGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r);
5491typedef void (APIENTRYP PFNGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords);
5492typedef void (APIENTRYP PFNGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords);
5493typedef void (APIENTRYP PFNGLNORMAL3XVOESPROC) (const GLfixed *coords);
5494typedef void (APIENTRYP PFNGLPASSTHROUGHXOESPROC) (GLfixed token);
5495typedef void (APIENTRYP PFNGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed *values);
5496typedef void (APIENTRYP PFNGLPIXELSTOREXPROC) (GLenum pname, GLfixed param);
5497typedef void (APIENTRYP PFNGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param);
5498typedef void (APIENTRYP PFNGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor);
5499typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities);
5500typedef void (APIENTRYP PFNGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y);
5501typedef void (APIENTRYP PFNGLRASTERPOS2XVOESPROC) (const GLfixed *coords);
5502typedef void (APIENTRYP PFNGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z);
5503typedef void (APIENTRYP PFNGLRASTERPOS3XVOESPROC) (const GLfixed *coords);
5504typedef void (APIENTRYP PFNGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w);
5505typedef void (APIENTRYP PFNGLRASTERPOS4XVOESPROC) (const GLfixed *coords);
5506typedef void (APIENTRYP PFNGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2);
5507typedef void (APIENTRYP PFNGLRECTXVOESPROC) (const GLfixed *v1, const GLfixed *v2);
5508typedef void (APIENTRYP PFNGLTEXCOORD1XOESPROC) (GLfixed s);
5509typedef void (APIENTRYP PFNGLTEXCOORD1XVOESPROC) (const GLfixed *coords);
5510typedef void (APIENTRYP PFNGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t);
5511typedef void (APIENTRYP PFNGLTEXCOORD2XVOESPROC) (const GLfixed *coords);
5512typedef void (APIENTRYP PFNGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r);
5513typedef void (APIENTRYP PFNGLTEXCOORD3XVOESPROC) (const GLfixed *coords);
5514typedef void (APIENTRYP PFNGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q);
5515typedef void (APIENTRYP PFNGLTEXCOORD4XVOESPROC) (const GLfixed *coords);
5516typedef void (APIENTRYP PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param);
5517typedef void (APIENTRYP PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params);
5518typedef void (APIENTRYP PFNGLVERTEX2XOESPROC) (GLfixed x);
5519typedef void (APIENTRYP PFNGLVERTEX2XVOESPROC) (const GLfixed *coords);
5520typedef void (APIENTRYP PFNGLVERTEX3XOESPROC) (GLfixed x, GLfixed y);
5521typedef void (APIENTRYP PFNGLVERTEX3XVOESPROC) (const GLfixed *coords);
5522typedef void (APIENTRYP PFNGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z);
5523typedef void (APIENTRYP PFNGLVERTEX4XVOESPROC) (const GLfixed *coords);
5524#ifdef GL_GLEXT_PROTOTYPES
5525GLAPI void APIENTRY glAlphaFuncxOES (GLenum func, GLfixed ref);
5526GLAPI void APIENTRY glClearColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
5527GLAPI void APIENTRY glClearDepthxOES (GLfixed depth);
5528GLAPI void APIENTRY glClipPlanexOES (GLenum plane, const GLfixed *equation);
5529GLAPI void APIENTRY glColor4xOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
5530GLAPI void APIENTRY glDepthRangexOES (GLfixed n, GLfixed f);
5531GLAPI void APIENTRY glFogxOES (GLenum pname, GLfixed param);
5532GLAPI void APIENTRY glFogxvOES (GLenum pname, const GLfixed *param);
5533GLAPI void APIENTRY glFrustumxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
5534GLAPI void APIENTRY glGetClipPlanexOES (GLenum plane, GLfixed *equation);
5535GLAPI void APIENTRY glGetFixedvOES (GLenum pname, GLfixed *params);
5536GLAPI void APIENTRY glGetTexEnvxvOES (GLenum target, GLenum pname, GLfixed *params);
5537GLAPI void APIENTRY glGetTexParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
5538GLAPI void APIENTRY glLightModelxOES (GLenum pname, GLfixed param);
5539GLAPI void APIENTRY glLightModelxvOES (GLenum pname, const GLfixed *param);
5540GLAPI void APIENTRY glLightxOES (GLenum light, GLenum pname, GLfixed param);
5541GLAPI void APIENTRY glLightxvOES (GLenum light, GLenum pname, const GLfixed *params);
5542GLAPI void APIENTRY glLineWidthxOES (GLfixed width);
5543GLAPI void APIENTRY glLoadMatrixxOES (const GLfixed *m);
5544GLAPI void APIENTRY glMaterialxOES (GLenum face, GLenum pname, GLfixed param);
5545GLAPI void APIENTRY glMaterialxvOES (GLenum face, GLenum pname, const GLfixed *param);
5546GLAPI void APIENTRY glMultMatrixxOES (const GLfixed *m);
5547GLAPI void APIENTRY glMultiTexCoord4xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
5548GLAPI void APIENTRY glNormal3xOES (GLfixed nx, GLfixed ny, GLfixed nz);
5549GLAPI void APIENTRY glOrthoxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
5550GLAPI void APIENTRY glPointParameterxvOES (GLenum pname, const GLfixed *params);
5551GLAPI void APIENTRY glPointSizexOES (GLfixed size);
5552GLAPI void APIENTRY glPolygonOffsetxOES (GLfixed factor, GLfixed units);
5553GLAPI void APIENTRY glRotatexOES (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
5554GLAPI void APIENTRY glScalexOES (GLfixed x, GLfixed y, GLfixed z);
5555GLAPI void APIENTRY glTexEnvxOES (GLenum target, GLenum pname, GLfixed param);
5556GLAPI void APIENTRY glTexEnvxvOES (GLenum target, GLenum pname, const GLfixed *params);
5557GLAPI void APIENTRY glTexParameterxOES (GLenum target, GLenum pname, GLfixed param);
5558GLAPI void APIENTRY glTexParameterxvOES (GLenum target, GLenum pname, const GLfixed *params);
5559GLAPI void APIENTRY glTranslatexOES (GLfixed x, GLfixed y, GLfixed z);
5560GLAPI void APIENTRY glAccumxOES (GLenum op, GLfixed value);
5561GLAPI void APIENTRY glBitmapxOES (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap);
5562GLAPI void APIENTRY glBlendColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
5563GLAPI void APIENTRY glClearAccumxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
5564GLAPI void APIENTRY glColor3xOES (GLfixed red, GLfixed green, GLfixed blue);
5565GLAPI void APIENTRY glColor3xvOES (const GLfixed *components);
5566GLAPI void APIENTRY glColor4xvOES (const GLfixed *components);
5567GLAPI void APIENTRY glConvolutionParameterxOES (GLenum target, GLenum pname, GLfixed param);
5568GLAPI void APIENTRY glConvolutionParameterxvOES (GLenum target, GLenum pname, const GLfixed *params);
5569GLAPI void APIENTRY glEvalCoord1xOES (GLfixed u);
5570GLAPI void APIENTRY glEvalCoord1xvOES (const GLfixed *coords);
5571GLAPI void APIENTRY glEvalCoord2xOES (GLfixed u, GLfixed v);
5572GLAPI void APIENTRY glEvalCoord2xvOES (const GLfixed *coords);
5573GLAPI void APIENTRY glFeedbackBufferxOES (GLsizei n, GLenum type, const GLfixed *buffer);
5574GLAPI void APIENTRY glGetConvolutionParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
5575GLAPI void APIENTRY glGetHistogramParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
5576GLAPI void APIENTRY glGetLightxOES (GLenum light, GLenum pname, GLfixed *params);
5577GLAPI void APIENTRY glGetMapxvOES (GLenum target, GLenum query, GLfixed *v);
5578GLAPI void APIENTRY glGetMaterialxOES (GLenum face, GLenum pname, GLfixed param);
5579GLAPI void APIENTRY glGetPixelMapxv (GLenum map, GLint size, GLfixed *values);
5580GLAPI void APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params);
5581GLAPI void APIENTRY glGetTexLevelParameterxvOES (GLenum target, GLint level, GLenum pname, GLfixed *params);
5582GLAPI void APIENTRY glIndexxOES (GLfixed component);
5583GLAPI void APIENTRY glIndexxvOES (const GLfixed *component);
5584GLAPI void APIENTRY glLoadTransposeMatrixxOES (const GLfixed *m);
5585GLAPI void APIENTRY glMap1xOES (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points);
5586GLAPI void APIENTRY glMap2xOES (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points);
5587GLAPI void APIENTRY glMapGrid1xOES (GLint n, GLfixed u1, GLfixed u2);
5588GLAPI void APIENTRY glMapGrid2xOES (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2);
5589GLAPI void APIENTRY glMultTransposeMatrixxOES (const GLfixed *m);
5590GLAPI void APIENTRY glMultiTexCoord1xOES (GLenum texture, GLfixed s);
5591GLAPI void APIENTRY glMultiTexCoord1xvOES (GLenum texture, const GLfixed *coords);
5592GLAPI void APIENTRY glMultiTexCoord2xOES (GLenum texture, GLfixed s, GLfixed t);
5593GLAPI void APIENTRY glMultiTexCoord2xvOES (GLenum texture, const GLfixed *coords);
5594GLAPI void APIENTRY glMultiTexCoord3xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r);
5595GLAPI void APIENTRY glMultiTexCoord3xvOES (GLenum texture, const GLfixed *coords);
5596GLAPI void APIENTRY glMultiTexCoord4xvOES (GLenum texture, const GLfixed *coords);
5597GLAPI void APIENTRY glNormal3xvOES (const GLfixed *coords);
5598GLAPI void APIENTRY glPassThroughxOES (GLfixed token);
5599GLAPI void APIENTRY glPixelMapx (GLenum map, GLint size, const GLfixed *values);
5600GLAPI void APIENTRY glPixelStorex (GLenum pname, GLfixed param);
5601GLAPI void APIENTRY glPixelTransferxOES (GLenum pname, GLfixed param);
5602GLAPI void APIENTRY glPixelZoomxOES (GLfixed xfactor, GLfixed yfactor);
5603GLAPI void APIENTRY glPrioritizeTexturesxOES (GLsizei n, const GLuint *textures, const GLfixed *priorities);
5604GLAPI void APIENTRY glRasterPos2xOES (GLfixed x, GLfixed y);
5605GLAPI void APIENTRY glRasterPos2xvOES (const GLfixed *coords);
5606GLAPI void APIENTRY glRasterPos3xOES (GLfixed x, GLfixed y, GLfixed z);
5607GLAPI void APIENTRY glRasterPos3xvOES (const GLfixed *coords);
5608GLAPI void APIENTRY glRasterPos4xOES (GLfixed x, GLfixed y, GLfixed z, GLfixed w);
5609GLAPI void APIENTRY glRasterPos4xvOES (const GLfixed *coords);
5610GLAPI void APIENTRY glRectxOES (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2);
5611GLAPI void APIENTRY glRectxvOES (const GLfixed *v1, const GLfixed *v2);
5612GLAPI void APIENTRY glTexCoord1xOES (GLfixed s);
5613GLAPI void APIENTRY glTexCoord1xvOES (const GLfixed *coords);
5614GLAPI void APIENTRY glTexCoord2xOES (GLfixed s, GLfixed t);
5615GLAPI void APIENTRY glTexCoord2xvOES (const GLfixed *coords);
5616GLAPI void APIENTRY glTexCoord3xOES (GLfixed s, GLfixed t, GLfixed r);
5617GLAPI void APIENTRY glTexCoord3xvOES (const GLfixed *coords);
5618GLAPI void APIENTRY glTexCoord4xOES (GLfixed s, GLfixed t, GLfixed r, GLfixed q);
5619GLAPI void APIENTRY glTexCoord4xvOES (const GLfixed *coords);
5620GLAPI void APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param);
5621GLAPI void APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params);
5622GLAPI void APIENTRY glVertex2xOES (GLfixed x);
5623GLAPI void APIENTRY glVertex2xvOES (const GLfixed *coords);
5624GLAPI void APIENTRY glVertex3xOES (GLfixed x, GLfixed y);
5625GLAPI void APIENTRY glVertex3xvOES (const GLfixed *coords);
5626GLAPI void APIENTRY glVertex4xOES (GLfixed x, GLfixed y, GLfixed z);
5627GLAPI void APIENTRY glVertex4xvOES (const GLfixed *coords);
5628#endif
5629#endif /* GL_OES_fixed_point */
5630
5631#ifndef GL_OES_query_matrix
5632#define GL_OES_query_matrix 1
5633typedef GLbitfield (APIENTRYP PFNGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent);
5634#ifdef GL_GLEXT_PROTOTYPES
5635GLAPI GLbitfield APIENTRY glQueryMatrixxOES (GLfixed *mantissa, GLint *exponent);
5636#endif
5637#endif /* GL_OES_query_matrix */
5638
5639#ifndef GL_OES_read_format
5640#define GL_OES_read_format 1
5641#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A
5642#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
5643#endif /* GL_OES_read_format */
5644
5645#ifndef GL_OES_single_precision
5646#define GL_OES_single_precision 1
5647typedef void (APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampf depth);
5648typedef void (APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation);
5649typedef void (APIENTRYP PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f);
5650typedef void (APIENTRYP PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
5651typedef void (APIENTRYP PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation);
5652typedef void (APIENTRYP PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
5653#ifdef GL_GLEXT_PROTOTYPES
5654GLAPI void APIENTRY glClearDepthfOES (GLclampf depth);
5655GLAPI void APIENTRY glClipPlanefOES (GLenum plane, const GLfloat *equation);
5656GLAPI void APIENTRY glDepthRangefOES (GLclampf n, GLclampf f);
5657GLAPI void APIENTRY glFrustumfOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
5658GLAPI void APIENTRY glGetClipPlanefOES (GLenum plane, GLfloat *equation);
5659GLAPI void APIENTRY glOrthofOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
5660#endif
5661#endif /* GL_OES_single_precision */
5662
5663#ifndef GL_3DFX_multisample
5664#define GL_3DFX_multisample 1
5665#define GL_MULTISAMPLE_3DFX 0x86B2
5666#define GL_SAMPLE_BUFFERS_3DFX 0x86B3
5667#define GL_SAMPLES_3DFX 0x86B4
5668#define GL_MULTISAMPLE_BIT_3DFX 0x20000000
5669#endif /* GL_3DFX_multisample */
5670
5671#ifndef GL_3DFX_tbuffer
5672#define GL_3DFX_tbuffer 1
5673typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
5674#ifdef GL_GLEXT_PROTOTYPES
5675GLAPI void APIENTRY glTbufferMask3DFX (GLuint mask);
5676#endif
5677#endif /* GL_3DFX_tbuffer */
5678
5679#ifndef GL_3DFX_texture_compression_FXT1
5680#define GL_3DFX_texture_compression_FXT1 1
5681#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0
5682#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1
5683#endif /* GL_3DFX_texture_compression_FXT1 */
5684
5685#ifndef GL_AMD_blend_minmax_factor
5686#define GL_AMD_blend_minmax_factor 1
5687#define GL_FACTOR_MIN_AMD 0x901C
5688#define GL_FACTOR_MAX_AMD 0x901D
5689#endif /* GL_AMD_blend_minmax_factor */
5690
5691#ifndef GL_AMD_conservative_depth
5692#define GL_AMD_conservative_depth 1
5693#endif /* GL_AMD_conservative_depth */
5694
5695#ifndef GL_AMD_debug_output
5696#define GL_AMD_debug_output 1
5697typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam);
5698#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143
5699#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144
5700#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145
5701#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146
5702#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147
5703#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148
5704#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149
5705#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A
5706#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B
5707#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C
5708#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D
5709#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E
5710#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F
5711#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150
5712typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
5713typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
5714typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam);
5715typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufSize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
5716#ifdef GL_GLEXT_PROTOTYPES
5717GLAPI void APIENTRY glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
5718GLAPI void APIENTRY glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
5719GLAPI void APIENTRY glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam);
5720GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufSize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
5721#endif
5722#endif /* GL_AMD_debug_output */
5723
5724#ifndef GL_AMD_depth_clamp_separate
5725#define GL_AMD_depth_clamp_separate 1
5726#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E
5727#define GL_DEPTH_CLAMP_FAR_AMD 0x901F
5728#endif /* GL_AMD_depth_clamp_separate */
5729
5730#ifndef GL_AMD_draw_buffers_blend
5731#define GL_AMD_draw_buffers_blend 1
5732typedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst);
5733typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
5734typedef void (APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode);
5735typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
5736#ifdef GL_GLEXT_PROTOTYPES
5737GLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint buf, GLenum src, GLenum dst);
5738GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
5739GLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint buf, GLenum mode);
5740GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
5741#endif
5742#endif /* GL_AMD_draw_buffers_blend */
5743
5744#ifndef GL_AMD_framebuffer_multisample_advanced
5745#define GL_AMD_framebuffer_multisample_advanced 1
5746#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2
5747#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3
5748#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4
5749#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5
5750#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6
5751#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7
5752typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
5753typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
5754#ifdef GL_GLEXT_PROTOTYPES
5755GLAPI void APIENTRY glRenderbufferStorageMultisampleAdvancedAMD (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
5756GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleAdvancedAMD (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
5757#endif
5758#endif /* GL_AMD_framebuffer_multisample_advanced */
5759
5760#ifndef GL_AMD_framebuffer_sample_positions
5761#define GL_AMD_framebuffer_sample_positions 1
5762#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F
5763#define GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD 0x91AE
5764#define GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD 0x91AF
5765#define GL_ALL_PIXELS_AMD 0xFFFFFFFF
5766typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC) (GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values);
5767typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC) (GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values);
5768typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC) (GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values);
5769typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC) (GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values);
5770#ifdef GL_GLEXT_PROTOTYPES
5771GLAPI void APIENTRY glFramebufferSamplePositionsfvAMD (GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values);
5772GLAPI void APIENTRY glNamedFramebufferSamplePositionsfvAMD (GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values);
5773GLAPI void APIENTRY glGetFramebufferParameterfvAMD (GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values);
5774GLAPI void APIENTRY glGetNamedFramebufferParameterfvAMD (GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values);
5775#endif
5776#endif /* GL_AMD_framebuffer_sample_positions */
5777
5778#ifndef GL_AMD_gcn_shader
5779#define GL_AMD_gcn_shader 1
5780#endif /* GL_AMD_gcn_shader */
5781
5782#ifndef GL_AMD_gpu_shader_half_float
5783#define GL_AMD_gpu_shader_half_float 1
5784#define GL_FLOAT16_NV 0x8FF8
5785#define GL_FLOAT16_VEC2_NV 0x8FF9
5786#define GL_FLOAT16_VEC3_NV 0x8FFA
5787#define GL_FLOAT16_VEC4_NV 0x8FFB
5788#define GL_FLOAT16_MAT2_AMD 0x91C5
5789#define GL_FLOAT16_MAT3_AMD 0x91C6
5790#define GL_FLOAT16_MAT4_AMD 0x91C7
5791#define GL_FLOAT16_MAT2x3_AMD 0x91C8
5792#define GL_FLOAT16_MAT2x4_AMD 0x91C9
5793#define GL_FLOAT16_MAT3x2_AMD 0x91CA
5794#define GL_FLOAT16_MAT3x4_AMD 0x91CB
5795#define GL_FLOAT16_MAT4x2_AMD 0x91CC
5796#define GL_FLOAT16_MAT4x3_AMD 0x91CD
5797#endif /* GL_AMD_gpu_shader_half_float */
5798
5799#ifndef GL_AMD_gpu_shader_int16
5800#define GL_AMD_gpu_shader_int16 1
5801#endif /* GL_AMD_gpu_shader_int16 */
5802
5803#ifndef GL_AMD_gpu_shader_int64
5804#define GL_AMD_gpu_shader_int64 1
5805typedef khronos_int64_t GLint64EXT;
5806#define GL_INT64_NV 0x140E
5807#define GL_UNSIGNED_INT64_NV 0x140F
5808#define GL_INT8_NV 0x8FE0
5809#define GL_INT8_VEC2_NV 0x8FE1
5810#define GL_INT8_VEC3_NV 0x8FE2
5811#define GL_INT8_VEC4_NV 0x8FE3
5812#define GL_INT16_NV 0x8FE4
5813#define GL_INT16_VEC2_NV 0x8FE5
5814#define GL_INT16_VEC3_NV 0x8FE6
5815#define GL_INT16_VEC4_NV 0x8FE7
5816#define GL_INT64_VEC2_NV 0x8FE9
5817#define GL_INT64_VEC3_NV 0x8FEA
5818#define GL_INT64_VEC4_NV 0x8FEB
5819#define GL_UNSIGNED_INT8_NV 0x8FEC
5820#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED
5821#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE
5822#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF
5823#define GL_UNSIGNED_INT16_NV 0x8FF0
5824#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1
5825#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2
5826#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3
5827#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5
5828#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6
5829#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7
5830typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);
5831typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);
5832typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
5833typedef void (APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
5834typedef void (APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
5835typedef void (APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
5836typedef void (APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
5837typedef void (APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
5838typedef void (APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x);
5839typedef void (APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y);
5840typedef void (APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
5841typedef void (APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
5842typedef void (APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
5843typedef void (APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
5844typedef void (APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
5845typedef void (APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
5846typedef void (APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params);
5847typedef void (APIENTRYP PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT *params);
5848typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x);
5849typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
5850typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
5851typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
5852typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
5853typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
5854typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
5855typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
5856typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x);
5857typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
5858typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
5859typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
5860typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
5861typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
5862typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
5863typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
5864#ifdef GL_GLEXT_PROTOTYPES
5865GLAPI void APIENTRY glUniform1i64NV (GLint location, GLint64EXT x);
5866GLAPI void APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y);
5867GLAPI void APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
5868GLAPI void APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
5869GLAPI void APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
5870GLAPI void APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
5871GLAPI void APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
5872GLAPI void APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
5873GLAPI void APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x);
5874GLAPI void APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y);
5875GLAPI void APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
5876GLAPI void APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
5877GLAPI void APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
5878GLAPI void APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
5879GLAPI void APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
5880GLAPI void APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
5881GLAPI void APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params);
5882GLAPI void APIENTRY glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params);
5883GLAPI void APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x);
5884GLAPI void APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
5885GLAPI void APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
5886GLAPI void APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
5887GLAPI void APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
5888GLAPI void APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
5889GLAPI void APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
5890GLAPI void APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
5891GLAPI void APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x);
5892GLAPI void APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
5893GLAPI void APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
5894GLAPI void APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
5895GLAPI void APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
5896GLAPI void APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
5897GLAPI void APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
5898GLAPI void APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
5899#endif
5900#endif /* GL_AMD_gpu_shader_int64 */
5901
5902#ifndef GL_AMD_interleaved_elements
5903#define GL_AMD_interleaved_elements 1
5904#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4
5905#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5
5906typedef void (APIENTRYP PFNGLVERTEXATTRIBPARAMETERIAMDPROC) (GLuint index, GLenum pname, GLint param);
5907#ifdef GL_GLEXT_PROTOTYPES
5908GLAPI void APIENTRY glVertexAttribParameteriAMD (GLuint index, GLenum pname, GLint param);
5909#endif
5910#endif /* GL_AMD_interleaved_elements */
5911
5912#ifndef GL_AMD_multi_draw_indirect
5913#define GL_AMD_multi_draw_indirect 1
5914typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);
5915typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);
5916#ifdef GL_GLEXT_PROTOTYPES
5917GLAPI void APIENTRY glMultiDrawArraysIndirectAMD (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);
5918GLAPI void APIENTRY glMultiDrawElementsIndirectAMD (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);
5919#endif
5920#endif /* GL_AMD_multi_draw_indirect */
5921
5922#ifndef GL_AMD_name_gen_delete
5923#define GL_AMD_name_gen_delete 1
5924#define GL_DATA_BUFFER_AMD 0x9151
5925#define GL_PERFORMANCE_MONITOR_AMD 0x9152
5926#define GL_QUERY_OBJECT_AMD 0x9153
5927#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154
5928#define GL_SAMPLER_OBJECT_AMD 0x9155
5929typedef void (APIENTRYP PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint *names);
5930typedef void (APIENTRYP PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint *names);
5931typedef GLboolean (APIENTRYP PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name);
5932#ifdef GL_GLEXT_PROTOTYPES
5933GLAPI void APIENTRY glGenNamesAMD (GLenum identifier, GLuint num, GLuint *names);
5934GLAPI void APIENTRY glDeleteNamesAMD (GLenum identifier, GLuint num, const GLuint *names);
5935GLAPI GLboolean APIENTRY glIsNameAMD (GLenum identifier, GLuint name);
5936#endif
5937#endif /* GL_AMD_name_gen_delete */
5938
5939#ifndef GL_AMD_occlusion_query_event
5940#define GL_AMD_occlusion_query_event 1
5941#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F
5942#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001
5943#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002
5944#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004
5945#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008
5946#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF
5947typedef void (APIENTRYP PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param);
5948#ifdef GL_GLEXT_PROTOTYPES
5949GLAPI void APIENTRY glQueryObjectParameteruiAMD (GLenum target, GLuint id, GLenum pname, GLuint param);
5950#endif
5951#endif /* GL_AMD_occlusion_query_event */
5952
5953#ifndef GL_AMD_performance_monitor
5954#define GL_AMD_performance_monitor 1
5955#define GL_COUNTER_TYPE_AMD 0x8BC0
5956#define GL_COUNTER_RANGE_AMD 0x8BC1
5957#define GL_UNSIGNED_INT64_AMD 0x8BC2
5958#define GL_PERCENTAGE_AMD 0x8BC3
5959#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4
5960#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5
5961#define GL_PERFMON_RESULT_AMD 0x8BC6
5962typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
5963typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
5964typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
5965typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
5966typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data);
5967typedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
5968typedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
5969typedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
5970typedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
5971typedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
5972typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
5973#ifdef GL_GLEXT_PROTOTYPES
5974GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
5975GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
5976GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
5977GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
5978GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data);
5979GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
5980GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
5981GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
5982GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
5983GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint monitor);
5984GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
5985#endif
5986#endif /* GL_AMD_performance_monitor */
5987
5988#ifndef GL_AMD_pinned_memory
5989#define GL_AMD_pinned_memory 1
5990#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160
5991#endif /* GL_AMD_pinned_memory */
5992
5993#ifndef GL_AMD_query_buffer_object
5994#define GL_AMD_query_buffer_object 1
5995#define GL_QUERY_BUFFER_AMD 0x9192
5996#define GL_QUERY_BUFFER_BINDING_AMD 0x9193
5997#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194
5998#endif /* GL_AMD_query_buffer_object */
5999
6000#ifndef GL_AMD_sample_positions
6001#define GL_AMD_sample_positions 1
6002typedef void (APIENTRYP PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat *val);
6003#ifdef GL_GLEXT_PROTOTYPES
6004GLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLfloat *val);
6005#endif
6006#endif /* GL_AMD_sample_positions */
6007
6008#ifndef GL_AMD_seamless_cubemap_per_texture
6009#define GL_AMD_seamless_cubemap_per_texture 1
6010#endif /* GL_AMD_seamless_cubemap_per_texture */
6011
6012#ifndef GL_AMD_shader_atomic_counter_ops
6013#define GL_AMD_shader_atomic_counter_ops 1
6014#endif /* GL_AMD_shader_atomic_counter_ops */
6015
6016#ifndef GL_AMD_shader_ballot
6017#define GL_AMD_shader_ballot 1
6018#endif /* GL_AMD_shader_ballot */
6019
6020#ifndef GL_AMD_shader_explicit_vertex_parameter
6021#define GL_AMD_shader_explicit_vertex_parameter 1
6022#endif /* GL_AMD_shader_explicit_vertex_parameter */
6023
6024#ifndef GL_AMD_shader_gpu_shader_half_float_fetch
6025#define GL_AMD_shader_gpu_shader_half_float_fetch 1
6026#endif /* GL_AMD_shader_gpu_shader_half_float_fetch */
6027
6028#ifndef GL_AMD_shader_image_load_store_lod
6029#define GL_AMD_shader_image_load_store_lod 1
6030#endif /* GL_AMD_shader_image_load_store_lod */
6031
6032#ifndef GL_AMD_shader_stencil_export
6033#define GL_AMD_shader_stencil_export 1
6034#endif /* GL_AMD_shader_stencil_export */
6035
6036#ifndef GL_AMD_shader_trinary_minmax
6037#define GL_AMD_shader_trinary_minmax 1
6038#endif /* GL_AMD_shader_trinary_minmax */
6039
6040#ifndef GL_AMD_sparse_texture
6041#define GL_AMD_sparse_texture 1
6042#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195
6043#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196
6044#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197
6045#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198
6046#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199
6047#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A
6048#define GL_MIN_SPARSE_LEVEL_AMD 0x919B
6049#define GL_MIN_LOD_WARNING_AMD 0x919C
6050#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001
6051typedef void (APIENTRYP PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
6052typedef void (APIENTRYP PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
6053#ifdef GL_GLEXT_PROTOTYPES
6054GLAPI void APIENTRY glTexStorageSparseAMD (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
6055GLAPI void APIENTRY glTextureStorageSparseAMD (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
6056#endif
6057#endif /* GL_AMD_sparse_texture */
6058
6059#ifndef GL_AMD_stencil_operation_extended
6060#define GL_AMD_stencil_operation_extended 1
6061#define GL_SET_AMD 0x874A
6062#define GL_REPLACE_VALUE_AMD 0x874B
6063#define GL_STENCIL_OP_VALUE_AMD 0x874C
6064#define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D
6065typedef void (APIENTRYP PFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint value);
6066#ifdef GL_GLEXT_PROTOTYPES
6067GLAPI void APIENTRY glStencilOpValueAMD (GLenum face, GLuint value);
6068#endif
6069#endif /* GL_AMD_stencil_operation_extended */
6070
6071#ifndef GL_AMD_texture_gather_bias_lod
6072#define GL_AMD_texture_gather_bias_lod 1
6073#endif /* GL_AMD_texture_gather_bias_lod */
6074
6075#ifndef GL_AMD_texture_texture4
6076#define GL_AMD_texture_texture4 1
6077#endif /* GL_AMD_texture_texture4 */
6078
6079#ifndef GL_AMD_transform_feedback3_lines_triangles
6080#define GL_AMD_transform_feedback3_lines_triangles 1
6081#endif /* GL_AMD_transform_feedback3_lines_triangles */
6082
6083#ifndef GL_AMD_transform_feedback4
6084#define GL_AMD_transform_feedback4 1
6085#define GL_STREAM_RASTERIZATION_AMD 0x91A0
6086#endif /* GL_AMD_transform_feedback4 */
6087
6088#ifndef GL_AMD_vertex_shader_layer
6089#define GL_AMD_vertex_shader_layer 1
6090#endif /* GL_AMD_vertex_shader_layer */
6091
6092#ifndef GL_AMD_vertex_shader_tessellator
6093#define GL_AMD_vertex_shader_tessellator 1
6094#define GL_SAMPLER_BUFFER_AMD 0x9001
6095#define GL_INT_SAMPLER_BUFFER_AMD 0x9002
6096#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003
6097#define GL_TESSELLATION_MODE_AMD 0x9004
6098#define GL_TESSELLATION_FACTOR_AMD 0x9005
6099#define GL_DISCRETE_AMD 0x9006
6100#define GL_CONTINUOUS_AMD 0x9007
6101typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor);
6102typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);
6103#ifdef GL_GLEXT_PROTOTYPES
6104GLAPI void APIENTRY glTessellationFactorAMD (GLfloat factor);
6105GLAPI void APIENTRY glTessellationModeAMD (GLenum mode);
6106#endif
6107#endif /* GL_AMD_vertex_shader_tessellator */
6108
6109#ifndef GL_AMD_vertex_shader_viewport_index
6110#define GL_AMD_vertex_shader_viewport_index 1
6111#endif /* GL_AMD_vertex_shader_viewport_index */
6112
6113#ifndef GL_APPLE_aux_depth_stencil
6114#define GL_APPLE_aux_depth_stencil 1
6115#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14
6116#endif /* GL_APPLE_aux_depth_stencil */
6117
6118#ifndef GL_APPLE_client_storage
6119#define GL_APPLE_client_storage 1
6120#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2
6121#endif /* GL_APPLE_client_storage */
6122
6123#ifndef GL_APPLE_element_array
6124#define GL_APPLE_element_array 1
6125#define GL_ELEMENT_ARRAY_APPLE 0x8A0C
6126#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D
6127#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E
6128typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void *pointer);
6129typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);
6130typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
6131typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
6132typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
6133#ifdef GL_GLEXT_PROTOTYPES
6134GLAPI void APIENTRY glElementPointerAPPLE (GLenum type, const void *pointer);
6135GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum mode, GLint first, GLsizei count);
6136GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
6137GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
6138GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
6139#endif
6140#endif /* GL_APPLE_element_array */
6141
6142#ifndef GL_APPLE_fence
6143#define GL_APPLE_fence 1
6144#define GL_DRAW_PIXELS_APPLE 0x8A0A
6145#define GL_FENCE_APPLE 0x8A0B
6146typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences);
6147typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences);
6148typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence);
6149typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence);
6150typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence);
6151typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence);
6152typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name);
6153typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);
6154#ifdef GL_GLEXT_PROTOTYPES
6155GLAPI void APIENTRY glGenFencesAPPLE (GLsizei n, GLuint *fences);
6156GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei n, const GLuint *fences);
6157GLAPI void APIENTRY glSetFenceAPPLE (GLuint fence);
6158GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint fence);
6159GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint fence);
6160GLAPI void APIENTRY glFinishFenceAPPLE (GLuint fence);
6161GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum object, GLuint name);
6162GLAPI void APIENTRY glFinishObjectAPPLE (GLenum object, GLint name);
6163#endif
6164#endif /* GL_APPLE_fence */
6165
6166#ifndef GL_APPLE_float_pixels
6167#define GL_APPLE_float_pixels 1
6168#define GL_HALF_APPLE 0x140B
6169#define GL_RGBA_FLOAT32_APPLE 0x8814
6170#define GL_RGB_FLOAT32_APPLE 0x8815
6171#define GL_ALPHA_FLOAT32_APPLE 0x8816
6172#define GL_INTENSITY_FLOAT32_APPLE 0x8817
6173#define GL_LUMINANCE_FLOAT32_APPLE 0x8818
6174#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819
6175#define GL_RGBA_FLOAT16_APPLE 0x881A
6176#define GL_RGB_FLOAT16_APPLE 0x881B
6177#define GL_ALPHA_FLOAT16_APPLE 0x881C
6178#define GL_INTENSITY_FLOAT16_APPLE 0x881D
6179#define GL_LUMINANCE_FLOAT16_APPLE 0x881E
6180#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F
6181#define GL_COLOR_FLOAT_APPLE 0x8A0F
6182#endif /* GL_APPLE_float_pixels */
6183
6184#ifndef GL_APPLE_flush_buffer_range
6185#define GL_APPLE_flush_buffer_range 1
6186#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12
6187#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13
6188typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param);
6189typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size);
6190#ifdef GL_GLEXT_PROTOTYPES
6191GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum target, GLenum pname, GLint param);
6192GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size);
6193#endif
6194#endif /* GL_APPLE_flush_buffer_range */
6195
6196#ifndef GL_APPLE_object_purgeable
6197#define GL_APPLE_object_purgeable 1
6198#define GL_BUFFER_OBJECT_APPLE 0x85B3
6199#define GL_RELEASED_APPLE 0x8A19
6200#define GL_VOLATILE_APPLE 0x8A1A
6201#define GL_RETAINED_APPLE 0x8A1B
6202#define GL_UNDEFINED_APPLE 0x8A1C
6203#define GL_PURGEABLE_APPLE 0x8A1D
6204typedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
6205typedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
6206typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint *params);
6207#ifdef GL_GLEXT_PROTOTYPES
6208GLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
6209GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
6210GLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum objectType, GLuint name, GLenum pname, GLint *params);
6211#endif
6212#endif /* GL_APPLE_object_purgeable */
6213
6214#ifndef GL_APPLE_rgb_422
6215#define GL_APPLE_rgb_422 1
6216#define GL_RGB_422_APPLE 0x8A1F
6217#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
6218#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
6219#define GL_RGB_RAW_422_APPLE 0x8A51
6220#endif /* GL_APPLE_rgb_422 */
6221
6222#ifndef GL_APPLE_row_bytes
6223#define GL_APPLE_row_bytes 1
6224#define GL_PACK_ROW_BYTES_APPLE 0x8A15
6225#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16
6226#endif /* GL_APPLE_row_bytes */
6227
6228#ifndef GL_APPLE_specular_vector
6229#define GL_APPLE_specular_vector 1
6230#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
6231#endif /* GL_APPLE_specular_vector */
6232
6233#ifndef GL_APPLE_texture_range
6234#define GL_APPLE_texture_range 1
6235#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7
6236#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8
6237#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC
6238#define GL_STORAGE_PRIVATE_APPLE 0x85BD
6239#define GL_STORAGE_CACHED_APPLE 0x85BE
6240#define GL_STORAGE_SHARED_APPLE 0x85BF
6241typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const void *pointer);
6242typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, void **params);
6243#ifdef GL_GLEXT_PROTOTYPES
6244GLAPI void APIENTRY glTextureRangeAPPLE (GLenum target, GLsizei length, const void *pointer);
6245GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, void **params);
6246#endif
6247#endif /* GL_APPLE_texture_range */
6248
6249#ifndef GL_APPLE_transform_hint
6250#define GL_APPLE_transform_hint 1
6251#define GL_TRANSFORM_HINT_APPLE 0x85B1
6252#endif /* GL_APPLE_transform_hint */
6253
6254#ifndef GL_APPLE_vertex_array_object
6255#define GL_APPLE_vertex_array_object 1
6256#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5
6257typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
6258typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);
6259typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays);
6260typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
6261#ifdef GL_GLEXT_PROTOTYPES
6262GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint array);
6263GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei n, const GLuint *arrays);
6264GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei n, GLuint *arrays);
6265GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint array);
6266#endif
6267#endif /* GL_APPLE_vertex_array_object */
6268
6269#ifndef GL_APPLE_vertex_array_range
6270#define GL_APPLE_vertex_array_range 1
6271#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D
6272#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
6273#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
6274#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
6275#define GL_STORAGE_CLIENT_APPLE 0x85B4
6276typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);
6277typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);
6278typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param);
6279#ifdef GL_GLEXT_PROTOTYPES
6280GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei length, void *pointer);
6281GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei length, void *pointer);
6282GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum pname, GLint param);
6283#endif
6284#endif /* GL_APPLE_vertex_array_range */
6285
6286#ifndef GL_APPLE_vertex_program_evaluators
6287#define GL_APPLE_vertex_program_evaluators 1
6288#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00
6289#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01
6290#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02
6291#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03
6292#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04
6293#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05
6294#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06
6295#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07
6296#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08
6297#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09
6298typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
6299typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
6300typedef GLboolean (APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname);
6301typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
6302typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
6303typedef 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);
6304typedef 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);
6305#ifdef GL_GLEXT_PROTOTYPES
6306GLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint index, GLenum pname);
6307GLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint index, GLenum pname);
6308GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint index, GLenum pname);
6309GLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
6310GLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
6311GLAPI 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);
6312GLAPI 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);
6313#endif
6314#endif /* GL_APPLE_vertex_program_evaluators */
6315
6316#ifndef GL_APPLE_ycbcr_422
6317#define GL_APPLE_ycbcr_422 1
6318#define GL_YCBCR_422_APPLE 0x85B9
6319#endif /* GL_APPLE_ycbcr_422 */
6320
6321#ifndef GL_ATI_draw_buffers
6322#define GL_ATI_draw_buffers 1
6323#define GL_MAX_DRAW_BUFFERS_ATI 0x8824
6324#define GL_DRAW_BUFFER0_ATI 0x8825
6325#define GL_DRAW_BUFFER1_ATI 0x8826
6326#define GL_DRAW_BUFFER2_ATI 0x8827
6327#define GL_DRAW_BUFFER3_ATI 0x8828
6328#define GL_DRAW_BUFFER4_ATI 0x8829
6329#define GL_DRAW_BUFFER5_ATI 0x882A
6330#define GL_DRAW_BUFFER6_ATI 0x882B
6331#define GL_DRAW_BUFFER7_ATI 0x882C
6332#define GL_DRAW_BUFFER8_ATI 0x882D
6333#define GL_DRAW_BUFFER9_ATI 0x882E
6334#define GL_DRAW_BUFFER10_ATI 0x882F
6335#define GL_DRAW_BUFFER11_ATI 0x8830
6336#define GL_DRAW_BUFFER12_ATI 0x8831
6337#define GL_DRAW_BUFFER13_ATI 0x8832
6338#define GL_DRAW_BUFFER14_ATI 0x8833
6339#define GL_DRAW_BUFFER15_ATI 0x8834
6340typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs);
6341#ifdef GL_GLEXT_PROTOTYPES
6342GLAPI void APIENTRY glDrawBuffersATI (GLsizei n, const GLenum *bufs);
6343#endif
6344#endif /* GL_ATI_draw_buffers */
6345
6346#ifndef GL_ATI_element_array
6347#define GL_ATI_element_array 1
6348#define GL_ELEMENT_ARRAY_ATI 0x8768
6349#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769
6350#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A
6351typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void *pointer);
6352typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
6353typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count);
6354#ifdef GL_GLEXT_PROTOTYPES
6355GLAPI void APIENTRY glElementPointerATI (GLenum type, const void *pointer);
6356GLAPI void APIENTRY glDrawElementArrayATI (GLenum mode, GLsizei count);
6357GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count);
6358#endif
6359#endif /* GL_ATI_element_array */
6360
6361#ifndef GL_ATI_envmap_bumpmap
6362#define GL_ATI_envmap_bumpmap 1
6363#define GL_BUMP_ROT_MATRIX_ATI 0x8775
6364#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776
6365#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777
6366#define GL_BUMP_TEX_UNITS_ATI 0x8778
6367#define GL_DUDV_ATI 0x8779
6368#define GL_DU8DV8_ATI 0x877A
6369#define GL_BUMP_ENVMAP_ATI 0x877B
6370#define GL_BUMP_TARGET_ATI 0x877C
6371typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param);
6372typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param);
6373typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);
6374typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);
6375#ifdef GL_GLEXT_PROTOTYPES
6376GLAPI void APIENTRY glTexBumpParameterivATI (GLenum pname, const GLint *param);
6377GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum pname, const GLfloat *param);
6378GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum pname, GLint *param);
6379GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum pname, GLfloat *param);
6380#endif
6381#endif /* GL_ATI_envmap_bumpmap */
6382
6383#ifndef GL_ATI_fragment_shader
6384#define GL_ATI_fragment_shader 1
6385#define GL_FRAGMENT_SHADER_ATI 0x8920
6386#define GL_REG_0_ATI 0x8921
6387#define GL_REG_1_ATI 0x8922
6388#define GL_REG_2_ATI 0x8923
6389#define GL_REG_3_ATI 0x8924
6390#define GL_REG_4_ATI 0x8925
6391#define GL_REG_5_ATI 0x8926
6392#define GL_REG_6_ATI 0x8927
6393#define GL_REG_7_ATI 0x8928
6394#define GL_REG_8_ATI 0x8929
6395#define GL_REG_9_ATI 0x892A
6396#define GL_REG_10_ATI 0x892B
6397#define GL_REG_11_ATI 0x892C
6398#define GL_REG_12_ATI 0x892D
6399#define GL_REG_13_ATI 0x892E
6400#define GL_REG_14_ATI 0x892F
6401#define GL_REG_15_ATI 0x8930
6402#define GL_REG_16_ATI 0x8931
6403#define GL_REG_17_ATI 0x8932
6404#define GL_REG_18_ATI 0x8933
6405#define GL_REG_19_ATI 0x8934
6406#define GL_REG_20_ATI 0x8935
6407#define GL_REG_21_ATI 0x8936
6408#define GL_REG_22_ATI 0x8937
6409#define GL_REG_23_ATI 0x8938
6410#define GL_REG_24_ATI 0x8939
6411#define GL_REG_25_ATI 0x893A
6412#define GL_REG_26_ATI 0x893B
6413#define GL_REG_27_ATI 0x893C
6414#define GL_REG_28_ATI 0x893D
6415#define GL_REG_29_ATI 0x893E
6416#define GL_REG_30_ATI 0x893F
6417#define GL_REG_31_ATI 0x8940
6418#define GL_CON_0_ATI 0x8941
6419#define GL_CON_1_ATI 0x8942
6420#define GL_CON_2_ATI 0x8943
6421#define GL_CON_3_ATI 0x8944
6422#define GL_CON_4_ATI 0x8945
6423#define GL_CON_5_ATI 0x8946
6424#define GL_CON_6_ATI 0x8947
6425#define GL_CON_7_ATI 0x8948
6426#define GL_CON_8_ATI 0x8949
6427#define GL_CON_9_ATI 0x894A
6428#define GL_CON_10_ATI 0x894B
6429#define GL_CON_11_ATI 0x894C
6430#define GL_CON_12_ATI 0x894D
6431#define GL_CON_13_ATI 0x894E
6432#define GL_CON_14_ATI 0x894F
6433#define GL_CON_15_ATI 0x8950
6434#define GL_CON_16_ATI 0x8951
6435#define GL_CON_17_ATI 0x8952
6436#define GL_CON_18_ATI 0x8953
6437#define GL_CON_19_ATI 0x8954
6438#define GL_CON_20_ATI 0x8955
6439#define GL_CON_21_ATI 0x8956
6440#define GL_CON_22_ATI 0x8957
6441#define GL_CON_23_ATI 0x8958
6442#define GL_CON_24_ATI 0x8959
6443#define GL_CON_25_ATI 0x895A
6444#define GL_CON_26_ATI 0x895B
6445#define GL_CON_27_ATI 0x895C
6446#define GL_CON_28_ATI 0x895D
6447#define GL_CON_29_ATI 0x895E
6448#define GL_CON_30_ATI 0x895F
6449#define GL_CON_31_ATI 0x8960
6450#define GL_MOV_ATI 0x8961
6451#define GL_ADD_ATI 0x8963
6452#define GL_MUL_ATI 0x8964
6453#define GL_SUB_ATI 0x8965
6454#define GL_DOT3_ATI 0x8966
6455#define GL_DOT4_ATI 0x8967
6456#define GL_MAD_ATI 0x8968
6457#define GL_LERP_ATI 0x8969
6458#define GL_CND_ATI 0x896A
6459#define GL_CND0_ATI 0x896B
6460#define GL_DOT2_ADD_ATI 0x896C
6461#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D
6462#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E
6463#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F
6464#define GL_NUM_PASSES_ATI 0x8970
6465#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971
6466#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972
6467#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
6468#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974
6469#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975
6470#define GL_SWIZZLE_STR_ATI 0x8976
6471#define GL_SWIZZLE_STQ_ATI 0x8977
6472#define GL_SWIZZLE_STR_DR_ATI 0x8978
6473#define GL_SWIZZLE_STQ_DQ_ATI 0x8979
6474#define GL_SWIZZLE_STRQ_ATI 0x897A
6475#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B
6476#define GL_RED_BIT_ATI 0x00000001
6477#define GL_GREEN_BIT_ATI 0x00000002
6478#define GL_BLUE_BIT_ATI 0x00000004
6479#define GL_2X_BIT_ATI 0x00000001
6480#define GL_4X_BIT_ATI 0x00000002
6481#define GL_8X_BIT_ATI 0x00000004
6482#define GL_HALF_BIT_ATI 0x00000008
6483#define GL_QUARTER_BIT_ATI 0x00000010
6484#define GL_EIGHTH_BIT_ATI 0x00000020
6485#define GL_SATURATE_BIT_ATI 0x00000040
6486#define GL_COMP_BIT_ATI 0x00000002
6487#define GL_NEGATE_BIT_ATI 0x00000004
6488#define GL_BIAS_BIT_ATI 0x00000008
6489typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
6490typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
6491typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id);
6492typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void);
6493typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void);
6494typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle);
6495typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle);
6496typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
6497typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
6498typedef 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);
6499typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
6500typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
6501typedef 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);
6502typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value);
6503#ifdef GL_GLEXT_PROTOTYPES
6504GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint range);
6505GLAPI void APIENTRY glBindFragmentShaderATI (GLuint id);
6506GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint id);
6507GLAPI void APIENTRY glBeginFragmentShaderATI (void);
6508GLAPI void APIENTRY glEndFragmentShaderATI (void);
6509GLAPI void APIENTRY glPassTexCoordATI (GLuint dst, GLuint coord, GLenum swizzle);
6510GLAPI void APIENTRY glSampleMapATI (GLuint dst, GLuint interp, GLenum swizzle);
6511GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
6512GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
6513GLAPI 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);
6514GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
6515GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
6516GLAPI 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);
6517GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint dst, const GLfloat *value);
6518#endif
6519#endif /* GL_ATI_fragment_shader */
6520
6521#ifndef GL_ATI_map_object_buffer
6522#define GL_ATI_map_object_buffer 1
6523typedef void *(APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer);
6524typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
6525#ifdef GL_GLEXT_PROTOTYPES
6526GLAPI void *APIENTRY glMapObjectBufferATI (GLuint buffer);
6527GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint buffer);
6528#endif
6529#endif /* GL_ATI_map_object_buffer */
6530
6531#ifndef GL_ATI_meminfo
6532#define GL_ATI_meminfo 1
6533#define GL_VBO_FREE_MEMORY_ATI 0x87FB
6534#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC
6535#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD
6536#endif /* GL_ATI_meminfo */
6537
6538#ifndef GL_ATI_pixel_format_float
6539#define GL_ATI_pixel_format_float 1
6540#define GL_RGBA_FLOAT_MODE_ATI 0x8820
6541#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
6542#endif /* GL_ATI_pixel_format_float */
6543
6544#ifndef GL_ATI_pn_triangles
6545#define GL_ATI_pn_triangles 1
6546#define GL_PN_TRIANGLES_ATI 0x87F0
6547#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
6548#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2
6549#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3
6550#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
6551#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
6552#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
6553#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
6554#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
6555typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
6556typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
6557#ifdef GL_GLEXT_PROTOTYPES
6558GLAPI void APIENTRY glPNTrianglesiATI (GLenum pname, GLint param);
6559GLAPI void APIENTRY glPNTrianglesfATI (GLenum pname, GLfloat param);
6560#endif
6561#endif /* GL_ATI_pn_triangles */
6562
6563#ifndef GL_ATI_separate_stencil
6564#define GL_ATI_separate_stencil 1
6565#define GL_STENCIL_BACK_FUNC_ATI 0x8800
6566#define GL_STENCIL_BACK_FAIL_ATI 0x8801
6567#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
6568#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
6569typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
6570typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
6571#ifdef GL_GLEXT_PROTOTYPES
6572GLAPI void APIENTRY glStencilOpSeparateATI (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
6573GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
6574#endif
6575#endif /* GL_ATI_separate_stencil */
6576
6577#ifndef GL_ATI_text_fragment_shader
6578#define GL_ATI_text_fragment_shader 1
6579#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200
6580#endif /* GL_ATI_text_fragment_shader */
6581
6582#ifndef GL_ATI_texture_env_combine3
6583#define GL_ATI_texture_env_combine3 1
6584#define GL_MODULATE_ADD_ATI 0x8744
6585#define GL_MODULATE_SIGNED_ADD_ATI 0x8745
6586#define GL_MODULATE_SUBTRACT_ATI 0x8746
6587#endif /* GL_ATI_texture_env_combine3 */
6588
6589#ifndef GL_ATI_texture_float
6590#define GL_ATI_texture_float 1
6591#define GL_RGBA_FLOAT32_ATI 0x8814
6592#define GL_RGB_FLOAT32_ATI 0x8815
6593#define GL_ALPHA_FLOAT32_ATI 0x8816
6594#define GL_INTENSITY_FLOAT32_ATI 0x8817
6595#define GL_LUMINANCE_FLOAT32_ATI 0x8818
6596#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819
6597#define GL_RGBA_FLOAT16_ATI 0x881A
6598#define GL_RGB_FLOAT16_ATI 0x881B
6599#define GL_ALPHA_FLOAT16_ATI 0x881C
6600#define GL_INTENSITY_FLOAT16_ATI 0x881D
6601#define GL_LUMINANCE_FLOAT16_ATI 0x881E
6602#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F
6603#endif /* GL_ATI_texture_float */
6604
6605#ifndef GL_ATI_texture_mirror_once
6606#define GL_ATI_texture_mirror_once 1
6607#define GL_MIRROR_CLAMP_ATI 0x8742
6608#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743
6609#endif /* GL_ATI_texture_mirror_once */
6610
6611#ifndef GL_ATI_vertex_array_object
6612#define GL_ATI_vertex_array_object 1
6613#define GL_STATIC_ATI 0x8760
6614#define GL_DYNAMIC_ATI 0x8761
6615#define GL_PRESERVE_ATI 0x8762
6616#define GL_DISCARD_ATI 0x8763
6617#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764
6618#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765
6619#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766
6620#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767
6621typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void *pointer, GLenum usage);
6622typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
6623typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve);
6624typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params);
6625typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params);
6626typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer);
6627typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
6628typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params);
6629typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params);
6630typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
6631typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params);
6632typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params);
6633#ifdef GL_GLEXT_PROTOTYPES
6634GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei size, const void *pointer, GLenum usage);
6635GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint buffer);
6636GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve);
6637GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint buffer, GLenum pname, GLfloat *params);
6638GLAPI void APIENTRY glGetObjectBufferivATI (GLuint buffer, GLenum pname, GLint *params);
6639GLAPI void APIENTRY glFreeObjectBufferATI (GLuint buffer);
6640GLAPI void APIENTRY glArrayObjectATI (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
6641GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum array, GLenum pname, GLfloat *params);
6642GLAPI void APIENTRY glGetArrayObjectivATI (GLenum array, GLenum pname, GLint *params);
6643GLAPI void APIENTRY glVariantArrayObjectATI (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
6644GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint id, GLenum pname, GLfloat *params);
6645GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint id, GLenum pname, GLint *params);
6646#endif
6647#endif /* GL_ATI_vertex_array_object */
6648
6649#ifndef GL_ATI_vertex_attrib_array_object
6650#define GL_ATI_vertex_attrib_array_object 1
6651typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
6652typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params);
6653typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params);
6654#ifdef GL_GLEXT_PROTOTYPES
6655GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
6656GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint index, GLenum pname, GLfloat *params);
6657GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint index, GLenum pname, GLint *params);
6658#endif
6659#endif /* GL_ATI_vertex_attrib_array_object */
6660
6661#ifndef GL_ATI_vertex_streams
6662#define GL_ATI_vertex_streams 1
6663#define GL_MAX_VERTEX_STREAMS_ATI 0x876B
6664#define GL_VERTEX_STREAM0_ATI 0x876C
6665#define GL_VERTEX_STREAM1_ATI 0x876D
6666#define GL_VERTEX_STREAM2_ATI 0x876E
6667#define GL_VERTEX_STREAM3_ATI 0x876F
6668#define GL_VERTEX_STREAM4_ATI 0x8770
6669#define GL_VERTEX_STREAM5_ATI 0x8771
6670#define GL_VERTEX_STREAM6_ATI 0x8772
6671#define GL_VERTEX_STREAM7_ATI 0x8773
6672#define GL_VERTEX_SOURCE_ATI 0x8774
6673typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
6674typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);
6675typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x);
6676typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords);
6677typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x);
6678typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords);
6679typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x);
6680typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords);
6681typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y);
6682typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords);
6683typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y);
6684typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords);
6685typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y);
6686typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords);
6687typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y);
6688typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords);
6689typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
6690typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
6691typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
6692typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
6693typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
6694typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
6695typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
6696typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
6697typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
6698typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords);
6699typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w);
6700typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords);
6701typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
6702typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords);
6703typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
6704typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords);
6705typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
6706typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords);
6707typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
6708typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
6709typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz);
6710typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
6711typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
6712typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
6713typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
6714typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
6715typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream);
6716typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param);
6717typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param);
6718#ifdef GL_GLEXT_PROTOTYPES
6719GLAPI void APIENTRY glVertexStream1sATI (GLenum stream, GLshort x);
6720GLAPI void APIENTRY glVertexStream1svATI (GLenum stream, const GLshort *coords);
6721GLAPI void APIENTRY glVertexStream1iATI (GLenum stream, GLint x);
6722GLAPI void APIENTRY glVertexStream1ivATI (GLenum stream, const GLint *coords);
6723GLAPI void APIENTRY glVertexStream1fATI (GLenum stream, GLfloat x);
6724GLAPI void APIENTRY glVertexStream1fvATI (GLenum stream, const GLfloat *coords);
6725GLAPI void APIENTRY glVertexStream1dATI (GLenum stream, GLdouble x);
6726GLAPI void APIENTRY glVertexStream1dvATI (GLenum stream, const GLdouble *coords);
6727GLAPI void APIENTRY glVertexStream2sATI (GLenum stream, GLshort x, GLshort y);
6728GLAPI void APIENTRY glVertexStream2svATI (GLenum stream, const GLshort *coords);
6729GLAPI void APIENTRY glVertexStream2iATI (GLenum stream, GLint x, GLint y);
6730GLAPI void APIENTRY glVertexStream2ivATI (GLenum stream, const GLint *coords);
6731GLAPI void APIENTRY glVertexStream2fATI (GLenum stream, GLfloat x, GLfloat y);
6732GLAPI void APIENTRY glVertexStream2fvATI (GLenum stream, const GLfloat *coords);
6733GLAPI void APIENTRY glVertexStream2dATI (GLenum stream, GLdouble x, GLdouble y);
6734GLAPI void APIENTRY glVertexStream2dvATI (GLenum stream, const GLdouble *coords);
6735GLAPI void APIENTRY glVertexStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z);
6736GLAPI void APIENTRY glVertexStream3svATI (GLenum stream, const GLshort *coords);
6737GLAPI void APIENTRY glVertexStream3iATI (GLenum stream, GLint x, GLint y, GLint z);
6738GLAPI void APIENTRY glVertexStream3ivATI (GLenum stream, const GLint *coords);
6739GLAPI void APIENTRY glVertexStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
6740GLAPI void APIENTRY glVertexStream3fvATI (GLenum stream, const GLfloat *coords);
6741GLAPI void APIENTRY glVertexStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
6742GLAPI void APIENTRY glVertexStream3dvATI (GLenum stream, const GLdouble *coords);
6743GLAPI void APIENTRY glVertexStream4sATI (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
6744GLAPI void APIENTRY glVertexStream4svATI (GLenum stream, const GLshort *coords);
6745GLAPI void APIENTRY glVertexStream4iATI (GLenum stream, GLint x, GLint y, GLint z, GLint w);
6746GLAPI void APIENTRY glVertexStream4ivATI (GLenum stream, const GLint *coords);
6747GLAPI void APIENTRY glVertexStream4fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
6748GLAPI void APIENTRY glVertexStream4fvATI (GLenum stream, const GLfloat *coords);
6749GLAPI void APIENTRY glVertexStream4dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
6750GLAPI void APIENTRY glVertexStream4dvATI (GLenum stream, const GLdouble *coords);
6751GLAPI void APIENTRY glNormalStream3bATI (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
6752GLAPI void APIENTRY glNormalStream3bvATI (GLenum stream, const GLbyte *coords);
6753GLAPI void APIENTRY glNormalStream3sATI (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
6754GLAPI void APIENTRY glNormalStream3svATI (GLenum stream, const GLshort *coords);
6755GLAPI void APIENTRY glNormalStream3iATI (GLenum stream, GLint nx, GLint ny, GLint nz);
6756GLAPI void APIENTRY glNormalStream3ivATI (GLenum stream, const GLint *coords);
6757GLAPI void APIENTRY glNormalStream3fATI (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
6758GLAPI void APIENTRY glNormalStream3fvATI (GLenum stream, const GLfloat *coords);
6759GLAPI void APIENTRY glNormalStream3dATI (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
6760GLAPI void APIENTRY glNormalStream3dvATI (GLenum stream, const GLdouble *coords);
6761GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum stream);
6762GLAPI void APIENTRY glVertexBlendEnviATI (GLenum pname, GLint param);
6763GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum pname, GLfloat param);
6764#endif
6765#endif /* GL_ATI_vertex_streams */
6766
6767#ifndef GL_EXT_422_pixels
6768#define GL_EXT_422_pixels 1
6769#define GL_422_EXT 0x80CC
6770#define GL_422_REV_EXT 0x80CD
6771#define GL_422_AVERAGE_EXT 0x80CE
6772#define GL_422_REV_AVERAGE_EXT 0x80CF
6773#endif /* GL_EXT_422_pixels */
6774
6775#ifndef GL_EXT_EGL_image_storage
6776#define GL_EXT_EGL_image_storage 1
6777typedef void *GLeglImageOES;
6778typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list);
6779typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list);
6780#ifdef GL_GLEXT_PROTOTYPES
6781GLAPI void APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list);
6782GLAPI void APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list);
6783#endif
6784#endif /* GL_EXT_EGL_image_storage */
6785
6786#ifndef GL_EXT_EGL_sync
6787#define GL_EXT_EGL_sync 1
6788#endif /* GL_EXT_EGL_sync */
6789
6790#ifndef GL_EXT_abgr
6791#define GL_EXT_abgr 1
6792#define GL_ABGR_EXT 0x8000
6793#endif /* GL_EXT_abgr */
6794
6795#ifndef GL_EXT_bgra
6796#define GL_EXT_bgra 1
6797#define GL_BGR_EXT 0x80E0
6798#define GL_BGRA_EXT 0x80E1
6799#endif /* GL_EXT_bgra */
6800
6801#ifndef GL_EXT_bindable_uniform
6802#define GL_EXT_bindable_uniform 1
6803#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2
6804#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3
6805#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4
6806#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED
6807#define GL_UNIFORM_BUFFER_EXT 0x8DEE
6808#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF
6809typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);
6810typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);
6811typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location);
6812#ifdef GL_GLEXT_PROTOTYPES
6813GLAPI void APIENTRY glUniformBufferEXT (GLuint program, GLint location, GLuint buffer);
6814GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint program, GLint location);
6815GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint program, GLint location);
6816#endif
6817#endif /* GL_EXT_bindable_uniform */
6818
6819#ifndef GL_EXT_blend_color
6820#define GL_EXT_blend_color 1
6821#define GL_CONSTANT_COLOR_EXT 0x8001
6822#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002
6823#define GL_CONSTANT_ALPHA_EXT 0x8003
6824#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004
6825#define GL_BLEND_COLOR_EXT 0x8005
6826typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
6827#ifdef GL_GLEXT_PROTOTYPES
6828GLAPI void APIENTRY glBlendColorEXT (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
6829#endif
6830#endif /* GL_EXT_blend_color */
6831
6832#ifndef GL_EXT_blend_equation_separate
6833#define GL_EXT_blend_equation_separate 1
6834#define GL_BLEND_EQUATION_RGB_EXT 0x8009
6835#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D
6836typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);
6837#ifdef GL_GLEXT_PROTOTYPES
6838GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum modeRGB, GLenum modeAlpha);
6839#endif
6840#endif /* GL_EXT_blend_equation_separate */
6841
6842#ifndef GL_EXT_blend_func_separate
6843#define GL_EXT_blend_func_separate 1
6844#define GL_BLEND_DST_RGB_EXT 0x80C8
6845#define GL_BLEND_SRC_RGB_EXT 0x80C9
6846#define GL_BLEND_DST_ALPHA_EXT 0x80CA
6847#define GL_BLEND_SRC_ALPHA_EXT 0x80CB
6848typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
6849#ifdef GL_GLEXT_PROTOTYPES
6850GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
6851#endif
6852#endif /* GL_EXT_blend_func_separate */
6853
6854#ifndef GL_EXT_blend_logic_op
6855#define GL_EXT_blend_logic_op 1
6856#endif /* GL_EXT_blend_logic_op */
6857
6858#ifndef GL_EXT_blend_minmax
6859#define GL_EXT_blend_minmax 1
6860#define GL_MIN_EXT 0x8007
6861#define GL_MAX_EXT 0x8008
6862#define GL_FUNC_ADD_EXT 0x8006
6863#define GL_BLEND_EQUATION_EXT 0x8009
6864typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
6865#ifdef GL_GLEXT_PROTOTYPES
6866GLAPI void APIENTRY glBlendEquationEXT (GLenum mode);
6867#endif
6868#endif /* GL_EXT_blend_minmax */
6869
6870#ifndef GL_EXT_blend_subtract
6871#define GL_EXT_blend_subtract 1
6872#define GL_FUNC_SUBTRACT_EXT 0x800A
6873#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B
6874#endif /* GL_EXT_blend_subtract */
6875
6876#ifndef GL_EXT_clip_volume_hint
6877#define GL_EXT_clip_volume_hint 1
6878#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0
6879#endif /* GL_EXT_clip_volume_hint */
6880
6881#ifndef GL_EXT_cmyka
6882#define GL_EXT_cmyka 1
6883#define GL_CMYK_EXT 0x800C
6884#define GL_CMYKA_EXT 0x800D
6885#define GL_PACK_CMYK_HINT_EXT 0x800E
6886#define GL_UNPACK_CMYK_HINT_EXT 0x800F
6887#endif /* GL_EXT_cmyka */
6888
6889#ifndef GL_EXT_color_subtable
6890#define GL_EXT_color_subtable 1
6891typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
6892typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
6893#ifdef GL_GLEXT_PROTOTYPES
6894GLAPI void APIENTRY glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
6895GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
6896#endif
6897#endif /* GL_EXT_color_subtable */
6898
6899#ifndef GL_EXT_compiled_vertex_array
6900#define GL_EXT_compiled_vertex_array 1
6901#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8
6902#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9
6903typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
6904typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void);
6905#ifdef GL_GLEXT_PROTOTYPES
6906GLAPI void APIENTRY glLockArraysEXT (GLint first, GLsizei count);
6907GLAPI void APIENTRY glUnlockArraysEXT (void);
6908#endif
6909#endif /* GL_EXT_compiled_vertex_array */
6910
6911#ifndef GL_EXT_convolution
6912#define GL_EXT_convolution 1
6913#define GL_CONVOLUTION_1D_EXT 0x8010
6914#define GL_CONVOLUTION_2D_EXT 0x8011
6915#define GL_SEPARABLE_2D_EXT 0x8012
6916#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013
6917#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014
6918#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015
6919#define GL_REDUCE_EXT 0x8016
6920#define GL_CONVOLUTION_FORMAT_EXT 0x8017
6921#define GL_CONVOLUTION_WIDTH_EXT 0x8018
6922#define GL_CONVOLUTION_HEIGHT_EXT 0x8019
6923#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A
6924#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B
6925#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
6926#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
6927#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
6928#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
6929#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020
6930#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
6931#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
6932#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
6933typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
6934typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
6935typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params);
6936typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
6937typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params);
6938typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
6939typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
6940typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
6941typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *image);
6942typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
6943typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
6944typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
6945typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
6946#ifdef GL_GLEXT_PROTOTYPES
6947GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
6948GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
6949GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum target, GLenum pname, GLfloat params);
6950GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
6951GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum target, GLenum pname, GLint params);
6952GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum target, GLenum pname, const GLint *params);
6953GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
6954GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
6955GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum target, GLenum format, GLenum type, void *image);
6956GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
6957GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum target, GLenum pname, GLint *params);
6958GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
6959GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
6960#endif
6961#endif /* GL_EXT_convolution */
6962
6963#ifndef GL_EXT_coordinate_frame
6964#define GL_EXT_coordinate_frame 1
6965#define GL_TANGENT_ARRAY_EXT 0x8439
6966#define GL_BINORMAL_ARRAY_EXT 0x843A
6967#define GL_CURRENT_TANGENT_EXT 0x843B
6968#define GL_CURRENT_BINORMAL_EXT 0x843C
6969#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E
6970#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F
6971#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440
6972#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441
6973#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442
6974#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443
6975#define GL_MAP1_TANGENT_EXT 0x8444
6976#define GL_MAP2_TANGENT_EXT 0x8445
6977#define GL_MAP1_BINORMAL_EXT 0x8446
6978#define GL_MAP2_BINORMAL_EXT 0x8447
6979typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);
6980typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);
6981typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz);
6982typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v);
6983typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz);
6984typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v);
6985typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz);
6986typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v);
6987typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz);
6988typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v);
6989typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz);
6990typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v);
6991typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz);
6992typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v);
6993typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz);
6994typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v);
6995typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz);
6996typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v);
6997typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz);
6998typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v);
6999typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
7000typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
7001#ifdef GL_GLEXT_PROTOTYPES
7002GLAPI void APIENTRY glTangent3bEXT (GLbyte tx, GLbyte ty, GLbyte tz);
7003GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *v);
7004GLAPI void APIENTRY glTangent3dEXT (GLdouble tx, GLdouble ty, GLdouble tz);
7005GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *v);
7006GLAPI void APIENTRY glTangent3fEXT (GLfloat tx, GLfloat ty, GLfloat tz);
7007GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *v);
7008GLAPI void APIENTRY glTangent3iEXT (GLint tx, GLint ty, GLint tz);
7009GLAPI void APIENTRY glTangent3ivEXT (const GLint *v);
7010GLAPI void APIENTRY glTangent3sEXT (GLshort tx, GLshort ty, GLshort tz);
7011GLAPI void APIENTRY glTangent3svEXT (const GLshort *v);
7012GLAPI void APIENTRY glBinormal3bEXT (GLbyte bx, GLbyte by, GLbyte bz);
7013GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *v);
7014GLAPI void APIENTRY glBinormal3dEXT (GLdouble bx, GLdouble by, GLdouble bz);
7015GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *v);
7016GLAPI void APIENTRY glBinormal3fEXT (GLfloat bx, GLfloat by, GLfloat bz);
7017GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *v);
7018GLAPI void APIENTRY glBinormal3iEXT (GLint bx, GLint by, GLint bz);
7019GLAPI void APIENTRY glBinormal3ivEXT (const GLint *v);
7020GLAPI void APIENTRY glBinormal3sEXT (GLshort bx, GLshort by, GLshort bz);
7021GLAPI void APIENTRY glBinormal3svEXT (const GLshort *v);
7022GLAPI void APIENTRY glTangentPointerEXT (GLenum type, GLsizei stride, const void *pointer);
7023GLAPI void APIENTRY glBinormalPointerEXT (GLenum type, GLsizei stride, const void *pointer);
7024#endif
7025#endif /* GL_EXT_coordinate_frame */
7026
7027#ifndef GL_EXT_copy_texture
7028#define GL_EXT_copy_texture 1
7029typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
7030typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
7031typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
7032typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
7033typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
7034#ifdef GL_GLEXT_PROTOTYPES
7035GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
7036GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
7037GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
7038GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
7039GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
7040#endif
7041#endif /* GL_EXT_copy_texture */
7042
7043#ifndef GL_EXT_cull_vertex
7044#define GL_EXT_cull_vertex 1
7045#define GL_CULL_VERTEX_EXT 0x81AA
7046#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB
7047#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
7048typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);
7049typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);
7050#ifdef GL_GLEXT_PROTOTYPES
7051GLAPI void APIENTRY glCullParameterdvEXT (GLenum pname, GLdouble *params);
7052GLAPI void APIENTRY glCullParameterfvEXT (GLenum pname, GLfloat *params);
7053#endif
7054#endif /* GL_EXT_cull_vertex */
7055
7056#ifndef GL_EXT_debug_label
7057#define GL_EXT_debug_label 1
7058#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F
7059#define GL_PROGRAM_OBJECT_EXT 0x8B40
7060#define GL_SHADER_OBJECT_EXT 0x8B48
7061#define GL_BUFFER_OBJECT_EXT 0x9151
7062#define GL_QUERY_OBJECT_EXT 0x9153
7063#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154
7064typedef void (APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);
7065typedef void (APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
7066#ifdef GL_GLEXT_PROTOTYPES
7067GLAPI void APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label);
7068GLAPI void APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
7069#endif
7070#endif /* GL_EXT_debug_label */
7071
7072#ifndef GL_EXT_debug_marker
7073#define GL_EXT_debug_marker 1
7074typedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);
7075typedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);
7076typedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void);
7077#ifdef GL_GLEXT_PROTOTYPES
7078GLAPI void APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker);
7079GLAPI void APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker);
7080GLAPI void APIENTRY glPopGroupMarkerEXT (void);
7081#endif
7082#endif /* GL_EXT_debug_marker */
7083
7084#ifndef GL_EXT_depth_bounds_test
7085#define GL_EXT_depth_bounds_test 1
7086#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890
7087#define GL_DEPTH_BOUNDS_EXT 0x8891
7088typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
7089#ifdef GL_GLEXT_PROTOTYPES
7090GLAPI void APIENTRY glDepthBoundsEXT (GLclampd zmin, GLclampd zmax);
7091#endif
7092#endif /* GL_EXT_depth_bounds_test */
7093
7094#ifndef GL_EXT_direct_state_access
7095#define GL_EXT_direct_state_access 1
7096#define GL_PROGRAM_MATRIX_EXT 0x8E2D
7097#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E
7098#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F
7099typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m);
7100typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m);
7101typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m);
7102typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m);
7103typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode);
7104typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
7105typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
7106typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
7107typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
7108typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
7109typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
7110typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
7111typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
7112typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode);
7113typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode);
7114typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
7115typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
7116typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param);
7117typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
7118typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param);
7119typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
7120typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
7121typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
7122typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
7123typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
7124typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
7125typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
7126typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
7127typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
7128typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
7129typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
7130typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
7131typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
7132typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
7133typedef 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);
7134typedef 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);
7135typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
7136typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture);
7137typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
7138typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
7139typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
7140typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
7141typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
7142typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
7143typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
7144typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
7145typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
7146typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param);
7147typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
7148typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
7149typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
7150typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
7151typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
7152typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
7153typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
7154typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
7155typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
7156typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
7157typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
7158typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
7159typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
7160typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
7161typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
7162typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
7163typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
7164typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
7165typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
7166typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
7167typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
7168typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
7169typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
7170typedef 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);
7171typedef 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);
7172typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
7173typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
7174typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
7175typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat *data);
7176typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble *data);
7177typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, void **data);
7178typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
7179typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
7180typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index);
7181typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data);
7182typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data);
7183typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
7184typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
7185typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
7186typedef 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);
7187typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
7188typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
7189typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, void *img);
7190typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
7191typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
7192typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
7193typedef 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);
7194typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
7195typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
7196typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, void *img);
7197typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
7198typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
7199typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
7200typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
7201typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
7202typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
7203typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access);
7204typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer);
7205typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params);
7206typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void **params);
7207typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
7208typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0);
7209typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
7210typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
7211typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
7212typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0);
7213typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1);
7214typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
7215typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
7216typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
7217typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
7218typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
7219typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
7220typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
7221typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
7222typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
7223typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
7224typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7225typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7226typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7227typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7228typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7229typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7230typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7231typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7232typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7233typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
7234typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
7235typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
7236typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
7237typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
7238typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint *params);
7239typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
7240typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
7241typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
7242typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
7243typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0);
7244typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
7245typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
7246typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
7247typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
7248typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
7249typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
7250typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
7251typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
7252typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
7253typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint *params);
7254typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
7255typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
7256typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint *params);
7257typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
7258typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint *params);
7259typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint *params);
7260typedef void (APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
7261typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
7262typedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat *params);
7263typedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble *params);
7264typedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void **params);
7265typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
7266typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
7267typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble *params);
7268typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
7269typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat *params);
7270typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble *params);
7271typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat *params);
7272typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint *params);
7273typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void *string);
7274typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
7275typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params);
7276typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
7277typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
7278typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target);
7279typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
7280typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
7281typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
7282typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
7283typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
7284typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target);
7285typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target);
7286typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
7287typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs);
7288typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
7289typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
7290typedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
7291typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
7292typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
7293typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
7294typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer);
7295typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer);
7296typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
7297typedef void (APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
7298typedef void (APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
7299typedef void (APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
7300typedef void (APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
7301typedef void (APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
7302typedef void (APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
7303typedef void (APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
7304typedef void (APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
7305typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
7306typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
7307typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
7308typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
7309typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
7310typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
7311typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint *param);
7312typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, void **param);
7313typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
7314typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void **param);
7315typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
7316typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
7317typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
7318typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
7319typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
7320typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param);
7321typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
7322typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x);
7323typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y);
7324typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
7325typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
7326typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
7327typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
7328typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
7329typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
7330typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7331typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7332typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7333typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7334typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7335typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7336typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7337typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7338typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7339typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
7340typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
7341typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
7342typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
7343typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
7344typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
7345typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
7346typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
7347typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
7348typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
7349typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
7350typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
7351typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
7352typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
7353typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor);
7354#ifdef GL_GLEXT_PROTOTYPES
7355GLAPI void APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m);
7356GLAPI void APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m);
7357GLAPI void APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m);
7358GLAPI void APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m);
7359GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum mode);
7360GLAPI void APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
7361GLAPI void APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
7362GLAPI void APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
7363GLAPI void APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
7364GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
7365GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
7366GLAPI void APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
7367GLAPI void APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
7368GLAPI void APIENTRY glMatrixPopEXT (GLenum mode);
7369GLAPI void APIENTRY glMatrixPushEXT (GLenum mode);
7370GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask);
7371GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask);
7372GLAPI void APIENTRY glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param);
7373GLAPI void APIENTRY glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
7374GLAPI void APIENTRY glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param);
7375GLAPI void APIENTRY glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
7376GLAPI void APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
7377GLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
7378GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
7379GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
7380GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
7381GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
7382GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
7383GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
7384GLAPI void APIENTRY glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
7385GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
7386GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
7387GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
7388GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
7389GLAPI 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);
7390GLAPI 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);
7391GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
7392GLAPI void APIENTRY glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture);
7393GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
7394GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
7395GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
7396GLAPI void APIENTRY glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
7397GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
7398GLAPI void APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
7399GLAPI void APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
7400GLAPI void APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
7401GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
7402GLAPI void APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param);
7403GLAPI void APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
7404GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
7405GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
7406GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
7407GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
7408GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
7409GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
7410GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
7411GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
7412GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
7413GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
7414GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
7415GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
7416GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
7417GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
7418GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
7419GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
7420GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
7421GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
7422GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
7423GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
7424GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
7425GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
7426GLAPI 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);
7427GLAPI 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);
7428GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
7429GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index);
7430GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index);
7431GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat *data);
7432GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble *data);
7433GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum target, GLuint index, void **data);
7434GLAPI void APIENTRY glEnableIndexedEXT (GLenum target, GLuint index);
7435GLAPI void APIENTRY glDisableIndexedEXT (GLenum target, GLuint index);
7436GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum target, GLuint index);
7437GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *data);
7438GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data);
7439GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
7440GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
7441GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
7442GLAPI 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);
7443GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
7444GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
7445GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, void *img);
7446GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
7447GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
7448GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
7449GLAPI 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);
7450GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
7451GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
7452GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, void *img);
7453GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m);
7454GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m);
7455GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m);
7456GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m);
7457GLAPI void APIENTRY glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
7458GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
7459GLAPI void *APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access);
7460GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer);
7461GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params);
7462GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, void **params);
7463GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
7464GLAPI void APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0);
7465GLAPI void APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1);
7466GLAPI void APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
7467GLAPI void APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
7468GLAPI void APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0);
7469GLAPI void APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1);
7470GLAPI void APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
7471GLAPI void APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
7472GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
7473GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
7474GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
7475GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
7476GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
7477GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
7478GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
7479GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
7480GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7481GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7482GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7483GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7484GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7485GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7486GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7487GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7488GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
7489GLAPI void APIENTRY glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
7490GLAPI void APIENTRY glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
7491GLAPI void APIENTRY glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
7492GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
7493GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
7494GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params);
7495GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
7496GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
7497GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
7498GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
7499GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0);
7500GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1);
7501GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
7502GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
7503GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
7504GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
7505GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
7506GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
7507GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
7508GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
7509GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params);
7510GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
7511GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
7512GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params);
7513GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
7514GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params);
7515GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params);
7516GLAPI void APIENTRY glEnableClientStateiEXT (GLenum array, GLuint index);
7517GLAPI void APIENTRY glDisableClientStateiEXT (GLenum array, GLuint index);
7518GLAPI void APIENTRY glGetFloati_vEXT (GLenum pname, GLuint index, GLfloat *params);
7519GLAPI void APIENTRY glGetDoublei_vEXT (GLenum pname, GLuint index, GLdouble *params);
7520GLAPI void APIENTRY glGetPointeri_vEXT (GLenum pname, GLuint index, void **params);
7521GLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
7522GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
7523GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params);
7524GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
7525GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params);
7526GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params);
7527GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params);
7528GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params);
7529GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, void *string);
7530GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
7531GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params);
7532GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
7533GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
7534GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target);
7535GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
7536GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
7537GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
7538GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
7539GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
7540GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint texture, GLenum target);
7541GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target);
7542GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode);
7543GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs);
7544GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode);
7545GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
7546GLAPI void APIENTRY glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
7547GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
7548GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
7549GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
7550GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer);
7551GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer);
7552GLAPI void APIENTRY glVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
7553GLAPI void APIENTRY glVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
7554GLAPI void APIENTRY glVertexArrayEdgeFlagOffsetEXT (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
7555GLAPI void APIENTRY glVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
7556GLAPI void APIENTRY glVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
7557GLAPI void APIENTRY glVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
7558GLAPI void APIENTRY glVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
7559GLAPI void APIENTRY glVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
7560GLAPI void APIENTRY glVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
7561GLAPI void APIENTRY glVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
7562GLAPI void APIENTRY glVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
7563GLAPI void APIENTRY glEnableVertexArrayEXT (GLuint vaobj, GLenum array);
7564GLAPI void APIENTRY glDisableVertexArrayEXT (GLuint vaobj, GLenum array);
7565GLAPI void APIENTRY glEnableVertexArrayAttribEXT (GLuint vaobj, GLuint index);
7566GLAPI void APIENTRY glDisableVertexArrayAttribEXT (GLuint vaobj, GLuint index);
7567GLAPI void APIENTRY glGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint *param);
7568GLAPI void APIENTRY glGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, void **param);
7569GLAPI void APIENTRY glGetVertexArrayIntegeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
7570GLAPI void APIENTRY glGetVertexArrayPointeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, void **param);
7571GLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
7572GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length);
7573GLAPI void APIENTRY glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
7574GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
7575GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
7576GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param);
7577GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
7578GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x);
7579GLAPI void APIENTRY glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y);
7580GLAPI void APIENTRY glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
7581GLAPI void APIENTRY glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
7582GLAPI void APIENTRY glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
7583GLAPI void APIENTRY glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
7584GLAPI void APIENTRY glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
7585GLAPI void APIENTRY glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
7586GLAPI void APIENTRY glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7587GLAPI void APIENTRY glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7588GLAPI void APIENTRY glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7589GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7590GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7591GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7592GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7593GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7594GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
7595GLAPI void APIENTRY glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
7596GLAPI void APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
7597GLAPI void APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
7598GLAPI void APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
7599GLAPI void APIENTRY glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
7600GLAPI void APIENTRY glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
7601GLAPI void APIENTRY glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
7602GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
7603GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
7604GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
7605GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
7606GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor);
7607GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
7608GLAPI void APIENTRY glTexturePageCommitmentEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
7609GLAPI void APIENTRY glVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor);
7610#endif
7611#endif /* GL_EXT_direct_state_access */
7612
7613#ifndef GL_EXT_draw_buffers2
7614#define GL_EXT_draw_buffers2 1
7615typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
7616#ifdef GL_GLEXT_PROTOTYPES
7617GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
7618#endif
7619#endif /* GL_EXT_draw_buffers2 */
7620
7621#ifndef GL_EXT_draw_instanced
7622#define GL_EXT_draw_instanced 1
7623typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
7624typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
7625#ifdef GL_GLEXT_PROTOTYPES
7626GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
7627GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
7628#endif
7629#endif /* GL_EXT_draw_instanced */
7630
7631#ifndef GL_EXT_draw_range_elements
7632#define GL_EXT_draw_range_elements 1
7633#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8
7634#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9
7635typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
7636#ifdef GL_GLEXT_PROTOTYPES
7637GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
7638#endif
7639#endif /* GL_EXT_draw_range_elements */
7640
7641#ifndef GL_EXT_external_buffer
7642#define GL_EXT_external_buffer 1
7643typedef void *GLeglClientBufferEXT;
7644typedef void (APIENTRYP PFNGLBUFFERSTORAGEEXTERNALEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
7645typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
7646#ifdef GL_GLEXT_PROTOTYPES
7647GLAPI void APIENTRY glBufferStorageExternalEXT (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
7648GLAPI void APIENTRY glNamedBufferStorageExternalEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
7649#endif
7650#endif /* GL_EXT_external_buffer */
7651
7652#ifndef GL_EXT_fog_coord
7653#define GL_EXT_fog_coord 1
7654#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450
7655#define GL_FOG_COORDINATE_EXT 0x8451
7656#define GL_FRAGMENT_DEPTH_EXT 0x8452
7657#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453
7658#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454
7659#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
7660#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
7661#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457
7662typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
7663typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
7664typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
7665typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);
7666typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
7667#ifdef GL_GLEXT_PROTOTYPES
7668GLAPI void APIENTRY glFogCoordfEXT (GLfloat coord);
7669GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *coord);
7670GLAPI void APIENTRY glFogCoorddEXT (GLdouble coord);
7671GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *coord);
7672GLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const void *pointer);
7673#endif
7674#endif /* GL_EXT_fog_coord */
7675
7676#ifndef GL_EXT_framebuffer_blit
7677#define GL_EXT_framebuffer_blit 1
7678#define GL_READ_FRAMEBUFFER_EXT 0x8CA8
7679#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
7680#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6
7681#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA
7682typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
7683#ifdef GL_GLEXT_PROTOTYPES
7684GLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
7685#endif
7686#endif /* GL_EXT_framebuffer_blit */
7687
7688#ifndef GL_EXT_framebuffer_multisample
7689#define GL_EXT_framebuffer_multisample 1
7690#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
7691#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
7692#define GL_MAX_SAMPLES_EXT 0x8D57
7693typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
7694#ifdef GL_GLEXT_PROTOTYPES
7695GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
7696#endif
7697#endif /* GL_EXT_framebuffer_multisample */
7698
7699#ifndef GL_EXT_framebuffer_multisample_blit_scaled
7700#define GL_EXT_framebuffer_multisample_blit_scaled 1
7701#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA
7702#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB
7703#endif /* GL_EXT_framebuffer_multisample_blit_scaled */
7704
7705#ifndef GL_EXT_framebuffer_object
7706#define GL_EXT_framebuffer_object 1
7707#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
7708#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8
7709#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6
7710#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7
7711#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
7712#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
7713#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
7714#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
7715#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
7716#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5
7717#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
7718#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
7719#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
7720#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
7721#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
7722#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
7723#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD
7724#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
7725#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0
7726#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1
7727#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2
7728#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3
7729#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4
7730#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5
7731#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6
7732#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7
7733#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8
7734#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9
7735#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA
7736#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB
7737#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC
7738#define GL_COLOR_ATTACHMENT13_EXT 0x8CED
7739#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE
7740#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF
7741#define GL_DEPTH_ATTACHMENT_EXT 0x8D00
7742#define GL_STENCIL_ATTACHMENT_EXT 0x8D20
7743#define GL_FRAMEBUFFER_EXT 0x8D40
7744#define GL_RENDERBUFFER_EXT 0x8D41
7745#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42
7746#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43
7747#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
7748#define GL_STENCIL_INDEX1_EXT 0x8D46
7749#define GL_STENCIL_INDEX4_EXT 0x8D47
7750#define GL_STENCIL_INDEX8_EXT 0x8D48
7751#define GL_STENCIL_INDEX16_EXT 0x8D49
7752#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50
7753#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51
7754#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52
7755#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53
7756#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54
7757#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55
7758typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
7759typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
7760typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers);
7761typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers);
7762typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
7763typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
7764typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer);
7765typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer);
7766typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers);
7767typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers);
7768typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target);
7769typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
7770typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
7771typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
7772typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
7773typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
7774typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);
7775#ifdef GL_GLEXT_PROTOTYPES
7776GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint renderbuffer);
7777GLAPI void APIENTRY glBindRenderbufferEXT (GLenum target, GLuint renderbuffer);
7778GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei n, const GLuint *renderbuffers);
7779GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers);
7780GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
7781GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint *params);
7782GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint framebuffer);
7783GLAPI void APIENTRY glBindFramebufferEXT (GLenum target, GLuint framebuffer);
7784GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei n, const GLuint *framebuffers);
7785GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei n, GLuint *framebuffers);
7786GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum target);
7787GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
7788GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
7789GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
7790GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
7791GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum attachment, GLenum pname, GLint *params);
7792GLAPI void APIENTRY glGenerateMipmapEXT (GLenum target);
7793#endif
7794#endif /* GL_EXT_framebuffer_object */
7795
7796#ifndef GL_EXT_framebuffer_sRGB
7797#define GL_EXT_framebuffer_sRGB 1
7798#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
7799#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA
7800#endif /* GL_EXT_framebuffer_sRGB */
7801
7802#ifndef GL_EXT_geometry_shader4
7803#define GL_EXT_geometry_shader4 1
7804#define GL_GEOMETRY_SHADER_EXT 0x8DD9
7805#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA
7806#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB
7807#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC
7808#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
7809#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD
7810#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE
7811#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B
7812#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
7813#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
7814#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
7815#define GL_LINES_ADJACENCY_EXT 0x000A
7816#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B
7817#define GL_TRIANGLES_ADJACENCY_EXT 0x000C
7818#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D
7819#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
7820#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9
7821#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
7822#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
7823#define GL_PROGRAM_POINT_SIZE_EXT 0x8642
7824typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
7825#ifdef GL_GLEXT_PROTOTYPES
7826GLAPI void APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value);
7827#endif
7828#endif /* GL_EXT_geometry_shader4 */
7829
7830#ifndef GL_EXT_gpu_program_parameters
7831#define GL_EXT_gpu_program_parameters 1
7832typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
7833typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
7834#ifdef GL_GLEXT_PROTOTYPES
7835GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
7836GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
7837#endif
7838#endif /* GL_EXT_gpu_program_parameters */
7839
7840#ifndef GL_EXT_gpu_shader4
7841#define GL_EXT_gpu_shader4 1
7842#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0
7843#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1
7844#define GL_SAMPLER_BUFFER_EXT 0x8DC2
7845#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3
7846#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4
7847#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5
7848#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6
7849#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7
7850#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8
7851#define GL_INT_SAMPLER_1D_EXT 0x8DC9
7852#define GL_INT_SAMPLER_2D_EXT 0x8DCA
7853#define GL_INT_SAMPLER_3D_EXT 0x8DCB
7854#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC
7855#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD
7856#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE
7857#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF
7858#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
7859#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1
7860#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2
7861#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3
7862#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4
7863#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5
7864#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6
7865#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7
7866#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
7867#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904
7868#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905
7869#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD
7870typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params);
7871typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);
7872typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name);
7873typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0);
7874typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1);
7875typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
7876typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
7877typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
7878typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
7879typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
7880typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
7881typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x);
7882typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y);
7883typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z);
7884typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
7885typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x);
7886typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y);
7887typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
7888typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
7889typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v);
7890typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v);
7891typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v);
7892typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v);
7893typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v);
7894typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v);
7895typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v);
7896typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v);
7897typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v);
7898typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v);
7899typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v);
7900typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v);
7901typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
7902typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params);
7903typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params);
7904#ifdef GL_GLEXT_PROTOTYPES
7905GLAPI void APIENTRY glGetUniformuivEXT (GLuint program, GLint location, GLuint *params);
7906GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name);
7907GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint program, const GLchar *name);
7908GLAPI void APIENTRY glUniform1uiEXT (GLint location, GLuint v0);
7909GLAPI void APIENTRY glUniform2uiEXT (GLint location, GLuint v0, GLuint v1);
7910GLAPI void APIENTRY glUniform3uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2);
7911GLAPI void APIENTRY glUniform4uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
7912GLAPI void APIENTRY glUniform1uivEXT (GLint location, GLsizei count, const GLuint *value);
7913GLAPI void APIENTRY glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value);
7914GLAPI void APIENTRY glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value);
7915GLAPI void APIENTRY glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value);
7916GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint index, GLint x);
7917GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint index, GLint x, GLint y);
7918GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z);
7919GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w);
7920GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint index, GLuint x);
7921GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y);
7922GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z);
7923GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
7924GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint index, const GLint *v);
7925GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint index, const GLint *v);
7926GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint index, const GLint *v);
7927GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint index, const GLint *v);
7928GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint index, const GLuint *v);
7929GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint index, const GLuint *v);
7930GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint index, const GLuint *v);
7931GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint index, const GLuint *v);
7932GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint index, const GLbyte *v);
7933GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint index, const GLshort *v);
7934GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v);
7935GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint index, const GLushort *v);
7936GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
7937GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params);
7938GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params);
7939#endif
7940#endif /* GL_EXT_gpu_shader4 */
7941
7942#ifndef GL_EXT_histogram
7943#define GL_EXT_histogram 1
7944#define GL_HISTOGRAM_EXT 0x8024
7945#define GL_PROXY_HISTOGRAM_EXT 0x8025
7946#define GL_HISTOGRAM_WIDTH_EXT 0x8026
7947#define GL_HISTOGRAM_FORMAT_EXT 0x8027
7948#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028
7949#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029
7950#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A
7951#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B
7952#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C
7953#define GL_HISTOGRAM_SINK_EXT 0x802D
7954#define GL_MINMAX_EXT 0x802E
7955#define GL_MINMAX_FORMAT_EXT 0x802F
7956#define GL_MINMAX_SINK_EXT 0x8030
7957#define GL_TABLE_TOO_LARGE_EXT 0x8031
7958typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
7959typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
7960typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
7961typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
7962typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
7963typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
7964typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
7965typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);
7966typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);
7967typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target);
7968#ifdef GL_GLEXT_PROTOTYPES
7969GLAPI void APIENTRY glGetHistogramEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
7970GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
7971GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum target, GLenum pname, GLint *params);
7972GLAPI void APIENTRY glGetMinmaxEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
7973GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
7974GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum target, GLenum pname, GLint *params);
7975GLAPI void APIENTRY glHistogramEXT (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
7976GLAPI void APIENTRY glMinmaxEXT (GLenum target, GLenum internalformat, GLboolean sink);
7977GLAPI void APIENTRY glResetHistogramEXT (GLenum target);
7978GLAPI void APIENTRY glResetMinmaxEXT (GLenum target);
7979#endif
7980#endif /* GL_EXT_histogram */
7981
7982#ifndef GL_EXT_index_array_formats
7983#define GL_EXT_index_array_formats 1
7984#define GL_IUI_V2F_EXT 0x81AD
7985#define GL_IUI_V3F_EXT 0x81AE
7986#define GL_IUI_N3F_V2F_EXT 0x81AF
7987#define GL_IUI_N3F_V3F_EXT 0x81B0
7988#define GL_T2F_IUI_V2F_EXT 0x81B1
7989#define GL_T2F_IUI_V3F_EXT 0x81B2
7990#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3
7991#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4
7992#endif /* GL_EXT_index_array_formats */
7993
7994#ifndef GL_EXT_index_func
7995#define GL_EXT_index_func 1
7996#define GL_INDEX_TEST_EXT 0x81B5
7997#define GL_INDEX_TEST_FUNC_EXT 0x81B6
7998#define GL_INDEX_TEST_REF_EXT 0x81B7
7999typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
8000#ifdef GL_GLEXT_PROTOTYPES
8001GLAPI void APIENTRY glIndexFuncEXT (GLenum func, GLclampf ref);
8002#endif
8003#endif /* GL_EXT_index_func */
8004
8005#ifndef GL_EXT_index_material
8006#define GL_EXT_index_material 1
8007#define GL_INDEX_MATERIAL_EXT 0x81B8
8008#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9
8009#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA
8010typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
8011#ifdef GL_GLEXT_PROTOTYPES
8012GLAPI void APIENTRY glIndexMaterialEXT (GLenum face, GLenum mode);
8013#endif
8014#endif /* GL_EXT_index_material */
8015
8016#ifndef GL_EXT_index_texture
8017#define GL_EXT_index_texture 1
8018#endif /* GL_EXT_index_texture */
8019
8020#ifndef GL_EXT_light_texture
8021#define GL_EXT_light_texture 1
8022#define GL_FRAGMENT_MATERIAL_EXT 0x8349
8023#define GL_FRAGMENT_NORMAL_EXT 0x834A
8024#define GL_FRAGMENT_COLOR_EXT 0x834C
8025#define GL_ATTENUATION_EXT 0x834D
8026#define GL_SHADOW_ATTENUATION_EXT 0x834E
8027#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F
8028#define GL_TEXTURE_LIGHT_EXT 0x8350
8029#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351
8030#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
8031typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
8032typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
8033typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
8034#ifdef GL_GLEXT_PROTOTYPES
8035GLAPI void APIENTRY glApplyTextureEXT (GLenum mode);
8036GLAPI void APIENTRY glTextureLightEXT (GLenum pname);
8037GLAPI void APIENTRY glTextureMaterialEXT (GLenum face, GLenum mode);
8038#endif
8039#endif /* GL_EXT_light_texture */
8040
8041#ifndef GL_EXT_memory_object
8042#define GL_EXT_memory_object 1
8043#define GL_TEXTURE_TILING_EXT 0x9580
8044#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581
8045#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B
8046#define GL_NUM_TILING_TYPES_EXT 0x9582
8047#define GL_TILING_TYPES_EXT 0x9583
8048#define GL_OPTIMAL_TILING_EXT 0x9584
8049#define GL_LINEAR_TILING_EXT 0x9585
8050#define GL_NUM_DEVICE_UUIDS_EXT 0x9596
8051#define GL_DEVICE_UUID_EXT 0x9597
8052#define GL_DRIVER_UUID_EXT 0x9598
8053#define GL_UUID_SIZE_EXT 16
8054typedef void (APIENTRYP PFNGLGETUNSIGNEDBYTEVEXTPROC) (GLenum pname, GLubyte *data);
8055typedef void (APIENTRYP PFNGLGETUNSIGNEDBYTEI_VEXTPROC) (GLenum target, GLuint index, GLubyte *data);
8056typedef void (APIENTRYP PFNGLDELETEMEMORYOBJECTSEXTPROC) (GLsizei n, const GLuint *memoryObjects);
8057typedef GLboolean (APIENTRYP PFNGLISMEMORYOBJECTEXTPROC) (GLuint memoryObject);
8058typedef void (APIENTRYP PFNGLCREATEMEMORYOBJECTSEXTPROC) (GLsizei n, GLuint *memoryObjects);
8059typedef void (APIENTRYP PFNGLMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, const GLint *params);
8060typedef void (APIENTRYP PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, GLint *params);
8061typedef void (APIENTRYP PFNGLTEXSTORAGEMEM2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
8062typedef void (APIENTRYP PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
8063typedef void (APIENTRYP PFNGLTEXSTORAGEMEM3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
8064typedef void (APIENTRYP PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
8065typedef void (APIENTRYP PFNGLBUFFERSTORAGEMEMEXTPROC) (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset);
8066typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM2DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
8067typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
8068typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM3DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
8069typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
8070typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC) (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset);
8071typedef void (APIENTRYP PFNGLTEXSTORAGEMEM1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);
8072typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM1DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);
8073#ifdef GL_GLEXT_PROTOTYPES
8074GLAPI void APIENTRY glGetUnsignedBytevEXT (GLenum pname, GLubyte *data);
8075GLAPI void APIENTRY glGetUnsignedBytei_vEXT (GLenum target, GLuint index, GLubyte *data);
8076GLAPI void APIENTRY glDeleteMemoryObjectsEXT (GLsizei n, const GLuint *memoryObjects);
8077GLAPI GLboolean APIENTRY glIsMemoryObjectEXT (GLuint memoryObject);
8078GLAPI void APIENTRY glCreateMemoryObjectsEXT (GLsizei n, GLuint *memoryObjects);
8079GLAPI void APIENTRY glMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, const GLint *params);
8080GLAPI void APIENTRY glGetMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, GLint *params);
8081GLAPI void APIENTRY glTexStorageMem2DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
8082GLAPI void APIENTRY glTexStorageMem2DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
8083GLAPI void APIENTRY glTexStorageMem3DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
8084GLAPI void APIENTRY glTexStorageMem3DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
8085GLAPI void APIENTRY glBufferStorageMemEXT (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset);
8086GLAPI void APIENTRY glTextureStorageMem2DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
8087GLAPI void APIENTRY glTextureStorageMem2DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
8088GLAPI void APIENTRY glTextureStorageMem3DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
8089GLAPI void APIENTRY glTextureStorageMem3DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
8090GLAPI void APIENTRY glNamedBufferStorageMemEXT (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset);
8091GLAPI void APIENTRY glTexStorageMem1DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);
8092GLAPI void APIENTRY glTextureStorageMem1DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);
8093#endif
8094#endif /* GL_EXT_memory_object */
8095
8096#ifndef GL_EXT_memory_object_fd
8097#define GL_EXT_memory_object_fd 1
8098#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586
8099typedef void (APIENTRYP PFNGLIMPORTMEMORYFDEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, GLint fd);
8100#ifdef GL_GLEXT_PROTOTYPES
8101GLAPI void APIENTRY glImportMemoryFdEXT (GLuint memory, GLuint64 size, GLenum handleType, GLint fd);
8102#endif
8103#endif /* GL_EXT_memory_object_fd */
8104
8105#ifndef GL_EXT_memory_object_win32
8106#define GL_EXT_memory_object_win32 1
8107#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587
8108#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588
8109#define GL_DEVICE_LUID_EXT 0x9599
8110#define GL_DEVICE_NODE_MASK_EXT 0x959A
8111#define GL_LUID_SIZE_EXT 8
8112#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589
8113#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A
8114#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B
8115#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C
8116typedef void (APIENTRYP PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, void *handle);
8117typedef void (APIENTRYP PFNGLIMPORTMEMORYWIN32NAMEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, const void *name);
8118#ifdef GL_GLEXT_PROTOTYPES
8119GLAPI void APIENTRY glImportMemoryWin32HandleEXT (GLuint memory, GLuint64 size, GLenum handleType, void *handle);
8120GLAPI void APIENTRY glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GLenum handleType, const void *name);
8121#endif
8122#endif /* GL_EXT_memory_object_win32 */
8123
8124#ifndef GL_EXT_misc_attribute
8125#define GL_EXT_misc_attribute 1
8126#endif /* GL_EXT_misc_attribute */
8127
8128#ifndef GL_EXT_multi_draw_arrays
8129#define GL_EXT_multi_draw_arrays 1
8130typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
8131typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);
8132#ifdef GL_GLEXT_PROTOTYPES
8133GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
8134GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);
8135#endif
8136#endif /* GL_EXT_multi_draw_arrays */
8137
8138#ifndef GL_EXT_multisample
8139#define GL_EXT_multisample 1
8140#define GL_MULTISAMPLE_EXT 0x809D
8141#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E
8142#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
8143#define GL_SAMPLE_MASK_EXT 0x80A0
8144#define GL_1PASS_EXT 0x80A1
8145#define GL_2PASS_0_EXT 0x80A2
8146#define GL_2PASS_1_EXT 0x80A3
8147#define GL_4PASS_0_EXT 0x80A4
8148#define GL_4PASS_1_EXT 0x80A5
8149#define GL_4PASS_2_EXT 0x80A6
8150#define GL_4PASS_3_EXT 0x80A7
8151#define GL_SAMPLE_BUFFERS_EXT 0x80A8
8152#define GL_SAMPLES_EXT 0x80A9
8153#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA
8154#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB
8155#define GL_SAMPLE_PATTERN_EXT 0x80AC
8156#define GL_MULTISAMPLE_BIT_EXT 0x20000000
8157typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
8158typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
8159#ifdef GL_GLEXT_PROTOTYPES
8160GLAPI void APIENTRY glSampleMaskEXT (GLclampf value, GLboolean invert);
8161GLAPI void APIENTRY glSamplePatternEXT (GLenum pattern);
8162#endif
8163#endif /* GL_EXT_multisample */
8164
8165#ifndef GL_EXT_multiview_tessellation_geometry_shader
8166#define GL_EXT_multiview_tessellation_geometry_shader 1
8167#endif /* GL_EXT_multiview_tessellation_geometry_shader */
8168
8169#ifndef GL_EXT_multiview_texture_multisample
8170#define GL_EXT_multiview_texture_multisample 1
8171#endif /* GL_EXT_multiview_texture_multisample */
8172
8173#ifndef GL_EXT_multiview_timer_query
8174#define GL_EXT_multiview_timer_query 1
8175#endif /* GL_EXT_multiview_timer_query */
8176
8177#ifndef GL_EXT_packed_depth_stencil
8178#define GL_EXT_packed_depth_stencil 1
8179#define GL_DEPTH_STENCIL_EXT 0x84F9
8180#define GL_UNSIGNED_INT_24_8_EXT 0x84FA
8181#define GL_DEPTH24_STENCIL8_EXT 0x88F0
8182#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1
8183#endif /* GL_EXT_packed_depth_stencil */
8184
8185#ifndef GL_EXT_packed_float
8186#define GL_EXT_packed_float 1
8187#define GL_R11F_G11F_B10F_EXT 0x8C3A
8188#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B
8189#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C
8190#endif /* GL_EXT_packed_float */
8191
8192#ifndef GL_EXT_packed_pixels
8193#define GL_EXT_packed_pixels 1
8194#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032
8195#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033
8196#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034
8197#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035
8198#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036
8199#endif /* GL_EXT_packed_pixels */
8200
8201#ifndef GL_EXT_paletted_texture
8202#define GL_EXT_paletted_texture 1
8203#define GL_COLOR_INDEX1_EXT 0x80E2
8204#define GL_COLOR_INDEX2_EXT 0x80E3
8205#define GL_COLOR_INDEX4_EXT 0x80E4
8206#define GL_COLOR_INDEX8_EXT 0x80E5
8207#define GL_COLOR_INDEX12_EXT 0x80E6
8208#define GL_COLOR_INDEX16_EXT 0x80E7
8209#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
8210typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table);
8211typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void *data);
8212typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
8213typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
8214#ifdef GL_GLEXT_PROTOTYPES
8215GLAPI void APIENTRY glColorTableEXT (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table);
8216GLAPI void APIENTRY glGetColorTableEXT (GLenum target, GLenum format, GLenum type, void *data);
8217GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params);
8218GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
8219#endif
8220#endif /* GL_EXT_paletted_texture */
8221
8222#ifndef GL_EXT_pixel_buffer_object
8223#define GL_EXT_pixel_buffer_object 1
8224#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB
8225#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC
8226#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED
8227#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF
8228#endif /* GL_EXT_pixel_buffer_object */
8229
8230#ifndef GL_EXT_pixel_transform
8231#define GL_EXT_pixel_transform 1
8232#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330
8233#define GL_PIXEL_MAG_FILTER_EXT 0x8331
8234#define GL_PIXEL_MIN_FILTER_EXT 0x8332
8235#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333
8236#define GL_CUBIC_EXT 0x8334
8237#define GL_AVERAGE_EXT 0x8335
8238#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
8239#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
8240#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338
8241typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
8242typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
8243typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
8244typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
8245typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
8246typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
8247#ifdef GL_GLEXT_PROTOTYPES
8248GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum target, GLenum pname, GLint param);
8249GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum target, GLenum pname, GLfloat param);
8250GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint *params);
8251GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
8252GLAPI void APIENTRY glGetPixelTransformParameterivEXT (GLenum target, GLenum pname, GLint *params);
8253GLAPI void APIENTRY glGetPixelTransformParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
8254#endif
8255#endif /* GL_EXT_pixel_transform */
8256
8257#ifndef GL_EXT_pixel_transform_color_table
8258#define GL_EXT_pixel_transform_color_table 1
8259#endif /* GL_EXT_pixel_transform_color_table */
8260
8261#ifndef GL_EXT_point_parameters
8262#define GL_EXT_point_parameters 1
8263#define GL_POINT_SIZE_MIN_EXT 0x8126
8264#define GL_POINT_SIZE_MAX_EXT 0x8127
8265#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128
8266#define GL_DISTANCE_ATTENUATION_EXT 0x8129
8267typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
8268typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
8269#ifdef GL_GLEXT_PROTOTYPES
8270GLAPI void APIENTRY glPointParameterfEXT (GLenum pname, GLfloat param);
8271GLAPI void APIENTRY glPointParameterfvEXT (GLenum pname, const GLfloat *params);
8272#endif
8273#endif /* GL_EXT_point_parameters */
8274
8275#ifndef GL_EXT_polygon_offset
8276#define GL_EXT_polygon_offset 1
8277#define GL_POLYGON_OFFSET_EXT 0x8037
8278#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038
8279#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039
8280typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
8281#ifdef GL_GLEXT_PROTOTYPES
8282GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat factor, GLfloat bias);
8283#endif
8284#endif /* GL_EXT_polygon_offset */
8285
8286#ifndef GL_EXT_polygon_offset_clamp
8287#define GL_EXT_polygon_offset_clamp 1
8288#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B
8289typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp);
8290#ifdef GL_GLEXT_PROTOTYPES
8291GLAPI void APIENTRY glPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp);
8292#endif
8293#endif /* GL_EXT_polygon_offset_clamp */
8294
8295#ifndef GL_EXT_post_depth_coverage
8296#define GL_EXT_post_depth_coverage 1
8297#endif /* GL_EXT_post_depth_coverage */
8298
8299#ifndef GL_EXT_provoking_vertex
8300#define GL_EXT_provoking_vertex 1
8301#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C
8302#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
8303#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
8304#define GL_PROVOKING_VERTEX_EXT 0x8E4F
8305typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode);
8306#ifdef GL_GLEXT_PROTOTYPES
8307GLAPI void APIENTRY glProvokingVertexEXT (GLenum mode);
8308#endif
8309#endif /* GL_EXT_provoking_vertex */
8310
8311#ifndef GL_EXT_raster_multisample
8312#define GL_EXT_raster_multisample 1
8313#define GL_RASTER_MULTISAMPLE_EXT 0x9327
8314#define GL_RASTER_SAMPLES_EXT 0x9328
8315#define GL_MAX_RASTER_SAMPLES_EXT 0x9329
8316#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A
8317#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B
8318#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C
8319typedef void (APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations);
8320#ifdef GL_GLEXT_PROTOTYPES
8321GLAPI void APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations);
8322#endif
8323#endif /* GL_EXT_raster_multisample */
8324
8325#ifndef GL_EXT_rescale_normal
8326#define GL_EXT_rescale_normal 1
8327#define GL_RESCALE_NORMAL_EXT 0x803A
8328#endif /* GL_EXT_rescale_normal */
8329
8330#ifndef GL_EXT_secondary_color
8331#define GL_EXT_secondary_color 1
8332#define GL_COLOR_SUM_EXT 0x8458
8333#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459
8334#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
8335#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
8336#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
8337#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
8338#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E
8339typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
8340typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
8341typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
8342typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);
8343typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
8344typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
8345typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
8346typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);
8347typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
8348typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);
8349typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
8350typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);
8351typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
8352typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);
8353typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
8354typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);
8355typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
8356#ifdef GL_GLEXT_PROTOTYPES
8357GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue);
8358GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *v);
8359GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue);
8360GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *v);
8361GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue);
8362GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *v);
8363GLAPI void APIENTRY glSecondaryColor3iEXT (GLint red, GLint green, GLint blue);
8364GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *v);
8365GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue);
8366GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *v);
8367GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue);
8368GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *v);
8369GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue);
8370GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *v);
8371GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue);
8372GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *v);
8373GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer);
8374#endif
8375#endif /* GL_EXT_secondary_color */
8376
8377#ifndef GL_EXT_semaphore
8378#define GL_EXT_semaphore 1
8379#define GL_LAYOUT_GENERAL_EXT 0x958D
8380#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E
8381#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F
8382#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590
8383#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591
8384#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592
8385#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593
8386#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530
8387#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531
8388typedef void (APIENTRYP PFNGLGENSEMAPHORESEXTPROC) (GLsizei n, GLuint *semaphores);
8389typedef void (APIENTRYP PFNGLDELETESEMAPHORESEXTPROC) (GLsizei n, const GLuint *semaphores);
8390typedef GLboolean (APIENTRYP PFNGLISSEMAPHOREEXTPROC) (GLuint semaphore);
8391typedef void (APIENTRYP PFNGLSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, const GLuint64 *params);
8392typedef void (APIENTRYP PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, GLuint64 *params);
8393typedef void (APIENTRYP PFNGLWAITSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts);
8394typedef void (APIENTRYP PFNGLSIGNALSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts);
8395#ifdef GL_GLEXT_PROTOTYPES
8396GLAPI void APIENTRY glGenSemaphoresEXT (GLsizei n, GLuint *semaphores);
8397GLAPI void APIENTRY glDeleteSemaphoresEXT (GLsizei n, const GLuint *semaphores);
8398GLAPI GLboolean APIENTRY glIsSemaphoreEXT (GLuint semaphore);
8399GLAPI void APIENTRY glSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, const GLuint64 *params);
8400GLAPI void APIENTRY glGetSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, GLuint64 *params);
8401GLAPI void APIENTRY glWaitSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts);
8402GLAPI void APIENTRY glSignalSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts);
8403#endif
8404#endif /* GL_EXT_semaphore */
8405
8406#ifndef GL_EXT_semaphore_fd
8407#define GL_EXT_semaphore_fd 1
8408typedef void (APIENTRYP PFNGLIMPORTSEMAPHOREFDEXTPROC) (GLuint semaphore, GLenum handleType, GLint fd);
8409#ifdef GL_GLEXT_PROTOTYPES
8410GLAPI void APIENTRY glImportSemaphoreFdEXT (GLuint semaphore, GLenum handleType, GLint fd);
8411#endif
8412#endif /* GL_EXT_semaphore_fd */
8413
8414#ifndef GL_EXT_semaphore_win32
8415#define GL_EXT_semaphore_win32 1
8416#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594
8417#define GL_D3D12_FENCE_VALUE_EXT 0x9595
8418typedef void (APIENTRYP PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC) (GLuint semaphore, GLenum handleType, void *handle);
8419typedef void (APIENTRYP PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC) (GLuint semaphore, GLenum handleType, const void *name);
8420#ifdef GL_GLEXT_PROTOTYPES
8421GLAPI void APIENTRY glImportSemaphoreWin32HandleEXT (GLuint semaphore, GLenum handleType, void *handle);
8422GLAPI void APIENTRY glImportSemaphoreWin32NameEXT (GLuint semaphore, GLenum handleType, const void *name);
8423#endif
8424#endif /* GL_EXT_semaphore_win32 */
8425
8426#ifndef GL_EXT_separate_shader_objects
8427#define GL_EXT_separate_shader_objects 1
8428#define GL_ACTIVE_PROGRAM_EXT 0x8B8D
8429typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program);
8430typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program);
8431typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar *string);
8432#ifdef GL_GLEXT_PROTOTYPES
8433GLAPI void APIENTRY glUseShaderProgramEXT (GLenum type, GLuint program);
8434GLAPI void APIENTRY glActiveProgramEXT (GLuint program);
8435GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *string);
8436#endif
8437#endif /* GL_EXT_separate_shader_objects */
8438
8439#ifndef GL_EXT_separate_specular_color
8440#define GL_EXT_separate_specular_color 1
8441#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8
8442#define GL_SINGLE_COLOR_EXT 0x81F9
8443#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA
8444#endif /* GL_EXT_separate_specular_color */
8445
8446#ifndef GL_EXT_shader_framebuffer_fetch
8447#define GL_EXT_shader_framebuffer_fetch 1
8448#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
8449#endif /* GL_EXT_shader_framebuffer_fetch */
8450
8451#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent
8452#define GL_EXT_shader_framebuffer_fetch_non_coherent 1
8453typedef void (APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void);
8454#ifdef GL_GLEXT_PROTOTYPES
8455GLAPI void APIENTRY glFramebufferFetchBarrierEXT (void);
8456#endif
8457#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */
8458
8459#ifndef GL_EXT_shader_image_load_formatted
8460#define GL_EXT_shader_image_load_formatted 1
8461#endif /* GL_EXT_shader_image_load_formatted */
8462
8463#ifndef GL_EXT_shader_image_load_store
8464#define GL_EXT_shader_image_load_store 1
8465#define GL_MAX_IMAGE_UNITS_EXT 0x8F38
8466#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39
8467#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A
8468#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B
8469#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C
8470#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D
8471#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E
8472#define GL_IMAGE_1D_EXT 0x904C
8473#define GL_IMAGE_2D_EXT 0x904D
8474#define GL_IMAGE_3D_EXT 0x904E
8475#define GL_IMAGE_2D_RECT_EXT 0x904F
8476#define GL_IMAGE_CUBE_EXT 0x9050
8477#define GL_IMAGE_BUFFER_EXT 0x9051
8478#define GL_IMAGE_1D_ARRAY_EXT 0x9052
8479#define GL_IMAGE_2D_ARRAY_EXT 0x9053
8480#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054
8481#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055
8482#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056
8483#define GL_INT_IMAGE_1D_EXT 0x9057
8484#define GL_INT_IMAGE_2D_EXT 0x9058
8485#define GL_INT_IMAGE_3D_EXT 0x9059
8486#define GL_INT_IMAGE_2D_RECT_EXT 0x905A
8487#define GL_INT_IMAGE_CUBE_EXT 0x905B
8488#define GL_INT_IMAGE_BUFFER_EXT 0x905C
8489#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D
8490#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E
8491#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F
8492#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060
8493#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061
8494#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062
8495#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063
8496#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064
8497#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065
8498#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066
8499#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067
8500#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068
8501#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069
8502#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
8503#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B
8504#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C
8505#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D
8506#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E
8507#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001
8508#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002
8509#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004
8510#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008
8511#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020
8512#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040
8513#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080
8514#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100
8515#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200
8516#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400
8517#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800
8518#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000
8519#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF
8520typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
8521typedef void (APIENTRYP PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers);
8522#ifdef GL_GLEXT_PROTOTYPES
8523GLAPI void APIENTRY glBindImageTextureEXT (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
8524GLAPI void APIENTRY glMemoryBarrierEXT (GLbitfield barriers);
8525#endif
8526#endif /* GL_EXT_shader_image_load_store */
8527
8528#ifndef GL_EXT_shader_integer_mix
8529#define GL_EXT_shader_integer_mix 1
8530#endif /* GL_EXT_shader_integer_mix */
8531
8532#ifndef GL_EXT_shader_samples_identical
8533#define GL_EXT_shader_samples_identical 1
8534#endif /* GL_EXT_shader_samples_identical */
8535
8536#ifndef GL_EXT_shadow_funcs
8537#define GL_EXT_shadow_funcs 1
8538#endif /* GL_EXT_shadow_funcs */
8539
8540#ifndef GL_EXT_shared_texture_palette
8541#define GL_EXT_shared_texture_palette 1
8542#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB
8543#endif /* GL_EXT_shared_texture_palette */
8544
8545#ifndef GL_EXT_sparse_texture2
8546#define GL_EXT_sparse_texture2 1
8547#endif /* GL_EXT_sparse_texture2 */
8548
8549#ifndef GL_EXT_stencil_clear_tag
8550#define GL_EXT_stencil_clear_tag 1
8551#define GL_STENCIL_TAG_BITS_EXT 0x88F2
8552#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3
8553typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag);
8554#ifdef GL_GLEXT_PROTOTYPES
8555GLAPI void APIENTRY glStencilClearTagEXT (GLsizei stencilTagBits, GLuint stencilClearTag);
8556#endif
8557#endif /* GL_EXT_stencil_clear_tag */
8558
8559#ifndef GL_EXT_stencil_two_side
8560#define GL_EXT_stencil_two_side 1
8561#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910
8562#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911
8563typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
8564#ifdef GL_GLEXT_PROTOTYPES
8565GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum face);
8566#endif
8567#endif /* GL_EXT_stencil_two_side */
8568
8569#ifndef GL_EXT_stencil_wrap
8570#define GL_EXT_stencil_wrap 1
8571#define GL_INCR_WRAP_EXT 0x8507
8572#define GL_DECR_WRAP_EXT 0x8508
8573#endif /* GL_EXT_stencil_wrap */
8574
8575#ifndef GL_EXT_subtexture
8576#define GL_EXT_subtexture 1
8577typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
8578typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
8579#ifdef GL_GLEXT_PROTOTYPES
8580GLAPI void APIENTRY glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
8581GLAPI void APIENTRY glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
8582#endif
8583#endif /* GL_EXT_subtexture */
8584
8585#ifndef GL_EXT_texture
8586#define GL_EXT_texture 1
8587#define GL_ALPHA4_EXT 0x803B
8588#define GL_ALPHA8_EXT 0x803C
8589#define GL_ALPHA12_EXT 0x803D
8590#define GL_ALPHA16_EXT 0x803E
8591#define GL_LUMINANCE4_EXT 0x803F
8592#define GL_LUMINANCE8_EXT 0x8040
8593#define GL_LUMINANCE12_EXT 0x8041
8594#define GL_LUMINANCE16_EXT 0x8042
8595#define GL_LUMINANCE4_ALPHA4_EXT 0x8043
8596#define GL_LUMINANCE6_ALPHA2_EXT 0x8044
8597#define GL_LUMINANCE8_ALPHA8_EXT 0x8045
8598#define GL_LUMINANCE12_ALPHA4_EXT 0x8046
8599#define GL_LUMINANCE12_ALPHA12_EXT 0x8047
8600#define GL_LUMINANCE16_ALPHA16_EXT 0x8048
8601#define GL_INTENSITY_EXT 0x8049
8602#define GL_INTENSITY4_EXT 0x804A
8603#define GL_INTENSITY8_EXT 0x804B
8604#define GL_INTENSITY12_EXT 0x804C
8605#define GL_INTENSITY16_EXT 0x804D
8606#define GL_RGB2_EXT 0x804E
8607#define GL_RGB4_EXT 0x804F
8608#define GL_RGB5_EXT 0x8050
8609#define GL_RGB8_EXT 0x8051
8610#define GL_RGB10_EXT 0x8052
8611#define GL_RGB12_EXT 0x8053
8612#define GL_RGB16_EXT 0x8054
8613#define GL_RGBA2_EXT 0x8055
8614#define GL_RGBA4_EXT 0x8056
8615#define GL_RGB5_A1_EXT 0x8057
8616#define GL_RGBA8_EXT 0x8058
8617#define GL_RGB10_A2_EXT 0x8059
8618#define GL_RGBA12_EXT 0x805A
8619#define GL_RGBA16_EXT 0x805B
8620#define GL_TEXTURE_RED_SIZE_EXT 0x805C
8621#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D
8622#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E
8623#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F
8624#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060
8625#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061
8626#define GL_REPLACE_EXT 0x8062
8627#define GL_PROXY_TEXTURE_1D_EXT 0x8063
8628#define GL_PROXY_TEXTURE_2D_EXT 0x8064
8629#define GL_TEXTURE_TOO_LARGE_EXT 0x8065
8630#endif /* GL_EXT_texture */
8631
8632#ifndef GL_EXT_texture3D
8633#define GL_EXT_texture3D 1
8634#define GL_PACK_SKIP_IMAGES_EXT 0x806B
8635#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C
8636#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D
8637#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E
8638#define GL_TEXTURE_3D_EXT 0x806F
8639#define GL_PROXY_TEXTURE_3D_EXT 0x8070
8640#define GL_TEXTURE_DEPTH_EXT 0x8071
8641#define GL_TEXTURE_WRAP_R_EXT 0x8072
8642#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073
8643typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
8644typedef 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);
8645#ifdef GL_GLEXT_PROTOTYPES
8646GLAPI void APIENTRY glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
8647GLAPI 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);
8648#endif
8649#endif /* GL_EXT_texture3D */
8650
8651#ifndef GL_EXT_texture_array
8652#define GL_EXT_texture_array 1
8653#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18
8654#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19
8655#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A
8656#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B
8657#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C
8658#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D
8659#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF
8660#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
8661typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
8662#ifdef GL_GLEXT_PROTOTYPES
8663GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
8664#endif
8665#endif /* GL_EXT_texture_array */
8666
8667#ifndef GL_EXT_texture_buffer_object
8668#define GL_EXT_texture_buffer_object 1
8669#define GL_TEXTURE_BUFFER_EXT 0x8C2A
8670#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
8671#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
8672#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
8673#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E
8674typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);
8675#ifdef GL_GLEXT_PROTOTYPES
8676GLAPI void APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer);
8677#endif
8678#endif /* GL_EXT_texture_buffer_object */
8679
8680#ifndef GL_EXT_texture_compression_latc
8681#define GL_EXT_texture_compression_latc 1
8682#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
8683#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
8684#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
8685#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
8686#endif /* GL_EXT_texture_compression_latc */
8687
8688#ifndef GL_EXT_texture_compression_rgtc
8689#define GL_EXT_texture_compression_rgtc 1
8690#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
8691#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
8692#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
8693#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
8694#endif /* GL_EXT_texture_compression_rgtc */
8695
8696#ifndef GL_EXT_texture_compression_s3tc
8697#define GL_EXT_texture_compression_s3tc 1
8698#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
8699#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
8700#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
8701#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
8702#endif /* GL_EXT_texture_compression_s3tc */
8703
8704#ifndef GL_EXT_texture_cube_map
8705#define GL_EXT_texture_cube_map 1
8706#define GL_NORMAL_MAP_EXT 0x8511
8707#define GL_REFLECTION_MAP_EXT 0x8512
8708#define GL_TEXTURE_CUBE_MAP_EXT 0x8513
8709#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514
8710#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
8711#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
8712#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
8713#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
8714#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
8715#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
8716#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B
8717#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C
8718#endif /* GL_EXT_texture_cube_map */
8719
8720#ifndef GL_EXT_texture_env_add
8721#define GL_EXT_texture_env_add 1
8722#endif /* GL_EXT_texture_env_add */
8723
8724#ifndef GL_EXT_texture_env_combine
8725#define GL_EXT_texture_env_combine 1
8726#define GL_COMBINE_EXT 0x8570
8727#define GL_COMBINE_RGB_EXT 0x8571
8728#define GL_COMBINE_ALPHA_EXT 0x8572
8729#define GL_RGB_SCALE_EXT 0x8573
8730#define GL_ADD_SIGNED_EXT 0x8574
8731#define GL_INTERPOLATE_EXT 0x8575
8732#define GL_CONSTANT_EXT 0x8576
8733#define GL_PRIMARY_COLOR_EXT 0x8577
8734#define GL_PREVIOUS_EXT 0x8578
8735#define GL_SOURCE0_RGB_EXT 0x8580
8736#define GL_SOURCE1_RGB_EXT 0x8581
8737#define GL_SOURCE2_RGB_EXT 0x8582
8738#define GL_SOURCE0_ALPHA_EXT 0x8588
8739#define GL_SOURCE1_ALPHA_EXT 0x8589
8740#define GL_SOURCE2_ALPHA_EXT 0x858A
8741#define GL_OPERAND0_RGB_EXT 0x8590
8742#define GL_OPERAND1_RGB_EXT 0x8591
8743#define GL_OPERAND2_RGB_EXT 0x8592
8744#define GL_OPERAND0_ALPHA_EXT 0x8598
8745#define GL_OPERAND1_ALPHA_EXT 0x8599
8746#define GL_OPERAND2_ALPHA_EXT 0x859A
8747#endif /* GL_EXT_texture_env_combine */
8748
8749#ifndef GL_EXT_texture_env_dot3
8750#define GL_EXT_texture_env_dot3 1
8751#define GL_DOT3_RGB_EXT 0x8740
8752#define GL_DOT3_RGBA_EXT 0x8741
8753#endif /* GL_EXT_texture_env_dot3 */
8754
8755#ifndef GL_EXT_texture_filter_anisotropic
8756#define GL_EXT_texture_filter_anisotropic 1
8757#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
8758#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
8759#endif /* GL_EXT_texture_filter_anisotropic */
8760
8761#ifndef GL_EXT_texture_filter_minmax
8762#define GL_EXT_texture_filter_minmax 1
8763#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366
8764#define GL_WEIGHTED_AVERAGE_EXT 0x9367
8765#endif /* GL_EXT_texture_filter_minmax */
8766
8767#ifndef GL_EXT_texture_integer
8768#define GL_EXT_texture_integer 1
8769#define GL_RGBA32UI_EXT 0x8D70
8770#define GL_RGB32UI_EXT 0x8D71
8771#define GL_ALPHA32UI_EXT 0x8D72
8772#define GL_INTENSITY32UI_EXT 0x8D73
8773#define GL_LUMINANCE32UI_EXT 0x8D74
8774#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75
8775#define GL_RGBA16UI_EXT 0x8D76
8776#define GL_RGB16UI_EXT 0x8D77
8777#define GL_ALPHA16UI_EXT 0x8D78
8778#define GL_INTENSITY16UI_EXT 0x8D79
8779#define GL_LUMINANCE16UI_EXT 0x8D7A
8780#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B
8781#define GL_RGBA8UI_EXT 0x8D7C
8782#define GL_RGB8UI_EXT 0x8D7D
8783#define GL_ALPHA8UI_EXT 0x8D7E
8784#define GL_INTENSITY8UI_EXT 0x8D7F
8785#define GL_LUMINANCE8UI_EXT 0x8D80
8786#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81
8787#define GL_RGBA32I_EXT 0x8D82
8788#define GL_RGB32I_EXT 0x8D83
8789#define GL_ALPHA32I_EXT 0x8D84
8790#define GL_INTENSITY32I_EXT 0x8D85
8791#define GL_LUMINANCE32I_EXT 0x8D86
8792#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87
8793#define GL_RGBA16I_EXT 0x8D88
8794#define GL_RGB16I_EXT 0x8D89
8795#define GL_ALPHA16I_EXT 0x8D8A
8796#define GL_INTENSITY16I_EXT 0x8D8B
8797#define GL_LUMINANCE16I_EXT 0x8D8C
8798#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D
8799#define GL_RGBA8I_EXT 0x8D8E
8800#define GL_RGB8I_EXT 0x8D8F
8801#define GL_ALPHA8I_EXT 0x8D90
8802#define GL_INTENSITY8I_EXT 0x8D91
8803#define GL_LUMINANCE8I_EXT 0x8D92
8804#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93
8805#define GL_RED_INTEGER_EXT 0x8D94
8806#define GL_GREEN_INTEGER_EXT 0x8D95
8807#define GL_BLUE_INTEGER_EXT 0x8D96
8808#define GL_ALPHA_INTEGER_EXT 0x8D97
8809#define GL_RGB_INTEGER_EXT 0x8D98
8810#define GL_RGBA_INTEGER_EXT 0x8D99
8811#define GL_BGR_INTEGER_EXT 0x8D9A
8812#define GL_BGRA_INTEGER_EXT 0x8D9B
8813#define GL_LUMINANCE_INTEGER_EXT 0x8D9C
8814#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D
8815#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E
8816typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
8817typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);
8818typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
8819typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params);
8820typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha);
8821typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
8822#ifdef GL_GLEXT_PROTOTYPES
8823GLAPI void APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params);
8824GLAPI void APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params);
8825GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params);
8826GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params);
8827GLAPI void APIENTRY glClearColorIiEXT (GLint red, GLint green, GLint blue, GLint alpha);
8828GLAPI void APIENTRY glClearColorIuiEXT (GLuint red, GLuint green, GLuint blue, GLuint alpha);
8829#endif
8830#endif /* GL_EXT_texture_integer */
8831
8832#ifndef GL_EXT_texture_lod_bias
8833#define GL_EXT_texture_lod_bias 1
8834#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD
8835#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500
8836#define GL_TEXTURE_LOD_BIAS_EXT 0x8501
8837#endif /* GL_EXT_texture_lod_bias */
8838
8839#ifndef GL_EXT_texture_mirror_clamp
8840#define GL_EXT_texture_mirror_clamp 1
8841#define GL_MIRROR_CLAMP_EXT 0x8742
8842#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
8843#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912
8844#endif /* GL_EXT_texture_mirror_clamp */
8845
8846#ifndef GL_EXT_texture_object
8847#define GL_EXT_texture_object 1
8848#define GL_TEXTURE_PRIORITY_EXT 0x8066
8849#define GL_TEXTURE_RESIDENT_EXT 0x8067
8850#define GL_TEXTURE_1D_BINDING_EXT 0x8068
8851#define GL_TEXTURE_2D_BINDING_EXT 0x8069
8852#define GL_TEXTURE_3D_BINDING_EXT 0x806A
8853typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
8854typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
8855typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures);
8856typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures);
8857typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture);
8858typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);
8859#ifdef GL_GLEXT_PROTOTYPES
8860GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei n, const GLuint *textures, GLboolean *residences);
8861GLAPI void APIENTRY glBindTextureEXT (GLenum target, GLuint texture);
8862GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei n, const GLuint *textures);
8863GLAPI void APIENTRY glGenTexturesEXT (GLsizei n, GLuint *textures);
8864GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint texture);
8865GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei n, const GLuint *textures, const GLclampf *priorities);
8866#endif
8867#endif /* GL_EXT_texture_object */
8868
8869#ifndef GL_EXT_texture_perturb_normal
8870#define GL_EXT_texture_perturb_normal 1
8871#define GL_PERTURB_EXT 0x85AE
8872#define GL_TEXTURE_NORMAL_EXT 0x85AF
8873typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
8874#ifdef GL_GLEXT_PROTOTYPES
8875GLAPI void APIENTRY glTextureNormalEXT (GLenum mode);
8876#endif
8877#endif /* GL_EXT_texture_perturb_normal */
8878
8879#ifndef GL_EXT_texture_sRGB
8880#define GL_EXT_texture_sRGB 1
8881#define GL_SRGB_EXT 0x8C40
8882#define GL_SRGB8_EXT 0x8C41
8883#define GL_SRGB_ALPHA_EXT 0x8C42
8884#define GL_SRGB8_ALPHA8_EXT 0x8C43
8885#define GL_SLUMINANCE_ALPHA_EXT 0x8C44
8886#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45
8887#define GL_SLUMINANCE_EXT 0x8C46
8888#define GL_SLUMINANCE8_EXT 0x8C47
8889#define GL_COMPRESSED_SRGB_EXT 0x8C48
8890#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49
8891#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A
8892#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B
8893#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
8894#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
8895#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
8896#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
8897#endif /* GL_EXT_texture_sRGB */
8898
8899#ifndef GL_EXT_texture_sRGB_R8
8900#define GL_EXT_texture_sRGB_R8 1
8901#define GL_SR8_EXT 0x8FBD
8902#endif /* GL_EXT_texture_sRGB_R8 */
8903
8904#ifndef GL_EXT_texture_sRGB_RG8
8905#define GL_EXT_texture_sRGB_RG8 1
8906#define GL_SRG8_EXT 0x8FBE
8907#endif /* GL_EXT_texture_sRGB_RG8 */
8908
8909#ifndef GL_EXT_texture_sRGB_decode
8910#define GL_EXT_texture_sRGB_decode 1
8911#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48
8912#define GL_DECODE_EXT 0x8A49
8913#define GL_SKIP_DECODE_EXT 0x8A4A
8914#endif /* GL_EXT_texture_sRGB_decode */
8915
8916#ifndef GL_EXT_texture_shadow_lod
8917#define GL_EXT_texture_shadow_lod 1
8918#endif /* GL_EXT_texture_shadow_lod */
8919
8920#ifndef GL_EXT_texture_shared_exponent
8921#define GL_EXT_texture_shared_exponent 1
8922#define GL_RGB9_E5_EXT 0x8C3D
8923#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E
8924#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F
8925#endif /* GL_EXT_texture_shared_exponent */
8926
8927#ifndef GL_EXT_texture_snorm
8928#define GL_EXT_texture_snorm 1
8929#define GL_ALPHA_SNORM 0x9010
8930#define GL_LUMINANCE_SNORM 0x9011
8931#define GL_LUMINANCE_ALPHA_SNORM 0x9012
8932#define GL_INTENSITY_SNORM 0x9013
8933#define GL_ALPHA8_SNORM 0x9014
8934#define GL_LUMINANCE8_SNORM 0x9015
8935#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016
8936#define GL_INTENSITY8_SNORM 0x9017
8937#define GL_ALPHA16_SNORM 0x9018
8938#define GL_LUMINANCE16_SNORM 0x9019
8939#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A
8940#define GL_INTENSITY16_SNORM 0x901B
8941#define GL_RED_SNORM 0x8F90
8942#define GL_RG_SNORM 0x8F91
8943#define GL_RGB_SNORM 0x8F92
8944#define GL_RGBA_SNORM 0x8F93
8945#endif /* GL_EXT_texture_snorm */
8946
8947#ifndef GL_EXT_texture_storage
8948#define GL_EXT_texture_storage 1
8949#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F
8950#define GL_RGBA32F_EXT 0x8814
8951#define GL_RGB32F_EXT 0x8815
8952#define GL_ALPHA32F_EXT 0x8816
8953#define GL_LUMINANCE32F_EXT 0x8818
8954#define GL_LUMINANCE_ALPHA32F_EXT 0x8819
8955#define GL_RGBA16F_EXT 0x881A
8956#define GL_RGB16F_EXT 0x881B
8957#define GL_ALPHA16F_EXT 0x881C
8958#define GL_LUMINANCE16F_EXT 0x881E
8959#define GL_LUMINANCE_ALPHA16F_EXT 0x881F
8960#define GL_BGRA8_EXT 0x93A1
8961#define GL_R8_EXT 0x8229
8962#define GL_RG8_EXT 0x822B
8963#define GL_R32F_EXT 0x822E
8964#define GL_RG32F_EXT 0x8230
8965#define GL_R16F_EXT 0x822D
8966#define GL_RG16F_EXT 0x822F
8967typedef void (APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
8968typedef void (APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
8969typedef void (APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
8970#ifdef GL_GLEXT_PROTOTYPES
8971GLAPI void APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
8972GLAPI void APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
8973GLAPI void APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
8974#endif
8975#endif /* GL_EXT_texture_storage */
8976
8977#ifndef GL_EXT_texture_swizzle
8978#define GL_EXT_texture_swizzle 1
8979#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42
8980#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43
8981#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44
8982#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45
8983#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46
8984#endif /* GL_EXT_texture_swizzle */
8985
8986#ifndef GL_EXT_timer_query
8987#define GL_EXT_timer_query 1
8988#define GL_TIME_ELAPSED_EXT 0x88BF
8989typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params);
8990typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params);
8991#ifdef GL_GLEXT_PROTOTYPES
8992GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params);
8993GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params);
8994#endif
8995#endif /* GL_EXT_timer_query */
8996
8997#ifndef GL_EXT_transform_feedback
8998#define GL_EXT_transform_feedback 1
8999#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E
9000#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84
9001#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85
9002#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F
9003#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C
9004#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D
9005#define GL_PRIMITIVES_GENERATED_EXT 0x8C87
9006#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88
9007#define GL_RASTERIZER_DISCARD_EXT 0x8C89
9008#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A
9009#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B
9010#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80
9011#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83
9012#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F
9013#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76
9014typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode);
9015typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void);
9016typedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
9017typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
9018typedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer);
9019typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
9020typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
9021#ifdef GL_GLEXT_PROTOTYPES
9022GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum primitiveMode);
9023GLAPI void APIENTRY glEndTransformFeedbackEXT (void);
9024GLAPI void APIENTRY glBindBufferRangeEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
9025GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
9026GLAPI void APIENTRY glBindBufferBaseEXT (GLenum target, GLuint index, GLuint buffer);
9027GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
9028GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
9029#endif
9030#endif /* GL_EXT_transform_feedback */
9031
9032#ifndef GL_EXT_vertex_array
9033#define GL_EXT_vertex_array 1
9034#define GL_VERTEX_ARRAY_EXT 0x8074
9035#define GL_NORMAL_ARRAY_EXT 0x8075
9036#define GL_COLOR_ARRAY_EXT 0x8076
9037#define GL_INDEX_ARRAY_EXT 0x8077
9038#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078
9039#define GL_EDGE_FLAG_ARRAY_EXT 0x8079
9040#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A
9041#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B
9042#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C
9043#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D
9044#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E
9045#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F
9046#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080
9047#define GL_COLOR_ARRAY_SIZE_EXT 0x8081
9048#define GL_COLOR_ARRAY_TYPE_EXT 0x8082
9049#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083
9050#define GL_COLOR_ARRAY_COUNT_EXT 0x8084
9051#define GL_INDEX_ARRAY_TYPE_EXT 0x8085
9052#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086
9053#define GL_INDEX_ARRAY_COUNT_EXT 0x8087
9054#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088
9055#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089
9056#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
9057#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B
9058#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C
9059#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D
9060#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E
9061#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F
9062#define GL_COLOR_ARRAY_POINTER_EXT 0x8090
9063#define GL_INDEX_ARRAY_POINTER_EXT 0x8091
9064#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
9065#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093
9066typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i);
9067typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
9068typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
9069typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);
9070typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, void **params);
9071typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
9072typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
9073typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
9074typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
9075#ifdef GL_GLEXT_PROTOTYPES
9076GLAPI void APIENTRY glArrayElementEXT (GLint i);
9077GLAPI void APIENTRY glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
9078GLAPI void APIENTRY glDrawArraysEXT (GLenum mode, GLint first, GLsizei count);
9079GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer);
9080GLAPI void APIENTRY glGetPointervEXT (GLenum pname, void **params);
9081GLAPI void APIENTRY glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
9082GLAPI void APIENTRY glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
9083GLAPI void APIENTRY glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
9084GLAPI void APIENTRY glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
9085#endif
9086#endif /* GL_EXT_vertex_array */
9087
9088#ifndef GL_EXT_vertex_array_bgra
9089#define GL_EXT_vertex_array_bgra 1
9090#endif /* GL_EXT_vertex_array_bgra */
9091
9092#ifndef GL_EXT_vertex_attrib_64bit
9093#define GL_EXT_vertex_attrib_64bit 1
9094#define GL_DOUBLE_VEC2_EXT 0x8FFC
9095#define GL_DOUBLE_VEC3_EXT 0x8FFD
9096#define GL_DOUBLE_VEC4_EXT 0x8FFE
9097#define GL_DOUBLE_MAT2_EXT 0x8F46
9098#define GL_DOUBLE_MAT3_EXT 0x8F47
9099#define GL_DOUBLE_MAT4_EXT 0x8F48
9100#define GL_DOUBLE_MAT2x3_EXT 0x8F49
9101#define GL_DOUBLE_MAT2x4_EXT 0x8F4A
9102#define GL_DOUBLE_MAT3x2_EXT 0x8F4B
9103#define GL_DOUBLE_MAT3x4_EXT 0x8F4C
9104#define GL_DOUBLE_MAT4x2_EXT 0x8F4D
9105#define GL_DOUBLE_MAT4x3_EXT 0x8F4E
9106typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x);
9107typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y);
9108typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
9109typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
9110typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble *v);
9111typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble *v);
9112typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble *v);
9113typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble *v);
9114typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
9115typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble *params);
9116#ifdef GL_GLEXT_PROTOTYPES
9117GLAPI void APIENTRY glVertexAttribL1dEXT (GLuint index, GLdouble x);
9118GLAPI void APIENTRY glVertexAttribL2dEXT (GLuint index, GLdouble x, GLdouble y);
9119GLAPI void APIENTRY glVertexAttribL3dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z);
9120GLAPI void APIENTRY glVertexAttribL4dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
9121GLAPI void APIENTRY glVertexAttribL1dvEXT (GLuint index, const GLdouble *v);
9122GLAPI void APIENTRY glVertexAttribL2dvEXT (GLuint index, const GLdouble *v);
9123GLAPI void APIENTRY glVertexAttribL3dvEXT (GLuint index, const GLdouble *v);
9124GLAPI void APIENTRY glVertexAttribL4dvEXT (GLuint index, const GLdouble *v);
9125GLAPI void APIENTRY glVertexAttribLPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
9126GLAPI void APIENTRY glGetVertexAttribLdvEXT (GLuint index, GLenum pname, GLdouble *params);
9127#endif
9128#endif /* GL_EXT_vertex_attrib_64bit */
9129
9130#ifndef GL_EXT_vertex_shader
9131#define GL_EXT_vertex_shader 1
9132#define GL_VERTEX_SHADER_EXT 0x8780
9133#define GL_VERTEX_SHADER_BINDING_EXT 0x8781
9134#define GL_OP_INDEX_EXT 0x8782
9135#define GL_OP_NEGATE_EXT 0x8783
9136#define GL_OP_DOT3_EXT 0x8784
9137#define GL_OP_DOT4_EXT 0x8785
9138#define GL_OP_MUL_EXT 0x8786
9139#define GL_OP_ADD_EXT 0x8787
9140#define GL_OP_MADD_EXT 0x8788
9141#define GL_OP_FRAC_EXT 0x8789
9142#define GL_OP_MAX_EXT 0x878A
9143#define GL_OP_MIN_EXT 0x878B
9144#define GL_OP_SET_GE_EXT 0x878C
9145#define GL_OP_SET_LT_EXT 0x878D
9146#define GL_OP_CLAMP_EXT 0x878E
9147#define GL_OP_FLOOR_EXT 0x878F
9148#define GL_OP_ROUND_EXT 0x8790
9149#define GL_OP_EXP_BASE_2_EXT 0x8791
9150#define GL_OP_LOG_BASE_2_EXT 0x8792
9151#define GL_OP_POWER_EXT 0x8793
9152#define GL_OP_RECIP_EXT 0x8794
9153#define GL_OP_RECIP_SQRT_EXT 0x8795
9154#define GL_OP_SUB_EXT 0x8796
9155#define GL_OP_CROSS_PRODUCT_EXT 0x8797
9156#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798
9157#define GL_OP_MOV_EXT 0x8799
9158#define GL_OUTPUT_VERTEX_EXT 0x879A
9159#define GL_OUTPUT_COLOR0_EXT 0x879B
9160#define GL_OUTPUT_COLOR1_EXT 0x879C
9161#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D
9162#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E
9163#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F
9164#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0
9165#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1
9166#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2
9167#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3
9168#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4
9169#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5
9170#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6
9171#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7
9172#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8
9173#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9
9174#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA
9175#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB
9176#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC
9177#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD
9178#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE
9179#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF
9180#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0
9181#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1
9182#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2
9183#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3
9184#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4
9185#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5
9186#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6
9187#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7
9188#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8
9189#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9
9190#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA
9191#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB
9192#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC
9193#define GL_OUTPUT_FOG_EXT 0x87BD
9194#define GL_SCALAR_EXT 0x87BE
9195#define GL_VECTOR_EXT 0x87BF
9196#define GL_MATRIX_EXT 0x87C0
9197#define GL_VARIANT_EXT 0x87C1
9198#define GL_INVARIANT_EXT 0x87C2
9199#define GL_LOCAL_CONSTANT_EXT 0x87C3
9200#define GL_LOCAL_EXT 0x87C4
9201#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
9202#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
9203#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
9204#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
9205#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9
9206#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
9207#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
9208#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC
9209#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD
9210#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
9211#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
9212#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0
9213#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1
9214#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
9215#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3
9216#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4
9217#define GL_X_EXT 0x87D5
9218#define GL_Y_EXT 0x87D6
9219#define GL_Z_EXT 0x87D7
9220#define GL_W_EXT 0x87D8
9221#define GL_NEGATIVE_X_EXT 0x87D9
9222#define GL_NEGATIVE_Y_EXT 0x87DA
9223#define GL_NEGATIVE_Z_EXT 0x87DB
9224#define GL_NEGATIVE_W_EXT 0x87DC
9225#define GL_ZERO_EXT 0x87DD
9226#define GL_ONE_EXT 0x87DE
9227#define GL_NEGATIVE_ONE_EXT 0x87DF
9228#define GL_NORMALIZED_RANGE_EXT 0x87E0
9229#define GL_FULL_RANGE_EXT 0x87E1
9230#define GL_CURRENT_VERTEX_EXT 0x87E2
9231#define GL_MVP_MATRIX_EXT 0x87E3
9232#define GL_VARIANT_VALUE_EXT 0x87E4
9233#define GL_VARIANT_DATATYPE_EXT 0x87E5
9234#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6
9235#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7
9236#define GL_VARIANT_ARRAY_EXT 0x87E8
9237#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9
9238#define GL_INVARIANT_VALUE_EXT 0x87EA
9239#define GL_INVARIANT_DATATYPE_EXT 0x87EB
9240#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC
9241#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED
9242typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void);
9243typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void);
9244typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);
9245typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);
9246typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);
9247typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);
9248typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
9249typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
9250typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
9251typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
9252typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
9253typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
9254typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
9255typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const void *addr);
9256typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const void *addr);
9257typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr);
9258typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr);
9259typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr);
9260typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr);
9261typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr);
9262typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr);
9263typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr);
9264typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr);
9265typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const void *addr);
9266typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
9267typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
9268typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);
9269typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);
9270typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value);
9271typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);
9272typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value);
9273typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);
9274typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
9275typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
9276typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
9277typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, void **data);
9278typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
9279typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
9280typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
9281typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
9282typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
9283typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
9284#ifdef GL_GLEXT_PROTOTYPES
9285GLAPI void APIENTRY glBeginVertexShaderEXT (void);
9286GLAPI void APIENTRY glEndVertexShaderEXT (void);
9287GLAPI void APIENTRY glBindVertexShaderEXT (GLuint id);
9288GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint range);
9289GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint id);
9290GLAPI void APIENTRY glShaderOp1EXT (GLenum op, GLuint res, GLuint arg1);
9291GLAPI void APIENTRY glShaderOp2EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
9292GLAPI void APIENTRY glShaderOp3EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
9293GLAPI void APIENTRY glSwizzleEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
9294GLAPI void APIENTRY glWriteMaskEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
9295GLAPI void APIENTRY glInsertComponentEXT (GLuint res, GLuint src, GLuint num);
9296GLAPI void APIENTRY glExtractComponentEXT (GLuint res, GLuint src, GLuint num);
9297GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
9298GLAPI void APIENTRY glSetInvariantEXT (GLuint id, GLenum type, const void *addr);
9299GLAPI void APIENTRY glSetLocalConstantEXT (GLuint id, GLenum type, const void *addr);
9300GLAPI void APIENTRY glVariantbvEXT (GLuint id, const GLbyte *addr);
9301GLAPI void APIENTRY glVariantsvEXT (GLuint id, const GLshort *addr);
9302GLAPI void APIENTRY glVariantivEXT (GLuint id, const GLint *addr);
9303GLAPI void APIENTRY glVariantfvEXT (GLuint id, const GLfloat *addr);
9304GLAPI void APIENTRY glVariantdvEXT (GLuint id, const GLdouble *addr);
9305GLAPI void APIENTRY glVariantubvEXT (GLuint id, const GLubyte *addr);
9306GLAPI void APIENTRY glVariantusvEXT (GLuint id, const GLushort *addr);
9307GLAPI void APIENTRY glVariantuivEXT (GLuint id, const GLuint *addr);
9308GLAPI void APIENTRY glVariantPointerEXT (GLuint id, GLenum type, GLuint stride, const void *addr);
9309GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint id);
9310GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint id);
9311GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum light, GLenum value);
9312GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum face, GLenum value);
9313GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum unit, GLenum coord, GLenum value);
9314GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum unit, GLenum value);
9315GLAPI GLuint APIENTRY glBindParameterEXT (GLenum value);
9316GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint id, GLenum cap);
9317GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
9318GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint id, GLenum value, GLint *data);
9319GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
9320GLAPI void APIENTRY glGetVariantPointervEXT (GLuint id, GLenum value, void **data);
9321GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
9322GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint id, GLenum value, GLint *data);
9323GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
9324GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
9325GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint id, GLenum value, GLint *data);
9326GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
9327#endif
9328#endif /* GL_EXT_vertex_shader */
9329
9330#ifndef GL_EXT_vertex_weighting
9331#define GL_EXT_vertex_weighting 1
9332#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3
9333#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502
9334#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6
9335#define GL_MODELVIEW1_MATRIX_EXT 0x8506
9336#define GL_VERTEX_WEIGHTING_EXT 0x8509
9337#define GL_MODELVIEW0_EXT 0x1700
9338#define GL_MODELVIEW1_EXT 0x850A
9339#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B
9340#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C
9341#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D
9342#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E
9343#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
9344#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
9345typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
9346typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
9347typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
9348#ifdef GL_GLEXT_PROTOTYPES
9349GLAPI void APIENTRY glVertexWeightfEXT (GLfloat weight);
9350GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight);
9351GLAPI void APIENTRY glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer);
9352#endif
9353#endif /* GL_EXT_vertex_weighting */
9354
9355#ifndef GL_EXT_win32_keyed_mutex
9356#define GL_EXT_win32_keyed_mutex 1
9357typedef GLboolean (APIENTRYP PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key, GLuint timeout);
9358typedef GLboolean (APIENTRYP PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key);
9359#ifdef GL_GLEXT_PROTOTYPES
9360GLAPI GLboolean APIENTRY glAcquireKeyedMutexWin32EXT (GLuint memory, GLuint64 key, GLuint timeout);
9361GLAPI GLboolean APIENTRY glReleaseKeyedMutexWin32EXT (GLuint memory, GLuint64 key);
9362#endif
9363#endif /* GL_EXT_win32_keyed_mutex */
9364
9365#ifndef GL_EXT_window_rectangles
9366#define GL_EXT_window_rectangles 1
9367#define GL_INCLUSIVE_EXT 0x8F10
9368#define GL_EXCLUSIVE_EXT 0x8F11
9369#define GL_WINDOW_RECTANGLE_EXT 0x8F12
9370#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13
9371#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14
9372#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15
9373typedef void (APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box);
9374#ifdef GL_GLEXT_PROTOTYPES
9375GLAPI void APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box);
9376#endif
9377#endif /* GL_EXT_window_rectangles */
9378
9379#ifndef GL_EXT_x11_sync_object
9380#define GL_EXT_x11_sync_object 1
9381#define GL_SYNC_X11_FENCE_EXT 0x90E1
9382typedef GLsync (APIENTRYP PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
9383#ifdef GL_GLEXT_PROTOTYPES
9384GLAPI GLsync APIENTRY glImportSyncEXT (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
9385#endif
9386#endif /* GL_EXT_x11_sync_object */
9387
9388#ifndef GL_GREMEDY_frame_terminator
9389#define GL_GREMEDY_frame_terminator 1
9390typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void);
9391#ifdef GL_GLEXT_PROTOTYPES
9392GLAPI void APIENTRY glFrameTerminatorGREMEDY (void);
9393#endif
9394#endif /* GL_GREMEDY_frame_terminator */
9395
9396#ifndef GL_GREMEDY_string_marker
9397#define GL_GREMEDY_string_marker 1
9398typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void *string);
9399#ifdef GL_GLEXT_PROTOTYPES
9400GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei len, const void *string);
9401#endif
9402#endif /* GL_GREMEDY_string_marker */
9403
9404#ifndef GL_HP_convolution_border_modes
9405#define GL_HP_convolution_border_modes 1
9406#define GL_IGNORE_BORDER_HP 0x8150
9407#define GL_CONSTANT_BORDER_HP 0x8151
9408#define GL_REPLICATE_BORDER_HP 0x8153
9409#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154
9410#endif /* GL_HP_convolution_border_modes */
9411
9412#ifndef GL_HP_image_transform
9413#define GL_HP_image_transform 1
9414#define GL_IMAGE_SCALE_X_HP 0x8155
9415#define GL_IMAGE_SCALE_Y_HP 0x8156
9416#define GL_IMAGE_TRANSLATE_X_HP 0x8157
9417#define GL_IMAGE_TRANSLATE_Y_HP 0x8158
9418#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159
9419#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A
9420#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B
9421#define GL_IMAGE_MAG_FILTER_HP 0x815C
9422#define GL_IMAGE_MIN_FILTER_HP 0x815D
9423#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E
9424#define GL_CUBIC_HP 0x815F
9425#define GL_AVERAGE_HP 0x8160
9426#define GL_IMAGE_TRANSFORM_2D_HP 0x8161
9427#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162
9428#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163
9429typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);
9430typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);
9431typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params);
9432typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params);
9433typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params);
9434typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params);
9435#ifdef GL_GLEXT_PROTOTYPES
9436GLAPI void APIENTRY glImageTransformParameteriHP (GLenum target, GLenum pname, GLint param);
9437GLAPI void APIENTRY glImageTransformParameterfHP (GLenum target, GLenum pname, GLfloat param);
9438GLAPI void APIENTRY glImageTransformParameterivHP (GLenum target, GLenum pname, const GLint *params);
9439GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat *params);
9440GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum target, GLenum pname, GLint *params);
9441GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum target, GLenum pname, GLfloat *params);
9442#endif
9443#endif /* GL_HP_image_transform */
9444
9445#ifndef GL_HP_occlusion_test
9446#define GL_HP_occlusion_test 1
9447#define GL_OCCLUSION_TEST_HP 0x8165
9448#define GL_OCCLUSION_TEST_RESULT_HP 0x8166
9449#endif /* GL_HP_occlusion_test */
9450
9451#ifndef GL_HP_texture_lighting
9452#define GL_HP_texture_lighting 1
9453#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167
9454#define GL_TEXTURE_POST_SPECULAR_HP 0x8168
9455#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169
9456#endif /* GL_HP_texture_lighting */
9457
9458#ifndef GL_IBM_cull_vertex
9459#define GL_IBM_cull_vertex 1
9460#define GL_CULL_VERTEX_IBM 103050
9461#endif /* GL_IBM_cull_vertex */
9462
9463#ifndef GL_IBM_multimode_draw_arrays
9464#define GL_IBM_multimode_draw_arrays 1
9465typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
9466typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride);
9467#ifdef GL_GLEXT_PROTOTYPES
9468GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
9469GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride);
9470#endif
9471#endif /* GL_IBM_multimode_draw_arrays */
9472
9473#ifndef GL_IBM_rasterpos_clip
9474#define GL_IBM_rasterpos_clip 1
9475#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262
9476#endif /* GL_IBM_rasterpos_clip */
9477
9478#ifndef GL_IBM_static_data
9479#define GL_IBM_static_data 1
9480#define GL_ALL_STATIC_DATA_IBM 103060
9481#define GL_STATIC_VERTEX_ARRAY_IBM 103061
9482typedef void (APIENTRYP PFNGLFLUSHSTATICDATAIBMPROC) (GLenum target);
9483#ifdef GL_GLEXT_PROTOTYPES
9484GLAPI void APIENTRY glFlushStaticDataIBM (GLenum target);
9485#endif
9486#endif /* GL_IBM_static_data */
9487
9488#ifndef GL_IBM_texture_mirrored_repeat
9489#define GL_IBM_texture_mirrored_repeat 1
9490#define GL_MIRRORED_REPEAT_IBM 0x8370
9491#endif /* GL_IBM_texture_mirrored_repeat */
9492
9493#ifndef GL_IBM_vertex_array_lists
9494#define GL_IBM_vertex_array_lists 1
9495#define GL_VERTEX_ARRAY_LIST_IBM 103070
9496#define GL_NORMAL_ARRAY_LIST_IBM 103071
9497#define GL_COLOR_ARRAY_LIST_IBM 103072
9498#define GL_INDEX_ARRAY_LIST_IBM 103073
9499#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074
9500#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075
9501#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076
9502#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
9503#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080
9504#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081
9505#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082
9506#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083
9507#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
9508#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
9509#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
9510#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
9511typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
9512typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
9513typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean **pointer, GLint ptrstride);
9514typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
9515typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
9516typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
9517typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
9518typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
9519#ifdef GL_GLEXT_PROTOTYPES
9520GLAPI void APIENTRY glColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
9521GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
9522GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint stride, const GLboolean **pointer, GLint ptrstride);
9523GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
9524GLAPI void APIENTRY glIndexPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
9525GLAPI void APIENTRY glNormalPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
9526GLAPI void APIENTRY glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
9527GLAPI void APIENTRY glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
9528#endif
9529#endif /* GL_IBM_vertex_array_lists */
9530
9531#ifndef GL_INGR_blend_func_separate
9532#define GL_INGR_blend_func_separate 1
9533typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
9534#ifdef GL_GLEXT_PROTOTYPES
9535GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
9536#endif
9537#endif /* GL_INGR_blend_func_separate */
9538
9539#ifndef GL_INGR_color_clamp
9540#define GL_INGR_color_clamp 1
9541#define GL_RED_MIN_CLAMP_INGR 0x8560
9542#define GL_GREEN_MIN_CLAMP_INGR 0x8561
9543#define GL_BLUE_MIN_CLAMP_INGR 0x8562
9544#define GL_ALPHA_MIN_CLAMP_INGR 0x8563
9545#define GL_RED_MAX_CLAMP_INGR 0x8564
9546#define GL_GREEN_MAX_CLAMP_INGR 0x8565
9547#define GL_BLUE_MAX_CLAMP_INGR 0x8566
9548#define GL_ALPHA_MAX_CLAMP_INGR 0x8567
9549#endif /* GL_INGR_color_clamp */
9550
9551#ifndef GL_INGR_interlace_read
9552#define GL_INGR_interlace_read 1
9553#define GL_INTERLACE_READ_INGR 0x8568
9554#endif /* GL_INGR_interlace_read */
9555
9556#ifndef GL_INTEL_blackhole_render
9557#define GL_INTEL_blackhole_render 1
9558#define GL_BLACKHOLE_RENDER_INTEL 0x83FC
9559#endif /* GL_INTEL_blackhole_render */
9560
9561#ifndef GL_INTEL_conservative_rasterization
9562#define GL_INTEL_conservative_rasterization 1
9563#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE
9564#endif /* GL_INTEL_conservative_rasterization */
9565
9566#ifndef GL_INTEL_fragment_shader_ordering
9567#define GL_INTEL_fragment_shader_ordering 1
9568#endif /* GL_INTEL_fragment_shader_ordering */
9569
9570#ifndef GL_INTEL_framebuffer_CMAA
9571#define GL_INTEL_framebuffer_CMAA 1
9572typedef void (APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void);
9573#ifdef GL_GLEXT_PROTOTYPES
9574GLAPI void APIENTRY glApplyFramebufferAttachmentCMAAINTEL (void);
9575#endif
9576#endif /* GL_INTEL_framebuffer_CMAA */
9577
9578#ifndef GL_INTEL_map_texture
9579#define GL_INTEL_map_texture 1
9580#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF
9581#define GL_LAYOUT_DEFAULT_INTEL 0
9582#define GL_LAYOUT_LINEAR_INTEL 1
9583#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2
9584typedef void (APIENTRYP PFNGLSYNCTEXTUREINTELPROC) (GLuint texture);
9585typedef void (APIENTRYP PFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level);
9586typedef void *(APIENTRYP PFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout);
9587#ifdef GL_GLEXT_PROTOTYPES
9588GLAPI void APIENTRY glSyncTextureINTEL (GLuint texture);
9589GLAPI void APIENTRY glUnmapTexture2DINTEL (GLuint texture, GLint level);
9590GLAPI void *APIENTRY glMapTexture2DINTEL (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout);
9591#endif
9592#endif /* GL_INTEL_map_texture */
9593
9594#ifndef GL_INTEL_parallel_arrays
9595#define GL_INTEL_parallel_arrays 1
9596#define GL_PARALLEL_ARRAYS_INTEL 0x83F4
9597#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
9598#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
9599#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
9600#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
9601typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);
9602typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void **pointer);
9603typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);
9604typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);
9605#ifdef GL_GLEXT_PROTOTYPES
9606GLAPI void APIENTRY glVertexPointervINTEL (GLint size, GLenum type, const void **pointer);
9607GLAPI void APIENTRY glNormalPointervINTEL (GLenum type, const void **pointer);
9608GLAPI void APIENTRY glColorPointervINTEL (GLint size, GLenum type, const void **pointer);
9609GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const void **pointer);
9610#endif
9611#endif /* GL_INTEL_parallel_arrays */
9612
9613#ifndef GL_INTEL_performance_query
9614#define GL_INTEL_performance_query 1
9615#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000
9616#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001
9617#define GL_PERFQUERY_WAIT_INTEL 0x83FB
9618#define GL_PERFQUERY_FLUSH_INTEL 0x83FA
9619#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9
9620#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0
9621#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
9622#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
9623#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
9624#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4
9625#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
9626#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
9627#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
9628#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
9629#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
9630#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
9631#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
9632#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
9633#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
9634#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
9635typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);
9636typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle);
9637typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);
9638typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);
9639typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId);
9640typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId);
9641typedef 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);
9642typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten);
9643typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId);
9644typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
9645#ifdef GL_GLEXT_PROTOTYPES
9646GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle);
9647GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle);
9648GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle);
9649GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle);
9650GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId);
9651GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId);
9652GLAPI 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);
9653GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten);
9654GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId);
9655GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
9656#endif
9657#endif /* GL_INTEL_performance_query */
9658
9659#ifndef GL_MESAX_texture_stack
9660#define GL_MESAX_texture_stack 1
9661#define GL_TEXTURE_1D_STACK_MESAX 0x8759
9662#define GL_TEXTURE_2D_STACK_MESAX 0x875A
9663#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B
9664#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C
9665#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
9666#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
9667#endif /* GL_MESAX_texture_stack */
9668
9669#ifndef GL_MESA_framebuffer_flip_x
9670#define GL_MESA_framebuffer_flip_x 1
9671#define GL_FRAMEBUFFER_FLIP_X_MESA 0x8BBC
9672#endif /* GL_MESA_framebuffer_flip_x */
9673
9674#ifndef GL_MESA_framebuffer_flip_y
9675#define GL_MESA_framebuffer_flip_y 1
9676#define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB
9677typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param);
9678typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint *params);
9679#ifdef GL_GLEXT_PROTOTYPES
9680GLAPI void APIENTRY glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param);
9681GLAPI void APIENTRY glGetFramebufferParameterivMESA (GLenum target, GLenum pname, GLint *params);
9682#endif
9683#endif /* GL_MESA_framebuffer_flip_y */
9684
9685#ifndef GL_MESA_framebuffer_swap_xy
9686#define GL_MESA_framebuffer_swap_xy 1
9687#define GL_FRAMEBUFFER_SWAP_XY_MESA 0x8BBD
9688#endif /* GL_MESA_framebuffer_swap_xy */
9689
9690#ifndef GL_MESA_pack_invert
9691#define GL_MESA_pack_invert 1
9692#define GL_PACK_INVERT_MESA 0x8758
9693#endif /* GL_MESA_pack_invert */
9694
9695#ifndef GL_MESA_program_binary_formats
9696#define GL_MESA_program_binary_formats 1
9697#define GL_PROGRAM_BINARY_FORMAT_MESA 0x875F
9698#endif /* GL_MESA_program_binary_formats */
9699
9700#ifndef GL_MESA_resize_buffers
9701#define GL_MESA_resize_buffers 1
9702typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void);
9703#ifdef GL_GLEXT_PROTOTYPES
9704GLAPI void APIENTRY glResizeBuffersMESA (void);
9705#endif
9706#endif /* GL_MESA_resize_buffers */
9707
9708#ifndef GL_MESA_shader_integer_functions
9709#define GL_MESA_shader_integer_functions 1
9710#endif /* GL_MESA_shader_integer_functions */
9711
9712#ifndef GL_MESA_tile_raster_order
9713#define GL_MESA_tile_raster_order 1
9714#define GL_TILE_RASTER_ORDER_FIXED_MESA 0x8BB8
9715#define GL_TILE_RASTER_ORDER_INCREASING_X_MESA 0x8BB9
9716#define GL_TILE_RASTER_ORDER_INCREASING_Y_MESA 0x8BBA
9717#endif /* GL_MESA_tile_raster_order */
9718
9719#ifndef GL_MESA_window_pos
9720#define GL_MESA_window_pos 1
9721typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
9722typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);
9723typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);
9724typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v);
9725typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);
9726typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v);
9727typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);
9728typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v);
9729typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);
9730typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v);
9731typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);
9732typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v);
9733typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);
9734typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v);
9735typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);
9736typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v);
9737typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
9738typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v);
9739typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
9740typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v);
9741typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);
9742typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v);
9743typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
9744typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);
9745#ifdef GL_GLEXT_PROTOTYPES
9746GLAPI void APIENTRY glWindowPos2dMESA (GLdouble x, GLdouble y);
9747GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *v);
9748GLAPI void APIENTRY glWindowPos2fMESA (GLfloat x, GLfloat y);
9749GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *v);
9750GLAPI void APIENTRY glWindowPos2iMESA (GLint x, GLint y);
9751GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *v);
9752GLAPI void APIENTRY glWindowPos2sMESA (GLshort x, GLshort y);
9753GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *v);
9754GLAPI void APIENTRY glWindowPos3dMESA (GLdouble x, GLdouble y, GLdouble z);
9755GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *v);
9756GLAPI void APIENTRY glWindowPos3fMESA (GLfloat x, GLfloat y, GLfloat z);
9757GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *v);
9758GLAPI void APIENTRY glWindowPos3iMESA (GLint x, GLint y, GLint z);
9759GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *v);
9760GLAPI void APIENTRY glWindowPos3sMESA (GLshort x, GLshort y, GLshort z);
9761GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *v);
9762GLAPI void APIENTRY glWindowPos4dMESA (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
9763GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *v);
9764GLAPI void APIENTRY glWindowPos4fMESA (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
9765GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *v);
9766GLAPI void APIENTRY glWindowPos4iMESA (GLint x, GLint y, GLint z, GLint w);
9767GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *v);
9768GLAPI void APIENTRY glWindowPos4sMESA (GLshort x, GLshort y, GLshort z, GLshort w);
9769GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *v);
9770#endif
9771#endif /* GL_MESA_window_pos */
9772
9773#ifndef GL_MESA_ycbcr_texture
9774#define GL_MESA_ycbcr_texture 1
9775#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA
9776#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB
9777#define GL_YCBCR_MESA 0x8757
9778#endif /* GL_MESA_ycbcr_texture */
9779
9780#ifndef GL_NVX_blend_equation_advanced_multi_draw_buffers
9781#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1
9782#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */
9783
9784#ifndef GL_NVX_conditional_render
9785#define GL_NVX_conditional_render 1
9786typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id);
9787typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVXPROC) (void);
9788#ifdef GL_GLEXT_PROTOTYPES
9789GLAPI void APIENTRY glBeginConditionalRenderNVX (GLuint id);
9790GLAPI void APIENTRY glEndConditionalRenderNVX (void);
9791#endif
9792#endif /* GL_NVX_conditional_render */
9793
9794#ifndef GL_NVX_gpu_memory_info
9795#define GL_NVX_gpu_memory_info 1
9796#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
9797#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
9798#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
9799#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A
9800#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B
9801#endif /* GL_NVX_gpu_memory_info */
9802
9803#ifndef GL_NVX_gpu_multicast2
9804#define GL_NVX_gpu_multicast2 1
9805#define GL_UPLOAD_GPU_MASK_NVX 0x954A
9806typedef void (APIENTRYP PFNGLUPLOADGPUMASKNVXPROC) (GLbitfield mask);
9807typedef void (APIENTRYP PFNGLMULTICASTVIEWPORTARRAYVNVXPROC) (GLuint gpu, GLuint first, GLsizei count, const GLfloat *v);
9808typedef void (APIENTRYP PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC) (GLuint gpu, GLuint index, GLfloat xcoeff, GLfloat ycoeff);
9809typedef void (APIENTRYP PFNGLMULTICASTSCISSORARRAYVNVXPROC) (GLuint gpu, GLuint first, GLsizei count, const GLint *v);
9810typedef GLuint (APIENTRYP PFNGLASYNCCOPYBUFFERSUBDATANVXPROC) (GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray);
9811typedef GLuint (APIENTRYP PFNGLASYNCCOPYIMAGESUBDATANVXPROC) (GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, 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, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray);
9812#ifdef GL_GLEXT_PROTOTYPES
9813GLAPI void APIENTRY glUploadGpuMaskNVX (GLbitfield mask);
9814GLAPI void APIENTRY glMulticastViewportArrayvNVX (GLuint gpu, GLuint first, GLsizei count, const GLfloat *v);
9815GLAPI void APIENTRY glMulticastViewportPositionWScaleNVX (GLuint gpu, GLuint index, GLfloat xcoeff, GLfloat ycoeff);
9816GLAPI void APIENTRY glMulticastScissorArrayvNVX (GLuint gpu, GLuint first, GLsizei count, const GLint *v);
9817GLAPI GLuint APIENTRY glAsyncCopyBufferSubDataNVX (GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray);
9818GLAPI GLuint APIENTRY glAsyncCopyImageSubDataNVX (GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, 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, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray);
9819#endif
9820#endif /* GL_NVX_gpu_multicast2 */
9821
9822#ifndef GL_NVX_linked_gpu_multicast
9823#define GL_NVX_linked_gpu_multicast 1
9824#define GL_LGPU_SEPARATE_STORAGE_BIT_NVX 0x0800
9825#define GL_MAX_LGPU_GPUS_NVX 0x92BA
9826typedef void (APIENTRYP PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC) (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
9827typedef void (APIENTRYP PFNGLLGPUCOPYIMAGESUBDATANVXPROC) (GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
9828typedef void (APIENTRYP PFNGLLGPUINTERLOCKNVXPROC) (void);
9829#ifdef GL_GLEXT_PROTOTYPES
9830GLAPI void APIENTRY glLGPUNamedBufferSubDataNVX (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
9831GLAPI void APIENTRY glLGPUCopyImageSubDataNVX (GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
9832GLAPI void APIENTRY glLGPUInterlockNVX (void);
9833#endif
9834#endif /* GL_NVX_linked_gpu_multicast */
9835
9836#ifndef GL_NVX_progress_fence
9837#define GL_NVX_progress_fence 1
9838typedef GLuint (APIENTRYP PFNGLCREATEPROGRESSFENCENVXPROC) (void);
9839typedef void (APIENTRYP PFNGLSIGNALSEMAPHOREUI64NVXPROC) (GLuint signalGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray);
9840typedef void (APIENTRYP PFNGLWAITSEMAPHOREUI64NVXPROC) (GLuint waitGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray);
9841typedef void (APIENTRYP PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC) (GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray);
9842#ifdef GL_GLEXT_PROTOTYPES
9843GLAPI GLuint APIENTRY glCreateProgressFenceNVX (void);
9844GLAPI void APIENTRY glSignalSemaphoreui64NVX (GLuint signalGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray);
9845GLAPI void APIENTRY glWaitSemaphoreui64NVX (GLuint waitGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray);
9846GLAPI void APIENTRY glClientWaitSemaphoreui64NVX (GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray);
9847#endif
9848#endif /* GL_NVX_progress_fence */
9849
9850#ifndef GL_NV_alpha_to_coverage_dither_control
9851#define GL_NV_alpha_to_coverage_dither_control 1
9852#define GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV 0x934D
9853#define GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV 0x934E
9854#define GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV 0x934F
9855#define GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV 0x92BF
9856typedef void (APIENTRYP PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC) (GLenum mode);
9857#ifdef GL_GLEXT_PROTOTYPES
9858GLAPI void APIENTRY glAlphaToCoverageDitherControlNV (GLenum mode);
9859#endif
9860#endif /* GL_NV_alpha_to_coverage_dither_control */
9861
9862#ifndef GL_NV_bindless_multi_draw_indirect
9863#define GL_NV_bindless_multi_draw_indirect 1
9864typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
9865typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
9866#ifdef GL_GLEXT_PROTOTYPES
9867GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
9868GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
9869#endif
9870#endif /* GL_NV_bindless_multi_draw_indirect */
9871
9872#ifndef GL_NV_bindless_multi_draw_indirect_count
9873#define GL_NV_bindless_multi_draw_indirect_count 1
9874typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
9875typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
9876#ifdef GL_GLEXT_PROTOTYPES
9877GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessCountNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
9878GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessCountNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
9879#endif
9880#endif /* GL_NV_bindless_multi_draw_indirect_count */
9881
9882#ifndef GL_NV_bindless_texture
9883#define GL_NV_bindless_texture 1
9884typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture);
9885typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler);
9886typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
9887typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle);
9888typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
9889typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access);
9890typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle);
9891typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value);
9892typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value);
9893typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value);
9894typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
9895typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
9896typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle);
9897#ifdef GL_GLEXT_PROTOTYPES
9898GLAPI GLuint64 APIENTRY glGetTextureHandleNV (GLuint texture);
9899GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler);
9900GLAPI void APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle);
9901GLAPI void APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle);
9902GLAPI GLuint64 APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
9903GLAPI void APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access);
9904GLAPI void APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle);
9905GLAPI void APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value);
9906GLAPI void APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value);
9907GLAPI void APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value);
9908GLAPI void APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
9909GLAPI GLboolean APIENTRY glIsTextureHandleResidentNV (GLuint64 handle);
9910GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
9911#endif
9912#endif /* GL_NV_bindless_texture */
9913
9914#ifndef GL_NV_blend_equation_advanced
9915#define GL_NV_blend_equation_advanced 1
9916#define GL_BLEND_OVERLAP_NV 0x9281
9917#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280
9918#define GL_BLUE_NV 0x1905
9919#define GL_COLORBURN_NV 0x929A
9920#define GL_COLORDODGE_NV 0x9299
9921#define GL_CONJOINT_NV 0x9284
9922#define GL_CONTRAST_NV 0x92A1
9923#define GL_DARKEN_NV 0x9297
9924#define GL_DIFFERENCE_NV 0x929E
9925#define GL_DISJOINT_NV 0x9283
9926#define GL_DST_ATOP_NV 0x928F
9927#define GL_DST_IN_NV 0x928B
9928#define GL_DST_NV 0x9287
9929#define GL_DST_OUT_NV 0x928D
9930#define GL_DST_OVER_NV 0x9289
9931#define GL_EXCLUSION_NV 0x92A0
9932#define GL_GREEN_NV 0x1904
9933#define GL_HARDLIGHT_NV 0x929B
9934#define GL_HARDMIX_NV 0x92A9
9935#define GL_HSL_COLOR_NV 0x92AF
9936#define GL_HSL_HUE_NV 0x92AD
9937#define GL_HSL_LUMINOSITY_NV 0x92B0
9938#define GL_HSL_SATURATION_NV 0x92AE
9939#define GL_INVERT_OVG_NV 0x92B4
9940#define GL_INVERT_RGB_NV 0x92A3
9941#define GL_LIGHTEN_NV 0x9298
9942#define GL_LINEARBURN_NV 0x92A5
9943#define GL_LINEARDODGE_NV 0x92A4
9944#define GL_LINEARLIGHT_NV 0x92A7
9945#define GL_MINUS_CLAMPED_NV 0x92B3
9946#define GL_MINUS_NV 0x929F
9947#define GL_MULTIPLY_NV 0x9294
9948#define GL_OVERLAY_NV 0x9296
9949#define GL_PINLIGHT_NV 0x92A8
9950#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2
9951#define GL_PLUS_CLAMPED_NV 0x92B1
9952#define GL_PLUS_DARKER_NV 0x9292
9953#define GL_PLUS_NV 0x9291
9954#define GL_RED_NV 0x1903
9955#define GL_SCREEN_NV 0x9295
9956#define GL_SOFTLIGHT_NV 0x929C
9957#define GL_SRC_ATOP_NV 0x928E
9958#define GL_SRC_IN_NV 0x928A
9959#define GL_SRC_NV 0x9286
9960#define GL_SRC_OUT_NV 0x928C
9961#define GL_SRC_OVER_NV 0x9288
9962#define GL_UNCORRELATED_NV 0x9282
9963#define GL_VIVIDLIGHT_NV 0x92A6
9964#define GL_XOR_NV 0x1506
9965typedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value);
9966typedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC) (void);
9967#ifdef GL_GLEXT_PROTOTYPES
9968GLAPI void APIENTRY glBlendParameteriNV (GLenum pname, GLint value);
9969GLAPI void APIENTRY glBlendBarrierNV (void);
9970#endif
9971#endif /* GL_NV_blend_equation_advanced */
9972
9973#ifndef GL_NV_blend_equation_advanced_coherent
9974#define GL_NV_blend_equation_advanced_coherent 1
9975#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285
9976#endif /* GL_NV_blend_equation_advanced_coherent */
9977
9978#ifndef GL_NV_blend_minmax_factor
9979#define GL_NV_blend_minmax_factor 1
9980#endif /* GL_NV_blend_minmax_factor */
9981
9982#ifndef GL_NV_blend_square
9983#define GL_NV_blend_square 1
9984#endif /* GL_NV_blend_square */
9985
9986#ifndef GL_NV_clip_space_w_scaling
9987#define GL_NV_clip_space_w_scaling 1
9988#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C
9989#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D
9990#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E
9991typedef void (APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff);
9992#ifdef GL_GLEXT_PROTOTYPES
9993GLAPI void APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff);
9994#endif
9995#endif /* GL_NV_clip_space_w_scaling */
9996
9997#ifndef GL_NV_command_list
9998#define GL_NV_command_list 1
9999#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000
10000#define GL_NOP_COMMAND_NV 0x0001
10001#define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002
10002#define GL_DRAW_ARRAYS_COMMAND_NV 0x0003
10003#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004
10004#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005
10005#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006
10006#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007
10007#define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008
10008#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009
10009#define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000A
10010#define GL_BLEND_COLOR_COMMAND_NV 0x000B
10011#define GL_STENCIL_REF_COMMAND_NV 0x000C
10012#define GL_LINE_WIDTH_COMMAND_NV 0x000D
10013#define GL_POLYGON_OFFSET_COMMAND_NV 0x000E
10014#define GL_ALPHA_REF_COMMAND_NV 0x000F
10015#define GL_VIEWPORT_COMMAND_NV 0x0010
10016#define GL_SCISSOR_COMMAND_NV 0x0011
10017#define GL_FRONT_FACE_COMMAND_NV 0x0012
10018typedef void (APIENTRYP PFNGLCREATESTATESNVPROC) (GLsizei n, GLuint *states);
10019typedef void (APIENTRYP PFNGLDELETESTATESNVPROC) (GLsizei n, const GLuint *states);
10020typedef GLboolean (APIENTRYP PFNGLISSTATENVPROC) (GLuint state);
10021typedef void (APIENTRYP PFNGLSTATECAPTURENVPROC) (GLuint state, GLenum mode);
10022typedef GLuint (APIENTRYP PFNGLGETCOMMANDHEADERNVPROC) (GLenum tokenID, GLuint size);
10023typedef GLushort (APIENTRYP PFNGLGETSTAGEINDEXNVPROC) (GLenum shadertype);
10024typedef void (APIENTRYP PFNGLDRAWCOMMANDSNVPROC) (GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count);
10025typedef void (APIENTRYP PFNGLDRAWCOMMANDSADDRESSNVPROC) (GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count);
10026typedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESNVPROC) (GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
10027typedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC) (const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
10028typedef void (APIENTRYP PFNGLCREATECOMMANDLISTSNVPROC) (GLsizei n, GLuint *lists);
10029typedef void (APIENTRYP PFNGLDELETECOMMANDLISTSNVPROC) (GLsizei n, const GLuint *lists);
10030typedef GLboolean (APIENTRYP PFNGLISCOMMANDLISTNVPROC) (GLuint list);
10031typedef void (APIENTRYP PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC) (GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
10032typedef void (APIENTRYP PFNGLCOMMANDLISTSEGMENTSNVPROC) (GLuint list, GLuint segments);
10033typedef void (APIENTRYP PFNGLCOMPILECOMMANDLISTNVPROC) (GLuint list);
10034typedef void (APIENTRYP PFNGLCALLCOMMANDLISTNVPROC) (GLuint list);
10035#ifdef GL_GLEXT_PROTOTYPES
10036GLAPI void APIENTRY glCreateStatesNV (GLsizei n, GLuint *states);
10037GLAPI void APIENTRY glDeleteStatesNV (GLsizei n, const GLuint *states);
10038GLAPI GLboolean APIENTRY glIsStateNV (GLuint state);
10039GLAPI void APIENTRY glStateCaptureNV (GLuint state, GLenum mode);
10040GLAPI GLuint APIENTRY glGetCommandHeaderNV (GLenum tokenID, GLuint size);
10041GLAPI GLushort APIENTRY glGetStageIndexNV (GLenum shadertype);
10042GLAPI void APIENTRY glDrawCommandsNV (GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count);
10043GLAPI void APIENTRY glDrawCommandsAddressNV (GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count);
10044GLAPI void APIENTRY glDrawCommandsStatesNV (GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
10045GLAPI void APIENTRY glDrawCommandsStatesAddressNV (const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
10046GLAPI void APIENTRY glCreateCommandListsNV (GLsizei n, GLuint *lists);
10047GLAPI void APIENTRY glDeleteCommandListsNV (GLsizei n, const GLuint *lists);
10048GLAPI GLboolean APIENTRY glIsCommandListNV (GLuint list);
10049GLAPI void APIENTRY glListDrawCommandsStatesClientNV (GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);
10050GLAPI void APIENTRY glCommandListSegmentsNV (GLuint list, GLuint segments);
10051GLAPI void APIENTRY glCompileCommandListNV (GLuint list);
10052GLAPI void APIENTRY glCallCommandListNV (GLuint list);
10053#endif
10054#endif /* GL_NV_command_list */
10055
10056#ifndef GL_NV_compute_program5
10057#define GL_NV_compute_program5 1
10058#define GL_COMPUTE_PROGRAM_NV 0x90FB
10059#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC
10060#endif /* GL_NV_compute_program5 */
10061
10062#ifndef GL_NV_compute_shader_derivatives
10063#define GL_NV_compute_shader_derivatives 1
10064#endif /* GL_NV_compute_shader_derivatives */
10065
10066#ifndef GL_NV_conditional_render
10067#define GL_NV_conditional_render 1
10068#define GL_QUERY_WAIT_NV 0x8E13
10069#define GL_QUERY_NO_WAIT_NV 0x8E14
10070#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15
10071#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16
10072typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);
10073typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void);
10074#ifdef GL_GLEXT_PROTOTYPES
10075GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode);
10076GLAPI void APIENTRY glEndConditionalRenderNV (void);
10077#endif
10078#endif /* GL_NV_conditional_render */
10079
10080#ifndef GL_NV_conservative_raster
10081#define GL_NV_conservative_raster 1
10082#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346
10083#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347
10084#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348
10085#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349
10086typedef void (APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits);
10087#ifdef GL_GLEXT_PROTOTYPES
10088GLAPI void APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits);
10089#endif
10090#endif /* GL_NV_conservative_raster */
10091
10092#ifndef GL_NV_conservative_raster_dilate
10093#define GL_NV_conservative_raster_dilate 1
10094#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379
10095#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A
10096#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B
10097typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERFNVPROC) (GLenum pname, GLfloat value);
10098#ifdef GL_GLEXT_PROTOTYPES
10099GLAPI void APIENTRY glConservativeRasterParameterfNV (GLenum pname, GLfloat value);
10100#endif
10101#endif /* GL_NV_conservative_raster_dilate */
10102
10103#ifndef GL_NV_conservative_raster_pre_snap
10104#define GL_NV_conservative_raster_pre_snap 1
10105#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550
10106#endif /* GL_NV_conservative_raster_pre_snap */
10107
10108#ifndef GL_NV_conservative_raster_pre_snap_triangles
10109#define GL_NV_conservative_raster_pre_snap_triangles 1
10110#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D
10111#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E
10112#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F
10113typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param);
10114#ifdef GL_GLEXT_PROTOTYPES
10115GLAPI void APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param);
10116#endif
10117#endif /* GL_NV_conservative_raster_pre_snap_triangles */
10118
10119#ifndef GL_NV_conservative_raster_underestimation
10120#define GL_NV_conservative_raster_underestimation 1
10121#endif /* GL_NV_conservative_raster_underestimation */
10122
10123#ifndef GL_NV_copy_depth_to_color
10124#define GL_NV_copy_depth_to_color 1
10125#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E
10126#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F
10127#endif /* GL_NV_copy_depth_to_color */
10128
10129#ifndef GL_NV_copy_image
10130#define GL_NV_copy_image 1
10131typedef 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);
10132#ifdef GL_GLEXT_PROTOTYPES
10133GLAPI 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);
10134#endif
10135#endif /* GL_NV_copy_image */
10136
10137#ifndef GL_NV_deep_texture3D
10138#define GL_NV_deep_texture3D 1
10139#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0
10140#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1
10141#endif /* GL_NV_deep_texture3D */
10142
10143#ifndef GL_NV_depth_buffer_float
10144#define GL_NV_depth_buffer_float 1
10145#define GL_DEPTH_COMPONENT32F_NV 0x8DAB
10146#define GL_DEPTH32F_STENCIL8_NV 0x8DAC
10147#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD
10148#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF
10149typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar);
10150typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth);
10151typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax);
10152#ifdef GL_GLEXT_PROTOTYPES
10153GLAPI void APIENTRY glDepthRangedNV (GLdouble zNear, GLdouble zFar);
10154GLAPI void APIENTRY glClearDepthdNV (GLdouble depth);
10155GLAPI void APIENTRY glDepthBoundsdNV (GLdouble zmin, GLdouble zmax);
10156#endif
10157#endif /* GL_NV_depth_buffer_float */
10158
10159#ifndef GL_NV_depth_clamp
10160#define GL_NV_depth_clamp 1
10161#define GL_DEPTH_CLAMP_NV 0x864F
10162#endif /* GL_NV_depth_clamp */
10163
10164#ifndef GL_NV_draw_texture
10165#define GL_NV_draw_texture 1
10166typedef 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);
10167#ifdef GL_GLEXT_PROTOTYPES
10168GLAPI 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);
10169#endif
10170#endif /* GL_NV_draw_texture */
10171
10172#ifndef GL_NV_draw_vulkan_image
10173#define GL_NV_draw_vulkan_image 1
10174typedef void (APIENTRY *GLVULKANPROCNV)(void);
10175typedef void (APIENTRYP PFNGLDRAWVKIMAGENVPROC) (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
10176typedef GLVULKANPROCNV (APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name);
10177typedef void (APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);
10178typedef void (APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);
10179typedef void (APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence);
10180#ifdef GL_GLEXT_PROTOTYPES
10181GLAPI void APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
10182GLAPI GLVULKANPROCNV APIENTRY glGetVkProcAddrNV (const GLchar *name);
10183GLAPI void APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore);
10184GLAPI void APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore);
10185GLAPI void APIENTRY glSignalVkFenceNV (GLuint64 vkFence);
10186#endif
10187#endif /* GL_NV_draw_vulkan_image */
10188
10189#ifndef GL_NV_evaluators
10190#define GL_NV_evaluators 1
10191#define GL_EVAL_2D_NV 0x86C0
10192#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1
10193#define GL_MAP_TESSELLATION_NV 0x86C2
10194#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3
10195#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4
10196#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
10197#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6
10198#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7
10199#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8
10200#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9
10201#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA
10202#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB
10203#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC
10204#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD
10205#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE
10206#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF
10207#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0
10208#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1
10209#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2
10210#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3
10211#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4
10212#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5
10213#define GL_MAX_MAP_TESSELLATION_NV 0x86D6
10214#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7
10215typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points);
10216typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params);
10217typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params);
10218typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points);
10219typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params);
10220typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params);
10221typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
10222typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
10223typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
10224#ifdef GL_GLEXT_PROTOTYPES
10225GLAPI void APIENTRY glMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points);
10226GLAPI void APIENTRY glMapParameterivNV (GLenum target, GLenum pname, const GLint *params);
10227GLAPI void APIENTRY glMapParameterfvNV (GLenum target, GLenum pname, const GLfloat *params);
10228GLAPI void APIENTRY glGetMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points);
10229GLAPI void APIENTRY glGetMapParameterivNV (GLenum target, GLenum pname, GLint *params);
10230GLAPI void APIENTRY glGetMapParameterfvNV (GLenum target, GLenum pname, GLfloat *params);
10231GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum target, GLuint index, GLenum pname, GLint *params);
10232GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
10233GLAPI void APIENTRY glEvalMapsNV (GLenum target, GLenum mode);
10234#endif
10235#endif /* GL_NV_evaluators */
10236
10237#ifndef GL_NV_explicit_multisample
10238#define GL_NV_explicit_multisample 1
10239#define GL_SAMPLE_POSITION_NV 0x8E50
10240#define GL_SAMPLE_MASK_NV 0x8E51
10241#define GL_SAMPLE_MASK_VALUE_NV 0x8E52
10242#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53
10243#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54
10244#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55
10245#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56
10246#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57
10247#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58
10248#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59
10249typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat *val);
10250typedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask);
10251typedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer);
10252#ifdef GL_GLEXT_PROTOTYPES
10253GLAPI void APIENTRY glGetMultisamplefvNV (GLenum pname, GLuint index, GLfloat *val);
10254GLAPI void APIENTRY glSampleMaskIndexedNV (GLuint index, GLbitfield mask);
10255GLAPI void APIENTRY glTexRenderbufferNV (GLenum target, GLuint renderbuffer);
10256#endif
10257#endif /* GL_NV_explicit_multisample */
10258
10259#ifndef GL_NV_fence
10260#define GL_NV_fence 1
10261#define GL_ALL_COMPLETED_NV 0x84F2
10262#define GL_FENCE_STATUS_NV 0x84F3
10263#define GL_FENCE_CONDITION_NV 0x84F4
10264typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
10265typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
10266typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
10267typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
10268typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
10269typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
10270typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
10271#ifdef GL_GLEXT_PROTOTYPES
10272GLAPI void APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);
10273GLAPI void APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);
10274GLAPI GLboolean APIENTRY glIsFenceNV (GLuint fence);
10275GLAPI GLboolean APIENTRY glTestFenceNV (GLuint fence);
10276GLAPI void APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
10277GLAPI void APIENTRY glFinishFenceNV (GLuint fence);
10278GLAPI void APIENTRY glSetFenceNV (GLuint fence, GLenum condition);
10279#endif
10280#endif /* GL_NV_fence */
10281
10282#ifndef GL_NV_fill_rectangle
10283#define GL_NV_fill_rectangle 1
10284#define GL_FILL_RECTANGLE_NV 0x933C
10285#endif /* GL_NV_fill_rectangle */
10286
10287#ifndef GL_NV_float_buffer
10288#define GL_NV_float_buffer 1
10289#define GL_FLOAT_R_NV 0x8880
10290#define GL_FLOAT_RG_NV 0x8881
10291#define GL_FLOAT_RGB_NV 0x8882
10292#define GL_FLOAT_RGBA_NV 0x8883
10293#define GL_FLOAT_R16_NV 0x8884
10294#define GL_FLOAT_R32_NV 0x8885
10295#define GL_FLOAT_RG16_NV 0x8886
10296#define GL_FLOAT_RG32_NV 0x8887
10297#define GL_FLOAT_RGB16_NV 0x8888
10298#define GL_FLOAT_RGB32_NV 0x8889
10299#define GL_FLOAT_RGBA16_NV 0x888A
10300#define GL_FLOAT_RGBA32_NV 0x888B
10301#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C
10302#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D
10303#define GL_FLOAT_RGBA_MODE_NV 0x888E
10304#endif /* GL_NV_float_buffer */
10305
10306#ifndef GL_NV_fog_distance
10307#define GL_NV_fog_distance 1
10308#define GL_FOG_DISTANCE_MODE_NV 0x855A
10309#define GL_EYE_RADIAL_NV 0x855B
10310#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C
10311#endif /* GL_NV_fog_distance */
10312
10313#ifndef GL_NV_fragment_coverage_to_color
10314#define GL_NV_fragment_coverage_to_color 1
10315#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD
10316#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE
10317typedef void (APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color);
10318#ifdef GL_GLEXT_PROTOTYPES
10319GLAPI void APIENTRY glFragmentCoverageColorNV (GLuint color);
10320#endif
10321#endif /* GL_NV_fragment_coverage_to_color */
10322
10323#ifndef GL_NV_fragment_program
10324#define GL_NV_fragment_program 1
10325#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868
10326#define GL_FRAGMENT_PROGRAM_NV 0x8870
10327#define GL_MAX_TEXTURE_COORDS_NV 0x8871
10328#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872
10329#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873
10330#define GL_PROGRAM_ERROR_STRING_NV 0x8874
10331typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
10332typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
10333typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
10334typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
10335typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
10336typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
10337#ifdef GL_GLEXT_PROTOTYPES
10338GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
10339GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
10340GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
10341GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
10342GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
10343GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
10344#endif
10345#endif /* GL_NV_fragment_program */
10346
10347#ifndef GL_NV_fragment_program2
10348#define GL_NV_fragment_program2 1
10349#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
10350#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5
10351#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6
10352#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7
10353#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8
10354#endif /* GL_NV_fragment_program2 */
10355
10356#ifndef GL_NV_fragment_program4
10357#define GL_NV_fragment_program4 1
10358#endif /* GL_NV_fragment_program4 */
10359
10360#ifndef GL_NV_fragment_program_option
10361#define GL_NV_fragment_program_option 1
10362#endif /* GL_NV_fragment_program_option */
10363
10364#ifndef GL_NV_fragment_shader_barycentric
10365#define GL_NV_fragment_shader_barycentric 1
10366#endif /* GL_NV_fragment_shader_barycentric */
10367
10368#ifndef GL_NV_fragment_shader_interlock
10369#define GL_NV_fragment_shader_interlock 1
10370#endif /* GL_NV_fragment_shader_interlock */
10371
10372#ifndef GL_NV_framebuffer_mixed_samples
10373#define GL_NV_framebuffer_mixed_samples 1
10374#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331
10375#define GL_COLOR_SAMPLES_NV 0x8E20
10376#define GL_DEPTH_SAMPLES_NV 0x932D
10377#define GL_STENCIL_SAMPLES_NV 0x932E
10378#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F
10379#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330
10380#define GL_COVERAGE_MODULATION_NV 0x9332
10381#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333
10382typedef void (APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v);
10383typedef void (APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufSize, GLfloat *v);
10384typedef void (APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components);
10385#ifdef GL_GLEXT_PROTOTYPES
10386GLAPI void APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v);
10387GLAPI void APIENTRY glGetCoverageModulationTableNV (GLsizei bufSize, GLfloat *v);
10388GLAPI void APIENTRY glCoverageModulationNV (GLenum components);
10389#endif
10390#endif /* GL_NV_framebuffer_mixed_samples */
10391
10392#ifndef GL_NV_framebuffer_multisample_coverage
10393#define GL_NV_framebuffer_multisample_coverage 1
10394#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
10395#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10
10396#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
10397#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12
10398typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
10399#ifdef GL_GLEXT_PROTOTYPES
10400GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
10401#endif
10402#endif /* GL_NV_framebuffer_multisample_coverage */
10403
10404#ifndef GL_NV_geometry_program4
10405#define GL_NV_geometry_program4 1
10406#define GL_GEOMETRY_PROGRAM_NV 0x8C26
10407#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27
10408#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28
10409typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit);
10410typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
10411typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
10412#ifdef GL_GLEXT_PROTOTYPES
10413GLAPI void APIENTRY glProgramVertexLimitNV (GLenum target, GLint limit);
10414GLAPI void APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level);
10415GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
10416#endif
10417#endif /* GL_NV_geometry_program4 */
10418
10419#ifndef GL_NV_geometry_shader4
10420#define GL_NV_geometry_shader4 1
10421#endif /* GL_NV_geometry_shader4 */
10422
10423#ifndef GL_NV_geometry_shader_passthrough
10424#define GL_NV_geometry_shader_passthrough 1
10425#endif /* GL_NV_geometry_shader_passthrough */
10426
10427#ifndef GL_NV_gpu_multicast
10428#define GL_NV_gpu_multicast 1
10429#define GL_PER_GPU_STORAGE_BIT_NV 0x0800
10430#define GL_MULTICAST_GPUS_NV 0x92BA
10431#define GL_RENDER_GPU_MASK_NV 0x9558
10432#define GL_PER_GPU_STORAGE_NV 0x9548
10433#define GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9549
10434typedef void (APIENTRYP PFNGLRENDERGPUMASKNVPROC) (GLbitfield mask);
10435typedef void (APIENTRYP PFNGLMULTICASTBUFFERSUBDATANVPROC) (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
10436typedef void (APIENTRYP PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC) (GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
10437typedef void (APIENTRYP PFNGLMULTICASTCOPYIMAGESUBDATANVPROC) (GLuint srcGpu, GLbitfield dstGpuMask, 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);
10438typedef void (APIENTRYP PFNGLMULTICASTBLITFRAMEBUFFERNVPROC) (GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
10439typedef void (APIENTRYP PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
10440typedef void (APIENTRYP PFNGLMULTICASTBARRIERNVPROC) (void);
10441typedef void (APIENTRYP PFNGLMULTICASTWAITSYNCNVPROC) (GLuint signalGpu, GLbitfield waitGpuMask);
10442typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTIVNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLint *params);
10443typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLuint *params);
10444typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLint64 *params);
10445typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLuint64 *params);
10446#ifdef GL_GLEXT_PROTOTYPES
10447GLAPI void APIENTRY glRenderGpuMaskNV (GLbitfield mask);
10448GLAPI void APIENTRY glMulticastBufferSubDataNV (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
10449GLAPI void APIENTRY glMulticastCopyBufferSubDataNV (GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
10450GLAPI void APIENTRY glMulticastCopyImageSubDataNV (GLuint srcGpu, GLbitfield dstGpuMask, 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);
10451GLAPI void APIENTRY glMulticastBlitFramebufferNV (GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
10452GLAPI void APIENTRY glMulticastFramebufferSampleLocationsfvNV (GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
10453GLAPI void APIENTRY glMulticastBarrierNV (void);
10454GLAPI void APIENTRY glMulticastWaitSyncNV (GLuint signalGpu, GLbitfield waitGpuMask);
10455GLAPI void APIENTRY glMulticastGetQueryObjectivNV (GLuint gpu, GLuint id, GLenum pname, GLint *params);
10456GLAPI void APIENTRY glMulticastGetQueryObjectuivNV (GLuint gpu, GLuint id, GLenum pname, GLuint *params);
10457GLAPI void APIENTRY glMulticastGetQueryObjecti64vNV (GLuint gpu, GLuint id, GLenum pname, GLint64 *params);
10458GLAPI void APIENTRY glMulticastGetQueryObjectui64vNV (GLuint gpu, GLuint id, GLenum pname, GLuint64 *params);
10459#endif
10460#endif /* GL_NV_gpu_multicast */
10461
10462#ifndef GL_NV_gpu_program4
10463#define GL_NV_gpu_program4 1
10464#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904
10465#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905
10466#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906
10467#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907
10468#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908
10469#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909
10470#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5
10471#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6
10472typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
10473typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
10474typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
10475typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
10476typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
10477typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
10478typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
10479typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
10480typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
10481typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
10482typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
10483typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
10484typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
10485typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
10486typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
10487typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
10488#ifdef GL_GLEXT_PROTOTYPES
10489GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
10490GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
10491GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
10492GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
10493GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
10494GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
10495GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
10496GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
10497GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
10498GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
10499GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
10500GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
10501GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum target, GLuint index, GLint *params);
10502GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum target, GLuint index, GLuint *params);
10503GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum target, GLuint index, GLint *params);
10504GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum target, GLuint index, GLuint *params);
10505#endif
10506#endif /* GL_NV_gpu_program4 */
10507
10508#ifndef GL_NV_gpu_program5
10509#define GL_NV_gpu_program5 1
10510#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A
10511#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B
10512#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C
10513#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D
10514#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E
10515#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F
10516#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44
10517#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45
10518typedef void (APIENTRYP PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC) (GLenum target, GLsizei count, const GLuint *params);
10519typedef void (APIENTRYP PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC) (GLenum target, GLuint index, GLuint *param);
10520#ifdef GL_GLEXT_PROTOTYPES
10521GLAPI void APIENTRY glProgramSubroutineParametersuivNV (GLenum target, GLsizei count, const GLuint *params);
10522GLAPI void APIENTRY glGetProgramSubroutineParameteruivNV (GLenum target, GLuint index, GLuint *param);
10523#endif
10524#endif /* GL_NV_gpu_program5 */
10525
10526#ifndef GL_NV_gpu_program5_mem_extended
10527#define GL_NV_gpu_program5_mem_extended 1
10528#endif /* GL_NV_gpu_program5_mem_extended */
10529
10530#ifndef GL_NV_gpu_shader5
10531#define GL_NV_gpu_shader5 1
10532#endif /* GL_NV_gpu_shader5 */
10533
10534#ifndef GL_NV_half_float
10535#define GL_NV_half_float 1
10536typedef unsigned short GLhalfNV;
10537#define GL_HALF_FLOAT_NV 0x140B
10538typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y);
10539typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v);
10540typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z);
10541typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v);
10542typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
10543typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v);
10544typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
10545typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v);
10546typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
10547typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v);
10548typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
10549typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v);
10550typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s);
10551typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v);
10552typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t);
10553typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v);
10554typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r);
10555typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v);
10556typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
10557typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v);
10558typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s);
10559typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v);
10560typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t);
10561typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v);
10562typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
10563typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v);
10564typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
10565typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v);
10566typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog);
10567typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog);
10568typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
10569typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v);
10570typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight);
10571typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight);
10572typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x);
10573typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v);
10574typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y);
10575typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v);
10576typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
10577typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v);
10578typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
10579typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v);
10580typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
10581typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
10582typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
10583typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
10584#ifdef GL_GLEXT_PROTOTYPES
10585GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y);
10586GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v);
10587GLAPI void APIENTRY glVertex3hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z);
10588GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *v);
10589GLAPI void APIENTRY glVertex4hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
10590GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *v);
10591GLAPI void APIENTRY glNormal3hNV (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
10592GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *v);
10593GLAPI void APIENTRY glColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
10594GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *v);
10595GLAPI void APIENTRY glColor4hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
10596GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *v);
10597GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV s);
10598GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *v);
10599GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV s, GLhalfNV t);
10600GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *v);
10601GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r);
10602GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *v);
10603GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
10604GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *v);
10605GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum target, GLhalfNV s);
10606GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum target, const GLhalfNV *v);
10607GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum target, GLhalfNV s, GLhalfNV t);
10608GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum target, const GLhalfNV *v);
10609GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
10610GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v);
10611GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
10612GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v);
10613GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog);
10614GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog);
10615GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
10616GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v);
10617GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight);
10618GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight);
10619GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x);
10620GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v);
10621GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y);
10622GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint index, const GLhalfNV *v);
10623GLAPI void APIENTRY glVertexAttrib3hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
10624GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint index, const GLhalfNV *v);
10625GLAPI void APIENTRY glVertexAttrib4hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
10626GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint index, const GLhalfNV *v);
10627GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
10628GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
10629GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
10630GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
10631#endif
10632#endif /* GL_NV_half_float */
10633
10634#ifndef GL_NV_internalformat_sample_query
10635#define GL_NV_internalformat_sample_query 1
10636#define GL_MULTISAMPLES_NV 0x9371
10637#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372
10638#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373
10639#define GL_CONFORMANT_NV 0x9374
10640typedef void (APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params);
10641#ifdef GL_GLEXT_PROTOTYPES
10642GLAPI void APIENTRY glGetInternalformatSampleivNV (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params);
10643#endif
10644#endif /* GL_NV_internalformat_sample_query */
10645
10646#ifndef GL_NV_light_max_exponent
10647#define GL_NV_light_max_exponent 1
10648#define GL_MAX_SHININESS_NV 0x8504
10649#define GL_MAX_SPOT_EXPONENT_NV 0x8505
10650#endif /* GL_NV_light_max_exponent */
10651
10652#ifndef GL_NV_memory_attachment
10653#define GL_NV_memory_attachment 1
10654#define GL_ATTACHED_MEMORY_OBJECT_NV 0x95A4
10655#define GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5
10656#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6
10657#define GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7
10658#define GL_MEMORY_ATTACHABLE_NV 0x95A8
10659#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9
10660#define GL_DETACHED_TEXTURES_NV 0x95AA
10661#define GL_DETACHED_BUFFERS_NV 0x95AB
10662#define GL_MAX_DETACHED_TEXTURES_NV 0x95AC
10663#define GL_MAX_DETACHED_BUFFERS_NV 0x95AD
10664typedef void (APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC) (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params);
10665typedef void (APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC) (GLuint memory, GLenum pname);
10666typedef void (APIENTRYP PFNGLTEXATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset);
10667typedef void (APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset);
10668typedef void (APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC) (GLuint texture, GLuint memory, GLuint64 offset);
10669typedef void (APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC) (GLuint buffer, GLuint memory, GLuint64 offset);
10670#ifdef GL_GLEXT_PROTOTYPES
10671GLAPI void APIENTRY glGetMemoryObjectDetachedResourcesuivNV (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params);
10672GLAPI void APIENTRY glResetMemoryObjectParameterNV (GLuint memory, GLenum pname);
10673GLAPI void APIENTRY glTexAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset);
10674GLAPI void APIENTRY glBufferAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset);
10675GLAPI void APIENTRY glTextureAttachMemoryNV (GLuint texture, GLuint memory, GLuint64 offset);
10676GLAPI void APIENTRY glNamedBufferAttachMemoryNV (GLuint buffer, GLuint memory, GLuint64 offset);
10677#endif
10678#endif /* GL_NV_memory_attachment */
10679
10680#ifndef GL_NV_memory_object_sparse
10681#define GL_NV_memory_object_sparse 1
10682typedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
10683typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTMEMNVPROC) (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
10684typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
10685typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC) (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
10686#ifdef GL_GLEXT_PROTOTYPES
10687GLAPI void APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
10688GLAPI void APIENTRY glTexPageCommitmentMemNV (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
10689GLAPI void APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
10690GLAPI void APIENTRY glTexturePageCommitmentMemNV (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
10691#endif
10692#endif /* GL_NV_memory_object_sparse */
10693
10694#ifndef GL_NV_mesh_shader
10695#define GL_NV_mesh_shader 1
10696#define GL_MESH_SHADER_NV 0x9559
10697#define GL_TASK_SHADER_NV 0x955A
10698#define GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60
10699#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61
10700#define GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62
10701#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63
10702#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64
10703#define GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65
10704#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66
10705#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67
10706#define GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68
10707#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69
10708#define GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A
10709#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B
10710#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C
10711#define GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D
10712#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E
10713#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F
10714#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2
10715#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3
10716#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536
10717#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537
10718#define GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538
10719#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539
10720#define GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A
10721#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D
10722#define GL_MAX_MESH_VIEWS_NV 0x9557
10723#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF
10724#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543
10725#define GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B
10726#define GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C
10727#define GL_MESH_WORK_GROUP_SIZE_NV 0x953E
10728#define GL_TASK_WORK_GROUP_SIZE_NV 0x953F
10729#define GL_MESH_VERTICES_OUT_NV 0x9579
10730#define GL_MESH_PRIMITIVES_OUT_NV 0x957A
10731#define GL_MESH_OUTPUT_TYPE_NV 0x957B
10732#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C
10733#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D
10734#define GL_REFERENCED_BY_MESH_SHADER_NV 0x95A0
10735#define GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1
10736#define GL_MESH_SHADER_BIT_NV 0x00000040
10737#define GL_TASK_SHADER_BIT_NV 0x00000080
10738#define GL_MESH_SUBROUTINE_NV 0x957C
10739#define GL_TASK_SUBROUTINE_NV 0x957D
10740#define GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E
10741#define GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F
10742#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E
10743#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F
10744typedef void (APIENTRYP PFNGLDRAWMESHTASKSNVPROC) (GLuint first, GLuint count);
10745typedef void (APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect);
10746typedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride);
10747typedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
10748#ifdef GL_GLEXT_PROTOTYPES
10749GLAPI void APIENTRY glDrawMeshTasksNV (GLuint first, GLuint count);
10750GLAPI void APIENTRY glDrawMeshTasksIndirectNV (GLintptr indirect);
10751GLAPI void APIENTRY glMultiDrawMeshTasksIndirectNV (GLintptr indirect, GLsizei drawcount, GLsizei stride);
10752GLAPI void APIENTRY glMultiDrawMeshTasksIndirectCountNV (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
10753#endif
10754#endif /* GL_NV_mesh_shader */
10755
10756#ifndef GL_NV_multisample_coverage
10757#define GL_NV_multisample_coverage 1
10758#endif /* GL_NV_multisample_coverage */
10759
10760#ifndef GL_NV_multisample_filter_hint
10761#define GL_NV_multisample_filter_hint 1
10762#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534
10763#endif /* GL_NV_multisample_filter_hint */
10764
10765#ifndef GL_NV_occlusion_query
10766#define GL_NV_occlusion_query 1
10767#define GL_PIXEL_COUNTER_BITS_NV 0x8864
10768#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865
10769#define GL_PIXEL_COUNT_NV 0x8866
10770#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867
10771typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);
10772typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);
10773typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);
10774typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
10775typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void);
10776typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params);
10777typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params);
10778#ifdef GL_GLEXT_PROTOTYPES
10779GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei n, GLuint *ids);
10780GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei n, const GLuint *ids);
10781GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint id);
10782GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint id);
10783GLAPI void APIENTRY glEndOcclusionQueryNV (void);
10784GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint *params);
10785GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint *params);
10786#endif
10787#endif /* GL_NV_occlusion_query */
10788
10789#ifndef GL_NV_packed_depth_stencil
10790#define GL_NV_packed_depth_stencil 1
10791#define GL_DEPTH_STENCIL_NV 0x84F9
10792#define GL_UNSIGNED_INT_24_8_NV 0x84FA
10793#endif /* GL_NV_packed_depth_stencil */
10794
10795#ifndef GL_NV_parameter_buffer_object
10796#define GL_NV_parameter_buffer_object 1
10797#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0
10798#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1
10799#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2
10800#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3
10801#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4
10802typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params);
10803typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params);
10804typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params);
10805#ifdef GL_GLEXT_PROTOTYPES
10806GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params);
10807GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params);
10808GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params);
10809#endif
10810#endif /* GL_NV_parameter_buffer_object */
10811
10812#ifndef GL_NV_parameter_buffer_object2
10813#define GL_NV_parameter_buffer_object2 1
10814#endif /* GL_NV_parameter_buffer_object2 */
10815
10816#ifndef GL_NV_path_rendering
10817#define GL_NV_path_rendering 1
10818#define GL_PATH_FORMAT_SVG_NV 0x9070
10819#define GL_PATH_FORMAT_PS_NV 0x9071
10820#define GL_STANDARD_FONT_NAME_NV 0x9072
10821#define GL_SYSTEM_FONT_NAME_NV 0x9073
10822#define GL_FILE_NAME_NV 0x9074
10823#define GL_PATH_STROKE_WIDTH_NV 0x9075
10824#define GL_PATH_END_CAPS_NV 0x9076
10825#define GL_PATH_INITIAL_END_CAP_NV 0x9077
10826#define GL_PATH_TERMINAL_END_CAP_NV 0x9078
10827#define GL_PATH_JOIN_STYLE_NV 0x9079
10828#define GL_PATH_MITER_LIMIT_NV 0x907A
10829#define GL_PATH_DASH_CAPS_NV 0x907B
10830#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C
10831#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D
10832#define GL_PATH_DASH_OFFSET_NV 0x907E
10833#define GL_PATH_CLIENT_LENGTH_NV 0x907F
10834#define GL_PATH_FILL_MODE_NV 0x9080
10835#define GL_PATH_FILL_MASK_NV 0x9081
10836#define GL_PATH_FILL_COVER_MODE_NV 0x9082
10837#define GL_PATH_STROKE_COVER_MODE_NV 0x9083
10838#define GL_PATH_STROKE_MASK_NV 0x9084
10839#define GL_COUNT_UP_NV 0x9088
10840#define GL_COUNT_DOWN_NV 0x9089
10841#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A
10842#define GL_CONVEX_HULL_NV 0x908B
10843#define GL_BOUNDING_BOX_NV 0x908D
10844#define GL_TRANSLATE_X_NV 0x908E
10845#define GL_TRANSLATE_Y_NV 0x908F
10846#define GL_TRANSLATE_2D_NV 0x9090
10847#define GL_TRANSLATE_3D_NV 0x9091
10848#define GL_AFFINE_2D_NV 0x9092
10849#define GL_AFFINE_3D_NV 0x9094
10850#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096
10851#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098
10852#define GL_UTF8_NV 0x909A
10853#define GL_UTF16_NV 0x909B
10854#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C
10855#define GL_PATH_COMMAND_COUNT_NV 0x909D
10856#define GL_PATH_COORD_COUNT_NV 0x909E
10857#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F
10858#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0
10859#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1
10860#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2
10861#define GL_SQUARE_NV 0x90A3
10862#define GL_ROUND_NV 0x90A4
10863#define GL_TRIANGULAR_NV 0x90A5
10864#define GL_BEVEL_NV 0x90A6
10865#define GL_MITER_REVERT_NV 0x90A7
10866#define GL_MITER_TRUNCATE_NV 0x90A8
10867#define GL_SKIP_MISSING_GLYPH_NV 0x90A9
10868#define GL_USE_MISSING_GLYPH_NV 0x90AA
10869#define GL_PATH_ERROR_POSITION_NV 0x90AB
10870#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD
10871#define GL_ADJACENT_PAIRS_NV 0x90AE
10872#define GL_FIRST_TO_REST_NV 0x90AF
10873#define GL_PATH_GEN_MODE_NV 0x90B0
10874#define GL_PATH_GEN_COEFF_NV 0x90B1
10875#define GL_PATH_GEN_COMPONENTS_NV 0x90B3
10876#define GL_PATH_STENCIL_FUNC_NV 0x90B7
10877#define GL_PATH_STENCIL_REF_NV 0x90B8
10878#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9
10879#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD
10880#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE
10881#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF
10882#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4
10883#define GL_MOVE_TO_RESETS_NV 0x90B5
10884#define GL_MOVE_TO_CONTINUES_NV 0x90B6
10885#define GL_CLOSE_PATH_NV 0x00
10886#define GL_MOVE_TO_NV 0x02
10887#define GL_RELATIVE_MOVE_TO_NV 0x03
10888#define GL_LINE_TO_NV 0x04
10889#define GL_RELATIVE_LINE_TO_NV 0x05
10890#define GL_HORIZONTAL_LINE_TO_NV 0x06
10891#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
10892#define GL_VERTICAL_LINE_TO_NV 0x08
10893#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09
10894#define GL_QUADRATIC_CURVE_TO_NV 0x0A
10895#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B
10896#define GL_CUBIC_CURVE_TO_NV 0x0C
10897#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D
10898#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E
10899#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F
10900#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10
10901#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11
10902#define GL_SMALL_CCW_ARC_TO_NV 0x12
10903#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13
10904#define GL_SMALL_CW_ARC_TO_NV 0x14
10905#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15
10906#define GL_LARGE_CCW_ARC_TO_NV 0x16
10907#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17
10908#define GL_LARGE_CW_ARC_TO_NV 0x18
10909#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19
10910#define GL_RESTART_PATH_NV 0xF0
10911#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2
10912#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4
10913#define GL_RECT_NV 0xF6
10914#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8
10915#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA
10916#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC
10917#define GL_ARC_TO_NV 0xFE
10918#define GL_RELATIVE_ARC_TO_NV 0xFF
10919#define GL_BOLD_BIT_NV 0x01
10920#define GL_ITALIC_BIT_NV 0x02
10921#define GL_GLYPH_WIDTH_BIT_NV 0x01
10922#define GL_GLYPH_HEIGHT_BIT_NV 0x02
10923#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
10924#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08
10925#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10
10926#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20
10927#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40
10928#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80
10929#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100
10930#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000
10931#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000
10932#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000
10933#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000
10934#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000
10935#define GL_FONT_ASCENDER_BIT_NV 0x00200000
10936#define GL_FONT_DESCENDER_BIT_NV 0x00400000
10937#define GL_FONT_HEIGHT_BIT_NV 0x00800000
10938#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000
10939#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000
10940#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000
10941#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000
10942#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000
10943#define GL_ROUNDED_RECT_NV 0xE8
10944#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9
10945#define GL_ROUNDED_RECT2_NV 0xEA
10946#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB
10947#define GL_ROUNDED_RECT4_NV 0xEC
10948#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED
10949#define GL_ROUNDED_RECT8_NV 0xEE
10950#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF
10951#define GL_RELATIVE_RECT_NV 0xF7
10952#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368
10953#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369
10954#define GL_FONT_UNAVAILABLE_NV 0x936A
10955#define GL_FONT_UNINTELLIGIBLE_NV 0x936B
10956#define GL_CONIC_CURVE_TO_NV 0x1A
10957#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B
10958#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000
10959#define GL_STANDARD_FONT_FORMAT_NV 0x936C
10960#define GL_2_BYTES_NV 0x1407
10961#define GL_3_BYTES_NV 0x1408
10962#define GL_4_BYTES_NV 0x1409
10963#define GL_EYE_LINEAR_NV 0x2400
10964#define GL_OBJECT_LINEAR_NV 0x2401
10965#define GL_CONSTANT_NV 0x8576
10966#define GL_PATH_FOG_GEN_MODE_NV 0x90AC
10967#define GL_PRIMARY_COLOR_NV 0x852C
10968#define GL_SECONDARY_COLOR_NV 0x852D
10969#define GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2
10970#define GL_PATH_PROJECTION_NV 0x1701
10971#define GL_PATH_MODELVIEW_NV 0x1700
10972#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3
10973#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6
10974#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36
10975#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3
10976#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4
10977#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7
10978#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38
10979#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4
10980#define GL_FRAGMENT_INPUT_NV 0x936D
10981typedef GLuint (APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range);
10982typedef void (APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range);
10983typedef GLboolean (APIENTRYP PFNGLISPATHNVPROC) (GLuint path);
10984typedef void (APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
10985typedef void (APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
10986typedef void (APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
10987typedef void (APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
10988typedef void (APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString);
10989typedef 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);
10990typedef void (APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
10991typedef void (APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
10992typedef void (APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath);
10993typedef void (APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
10994typedef void (APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
10995typedef void (APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value);
10996typedef void (APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value);
10997typedef void (APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value);
10998typedef void (APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value);
10999typedef void (APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
11000typedef void (APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask);
11001typedef void (APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units);
11002typedef void (APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask);
11003typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask);
11004typedef void (APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
11005typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
11006typedef void (APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func);
11007typedef void (APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode);
11008typedef void (APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode);
11009typedef void (APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
11010typedef void (APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
11011typedef void (APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value);
11012typedef void (APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value);
11013typedef void (APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands);
11014typedef void (APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords);
11015typedef void (APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray);
11016typedef void (APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
11017typedef void (APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
11018typedef void (APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
11019typedef GLboolean (APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y);
11020typedef GLboolean (APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y);
11021typedef GLfloat (APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments);
11022typedef GLboolean (APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
11023typedef void (APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m);
11024typedef void (APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
11025typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
11026typedef void (APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m);
11027typedef void (APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
11028typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
11029typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);
11030typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode);
11031typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
11032typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
11033typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount);
11034typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
11035typedef GLenum (APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
11036typedef void (APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs);
11037typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params);
11038typedef void (APIENTRYP PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs);
11039typedef void (APIENTRYP PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs);
11040typedef void (APIENTRYP PFNGLPATHFOGGENNVPROC) (GLenum genMode);
11041typedef void (APIENTRYP PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint *value);
11042typedef void (APIENTRYP PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat *value);
11043typedef void (APIENTRYP PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint *value);
11044typedef void (APIENTRYP PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat *value);
11045#ifdef GL_GLEXT_PROTOTYPES
11046GLAPI GLuint APIENTRY glGenPathsNV (GLsizei range);
11047GLAPI void APIENTRY glDeletePathsNV (GLuint path, GLsizei range);
11048GLAPI GLboolean APIENTRY glIsPathNV (GLuint path);
11049GLAPI void APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
11050GLAPI void APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
11051GLAPI void APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
11052GLAPI void APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
11053GLAPI void APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString);
11054GLAPI 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);
11055GLAPI void APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
11056GLAPI void APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
11057GLAPI void APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath);
11058GLAPI void APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
11059GLAPI void APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
11060GLAPI void APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value);
11061GLAPI void APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value);
11062GLAPI void APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value);
11063GLAPI void APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value);
11064GLAPI void APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
11065GLAPI void APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask);
11066GLAPI void APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units);
11067GLAPI void APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask);
11068GLAPI void APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask);
11069GLAPI void APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
11070GLAPI void APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
11071GLAPI void APIENTRY glPathCoverDepthFuncNV (GLenum func);
11072GLAPI void APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode);
11073GLAPI void APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode);
11074GLAPI void APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
11075GLAPI void APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
11076GLAPI void APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value);
11077GLAPI void APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value);
11078GLAPI void APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands);
11079GLAPI void APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords);
11080GLAPI void APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray);
11081GLAPI void APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
11082GLAPI void APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
11083GLAPI void APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
11084GLAPI GLboolean APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y);
11085GLAPI GLboolean APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y);
11086GLAPI GLfloat APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments);
11087GLAPI GLboolean APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
11088GLAPI void APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m);
11089GLAPI void APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m);
11090GLAPI void APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m);
11091GLAPI void APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m);
11092GLAPI void APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m);
11093GLAPI void APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m);
11094GLAPI void APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);
11095GLAPI void APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode);
11096GLAPI void APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
11097GLAPI void APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
11098GLAPI GLenum APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount);
11099GLAPI GLenum APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
11100GLAPI GLenum APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
11101GLAPI void APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs);
11102GLAPI void APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params);
11103GLAPI void APIENTRY glPathColorGenNV (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs);
11104GLAPI void APIENTRY glPathTexGenNV (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs);
11105GLAPI void APIENTRY glPathFogGenNV (GLenum genMode);
11106GLAPI void APIENTRY glGetPathColorGenivNV (GLenum color, GLenum pname, GLint *value);
11107GLAPI void APIENTRY glGetPathColorGenfvNV (GLenum color, GLenum pname, GLfloat *value);
11108GLAPI void APIENTRY glGetPathTexGenivNV (GLenum texCoordSet, GLenum pname, GLint *value);
11109GLAPI void APIENTRY glGetPathTexGenfvNV (GLenum texCoordSet, GLenum pname, GLfloat *value);
11110#endif
11111#endif /* GL_NV_path_rendering */
11112
11113#ifndef GL_NV_path_rendering_shared_edge
11114#define GL_NV_path_rendering_shared_edge 1
11115#define GL_SHARED_EDGE_NV 0xC0
11116#endif /* GL_NV_path_rendering_shared_edge */
11117
11118#ifndef GL_NV_pixel_data_range
11119#define GL_NV_pixel_data_range 1
11120#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878
11121#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879
11122#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A
11123#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B
11124#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C
11125#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D
11126typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, const void *pointer);
11127typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
11128#ifdef GL_GLEXT_PROTOTYPES
11129GLAPI void APIENTRY glPixelDataRangeNV (GLenum target, GLsizei length, const void *pointer);
11130GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum target);
11131#endif
11132#endif /* GL_NV_pixel_data_range */
11133
11134#ifndef GL_NV_point_sprite
11135#define GL_NV_point_sprite 1
11136#define GL_POINT_SPRITE_NV 0x8861
11137#define GL_COORD_REPLACE_NV 0x8862
11138#define GL_POINT_SPRITE_R_MODE_NV 0x8863
11139typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
11140typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
11141#ifdef GL_GLEXT_PROTOTYPES
11142GLAPI void APIENTRY glPointParameteriNV (GLenum pname, GLint param);
11143GLAPI void APIENTRY glPointParameterivNV (GLenum pname, const GLint *params);
11144#endif
11145#endif /* GL_NV_point_sprite */
11146
11147#ifndef GL_NV_present_video
11148#define GL_NV_present_video 1
11149#define GL_FRAME_NV 0x8E26
11150#define GL_FIELDS_NV 0x8E27
11151#define GL_CURRENT_TIME_NV 0x8E28
11152#define GL_NUM_FILL_STREAMS_NV 0x8E29
11153#define GL_PRESENT_TIME_NV 0x8E2A
11154#define GL_PRESENT_DURATION_NV 0x8E2B
11155typedef 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);
11156typedef 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);
11157typedef void (APIENTRYP PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint *params);
11158typedef void (APIENTRYP PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint *params);
11159typedef void (APIENTRYP PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT *params);
11160typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT *params);
11161#ifdef GL_GLEXT_PROTOTYPES
11162GLAPI 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);
11163GLAPI 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);
11164GLAPI void APIENTRY glGetVideoivNV (GLuint video_slot, GLenum pname, GLint *params);
11165GLAPI void APIENTRY glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint *params);
11166GLAPI void APIENTRY glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT *params);
11167GLAPI void APIENTRY glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT *params);
11168#endif
11169#endif /* GL_NV_present_video */
11170
11171#ifndef GL_NV_primitive_restart
11172#define GL_NV_primitive_restart 1
11173#define GL_PRIMITIVE_RESTART_NV 0x8558
11174#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559
11175typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void);
11176typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
11177#ifdef GL_GLEXT_PROTOTYPES
11178GLAPI void APIENTRY glPrimitiveRestartNV (void);
11179GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint index);
11180#endif
11181#endif /* GL_NV_primitive_restart */
11182
11183#ifndef GL_NV_primitive_shading_rate
11184#define GL_NV_primitive_shading_rate 1
11185#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1
11186#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2
11187#endif /* GL_NV_primitive_shading_rate */
11188
11189#ifndef GL_NV_query_resource
11190#define GL_NV_query_resource 1
11191#define GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV 0x9540
11192#define GL_QUERY_RESOURCE_MEMTYPE_VIDMEM_NV 0x9542
11193#define GL_QUERY_RESOURCE_SYS_RESERVED_NV 0x9544
11194#define GL_QUERY_RESOURCE_TEXTURE_NV 0x9545
11195#define GL_QUERY_RESOURCE_RENDERBUFFER_NV 0x9546
11196#define GL_QUERY_RESOURCE_BUFFEROBJECT_NV 0x9547
11197typedef GLint (APIENTRYP PFNGLQUERYRESOURCENVPROC) (GLenum queryType, GLint tagId, GLuint count, GLint *buffer);
11198#ifdef GL_GLEXT_PROTOTYPES
11199GLAPI GLint APIENTRY glQueryResourceNV (GLenum queryType, GLint tagId, GLuint count, GLint *buffer);
11200#endif
11201#endif /* GL_NV_query_resource */
11202
11203#ifndef GL_NV_query_resource_tag
11204#define GL_NV_query_resource_tag 1
11205typedef void (APIENTRYP PFNGLGENQUERYRESOURCETAGNVPROC) (GLsizei n, GLint *tagIds);
11206typedef void (APIENTRYP PFNGLDELETEQUERYRESOURCETAGNVPROC) (GLsizei n, const GLint *tagIds);
11207typedef void (APIENTRYP PFNGLQUERYRESOURCETAGNVPROC) (GLint tagId, const GLchar *tagString);
11208#ifdef GL_GLEXT_PROTOTYPES
11209GLAPI void APIENTRY glGenQueryResourceTagNV (GLsizei n, GLint *tagIds);
11210GLAPI void APIENTRY glDeleteQueryResourceTagNV (GLsizei n, const GLint *tagIds);
11211GLAPI void APIENTRY glQueryResourceTagNV (GLint tagId, const GLchar *tagString);
11212#endif
11213#endif /* GL_NV_query_resource_tag */
11214
11215#ifndef GL_NV_register_combiners
11216#define GL_NV_register_combiners 1
11217#define GL_REGISTER_COMBINERS_NV 0x8522
11218#define GL_VARIABLE_A_NV 0x8523
11219#define GL_VARIABLE_B_NV 0x8524
11220#define GL_VARIABLE_C_NV 0x8525
11221#define GL_VARIABLE_D_NV 0x8526
11222#define GL_VARIABLE_E_NV 0x8527
11223#define GL_VARIABLE_F_NV 0x8528
11224#define GL_VARIABLE_G_NV 0x8529
11225#define GL_CONSTANT_COLOR0_NV 0x852A
11226#define GL_CONSTANT_COLOR1_NV 0x852B
11227#define GL_SPARE0_NV 0x852E
11228#define GL_SPARE1_NV 0x852F
11229#define GL_DISCARD_NV 0x8530
11230#define GL_E_TIMES_F_NV 0x8531
11231#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
11232#define GL_UNSIGNED_IDENTITY_NV 0x8536
11233#define GL_UNSIGNED_INVERT_NV 0x8537
11234#define GL_EXPAND_NORMAL_NV 0x8538
11235#define GL_EXPAND_NEGATE_NV 0x8539
11236#define GL_HALF_BIAS_NORMAL_NV 0x853A
11237#define GL_HALF_BIAS_NEGATE_NV 0x853B
11238#define GL_SIGNED_IDENTITY_NV 0x853C
11239#define GL_SIGNED_NEGATE_NV 0x853D
11240#define GL_SCALE_BY_TWO_NV 0x853E
11241#define GL_SCALE_BY_FOUR_NV 0x853F
11242#define GL_SCALE_BY_ONE_HALF_NV 0x8540
11243#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541
11244#define GL_COMBINER_INPUT_NV 0x8542
11245#define GL_COMBINER_MAPPING_NV 0x8543
11246#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544
11247#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545
11248#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546
11249#define GL_COMBINER_MUX_SUM_NV 0x8547
11250#define GL_COMBINER_SCALE_NV 0x8548
11251#define GL_COMBINER_BIAS_NV 0x8549
11252#define GL_COMBINER_AB_OUTPUT_NV 0x854A
11253#define GL_COMBINER_CD_OUTPUT_NV 0x854B
11254#define GL_COMBINER_SUM_OUTPUT_NV 0x854C
11255#define GL_MAX_GENERAL_COMBINERS_NV 0x854D
11256#define GL_NUM_GENERAL_COMBINERS_NV 0x854E
11257#define GL_COLOR_SUM_CLAMP_NV 0x854F
11258#define GL_COMBINER0_NV 0x8550
11259#define GL_COMBINER1_NV 0x8551
11260#define GL_COMBINER2_NV 0x8552
11261#define GL_COMBINER3_NV 0x8553
11262#define GL_COMBINER4_NV 0x8554
11263#define GL_COMBINER5_NV 0x8555
11264#define GL_COMBINER6_NV 0x8556
11265#define GL_COMBINER7_NV 0x8557
11266typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);
11267typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
11268typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
11269typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
11270typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
11271typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
11272typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
11273typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
11274typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
11275typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
11276typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params);
11277typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params);
11278typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params);
11279#ifdef GL_GLEXT_PROTOTYPES
11280GLAPI void APIENTRY glCombinerParameterfvNV (GLenum pname, const GLfloat *params);
11281GLAPI void APIENTRY glCombinerParameterfNV (GLenum pname, GLfloat param);
11282GLAPI void APIENTRY glCombinerParameterivNV (GLenum pname, const GLint *params);
11283GLAPI void APIENTRY glCombinerParameteriNV (GLenum pname, GLint param);
11284GLAPI void APIENTRY glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
11285GLAPI void APIENTRY glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
11286GLAPI void APIENTRY glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
11287GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
11288GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
11289GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
11290GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint *params);
11291GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat *params);
11292GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint *params);
11293#endif
11294#endif /* GL_NV_register_combiners */
11295
11296#ifndef GL_NV_register_combiners2
11297#define GL_NV_register_combiners2 1
11298#define GL_PER_STAGE_CONSTANTS_NV 0x8535
11299typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params);
11300typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params);
11301#ifdef GL_GLEXT_PROTOTYPES
11302GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat *params);
11303GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params);
11304#endif
11305#endif /* GL_NV_register_combiners2 */
11306
11307#ifndef GL_NV_representative_fragment_test
11308#define GL_NV_representative_fragment_test 1
11309#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F
11310#endif /* GL_NV_representative_fragment_test */
11311
11312#ifndef GL_NV_robustness_video_memory_purge
11313#define GL_NV_robustness_video_memory_purge 1
11314#define GL_PURGED_CONTEXT_RESET_NV 0x92BB
11315#endif /* GL_NV_robustness_video_memory_purge */
11316
11317#ifndef GL_NV_sample_locations
11318#define GL_NV_sample_locations 1
11319#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D
11320#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E
11321#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F
11322#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340
11323#define GL_SAMPLE_LOCATION_NV 0x8E50
11324#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341
11325#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342
11326#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343
11327typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v);
11328typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
11329typedef void (APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void);
11330#ifdef GL_GLEXT_PROTOTYPES
11331GLAPI void APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v);
11332GLAPI void APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
11333GLAPI void APIENTRY glResolveDepthValuesNV (void);
11334#endif
11335#endif /* GL_NV_sample_locations */
11336
11337#ifndef GL_NV_sample_mask_override_coverage
11338#define GL_NV_sample_mask_override_coverage 1
11339#endif /* GL_NV_sample_mask_override_coverage */
11340
11341#ifndef GL_NV_scissor_exclusive
11342#define GL_NV_scissor_exclusive 1
11343#define GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555
11344#define GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556
11345typedef void (APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
11346typedef void (APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v);
11347#ifdef GL_GLEXT_PROTOTYPES
11348GLAPI void APIENTRY glScissorExclusiveNV (GLint x, GLint y, GLsizei width, GLsizei height);
11349GLAPI void APIENTRY glScissorExclusiveArrayvNV (GLuint first, GLsizei count, const GLint *v);
11350#endif
11351#endif /* GL_NV_scissor_exclusive */
11352
11353#ifndef GL_NV_shader_atomic_counters
11354#define GL_NV_shader_atomic_counters 1
11355#endif /* GL_NV_shader_atomic_counters */
11356
11357#ifndef GL_NV_shader_atomic_float
11358#define GL_NV_shader_atomic_float 1
11359#endif /* GL_NV_shader_atomic_float */
11360
11361#ifndef GL_NV_shader_atomic_float64
11362#define GL_NV_shader_atomic_float64 1
11363#endif /* GL_NV_shader_atomic_float64 */
11364
11365#ifndef GL_NV_shader_atomic_fp16_vector
11366#define GL_NV_shader_atomic_fp16_vector 1
11367#endif /* GL_NV_shader_atomic_fp16_vector */
11368
11369#ifndef GL_NV_shader_atomic_int64
11370#define GL_NV_shader_atomic_int64 1
11371#endif /* GL_NV_shader_atomic_int64 */
11372
11373#ifndef GL_NV_shader_buffer_load
11374#define GL_NV_shader_buffer_load 1
11375#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D
11376#define GL_GPU_ADDRESS_NV 0x8F34
11377#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35
11378typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access);
11379typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target);
11380typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC) (GLenum target);
11381typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access);
11382typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer);
11383typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer);
11384typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT *params);
11385typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT *params);
11386typedef void (APIENTRYP PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT *result);
11387typedef void (APIENTRYP PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value);
11388typedef void (APIENTRYP PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
11389typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value);
11390typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
11391#ifdef GL_GLEXT_PROTOTYPES
11392GLAPI void APIENTRY glMakeBufferResidentNV (GLenum target, GLenum access);
11393GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum target);
11394GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum target);
11395GLAPI void APIENTRY glMakeNamedBufferResidentNV (GLuint buffer, GLenum access);
11396GLAPI void APIENTRY glMakeNamedBufferNonResidentNV (GLuint buffer);
11397GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint buffer);
11398GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT *params);
11399GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT *params);
11400GLAPI void APIENTRY glGetIntegerui64vNV (GLenum value, GLuint64EXT *result);
11401GLAPI void APIENTRY glUniformui64NV (GLint location, GLuint64EXT value);
11402GLAPI void APIENTRY glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
11403GLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value);
11404GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
11405#endif
11406#endif /* GL_NV_shader_buffer_load */
11407
11408#ifndef GL_NV_shader_buffer_store
11409#define GL_NV_shader_buffer_store 1
11410#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010
11411#endif /* GL_NV_shader_buffer_store */
11412
11413#ifndef GL_NV_shader_storage_buffer_object
11414#define GL_NV_shader_storage_buffer_object 1
11415#endif /* GL_NV_shader_storage_buffer_object */
11416
11417#ifndef GL_NV_shader_subgroup_partitioned
11418#define GL_NV_shader_subgroup_partitioned 1
11419#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100
11420#endif /* GL_NV_shader_subgroup_partitioned */
11421
11422#ifndef GL_NV_shader_texture_footprint
11423#define GL_NV_shader_texture_footprint 1
11424#endif /* GL_NV_shader_texture_footprint */
11425
11426#ifndef GL_NV_shader_thread_group
11427#define GL_NV_shader_thread_group 1
11428#define GL_WARP_SIZE_NV 0x9339
11429#define GL_WARPS_PER_SM_NV 0x933A
11430#define GL_SM_COUNT_NV 0x933B
11431#endif /* GL_NV_shader_thread_group */
11432
11433#ifndef GL_NV_shader_thread_shuffle
11434#define GL_NV_shader_thread_shuffle 1
11435#endif /* GL_NV_shader_thread_shuffle */
11436
11437#ifndef GL_NV_shading_rate_image
11438#define GL_NV_shading_rate_image 1
11439#define GL_SHADING_RATE_IMAGE_NV 0x9563
11440#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564
11441#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565
11442#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566
11443#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567
11444#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568
11445#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569
11446#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A
11447#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B
11448#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C
11449#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D
11450#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E
11451#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F
11452#define GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B
11453#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C
11454#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D
11455#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E
11456#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F
11457#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE
11458#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF
11459#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0
11460typedef void (APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC) (GLuint texture);
11461typedef void (APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint entry, GLenum *rate);
11462typedef void (APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC) (GLenum rate, GLuint samples, GLuint index, GLint *location);
11463typedef void (APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC) (GLboolean synchronize);
11464typedef void (APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates);
11465typedef void (APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC) (GLenum order);
11466typedef void (APIENTRYP PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC) (GLenum rate, GLuint samples, const GLint *locations);
11467#ifdef GL_GLEXT_PROTOTYPES
11468GLAPI void APIENTRY glBindShadingRateImageNV (GLuint texture);
11469GLAPI void APIENTRY glGetShadingRateImagePaletteNV (GLuint viewport, GLuint entry, GLenum *rate);
11470GLAPI void APIENTRY glGetShadingRateSampleLocationivNV (GLenum rate, GLuint samples, GLuint index, GLint *location);
11471GLAPI void APIENTRY glShadingRateImageBarrierNV (GLboolean synchronize);
11472GLAPI void APIENTRY glShadingRateImagePaletteNV (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates);
11473GLAPI void APIENTRY glShadingRateSampleOrderNV (GLenum order);
11474GLAPI void APIENTRY glShadingRateSampleOrderCustomNV (GLenum rate, GLuint samples, const GLint *locations);
11475#endif
11476#endif /* GL_NV_shading_rate_image */
11477
11478#ifndef GL_NV_stereo_view_rendering
11479#define GL_NV_stereo_view_rendering 1
11480#endif /* GL_NV_stereo_view_rendering */
11481
11482#ifndef GL_NV_tessellation_program5
11483#define GL_NV_tessellation_program5 1
11484#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8
11485#define GL_TESS_CONTROL_PROGRAM_NV 0x891E
11486#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F
11487#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74
11488#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75
11489#endif /* GL_NV_tessellation_program5 */
11490
11491#ifndef GL_NV_texgen_emboss
11492#define GL_NV_texgen_emboss 1
11493#define GL_EMBOSS_LIGHT_NV 0x855D
11494#define GL_EMBOSS_CONSTANT_NV 0x855E
11495#define GL_EMBOSS_MAP_NV 0x855F
11496#endif /* GL_NV_texgen_emboss */
11497
11498#ifndef GL_NV_texgen_reflection
11499#define GL_NV_texgen_reflection 1
11500#define GL_NORMAL_MAP_NV 0x8511
11501#define GL_REFLECTION_MAP_NV 0x8512
11502#endif /* GL_NV_texgen_reflection */
11503
11504#ifndef GL_NV_texture_barrier
11505#define GL_NV_texture_barrier 1
11506typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void);
11507#ifdef GL_GLEXT_PROTOTYPES
11508GLAPI void APIENTRY glTextureBarrierNV (void);
11509#endif
11510#endif /* GL_NV_texture_barrier */
11511
11512#ifndef GL_NV_texture_compression_vtc
11513#define GL_NV_texture_compression_vtc 1
11514#endif /* GL_NV_texture_compression_vtc */
11515
11516#ifndef GL_NV_texture_env_combine4
11517#define GL_NV_texture_env_combine4 1
11518#define GL_COMBINE4_NV 0x8503
11519#define GL_SOURCE3_RGB_NV 0x8583
11520#define GL_SOURCE3_ALPHA_NV 0x858B
11521#define GL_OPERAND3_RGB_NV 0x8593
11522#define GL_OPERAND3_ALPHA_NV 0x859B
11523#endif /* GL_NV_texture_env_combine4 */
11524
11525#ifndef GL_NV_texture_expand_normal
11526#define GL_NV_texture_expand_normal 1
11527#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F
11528#endif /* GL_NV_texture_expand_normal */
11529
11530#ifndef GL_NV_texture_multisample
11531#define GL_NV_texture_multisample 1
11532#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045
11533#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046
11534typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
11535typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
11536typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
11537typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
11538typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
11539typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
11540#ifdef GL_GLEXT_PROTOTYPES
11541GLAPI void APIENTRY glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
11542GLAPI void APIENTRY glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
11543GLAPI void APIENTRY glTextureImage2DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
11544GLAPI void APIENTRY glTextureImage3DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
11545GLAPI void APIENTRY glTextureImage2DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
11546GLAPI void APIENTRY glTextureImage3DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
11547#endif
11548#endif /* GL_NV_texture_multisample */
11549
11550#ifndef GL_NV_texture_rectangle
11551#define GL_NV_texture_rectangle 1
11552#define GL_TEXTURE_RECTANGLE_NV 0x84F5
11553#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6
11554#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7
11555#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8
11556#endif /* GL_NV_texture_rectangle */
11557
11558#ifndef GL_NV_texture_rectangle_compressed
11559#define GL_NV_texture_rectangle_compressed 1
11560#endif /* GL_NV_texture_rectangle_compressed */
11561
11562#ifndef GL_NV_texture_shader
11563#define GL_NV_texture_shader 1
11564#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C
11565#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
11566#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
11567#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
11568#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA
11569#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB
11570#define GL_DSDT_MAG_INTENSITY_NV 0x86DC
11571#define GL_SHADER_CONSISTENT_NV 0x86DD
11572#define GL_TEXTURE_SHADER_NV 0x86DE
11573#define GL_SHADER_OPERATION_NV 0x86DF
11574#define GL_CULL_MODES_NV 0x86E0
11575#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1
11576#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2
11577#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3
11578#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1
11579#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2
11580#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3
11581#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4
11582#define GL_CONST_EYE_NV 0x86E5
11583#define GL_PASS_THROUGH_NV 0x86E6
11584#define GL_CULL_FRAGMENT_NV 0x86E7
11585#define GL_OFFSET_TEXTURE_2D_NV 0x86E8
11586#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9
11587#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA
11588#define GL_DOT_PRODUCT_NV 0x86EC
11589#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED
11590#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE
11591#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
11592#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
11593#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
11594#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
11595#define GL_HILO_NV 0x86F4
11596#define GL_DSDT_NV 0x86F5
11597#define GL_DSDT_MAG_NV 0x86F6
11598#define GL_DSDT_MAG_VIB_NV 0x86F7
11599#define GL_HILO16_NV 0x86F8
11600#define GL_SIGNED_HILO_NV 0x86F9
11601#define GL_SIGNED_HILO16_NV 0x86FA
11602#define GL_SIGNED_RGBA_NV 0x86FB
11603#define GL_SIGNED_RGBA8_NV 0x86FC
11604#define GL_SIGNED_RGB_NV 0x86FE
11605#define GL_SIGNED_RGB8_NV 0x86FF
11606#define GL_SIGNED_LUMINANCE_NV 0x8701
11607#define GL_SIGNED_LUMINANCE8_NV 0x8702
11608#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703
11609#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704
11610#define GL_SIGNED_ALPHA_NV 0x8705
11611#define GL_SIGNED_ALPHA8_NV 0x8706
11612#define GL_SIGNED_INTENSITY_NV 0x8707
11613#define GL_SIGNED_INTENSITY8_NV 0x8708
11614#define GL_DSDT8_NV 0x8709
11615#define GL_DSDT8_MAG8_NV 0x870A
11616#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B
11617#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C
11618#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
11619#define GL_HI_SCALE_NV 0x870E
11620#define GL_LO_SCALE_NV 0x870F
11621#define GL_DS_SCALE_NV 0x8710
11622#define GL_DT_SCALE_NV 0x8711
11623#define GL_MAGNITUDE_SCALE_NV 0x8712
11624#define GL_VIBRANCE_SCALE_NV 0x8713
11625#define GL_HI_BIAS_NV 0x8714
11626#define GL_LO_BIAS_NV 0x8715
11627#define GL_DS_BIAS_NV 0x8716
11628#define GL_DT_BIAS_NV 0x8717
11629#define GL_MAGNITUDE_BIAS_NV 0x8718
11630#define GL_VIBRANCE_BIAS_NV 0x8719
11631#define GL_TEXTURE_BORDER_VALUES_NV 0x871A
11632#define GL_TEXTURE_HI_SIZE_NV 0x871B
11633#define GL_TEXTURE_LO_SIZE_NV 0x871C
11634#define GL_TEXTURE_DS_SIZE_NV 0x871D
11635#define GL_TEXTURE_DT_SIZE_NV 0x871E
11636#define GL_TEXTURE_MAG_SIZE_NV 0x871F
11637#endif /* GL_NV_texture_shader */
11638
11639#ifndef GL_NV_texture_shader2
11640#define GL_NV_texture_shader2 1
11641#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF
11642#endif /* GL_NV_texture_shader2 */
11643
11644#ifndef GL_NV_texture_shader3
11645#define GL_NV_texture_shader3 1
11646#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
11647#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
11648#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
11649#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
11650#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854
11651#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
11652#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
11653#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
11654#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858
11655#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859
11656#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
11657#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B
11658#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C
11659#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
11660#define GL_HILO8_NV 0x885E
11661#define GL_SIGNED_HILO8_NV 0x885F
11662#define GL_FORCE_BLUE_TO_ONE_NV 0x8860
11663#endif /* GL_NV_texture_shader3 */
11664
11665#ifndef GL_NV_timeline_semaphore
11666#define GL_NV_timeline_semaphore 1
11667#define GL_TIMELINE_SEMAPHORE_VALUE_NV 0x9595
11668#define GL_SEMAPHORE_TYPE_NV 0x95B3
11669#define GL_SEMAPHORE_TYPE_BINARY_NV 0x95B4
11670#define GL_SEMAPHORE_TYPE_TIMELINE_NV 0x95B5
11671#define GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6
11672typedef void (APIENTRYP PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint *semaphores);
11673typedef void (APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint *params);
11674typedef void (APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint *params);
11675#ifdef GL_GLEXT_PROTOTYPES
11676GLAPI void APIENTRY glCreateSemaphoresNV (GLsizei n, GLuint *semaphores);
11677GLAPI void APIENTRY glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint *params);
11678GLAPI void APIENTRY glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint *params);
11679#endif
11680#endif /* GL_NV_timeline_semaphore */
11681
11682#ifndef GL_NV_transform_feedback
11683#define GL_NV_transform_feedback 1
11684#define GL_BACK_PRIMARY_COLOR_NV 0x8C77
11685#define GL_BACK_SECONDARY_COLOR_NV 0x8C78
11686#define GL_TEXTURE_COORD_NV 0x8C79
11687#define GL_CLIP_DISTANCE_NV 0x8C7A
11688#define GL_VERTEX_ID_NV 0x8C7B
11689#define GL_PRIMITIVE_ID_NV 0x8C7C
11690#define GL_GENERIC_ATTRIB_NV 0x8C7D
11691#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E
11692#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F
11693#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80
11694#define GL_ACTIVE_VARYINGS_NV 0x8C81
11695#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82
11696#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83
11697#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84
11698#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85
11699#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86
11700#define GL_PRIMITIVES_GENERATED_NV 0x8C87
11701#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88
11702#define GL_RASTERIZER_DISCARD_NV 0x8C89
11703#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A
11704#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B
11705#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C
11706#define GL_SEPARATE_ATTRIBS_NV 0x8C8D
11707#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E
11708#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F
11709#define GL_LAYER_NV 0x8DAA
11710#define GL_NEXT_BUFFER_NV -2
11711#define GL_SKIP_COMPONENTS4_NV -3
11712#define GL_SKIP_COMPONENTS3_NV -4
11713#define GL_SKIP_COMPONENTS2_NV -5
11714#define GL_SKIP_COMPONENTS1_NV -6
11715typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode);
11716typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void);
11717typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLenum bufferMode);
11718typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
11719typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
11720typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer);
11721typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
11722typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name);
11723typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name);
11724typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
11725typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location);
11726typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode);
11727#ifdef GL_GLEXT_PROTOTYPES
11728GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum primitiveMode);
11729GLAPI void APIENTRY glEndTransformFeedbackNV (void);
11730GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLsizei count, const GLint *attribs, GLenum bufferMode);
11731GLAPI void APIENTRY glBindBufferRangeNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
11732GLAPI void APIENTRY glBindBufferOffsetNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
11733GLAPI void APIENTRY glBindBufferBaseNV (GLenum target, GLuint index, GLuint buffer);
11734GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
11735GLAPI void APIENTRY glActiveVaryingNV (GLuint program, const GLchar *name);
11736GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint program, const GLchar *name);
11737GLAPI void APIENTRY glGetActiveVaryingNV (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
11738GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint program, GLuint index, GLint *location);
11739GLAPI void APIENTRY glTransformFeedbackStreamAttribsNV (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode);
11740#endif
11741#endif /* GL_NV_transform_feedback */
11742
11743#ifndef GL_NV_transform_feedback2
11744#define GL_NV_transform_feedback2 1
11745#define GL_TRANSFORM_FEEDBACK_NV 0x8E22
11746#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23
11747#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24
11748#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25
11749typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id);
11750typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint *ids);
11751typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint *ids);
11752typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id);
11753typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void);
11754typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void);
11755typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id);
11756#ifdef GL_GLEXT_PROTOTYPES
11757GLAPI void APIENTRY glBindTransformFeedbackNV (GLenum target, GLuint id);
11758GLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei n, const GLuint *ids);
11759GLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei n, GLuint *ids);
11760GLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint id);
11761GLAPI void APIENTRY glPauseTransformFeedbackNV (void);
11762GLAPI void APIENTRY glResumeTransformFeedbackNV (void);
11763GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id);
11764#endif
11765#endif /* GL_NV_transform_feedback2 */
11766
11767#ifndef GL_NV_uniform_buffer_unified_memory
11768#define GL_NV_uniform_buffer_unified_memory 1
11769#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E
11770#define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F
11771#define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370
11772#endif /* GL_NV_uniform_buffer_unified_memory */
11773
11774#ifndef GL_NV_vdpau_interop
11775#define GL_NV_vdpau_interop 1
11776typedef GLintptr GLvdpauSurfaceNV;
11777#define GL_SURFACE_STATE_NV 0x86EB
11778#define GL_SURFACE_REGISTERED_NV 0x86FD
11779#define GL_SURFACE_MAPPED_NV 0x8700
11780#define GL_WRITE_DISCARD_NV 0x88BE
11781typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const void *vdpDevice, const void *getProcAddress);
11782typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void);
11783typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
11784typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
11785typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
11786typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface);
11787typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei count, GLsizei *length, GLint *values);
11788typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access);
11789typedef void (APIENTRYP PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces);
11790typedef void (APIENTRYP PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces);
11791#ifdef GL_GLEXT_PROTOTYPES
11792GLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAddress);
11793GLAPI void APIENTRY glVDPAUFiniNV (void);
11794GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
11795GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
11796GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
11797GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface);
11798GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei count, GLsizei *length, GLint *values);
11799GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access);
11800GLAPI void APIENTRY glVDPAUMapSurfacesNV (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces);
11801GLAPI void APIENTRY glVDPAUUnmapSurfacesNV (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces);
11802#endif
11803#endif /* GL_NV_vdpau_interop */
11804
11805#ifndef GL_NV_vdpau_interop2
11806#define GL_NV_vdpau_interop2 1
11807typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames, GLboolean isFrameStructure);
11808#ifdef GL_GLEXT_PROTOTYPES
11809GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceWithPictureStructureNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames, GLboolean isFrameStructure);
11810#endif
11811#endif /* GL_NV_vdpau_interop2 */
11812
11813#ifndef GL_NV_vertex_array_range
11814#define GL_NV_vertex_array_range 1
11815#define GL_VERTEX_ARRAY_RANGE_NV 0x851D
11816#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E
11817#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F
11818#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
11819#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521
11820typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
11821typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const void *pointer);
11822#ifdef GL_GLEXT_PROTOTYPES
11823GLAPI void APIENTRY glFlushVertexArrayRangeNV (void);
11824GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei length, const void *pointer);
11825#endif
11826#endif /* GL_NV_vertex_array_range */
11827
11828#ifndef GL_NV_vertex_array_range2
11829#define GL_NV_vertex_array_range2 1
11830#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
11831#endif /* GL_NV_vertex_array_range2 */
11832
11833#ifndef GL_NV_vertex_attrib_integer_64bit
11834#define GL_NV_vertex_attrib_integer_64bit 1
11835typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x);
11836typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y);
11837typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
11838typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
11839typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT *v);
11840typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT *v);
11841typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT *v);
11842typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT *v);
11843typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x);
11844typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y);
11845typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
11846typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
11847typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
11848typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
11849typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
11850typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
11851typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT *params);
11852typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT *params);
11853typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
11854#ifdef GL_GLEXT_PROTOTYPES
11855GLAPI void APIENTRY glVertexAttribL1i64NV (GLuint index, GLint64EXT x);
11856GLAPI void APIENTRY glVertexAttribL2i64NV (GLuint index, GLint64EXT x, GLint64EXT y);
11857GLAPI void APIENTRY glVertexAttribL3i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
11858GLAPI void APIENTRY glVertexAttribL4i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
11859GLAPI void APIENTRY glVertexAttribL1i64vNV (GLuint index, const GLint64EXT *v);
11860GLAPI void APIENTRY glVertexAttribL2i64vNV (GLuint index, const GLint64EXT *v);
11861GLAPI void APIENTRY glVertexAttribL3i64vNV (GLuint index, const GLint64EXT *v);
11862GLAPI void APIENTRY glVertexAttribL4i64vNV (GLuint index, const GLint64EXT *v);
11863GLAPI void APIENTRY glVertexAttribL1ui64NV (GLuint index, GLuint64EXT x);
11864GLAPI void APIENTRY glVertexAttribL2ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y);
11865GLAPI void APIENTRY glVertexAttribL3ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
11866GLAPI void APIENTRY glVertexAttribL4ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
11867GLAPI void APIENTRY glVertexAttribL1ui64vNV (GLuint index, const GLuint64EXT *v);
11868GLAPI void APIENTRY glVertexAttribL2ui64vNV (GLuint index, const GLuint64EXT *v);
11869GLAPI void APIENTRY glVertexAttribL3ui64vNV (GLuint index, const GLuint64EXT *v);
11870GLAPI void APIENTRY glVertexAttribL4ui64vNV (GLuint index, const GLuint64EXT *v);
11871GLAPI void APIENTRY glGetVertexAttribLi64vNV (GLuint index, GLenum pname, GLint64EXT *params);
11872GLAPI void APIENTRY glGetVertexAttribLui64vNV (GLuint index, GLenum pname, GLuint64EXT *params);
11873GLAPI void APIENTRY glVertexAttribLFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
11874#endif
11875#endif /* GL_NV_vertex_attrib_integer_64bit */
11876
11877#ifndef GL_NV_vertex_buffer_unified_memory
11878#define GL_NV_vertex_buffer_unified_memory 1
11879#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E
11880#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F
11881#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20
11882#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21
11883#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22
11884#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23
11885#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24
11886#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25
11887#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26
11888#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27
11889#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28
11890#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29
11891#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A
11892#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B
11893#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C
11894#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D
11895#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E
11896#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F
11897#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30
11898#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31
11899#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32
11900#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33
11901#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40
11902#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41
11903#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42
11904typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
11905typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
11906typedef void (APIENTRYP PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride);
11907typedef void (APIENTRYP PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
11908typedef void (APIENTRYP PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride);
11909typedef void (APIENTRYP PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
11910typedef void (APIENTRYP PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride);
11911typedef void (APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
11912typedef void (APIENTRYP PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride);
11913typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
11914typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
11915typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT *result);
11916#ifdef GL_GLEXT_PROTOTYPES
11917GLAPI void APIENTRY glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
11918GLAPI void APIENTRY glVertexFormatNV (GLint size, GLenum type, GLsizei stride);
11919GLAPI void APIENTRY glNormalFormatNV (GLenum type, GLsizei stride);
11920GLAPI void APIENTRY glColorFormatNV (GLint size, GLenum type, GLsizei stride);
11921GLAPI void APIENTRY glIndexFormatNV (GLenum type, GLsizei stride);
11922GLAPI void APIENTRY glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride);
11923GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei stride);
11924GLAPI void APIENTRY glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride);
11925GLAPI void APIENTRY glFogCoordFormatNV (GLenum type, GLsizei stride);
11926GLAPI void APIENTRY glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
11927GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
11928GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT *result);
11929#endif
11930#endif /* GL_NV_vertex_buffer_unified_memory */
11931
11932#ifndef GL_NV_vertex_program
11933#define GL_NV_vertex_program 1
11934#define GL_VERTEX_PROGRAM_NV 0x8620
11935#define GL_VERTEX_STATE_PROGRAM_NV 0x8621
11936#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623
11937#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624
11938#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625
11939#define GL_CURRENT_ATTRIB_NV 0x8626
11940#define GL_PROGRAM_LENGTH_NV 0x8627
11941#define GL_PROGRAM_STRING_NV 0x8628
11942#define GL_MODELVIEW_PROJECTION_NV 0x8629
11943#define GL_IDENTITY_NV 0x862A
11944#define GL_INVERSE_NV 0x862B
11945#define GL_TRANSPOSE_NV 0x862C
11946#define GL_INVERSE_TRANSPOSE_NV 0x862D
11947#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
11948#define GL_MAX_TRACK_MATRICES_NV 0x862F
11949#define GL_MATRIX0_NV 0x8630
11950#define GL_MATRIX1_NV 0x8631
11951#define GL_MATRIX2_NV 0x8632
11952#define GL_MATRIX3_NV 0x8633
11953#define GL_MATRIX4_NV 0x8634
11954#define GL_MATRIX5_NV 0x8635
11955#define GL_MATRIX6_NV 0x8636
11956#define GL_MATRIX7_NV 0x8637
11957#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640
11958#define GL_CURRENT_MATRIX_NV 0x8641
11959#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642
11960#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643
11961#define GL_PROGRAM_PARAMETER_NV 0x8644
11962#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645
11963#define GL_PROGRAM_TARGET_NV 0x8646
11964#define GL_PROGRAM_RESIDENT_NV 0x8647
11965#define GL_TRACK_MATRIX_NV 0x8648
11966#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649
11967#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A
11968#define GL_PROGRAM_ERROR_POSITION_NV 0x864B
11969#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650
11970#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651
11971#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652
11972#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653
11973#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654
11974#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655
11975#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656
11976#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657
11977#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658
11978#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659
11979#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A
11980#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B
11981#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C
11982#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D
11983#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E
11984#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F
11985#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660
11986#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661
11987#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662
11988#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663
11989#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664
11990#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665
11991#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666
11992#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667
11993#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668
11994#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669
11995#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A
11996#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B
11997#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C
11998#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D
11999#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E
12000#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F
12001#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670
12002#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671
12003#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672
12004#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673
12005#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674
12006#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675
12007#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676
12008#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677
12009#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678
12010#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679
12011#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A
12012#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B
12013#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C
12014#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D
12015#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E
12016#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F
12017typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences);
12018typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
12019typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
12020typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params);
12021typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs);
12022typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params);
12023typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
12024typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params);
12025typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program);
12026typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params);
12027typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params);
12028typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params);
12029typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params);
12030typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, void **pointer);
12031typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id);
12032typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
12033typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
12034typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v);
12035typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
12036typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v);
12037typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLdouble *v);
12038typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *v);
12039typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
12040typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);
12041typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer);
12042typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);
12043typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v);
12044typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);
12045typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v);
12046typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);
12047typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v);
12048typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);
12049typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v);
12050typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);
12051typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v);
12052typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);
12053typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v);
12054typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
12055typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v);
12056typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
12057typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v);
12058typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
12059typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v);
12060typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
12061typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v);
12062typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
12063typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v);
12064typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
12065typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v);
12066typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
12067typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v);
12068typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
12069typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
12070typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
12071typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
12072typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
12073typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
12074typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
12075typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
12076typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
12077typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
12078typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
12079typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
12080typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v);
12081#ifdef GL_GLEXT_PROTOTYPES
12082GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei n, const GLuint *programs, GLboolean *residences);
12083GLAPI void APIENTRY glBindProgramNV (GLenum target, GLuint id);
12084GLAPI void APIENTRY glDeleteProgramsNV (GLsizei n, const GLuint *programs);
12085GLAPI void APIENTRY glExecuteProgramNV (GLenum target, GLuint id, const GLfloat *params);
12086GLAPI void APIENTRY glGenProgramsNV (GLsizei n, GLuint *programs);
12087GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble *params);
12088GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
12089GLAPI void APIENTRY glGetProgramivNV (GLuint id, GLenum pname, GLint *params);
12090GLAPI void APIENTRY glGetProgramStringNV (GLuint id, GLenum pname, GLubyte *program);
12091GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint *params);
12092GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble *params);
12093GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat *params);
12094GLAPI void APIENTRY glGetVertexAttribivNV (GLuint index, GLenum pname, GLint *params);
12095GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint index, GLenum pname, void **pointer);
12096GLAPI GLboolean APIENTRY glIsProgramNV (GLuint id);
12097GLAPI void APIENTRY glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
12098GLAPI void APIENTRY glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
12099GLAPI void APIENTRY glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble *v);
12100GLAPI void APIENTRY glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
12101GLAPI void APIENTRY glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat *v);
12102GLAPI void APIENTRY glProgramParameters4dvNV (GLenum target, GLuint index, GLsizei count, const GLdouble *v);
12103GLAPI void APIENTRY glProgramParameters4fvNV (GLenum target, GLuint index, GLsizei count, const GLfloat *v);
12104GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei n, const GLuint *programs);
12105GLAPI void APIENTRY glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform);
12106GLAPI void APIENTRY glVertexAttribPointerNV (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer);
12107GLAPI void APIENTRY glVertexAttrib1dNV (GLuint index, GLdouble x);
12108GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint index, const GLdouble *v);
12109GLAPI void APIENTRY glVertexAttrib1fNV (GLuint index, GLfloat x);
12110GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint index, const GLfloat *v);
12111GLAPI void APIENTRY glVertexAttrib1sNV (GLuint index, GLshort x);
12112GLAPI void APIENTRY glVertexAttrib1svNV (GLuint index, const GLshort *v);
12113GLAPI void APIENTRY glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y);
12114GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint index, const GLdouble *v);
12115GLAPI void APIENTRY glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y);
12116GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint index, const GLfloat *v);
12117GLAPI void APIENTRY glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y);
12118GLAPI void APIENTRY glVertexAttrib2svNV (GLuint index, const GLshort *v);
12119GLAPI void APIENTRY glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z);
12120GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint index, const GLdouble *v);
12121GLAPI void APIENTRY glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z);
12122GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint index, const GLfloat *v);
12123GLAPI void APIENTRY glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z);
12124GLAPI void APIENTRY glVertexAttrib3svNV (GLuint index, const GLshort *v);
12125GLAPI void APIENTRY glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
12126GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint index, const GLdouble *v);
12127GLAPI void APIENTRY glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
12128GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint index, const GLfloat *v);
12129GLAPI void APIENTRY glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
12130GLAPI void APIENTRY glVertexAttrib4svNV (GLuint index, const GLshort *v);
12131GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
12132GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint index, const GLubyte *v);
12133GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint index, GLsizei count, const GLdouble *v);
12134GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint index, GLsizei count, const GLfloat *v);
12135GLAPI void APIENTRY glVertexAttribs1svNV (GLuint index, GLsizei count, const GLshort *v);
12136GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint index, GLsizei count, const GLdouble *v);
12137GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint index, GLsizei count, const GLfloat *v);
12138GLAPI void APIENTRY glVertexAttribs2svNV (GLuint index, GLsizei count, const GLshort *v);
12139GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint index, GLsizei count, const GLdouble *v);
12140GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint index, GLsizei count, const GLfloat *v);
12141GLAPI void APIENTRY glVertexAttribs3svNV (GLuint index, GLsizei count, const GLshort *v);
12142GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint index, GLsizei count, const GLdouble *v);
12143GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint index, GLsizei count, const GLfloat *v);
12144GLAPI void APIENTRY glVertexAttribs4svNV (GLuint index, GLsizei count, const GLshort *v);
12145GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GLubyte *v);
12146#endif
12147#endif /* GL_NV_vertex_program */
12148
12149#ifndef GL_NV_vertex_program1_1
12150#define GL_NV_vertex_program1_1 1
12151#endif /* GL_NV_vertex_program1_1 */
12152
12153#ifndef GL_NV_vertex_program2
12154#define GL_NV_vertex_program2 1
12155#endif /* GL_NV_vertex_program2 */
12156
12157#ifndef GL_NV_vertex_program2_option
12158#define GL_NV_vertex_program2_option 1
12159#endif /* GL_NV_vertex_program2_option */
12160
12161#ifndef GL_NV_vertex_program3
12162#define GL_NV_vertex_program3 1
12163#endif /* GL_NV_vertex_program3 */
12164
12165#ifndef GL_NV_vertex_program4
12166#define GL_NV_vertex_program4 1
12167#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD
12168#endif /* GL_NV_vertex_program4 */
12169
12170#ifndef GL_NV_video_capture
12171#define GL_NV_video_capture 1
12172#define GL_VIDEO_BUFFER_NV 0x9020
12173#define GL_VIDEO_BUFFER_BINDING_NV 0x9021
12174#define GL_FIELD_UPPER_NV 0x9022
12175#define GL_FIELD_LOWER_NV 0x9023
12176#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024
12177#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025
12178#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026
12179#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027
12180#define GL_VIDEO_BUFFER_PITCH_NV 0x9028
12181#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029
12182#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A
12183#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B
12184#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C
12185#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D
12186#define GL_PARTIAL_SUCCESS_NV 0x902E
12187#define GL_SUCCESS_NV 0x902F
12188#define GL_FAILURE_NV 0x9030
12189#define GL_YCBYCR8_422_NV 0x9031
12190#define GL_YCBAYCR8A_4224_NV 0x9032
12191#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033
12192#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034
12193#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035
12194#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036
12195#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037
12196#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038
12197#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039
12198#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A
12199#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B
12200#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C
12201typedef void (APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
12202typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
12203typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
12204typedef void (APIENTRYP PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
12205typedef void (APIENTRYP PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint *params);
12206typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);
12207typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);
12208typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);
12209typedef GLenum (APIENTRYP PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);
12210typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);
12211typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);
12212typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);
12213#ifdef GL_GLEXT_PROTOTYPES
12214GLAPI void APIENTRY glBeginVideoCaptureNV (GLuint video_capture_slot);
12215GLAPI void APIENTRY glBindVideoCaptureStreamBufferNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
12216GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
12217GLAPI void APIENTRY glEndVideoCaptureNV (GLuint video_capture_slot);
12218GLAPI void APIENTRY glGetVideoCaptureivNV (GLuint video_capture_slot, GLenum pname, GLint *params);
12219GLAPI void APIENTRY glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);
12220GLAPI void APIENTRY glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);
12221GLAPI void APIENTRY glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);
12222GLAPI GLenum APIENTRY glVideoCaptureNV (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);
12223GLAPI void APIENTRY glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);
12224GLAPI void APIENTRY glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);
12225GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);
12226#endif
12227#endif /* GL_NV_video_capture */
12228
12229#ifndef GL_NV_viewport_array2
12230#define GL_NV_viewport_array2 1
12231#endif /* GL_NV_viewport_array2 */
12232
12233#ifndef GL_NV_viewport_swizzle
12234#define GL_NV_viewport_swizzle 1
12235#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350
12236#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351
12237#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352
12238#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353
12239#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354
12240#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355
12241#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356
12242#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357
12243#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358
12244#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359
12245#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A
12246#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B
12247typedef void (APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
12248#ifdef GL_GLEXT_PROTOTYPES
12249GLAPI void APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
12250#endif
12251#endif /* GL_NV_viewport_swizzle */
12252
12253#ifndef GL_OML_interlace
12254#define GL_OML_interlace 1
12255#define GL_INTERLACE_OML 0x8980
12256#define GL_INTERLACE_READ_OML 0x8981
12257#endif /* GL_OML_interlace */
12258
12259#ifndef GL_OML_resample
12260#define GL_OML_resample 1
12261#define GL_PACK_RESAMPLE_OML 0x8984
12262#define GL_UNPACK_RESAMPLE_OML 0x8985
12263#define GL_RESAMPLE_REPLICATE_OML 0x8986
12264#define GL_RESAMPLE_ZERO_FILL_OML 0x8987
12265#define GL_RESAMPLE_AVERAGE_OML 0x8988
12266#define GL_RESAMPLE_DECIMATE_OML 0x8989
12267#endif /* GL_OML_resample */
12268
12269#ifndef GL_OML_subsample
12270#define GL_OML_subsample 1
12271#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982
12272#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983
12273#endif /* GL_OML_subsample */
12274
12275#ifndef GL_OVR_multiview
12276#define GL_OVR_multiview 1
12277#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630
12278#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632
12279#define GL_MAX_VIEWS_OVR 0x9631
12280#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
12281typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
12282#ifdef GL_GLEXT_PROTOTYPES
12283GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
12284#endif
12285#endif /* GL_OVR_multiview */
12286
12287#ifndef GL_OVR_multiview2
12288#define GL_OVR_multiview2 1
12289#endif /* GL_OVR_multiview2 */
12290
12291#ifndef GL_PGI_misc_hints
12292#define GL_PGI_misc_hints 1
12293#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8
12294#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD
12295#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE
12296#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202
12297#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203
12298#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204
12299#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C
12300#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D
12301#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E
12302#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F
12303#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210
12304#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211
12305#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216
12306#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217
12307#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218
12308#define GL_FULL_STIPPLE_HINT_PGI 0x1A219
12309#define GL_CLIP_NEAR_HINT_PGI 0x1A220
12310#define GL_CLIP_FAR_HINT_PGI 0x1A221
12311#define GL_WIDE_LINE_HINT_PGI 0x1A222
12312#define GL_BACK_NORMALS_HINT_PGI 0x1A223
12313typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode);
12314#ifdef GL_GLEXT_PROTOTYPES
12315GLAPI void APIENTRY glHintPGI (GLenum target, GLint mode);
12316#endif
12317#endif /* GL_PGI_misc_hints */
12318
12319#ifndef GL_PGI_vertex_hints
12320#define GL_PGI_vertex_hints 1
12321#define GL_VERTEX_DATA_HINT_PGI 0x1A22A
12322#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B
12323#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C
12324#define GL_MAX_VERTEX_HINT_PGI 0x1A22D
12325#define GL_COLOR3_BIT_PGI 0x00010000
12326#define GL_COLOR4_BIT_PGI 0x00020000
12327#define GL_EDGEFLAG_BIT_PGI 0x00040000
12328#define GL_INDEX_BIT_PGI 0x00080000
12329#define GL_MAT_AMBIENT_BIT_PGI 0x00100000
12330#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
12331#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000
12332#define GL_MAT_EMISSION_BIT_PGI 0x00800000
12333#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000
12334#define GL_MAT_SHININESS_BIT_PGI 0x02000000
12335#define GL_MAT_SPECULAR_BIT_PGI 0x04000000
12336#define GL_NORMAL_BIT_PGI 0x08000000
12337#define GL_TEXCOORD1_BIT_PGI 0x10000000
12338#define GL_TEXCOORD2_BIT_PGI 0x20000000
12339#define GL_TEXCOORD3_BIT_PGI 0x40000000
12340#define GL_TEXCOORD4_BIT_PGI 0x80000000
12341#define GL_VERTEX23_BIT_PGI 0x00000004
12342#define GL_VERTEX4_BIT_PGI 0x00000008
12343#endif /* GL_PGI_vertex_hints */
12344
12345#ifndef GL_REND_screen_coordinates
12346#define GL_REND_screen_coordinates 1
12347#define GL_SCREEN_COORDINATES_REND 0x8490
12348#define GL_INVERTED_SCREEN_W_REND 0x8491
12349#endif /* GL_REND_screen_coordinates */
12350
12351#ifndef GL_S3_s3tc
12352#define GL_S3_s3tc 1
12353#define GL_RGB_S3TC 0x83A0
12354#define GL_RGB4_S3TC 0x83A1
12355#define GL_RGBA_S3TC 0x83A2
12356#define GL_RGBA4_S3TC 0x83A3
12357#define GL_RGBA_DXT5_S3TC 0x83A4
12358#define GL_RGBA4_DXT5_S3TC 0x83A5
12359#endif /* GL_S3_s3tc */
12360
12361#ifndef GL_SGIS_detail_texture
12362#define GL_SGIS_detail_texture 1
12363#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095
12364#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096
12365#define GL_LINEAR_DETAIL_SGIS 0x8097
12366#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098
12367#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099
12368#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A
12369#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B
12370#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C
12371typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
12372typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
12373#ifdef GL_GLEXT_PROTOTYPES
12374GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
12375GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum target, GLfloat *points);
12376#endif
12377#endif /* GL_SGIS_detail_texture */
12378
12379#ifndef GL_SGIS_fog_function
12380#define GL_SGIS_fog_function 1
12381#define GL_FOG_FUNC_SGIS 0x812A
12382#define GL_FOG_FUNC_POINTS_SGIS 0x812B
12383#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C
12384typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);
12385typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);
12386#ifdef GL_GLEXT_PROTOTYPES
12387GLAPI void APIENTRY glFogFuncSGIS (GLsizei n, const GLfloat *points);
12388GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *points);
12389#endif
12390#endif /* GL_SGIS_fog_function */
12391
12392#ifndef GL_SGIS_generate_mipmap
12393#define GL_SGIS_generate_mipmap 1
12394#define GL_GENERATE_MIPMAP_SGIS 0x8191
12395#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192
12396#endif /* GL_SGIS_generate_mipmap */
12397
12398#ifndef GL_SGIS_multisample
12399#define GL_SGIS_multisample 1
12400#define GL_MULTISAMPLE_SGIS 0x809D
12401#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E
12402#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F
12403#define GL_SAMPLE_MASK_SGIS 0x80A0
12404#define GL_1PASS_SGIS 0x80A1
12405#define GL_2PASS_0_SGIS 0x80A2
12406#define GL_2PASS_1_SGIS 0x80A3
12407#define GL_4PASS_0_SGIS 0x80A4
12408#define GL_4PASS_1_SGIS 0x80A5
12409#define GL_4PASS_2_SGIS 0x80A6
12410#define GL_4PASS_3_SGIS 0x80A7
12411#define GL_SAMPLE_BUFFERS_SGIS 0x80A8
12412#define GL_SAMPLES_SGIS 0x80A9
12413#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA
12414#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB
12415#define GL_SAMPLE_PATTERN_SGIS 0x80AC
12416typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
12417typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
12418#ifdef GL_GLEXT_PROTOTYPES
12419GLAPI void APIENTRY glSampleMaskSGIS (GLclampf value, GLboolean invert);
12420GLAPI void APIENTRY glSamplePatternSGIS (GLenum pattern);
12421#endif
12422#endif /* GL_SGIS_multisample */
12423
12424#ifndef GL_SGIS_pixel_texture
12425#define GL_SGIS_pixel_texture 1
12426#define GL_PIXEL_TEXTURE_SGIS 0x8353
12427#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354
12428#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355
12429#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356
12430typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);
12431typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);
12432typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
12433typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
12434typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params);
12435typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params);
12436#ifdef GL_GLEXT_PROTOTYPES
12437GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum pname, GLint param);
12438GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum pname, const GLint *params);
12439GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum pname, GLfloat param);
12440GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum pname, const GLfloat *params);
12441GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum pname, GLint *params);
12442GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum pname, GLfloat *params);
12443#endif
12444#endif /* GL_SGIS_pixel_texture */
12445
12446#ifndef GL_SGIS_point_line_texgen
12447#define GL_SGIS_point_line_texgen 1
12448#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0
12449#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1
12450#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2
12451#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3
12452#define GL_EYE_POINT_SGIS 0x81F4
12453#define GL_OBJECT_POINT_SGIS 0x81F5
12454#define GL_EYE_LINE_SGIS 0x81F6
12455#define GL_OBJECT_LINE_SGIS 0x81F7
12456#endif /* GL_SGIS_point_line_texgen */
12457
12458#ifndef GL_SGIS_point_parameters
12459#define GL_SGIS_point_parameters 1
12460#define GL_POINT_SIZE_MIN_SGIS 0x8126
12461#define GL_POINT_SIZE_MAX_SGIS 0x8127
12462#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128
12463#define GL_DISTANCE_ATTENUATION_SGIS 0x8129
12464typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
12465typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
12466#ifdef GL_GLEXT_PROTOTYPES
12467GLAPI void APIENTRY glPointParameterfSGIS (GLenum pname, GLfloat param);
12468GLAPI void APIENTRY glPointParameterfvSGIS (GLenum pname, const GLfloat *params);
12469#endif
12470#endif /* GL_SGIS_point_parameters */
12471
12472#ifndef GL_SGIS_sharpen_texture
12473#define GL_SGIS_sharpen_texture 1
12474#define GL_LINEAR_SHARPEN_SGIS 0x80AD
12475#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE
12476#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF
12477#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0
12478typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
12479typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
12480#ifdef GL_GLEXT_PROTOTYPES
12481GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
12482GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum target, GLfloat *points);
12483#endif
12484#endif /* GL_SGIS_sharpen_texture */
12485
12486#ifndef GL_SGIS_texture4D
12487#define GL_SGIS_texture4D 1
12488#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130
12489#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131
12490#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132
12491#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133
12492#define GL_TEXTURE_4D_SGIS 0x8134
12493#define GL_PROXY_TEXTURE_4D_SGIS 0x8135
12494#define GL_TEXTURE_4DSIZE_SGIS 0x8136
12495#define GL_TEXTURE_WRAP_Q_SGIS 0x8137
12496#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138
12497#define GL_TEXTURE_4D_BINDING_SGIS 0x814F
12498typedef 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);
12499typedef 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);
12500#ifdef GL_GLEXT_PROTOTYPES
12501GLAPI 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);
12502GLAPI 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);
12503#endif
12504#endif /* GL_SGIS_texture4D */
12505
12506#ifndef GL_SGIS_texture_border_clamp
12507#define GL_SGIS_texture_border_clamp 1
12508#define GL_CLAMP_TO_BORDER_SGIS 0x812D
12509#endif /* GL_SGIS_texture_border_clamp */
12510
12511#ifndef GL_SGIS_texture_color_mask
12512#define GL_SGIS_texture_color_mask 1
12513#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF
12514typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
12515#ifdef GL_GLEXT_PROTOTYPES
12516GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
12517#endif
12518#endif /* GL_SGIS_texture_color_mask */
12519
12520#ifndef GL_SGIS_texture_edge_clamp
12521#define GL_SGIS_texture_edge_clamp 1
12522#define GL_CLAMP_TO_EDGE_SGIS 0x812F
12523#endif /* GL_SGIS_texture_edge_clamp */
12524
12525#ifndef GL_SGIS_texture_filter4
12526#define GL_SGIS_texture_filter4 1
12527#define GL_FILTER4_SGIS 0x8146
12528#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147
12529typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);
12530typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
12531#ifdef GL_GLEXT_PROTOTYPES
12532GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum target, GLenum filter, GLfloat *weights);
12533GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
12534#endif
12535#endif /* GL_SGIS_texture_filter4 */
12536
12537#ifndef GL_SGIS_texture_lod
12538#define GL_SGIS_texture_lod 1
12539#define GL_TEXTURE_MIN_LOD_SGIS 0x813A
12540#define GL_TEXTURE_MAX_LOD_SGIS 0x813B
12541#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C
12542#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D
12543#endif /* GL_SGIS_texture_lod */
12544
12545#ifndef GL_SGIS_texture_select
12546#define GL_SGIS_texture_select 1
12547#define GL_DUAL_ALPHA4_SGIS 0x8110
12548#define GL_DUAL_ALPHA8_SGIS 0x8111
12549#define GL_DUAL_ALPHA12_SGIS 0x8112
12550#define GL_DUAL_ALPHA16_SGIS 0x8113
12551#define GL_DUAL_LUMINANCE4_SGIS 0x8114
12552#define GL_DUAL_LUMINANCE8_SGIS 0x8115
12553#define GL_DUAL_LUMINANCE12_SGIS 0x8116
12554#define GL_DUAL_LUMINANCE16_SGIS 0x8117
12555#define GL_DUAL_INTENSITY4_SGIS 0x8118
12556#define GL_DUAL_INTENSITY8_SGIS 0x8119
12557#define GL_DUAL_INTENSITY12_SGIS 0x811A
12558#define GL_DUAL_INTENSITY16_SGIS 0x811B
12559#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C
12560#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D
12561#define GL_QUAD_ALPHA4_SGIS 0x811E
12562#define GL_QUAD_ALPHA8_SGIS 0x811F
12563#define GL_QUAD_LUMINANCE4_SGIS 0x8120
12564#define GL_QUAD_LUMINANCE8_SGIS 0x8121
12565#define GL_QUAD_INTENSITY4_SGIS 0x8122
12566#define GL_QUAD_INTENSITY8_SGIS 0x8123
12567#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124
12568#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125
12569#endif /* GL_SGIS_texture_select */
12570
12571#ifndef GL_SGIX_async
12572#define GL_SGIX_async 1
12573#define GL_ASYNC_MARKER_SGIX 0x8329
12574typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
12575typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);
12576typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp);
12577typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);
12578typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);
12579typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
12580#ifdef GL_GLEXT_PROTOTYPES
12581GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint marker);
12582GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *markerp);
12583GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *markerp);
12584GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei range);
12585GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint marker, GLsizei range);
12586GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint marker);
12587#endif
12588#endif /* GL_SGIX_async */
12589
12590#ifndef GL_SGIX_async_histogram
12591#define GL_SGIX_async_histogram 1
12592#define GL_ASYNC_HISTOGRAM_SGIX 0x832C
12593#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D
12594#endif /* GL_SGIX_async_histogram */
12595
12596#ifndef GL_SGIX_async_pixel
12597#define GL_SGIX_async_pixel 1
12598#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C
12599#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D
12600#define GL_ASYNC_READ_PIXELS_SGIX 0x835E
12601#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F
12602#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360
12603#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361
12604#endif /* GL_SGIX_async_pixel */
12605
12606#ifndef GL_SGIX_blend_alpha_minmax
12607#define GL_SGIX_blend_alpha_minmax 1
12608#define GL_ALPHA_MIN_SGIX 0x8320
12609#define GL_ALPHA_MAX_SGIX 0x8321
12610#endif /* GL_SGIX_blend_alpha_minmax */
12611
12612#ifndef GL_SGIX_calligraphic_fragment
12613#define GL_SGIX_calligraphic_fragment 1
12614#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183
12615#endif /* GL_SGIX_calligraphic_fragment */
12616
12617#ifndef GL_SGIX_clipmap
12618#define GL_SGIX_clipmap 1
12619#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170
12620#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171
12621#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172
12622#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173
12623#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174
12624#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175
12625#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176
12626#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177
12627#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178
12628#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D
12629#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E
12630#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F
12631#endif /* GL_SGIX_clipmap */
12632
12633#ifndef GL_SGIX_convolution_accuracy
12634#define GL_SGIX_convolution_accuracy 1
12635#define GL_CONVOLUTION_HINT_SGIX 0x8316
12636#endif /* GL_SGIX_convolution_accuracy */
12637
12638#ifndef GL_SGIX_depth_pass_instrument
12639#define GL_SGIX_depth_pass_instrument 1
12640#endif /* GL_SGIX_depth_pass_instrument */
12641
12642#ifndef GL_SGIX_depth_texture
12643#define GL_SGIX_depth_texture 1
12644#define GL_DEPTH_COMPONENT16_SGIX 0x81A5
12645#define GL_DEPTH_COMPONENT24_SGIX 0x81A6
12646#define GL_DEPTH_COMPONENT32_SGIX 0x81A7
12647#endif /* GL_SGIX_depth_texture */
12648
12649#ifndef GL_SGIX_flush_raster
12650#define GL_SGIX_flush_raster 1
12651typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void);
12652#ifdef GL_GLEXT_PROTOTYPES
12653GLAPI void APIENTRY glFlushRasterSGIX (void);
12654#endif
12655#endif /* GL_SGIX_flush_raster */
12656
12657#ifndef GL_SGIX_fog_offset
12658#define GL_SGIX_fog_offset 1
12659#define GL_FOG_OFFSET_SGIX 0x8198
12660#define GL_FOG_OFFSET_VALUE_SGIX 0x8199
12661#endif /* GL_SGIX_fog_offset */
12662
12663#ifndef GL_SGIX_fragment_lighting
12664#define GL_SGIX_fragment_lighting 1
12665#define GL_FRAGMENT_LIGHTING_SGIX 0x8400
12666#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401
12667#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402
12668#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403
12669#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404
12670#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405
12671#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406
12672#define GL_LIGHT_ENV_MODE_SGIX 0x8407
12673#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408
12674#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409
12675#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A
12676#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B
12677#define GL_FRAGMENT_LIGHT0_SGIX 0x840C
12678#define GL_FRAGMENT_LIGHT1_SGIX 0x840D
12679#define GL_FRAGMENT_LIGHT2_SGIX 0x840E
12680#define GL_FRAGMENT_LIGHT3_SGIX 0x840F
12681#define GL_FRAGMENT_LIGHT4_SGIX 0x8410
12682#define GL_FRAGMENT_LIGHT5_SGIX 0x8411
12683#define GL_FRAGMENT_LIGHT6_SGIX 0x8412
12684#define GL_FRAGMENT_LIGHT7_SGIX 0x8413
12685typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
12686typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
12687typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params);
12688typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);
12689typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params);
12690typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);
12691typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params);
12692typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);
12693typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params);
12694typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param);
12695typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params);
12696typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param);
12697typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params);
12698typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params);
12699typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params);
12700typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params);
12701typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params);
12702typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);
12703#ifdef GL_GLEXT_PROTOTYPES
12704GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum face, GLenum mode);
12705GLAPI void APIENTRY glFragmentLightfSGIX (GLenum light, GLenum pname, GLfloat param);
12706GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum light, GLenum pname, const GLfloat *params);
12707GLAPI void APIENTRY glFragmentLightiSGIX (GLenum light, GLenum pname, GLint param);
12708GLAPI void APIENTRY glFragmentLightivSGIX (GLenum light, GLenum pname, const GLint *params);
12709GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum pname, GLfloat param);
12710GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum pname, const GLfloat *params);
12711GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum pname, GLint param);
12712GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum pname, const GLint *params);
12713GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum face, GLenum pname, GLfloat param);
12714GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum face, GLenum pname, const GLfloat *params);
12715GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum face, GLenum pname, GLint param);
12716GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum face, GLenum pname, const GLint *params);
12717GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum light, GLenum pname, GLfloat *params);
12718GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum light, GLenum pname, GLint *params);
12719GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum face, GLenum pname, GLfloat *params);
12720GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum face, GLenum pname, GLint *params);
12721GLAPI void APIENTRY glLightEnviSGIX (GLenum pname, GLint param);
12722#endif
12723#endif /* GL_SGIX_fragment_lighting */
12724
12725#ifndef GL_SGIX_framezoom
12726#define GL_SGIX_framezoom 1
12727#define GL_FRAMEZOOM_SGIX 0x818B
12728#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C
12729#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D
12730typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
12731#ifdef GL_GLEXT_PROTOTYPES
12732GLAPI void APIENTRY glFrameZoomSGIX (GLint factor);
12733#endif
12734#endif /* GL_SGIX_framezoom */
12735
12736#ifndef GL_SGIX_igloo_interface
12737#define GL_SGIX_igloo_interface 1
12738typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const void *params);
12739#ifdef GL_GLEXT_PROTOTYPES
12740GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum pname, const void *params);
12741#endif
12742#endif /* GL_SGIX_igloo_interface */
12743
12744#ifndef GL_SGIX_instruments
12745#define GL_SGIX_instruments 1
12746#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180
12747#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181
12748typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void);
12749typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);
12750typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p);
12751typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker);
12752typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void);
12753typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);
12754#ifdef GL_GLEXT_PROTOTYPES
12755GLAPI GLint APIENTRY glGetInstrumentsSGIX (void);
12756GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei size, GLint *buffer);
12757GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *marker_p);
12758GLAPI void APIENTRY glReadInstrumentsSGIX (GLint marker);
12759GLAPI void APIENTRY glStartInstrumentsSGIX (void);
12760GLAPI void APIENTRY glStopInstrumentsSGIX (GLint marker);
12761#endif
12762#endif /* GL_SGIX_instruments */
12763
12764#ifndef GL_SGIX_interlace
12765#define GL_SGIX_interlace 1
12766#define GL_INTERLACE_SGIX 0x8094
12767#endif /* GL_SGIX_interlace */
12768
12769#ifndef GL_SGIX_ir_instrument1
12770#define GL_SGIX_ir_instrument1 1
12771#define GL_IR_INSTRUMENT1_SGIX 0x817F
12772#endif /* GL_SGIX_ir_instrument1 */
12773
12774#ifndef GL_SGIX_list_priority
12775#define GL_SGIX_list_priority 1
12776#define GL_LIST_PRIORITY_SGIX 0x8182
12777typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);
12778typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);
12779typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param);
12780typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params);
12781typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param);
12782typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params);
12783#ifdef GL_GLEXT_PROTOTYPES
12784GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint list, GLenum pname, GLfloat *params);
12785GLAPI void APIENTRY glGetListParameterivSGIX (GLuint list, GLenum pname, GLint *params);
12786GLAPI void APIENTRY glListParameterfSGIX (GLuint list, GLenum pname, GLfloat param);
12787GLAPI void APIENTRY glListParameterfvSGIX (GLuint list, GLenum pname, const GLfloat *params);
12788GLAPI void APIENTRY glListParameteriSGIX (GLuint list, GLenum pname, GLint param);
12789GLAPI void APIENTRY glListParameterivSGIX (GLuint list, GLenum pname, const GLint *params);
12790#endif
12791#endif /* GL_SGIX_list_priority */
12792
12793#ifndef GL_SGIX_pixel_texture
12794#define GL_SGIX_pixel_texture 1
12795#define GL_PIXEL_TEX_GEN_SGIX 0x8139
12796#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B
12797typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
12798#ifdef GL_GLEXT_PROTOTYPES
12799GLAPI void APIENTRY glPixelTexGenSGIX (GLenum mode);
12800#endif
12801#endif /* GL_SGIX_pixel_texture */
12802
12803#ifndef GL_SGIX_pixel_tiles
12804#define GL_SGIX_pixel_tiles 1
12805#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E
12806#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F
12807#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140
12808#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141
12809#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142
12810#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143
12811#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144
12812#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145
12813#endif /* GL_SGIX_pixel_tiles */
12814
12815#ifndef GL_SGIX_polynomial_ffd
12816#define GL_SGIX_polynomial_ffd 1
12817#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001
12818#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002
12819#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194
12820#define GL_TEXTURE_DEFORMATION_SGIX 0x8195
12821#define GL_DEFORMATIONS_MASK_SGIX 0x8196
12822#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197
12823typedef 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);
12824typedef 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);
12825typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask);
12826typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);
12827#ifdef GL_GLEXT_PROTOTYPES
12828GLAPI 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);
12829GLAPI 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);
12830GLAPI void APIENTRY glDeformSGIX (GLbitfield mask);
12831GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield mask);
12832#endif
12833#endif /* GL_SGIX_polynomial_ffd */
12834
12835#ifndef GL_SGIX_reference_plane
12836#define GL_SGIX_reference_plane 1
12837#define GL_REFERENCE_PLANE_SGIX 0x817D
12838#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E
12839typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);
12840#ifdef GL_GLEXT_PROTOTYPES
12841GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *equation);
12842#endif
12843#endif /* GL_SGIX_reference_plane */
12844
12845#ifndef GL_SGIX_resample
12846#define GL_SGIX_resample 1
12847#define GL_PACK_RESAMPLE_SGIX 0x842E
12848#define GL_UNPACK_RESAMPLE_SGIX 0x842F
12849#define GL_RESAMPLE_REPLICATE_SGIX 0x8433
12850#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434
12851#define GL_RESAMPLE_DECIMATE_SGIX 0x8430
12852#endif /* GL_SGIX_resample */
12853
12854#ifndef GL_SGIX_scalebias_hint
12855#define GL_SGIX_scalebias_hint 1
12856#define GL_SCALEBIAS_HINT_SGIX 0x8322
12857#endif /* GL_SGIX_scalebias_hint */
12858
12859#ifndef GL_SGIX_shadow
12860#define GL_SGIX_shadow 1
12861#define GL_TEXTURE_COMPARE_SGIX 0x819A
12862#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B
12863#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C
12864#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D
12865#endif /* GL_SGIX_shadow */
12866
12867#ifndef GL_SGIX_shadow_ambient
12868#define GL_SGIX_shadow_ambient 1
12869#define GL_SHADOW_AMBIENT_SGIX 0x80BF
12870#endif /* GL_SGIX_shadow_ambient */
12871
12872#ifndef GL_SGIX_sprite
12873#define GL_SGIX_sprite 1
12874#define GL_SPRITE_SGIX 0x8148
12875#define GL_SPRITE_MODE_SGIX 0x8149
12876#define GL_SPRITE_AXIS_SGIX 0x814A
12877#define GL_SPRITE_TRANSLATION_SGIX 0x814B
12878#define GL_SPRITE_AXIAL_SGIX 0x814C
12879#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D
12880#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E
12881typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
12882typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);
12883typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);
12884typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params);
12885#ifdef GL_GLEXT_PROTOTYPES
12886GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum pname, GLfloat param);
12887GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum pname, const GLfloat *params);
12888GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum pname, GLint param);
12889GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum pname, const GLint *params);
12890#endif
12891#endif /* GL_SGIX_sprite */
12892
12893#ifndef GL_SGIX_subsample
12894#define GL_SGIX_subsample 1
12895#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0
12896#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1
12897#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2
12898#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3
12899#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4
12900#endif /* GL_SGIX_subsample */
12901
12902#ifndef GL_SGIX_tag_sample_buffer
12903#define GL_SGIX_tag_sample_buffer 1
12904typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
12905#ifdef GL_GLEXT_PROTOTYPES
12906GLAPI void APIENTRY glTagSampleBufferSGIX (void);
12907#endif
12908#endif /* GL_SGIX_tag_sample_buffer */
12909
12910#ifndef GL_SGIX_texture_add_env
12911#define GL_SGIX_texture_add_env 1
12912#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE
12913#endif /* GL_SGIX_texture_add_env */
12914
12915#ifndef GL_SGIX_texture_coordinate_clamp
12916#define GL_SGIX_texture_coordinate_clamp 1
12917#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369
12918#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A
12919#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B
12920#endif /* GL_SGIX_texture_coordinate_clamp */
12921
12922#ifndef GL_SGIX_texture_lod_bias
12923#define GL_SGIX_texture_lod_bias 1
12924#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E
12925#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F
12926#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190
12927#endif /* GL_SGIX_texture_lod_bias */
12928
12929#ifndef GL_SGIX_texture_multi_buffer
12930#define GL_SGIX_texture_multi_buffer 1
12931#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
12932#endif /* GL_SGIX_texture_multi_buffer */
12933
12934#ifndef GL_SGIX_texture_scale_bias
12935#define GL_SGIX_texture_scale_bias 1
12936#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179
12937#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
12938#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
12939#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
12940#endif /* GL_SGIX_texture_scale_bias */
12941
12942#ifndef GL_SGIX_vertex_preclip
12943#define GL_SGIX_vertex_preclip 1
12944#define GL_VERTEX_PRECLIP_SGIX 0x83EE
12945#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
12946#endif /* GL_SGIX_vertex_preclip */
12947
12948#ifndef GL_SGIX_ycrcb
12949#define GL_SGIX_ycrcb 1
12950#define GL_YCRCB_422_SGIX 0x81BB
12951#define GL_YCRCB_444_SGIX 0x81BC
12952#endif /* GL_SGIX_ycrcb */
12953
12954#ifndef GL_SGIX_ycrcb_subsample
12955#define GL_SGIX_ycrcb_subsample 1
12956#endif /* GL_SGIX_ycrcb_subsample */
12957
12958#ifndef GL_SGIX_ycrcba
12959#define GL_SGIX_ycrcba 1
12960#define GL_YCRCB_SGIX 0x8318
12961#define GL_YCRCBA_SGIX 0x8319
12962#endif /* GL_SGIX_ycrcba */
12963
12964#ifndef GL_SGI_color_matrix
12965#define GL_SGI_color_matrix 1
12966#define GL_COLOR_MATRIX_SGI 0x80B1
12967#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2
12968#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
12969#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
12970#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
12971#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
12972#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
12973#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
12974#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
12975#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
12976#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
12977#endif /* GL_SGI_color_matrix */
12978
12979#ifndef GL_SGI_color_table
12980#define GL_SGI_color_table 1
12981#define GL_COLOR_TABLE_SGI 0x80D0
12982#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
12983#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
12984#define GL_PROXY_COLOR_TABLE_SGI 0x80D3
12985#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
12986#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
12987#define GL_COLOR_TABLE_SCALE_SGI 0x80D6
12988#define GL_COLOR_TABLE_BIAS_SGI 0x80D7
12989#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8
12990#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9
12991#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA
12992#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB
12993#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC
12994#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD
12995#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
12996#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
12997typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
12998typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);
12999typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params);
13000typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
13001typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void *table);
13002typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params);
13003typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params);
13004#ifdef GL_GLEXT_PROTOTYPES
13005GLAPI void APIENTRY glColorTableSGI (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
13006GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum target, GLenum pname, const GLfloat *params);
13007GLAPI void APIENTRY glColorTableParameterivSGI (GLenum target, GLenum pname, const GLint *params);
13008GLAPI void APIENTRY glCopyColorTableSGI (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
13009GLAPI void APIENTRY glGetColorTableSGI (GLenum target, GLenum format, GLenum type, void *table);
13010GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat *params);
13011GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint *params);
13012#endif
13013#endif /* GL_SGI_color_table */
13014
13015#ifndef GL_SGI_texture_color_table
13016#define GL_SGI_texture_color_table 1
13017#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC
13018#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD
13019#endif /* GL_SGI_texture_color_table */
13020
13021#ifndef GL_SUNX_constant_data
13022#define GL_SUNX_constant_data 1
13023#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5
13024#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6
13025typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void);
13026#ifdef GL_GLEXT_PROTOTYPES
13027GLAPI void APIENTRY glFinishTextureSUNX (void);
13028#endif
13029#endif /* GL_SUNX_constant_data */
13030
13031#ifndef GL_SUN_convolution_border_modes
13032#define GL_SUN_convolution_border_modes 1
13033#define GL_WRAP_BORDER_SUN 0x81D4
13034#endif /* GL_SUN_convolution_border_modes */
13035
13036#ifndef GL_SUN_global_alpha
13037#define GL_SUN_global_alpha 1
13038#define GL_GLOBAL_ALPHA_SUN 0x81D9
13039#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA
13040typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
13041typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
13042typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);
13043typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);
13044typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);
13045typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);
13046typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);
13047typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
13048#ifdef GL_GLEXT_PROTOTYPES
13049GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte factor);
13050GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort factor);
13051GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint factor);
13052GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat factor);
13053GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble factor);
13054GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte factor);
13055GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort factor);
13056GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint factor);
13057#endif
13058#endif /* GL_SUN_global_alpha */
13059
13060#ifndef GL_SUN_mesh_array
13061#define GL_SUN_mesh_array 1
13062#define GL_QUAD_MESH_SUN 0x8614
13063#define GL_TRIANGLE_MESH_SUN 0x8615
13064typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width);
13065#ifdef GL_GLEXT_PROTOTYPES
13066GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum mode, GLint first, GLsizei count, GLsizei width);
13067#endif
13068#endif /* GL_SUN_mesh_array */
13069
13070#ifndef GL_SUN_slice_accum
13071#define GL_SUN_slice_accum 1
13072#define GL_SLICE_ACCUM_SUN 0x85CC
13073#endif /* GL_SUN_slice_accum */
13074
13075#ifndef GL_SUN_triangle_list
13076#define GL_SUN_triangle_list 1
13077#define GL_RESTART_SUN 0x0001
13078#define GL_REPLACE_MIDDLE_SUN 0x0002
13079#define GL_REPLACE_OLDEST_SUN 0x0003
13080#define GL_TRIANGLE_LIST_SUN 0x81D7
13081#define GL_REPLACEMENT_CODE_SUN 0x81D8
13082#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0
13083#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
13084#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
13085#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
13086#define GL_R1UI_V3F_SUN 0x85C4
13087#define GL_R1UI_C4UB_V3F_SUN 0x85C5
13088#define GL_R1UI_C3F_V3F_SUN 0x85C6
13089#define GL_R1UI_N3F_V3F_SUN 0x85C7
13090#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8
13091#define GL_R1UI_T2F_V3F_SUN 0x85C9
13092#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA
13093#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB
13094typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
13095typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
13096typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);
13097typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code);
13098typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code);
13099typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code);
13100typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void **pointer);
13101#ifdef GL_GLEXT_PROTOTYPES
13102GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint code);
13103GLAPI void APIENTRY glReplacementCodeusSUN (GLushort code);
13104GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte code);
13105GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *code);
13106GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *code);
13107GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *code);
13108GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum type, GLsizei stride, const void **pointer);
13109#endif
13110#endif /* GL_SUN_triangle_list */
13111
13112#ifndef GL_SUN_vertex
13113#define GL_SUN_vertex 1
13114typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
13115typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);
13116typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
13117typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v);
13118typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
13119typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v);
13120typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
13121typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v);
13122typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
13123typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v);
13124typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
13125typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
13126typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
13127typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
13128typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
13129typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
13130typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
13131typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
13132typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
13133typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
13134typedef 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);
13135typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
13136typedef 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);
13137typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
13138typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
13139typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v);
13140typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
13141typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v);
13142typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
13143typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v);
13144typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
13145typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v);
13146typedef 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);
13147typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
13148typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
13149typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
13150typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
13151typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
13152typedef 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);
13153typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
13154#ifdef GL_GLEXT_PROTOTYPES
13155GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
13156GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *c, const GLfloat *v);
13157GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
13158GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *c, const GLfloat *v);
13159GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
13160GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *c, const GLfloat *v);
13161GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
13162GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *n, const GLfloat *v);
13163GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
13164GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *c, const GLfloat *n, const GLfloat *v);
13165GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
13166GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *tc, const GLfloat *v);
13167GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
13168GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *tc, const GLfloat *v);
13169GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
13170GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
13171GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
13172GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
13173GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
13174GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
13175GLAPI 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);
13176GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
13177GLAPI 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);
13178GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
13179GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
13180GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *rc, const GLfloat *v);
13181GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
13182GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *rc, const GLubyte *c, const GLfloat *v);
13183GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
13184GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *v);
13185GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
13186GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *n, const GLfloat *v);
13187GLAPI 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);
13188GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
13189GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
13190GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
13191GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
13192GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
13193GLAPI 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);
13194GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
13195#endif
13196#endif /* GL_SUN_vertex */
13197
13198#ifndef GL_WIN_phong_shading
13199#define GL_WIN_phong_shading 1
13200#define GL_PHONG_WIN 0x80EA
13201#define GL_PHONG_HINT_WIN 0x80EB
13202#endif /* GL_WIN_phong_shading */
13203
13204#ifndef GL_WIN_specular_fog
13205#define GL_WIN_specular_fog 1
13206#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC
13207#endif /* GL_WIN_specular_fog */
13208
13209#ifdef __cplusplus
13210}
13211#endif
13212
13213#endif
diff --git a/src/contrib/SDL-2.30.2/include/SDL_opengles.h b/src/contrib/SDL-2.30.2/include/SDL_opengles.h
new file mode 100644
index 0000000..7e9a1ab
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_opengles.h
@@ -0,0 +1,39 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_opengles2.h b/src/contrib/SDL-2.30.2/include/SDL_opengles2.h
new file mode 100644
index 0000000..9697134
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_opengles2.h
@@ -0,0 +1,52 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_opengles2_gl2.h b/src/contrib/SDL-2.30.2/include/SDL_opengles2_gl2.h
new file mode 100644
index 0000000..d13622a
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_opengles2_gl2.h
@@ -0,0 +1,656 @@
1#ifndef __gles2_gl2_h_
2#define __gles2_gl2_h_ 1
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8/*
9** Copyright 2013-2020 The Khronos Group Inc.
10** SPDX-License-Identifier: MIT
11**
12** This header is generated from the Khronos OpenGL / OpenGL ES XML
13** API Registry. The current version of the Registry, generator scripts
14** used to make the header, and the header can be found at
15** https://github.com/KhronosGroup/OpenGL-Registry
16*/
17
18/*#include <GLES2/gl2platform.h>*/
19
20#ifndef GL_APIENTRYP
21#define GL_APIENTRYP GL_APIENTRY*
22#endif
23
24#ifndef GL_GLES_PROTOTYPES
25#define GL_GLES_PROTOTYPES 1
26#endif
27
28/* Generated on date 20220530 */
29
30/* Generated C header for:
31 * API: gles2
32 * Profile: common
33 * Versions considered: 2\.[0-9]
34 * Versions emitted: .*
35 * Default extensions included: None
36 * Additional extensions included: _nomatch_^
37 * Extensions removed: _nomatch_^
38 */
39
40#ifndef GL_ES_VERSION_2_0
41#define GL_ES_VERSION_2_0 1
42/*#include <KHR/khrplatform.h>*/
43typedef khronos_int8_t GLbyte;
44typedef khronos_float_t GLclampf;
45typedef khronos_int32_t GLfixed;
46typedef khronos_int16_t GLshort;
47typedef khronos_uint16_t GLushort;
48typedef void GLvoid;
49typedef struct __GLsync *GLsync;
50typedef khronos_int64_t GLint64;
51typedef khronos_uint64_t GLuint64;
52typedef unsigned int GLenum;
53typedef unsigned int GLuint;
54typedef char GLchar;
55typedef khronos_float_t GLfloat;
56typedef khronos_ssize_t GLsizeiptr;
57typedef khronos_intptr_t GLintptr;
58typedef unsigned int GLbitfield;
59typedef int GLint;
60typedef unsigned char GLboolean;
61typedef int GLsizei;
62typedef khronos_uint8_t GLubyte;
63#define GL_DEPTH_BUFFER_BIT 0x00000100
64#define GL_STENCIL_BUFFER_BIT 0x00000400
65#define GL_COLOR_BUFFER_BIT 0x00004000
66#define GL_FALSE 0
67#define GL_TRUE 1
68#define GL_POINTS 0x0000
69#define GL_LINES 0x0001
70#define GL_LINE_LOOP 0x0002
71#define GL_LINE_STRIP 0x0003
72#define GL_TRIANGLES 0x0004
73#define GL_TRIANGLE_STRIP 0x0005
74#define GL_TRIANGLE_FAN 0x0006
75#define GL_ZERO 0
76#define GL_ONE 1
77#define GL_SRC_COLOR 0x0300
78#define GL_ONE_MINUS_SRC_COLOR 0x0301
79#define GL_SRC_ALPHA 0x0302
80#define GL_ONE_MINUS_SRC_ALPHA 0x0303
81#define GL_DST_ALPHA 0x0304
82#define GL_ONE_MINUS_DST_ALPHA 0x0305
83#define GL_DST_COLOR 0x0306
84#define GL_ONE_MINUS_DST_COLOR 0x0307
85#define GL_SRC_ALPHA_SATURATE 0x0308
86#define GL_FUNC_ADD 0x8006
87#define GL_BLEND_EQUATION 0x8009
88#define GL_BLEND_EQUATION_RGB 0x8009
89#define GL_BLEND_EQUATION_ALPHA 0x883D
90#define GL_FUNC_SUBTRACT 0x800A
91#define GL_FUNC_REVERSE_SUBTRACT 0x800B
92#define GL_BLEND_DST_RGB 0x80C8
93#define GL_BLEND_SRC_RGB 0x80C9
94#define GL_BLEND_DST_ALPHA 0x80CA
95#define GL_BLEND_SRC_ALPHA 0x80CB
96#define GL_CONSTANT_COLOR 0x8001
97#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
98#define GL_CONSTANT_ALPHA 0x8003
99#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
100#define GL_BLEND_COLOR 0x8005
101#define GL_ARRAY_BUFFER 0x8892
102#define GL_ELEMENT_ARRAY_BUFFER 0x8893
103#define GL_ARRAY_BUFFER_BINDING 0x8894
104#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
105#define GL_STREAM_DRAW 0x88E0
106#define GL_STATIC_DRAW 0x88E4
107#define GL_DYNAMIC_DRAW 0x88E8
108#define GL_BUFFER_SIZE 0x8764
109#define GL_BUFFER_USAGE 0x8765
110#define GL_CURRENT_VERTEX_ATTRIB 0x8626
111#define GL_FRONT 0x0404
112#define GL_BACK 0x0405
113#define GL_FRONT_AND_BACK 0x0408
114#define GL_TEXTURE_2D 0x0DE1
115#define GL_CULL_FACE 0x0B44
116#define GL_BLEND 0x0BE2
117#define GL_DITHER 0x0BD0
118#define GL_STENCIL_TEST 0x0B90
119#define GL_DEPTH_TEST 0x0B71
120#define GL_SCISSOR_TEST 0x0C11
121#define GL_POLYGON_OFFSET_FILL 0x8037
122#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
123#define GL_SAMPLE_COVERAGE 0x80A0
124#define GL_NO_ERROR 0
125#define GL_INVALID_ENUM 0x0500
126#define GL_INVALID_VALUE 0x0501
127#define GL_INVALID_OPERATION 0x0502
128#define GL_OUT_OF_MEMORY 0x0505
129#define GL_CW 0x0900
130#define GL_CCW 0x0901
131#define GL_LINE_WIDTH 0x0B21
132#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
133#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
134#define GL_CULL_FACE_MODE 0x0B45
135#define GL_FRONT_FACE 0x0B46
136#define GL_DEPTH_RANGE 0x0B70
137#define GL_DEPTH_WRITEMASK 0x0B72
138#define GL_DEPTH_CLEAR_VALUE 0x0B73
139#define GL_DEPTH_FUNC 0x0B74
140#define GL_STENCIL_CLEAR_VALUE 0x0B91
141#define GL_STENCIL_FUNC 0x0B92
142#define GL_STENCIL_FAIL 0x0B94
143#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
144#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
145#define GL_STENCIL_REF 0x0B97
146#define GL_STENCIL_VALUE_MASK 0x0B93
147#define GL_STENCIL_WRITEMASK 0x0B98
148#define GL_STENCIL_BACK_FUNC 0x8800
149#define GL_STENCIL_BACK_FAIL 0x8801
150#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
151#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
152#define GL_STENCIL_BACK_REF 0x8CA3
153#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
154#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
155#define GL_VIEWPORT 0x0BA2
156#define GL_SCISSOR_BOX 0x0C10
157#define GL_COLOR_CLEAR_VALUE 0x0C22
158#define GL_COLOR_WRITEMASK 0x0C23
159#define GL_UNPACK_ALIGNMENT 0x0CF5
160#define GL_PACK_ALIGNMENT 0x0D05
161#define GL_MAX_TEXTURE_SIZE 0x0D33
162#define GL_MAX_VIEWPORT_DIMS 0x0D3A
163#define GL_SUBPIXEL_BITS 0x0D50
164#define GL_RED_BITS 0x0D52
165#define GL_GREEN_BITS 0x0D53
166#define GL_BLUE_BITS 0x0D54
167#define GL_ALPHA_BITS 0x0D55
168#define GL_DEPTH_BITS 0x0D56
169#define GL_STENCIL_BITS 0x0D57
170#define GL_POLYGON_OFFSET_UNITS 0x2A00
171#define GL_POLYGON_OFFSET_FACTOR 0x8038
172#define GL_TEXTURE_BINDING_2D 0x8069
173#define GL_SAMPLE_BUFFERS 0x80A8
174#define GL_SAMPLES 0x80A9
175#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
176#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
177#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
178#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
179#define GL_DONT_CARE 0x1100
180#define GL_FASTEST 0x1101
181#define GL_NICEST 0x1102
182#define GL_GENERATE_MIPMAP_HINT 0x8192
183#define GL_BYTE 0x1400
184#define GL_UNSIGNED_BYTE 0x1401
185#define GL_SHORT 0x1402
186#define GL_UNSIGNED_SHORT 0x1403
187#define GL_INT 0x1404
188#define GL_UNSIGNED_INT 0x1405
189#define GL_FLOAT 0x1406
190#define GL_FIXED 0x140C
191#define GL_DEPTH_COMPONENT 0x1902
192#define GL_ALPHA 0x1906
193#define GL_RGB 0x1907
194#define GL_RGBA 0x1908
195#define GL_LUMINANCE 0x1909
196#define GL_LUMINANCE_ALPHA 0x190A
197#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
198#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
199#define GL_UNSIGNED_SHORT_5_6_5 0x8363
200#define GL_FRAGMENT_SHADER 0x8B30
201#define GL_VERTEX_SHADER 0x8B31
202#define GL_MAX_VERTEX_ATTRIBS 0x8869
203#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
204#define GL_MAX_VARYING_VECTORS 0x8DFC
205#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
206#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
207#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
208#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
209#define GL_SHADER_TYPE 0x8B4F
210#define GL_DELETE_STATUS 0x8B80
211#define GL_LINK_STATUS 0x8B82
212#define GL_VALIDATE_STATUS 0x8B83
213#define GL_ATTACHED_SHADERS 0x8B85
214#define GL_ACTIVE_UNIFORMS 0x8B86
215#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
216#define GL_ACTIVE_ATTRIBUTES 0x8B89
217#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
218#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
219#define GL_CURRENT_PROGRAM 0x8B8D
220#define GL_NEVER 0x0200
221#define GL_LESS 0x0201
222#define GL_EQUAL 0x0202
223#define GL_LEQUAL 0x0203
224#define GL_GREATER 0x0204
225#define GL_NOTEQUAL 0x0205
226#define GL_GEQUAL 0x0206
227#define GL_ALWAYS 0x0207
228#define GL_KEEP 0x1E00
229#define GL_REPLACE 0x1E01
230#define GL_INCR 0x1E02
231#define GL_DECR 0x1E03
232#define GL_INVERT 0x150A
233#define GL_INCR_WRAP 0x8507
234#define GL_DECR_WRAP 0x8508
235#define GL_VENDOR 0x1F00
236#define GL_RENDERER 0x1F01
237#define GL_VERSION 0x1F02
238#define GL_EXTENSIONS 0x1F03
239#define GL_NEAREST 0x2600
240#define GL_LINEAR 0x2601
241#define GL_NEAREST_MIPMAP_NEAREST 0x2700
242#define GL_LINEAR_MIPMAP_NEAREST 0x2701
243#define GL_NEAREST_MIPMAP_LINEAR 0x2702
244#define GL_LINEAR_MIPMAP_LINEAR 0x2703
245#define GL_TEXTURE_MAG_FILTER 0x2800
246#define GL_TEXTURE_MIN_FILTER 0x2801
247#define GL_TEXTURE_WRAP_S 0x2802
248#define GL_TEXTURE_WRAP_T 0x2803
249#define GL_TEXTURE 0x1702
250#define GL_TEXTURE_CUBE_MAP 0x8513
251#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
252#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
253#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
254#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
255#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
256#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
257#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
258#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
259#define GL_TEXTURE0 0x84C0
260#define GL_TEXTURE1 0x84C1
261#define GL_TEXTURE2 0x84C2
262#define GL_TEXTURE3 0x84C3
263#define GL_TEXTURE4 0x84C4
264#define GL_TEXTURE5 0x84C5
265#define GL_TEXTURE6 0x84C6
266#define GL_TEXTURE7 0x84C7
267#define GL_TEXTURE8 0x84C8
268#define GL_TEXTURE9 0x84C9
269#define GL_TEXTURE10 0x84CA
270#define GL_TEXTURE11 0x84CB
271#define GL_TEXTURE12 0x84CC
272#define GL_TEXTURE13 0x84CD
273#define GL_TEXTURE14 0x84CE
274#define GL_TEXTURE15 0x84CF
275#define GL_TEXTURE16 0x84D0
276#define GL_TEXTURE17 0x84D1
277#define GL_TEXTURE18 0x84D2
278#define GL_TEXTURE19 0x84D3
279#define GL_TEXTURE20 0x84D4
280#define GL_TEXTURE21 0x84D5
281#define GL_TEXTURE22 0x84D6
282#define GL_TEXTURE23 0x84D7
283#define GL_TEXTURE24 0x84D8
284#define GL_TEXTURE25 0x84D9
285#define GL_TEXTURE26 0x84DA
286#define GL_TEXTURE27 0x84DB
287#define GL_TEXTURE28 0x84DC
288#define GL_TEXTURE29 0x84DD
289#define GL_TEXTURE30 0x84DE
290#define GL_TEXTURE31 0x84DF
291#define GL_ACTIVE_TEXTURE 0x84E0
292#define GL_REPEAT 0x2901
293#define GL_CLAMP_TO_EDGE 0x812F
294#define GL_MIRRORED_REPEAT 0x8370
295#define GL_FLOAT_VEC2 0x8B50
296#define GL_FLOAT_VEC3 0x8B51
297#define GL_FLOAT_VEC4 0x8B52
298#define GL_INT_VEC2 0x8B53
299#define GL_INT_VEC3 0x8B54
300#define GL_INT_VEC4 0x8B55
301#define GL_BOOL 0x8B56
302#define GL_BOOL_VEC2 0x8B57
303#define GL_BOOL_VEC3 0x8B58
304#define GL_BOOL_VEC4 0x8B59
305#define GL_FLOAT_MAT2 0x8B5A
306#define GL_FLOAT_MAT3 0x8B5B
307#define GL_FLOAT_MAT4 0x8B5C
308#define GL_SAMPLER_2D 0x8B5E
309#define GL_SAMPLER_CUBE 0x8B60
310#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
311#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
312#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
313#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
314#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
315#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
316#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
317#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
318#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
319#define GL_COMPILE_STATUS 0x8B81
320#define GL_INFO_LOG_LENGTH 0x8B84
321#define GL_SHADER_SOURCE_LENGTH 0x8B88
322#define GL_SHADER_COMPILER 0x8DFA
323#define GL_SHADER_BINARY_FORMATS 0x8DF8
324#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
325#define GL_LOW_FLOAT 0x8DF0
326#define GL_MEDIUM_FLOAT 0x8DF1
327#define GL_HIGH_FLOAT 0x8DF2
328#define GL_LOW_INT 0x8DF3
329#define GL_MEDIUM_INT 0x8DF4
330#define GL_HIGH_INT 0x8DF5
331#define GL_FRAMEBUFFER 0x8D40
332#define GL_RENDERBUFFER 0x8D41
333#define GL_RGBA4 0x8056
334#define GL_RGB5_A1 0x8057
335#define GL_RGB565 0x8D62
336#define GL_DEPTH_COMPONENT16 0x81A5
337#define GL_STENCIL_INDEX8 0x8D48
338#define GL_RENDERBUFFER_WIDTH 0x8D42
339#define GL_RENDERBUFFER_HEIGHT 0x8D43
340#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
341#define GL_RENDERBUFFER_RED_SIZE 0x8D50
342#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51
343#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52
344#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
345#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
346#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
347#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
348#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
349#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
350#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
351#define GL_COLOR_ATTACHMENT0 0x8CE0
352#define GL_DEPTH_ATTACHMENT 0x8D00
353#define GL_STENCIL_ATTACHMENT 0x8D20
354#define GL_NONE 0
355#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
356#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
357#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
358#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9
359#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
360#define GL_FRAMEBUFFER_BINDING 0x8CA6
361#define GL_RENDERBUFFER_BINDING 0x8CA7
362#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
363#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
364typedef void (GL_APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
365typedef void (GL_APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
366typedef void (GL_APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
367typedef void (GL_APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
368typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
369typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
370typedef void (GL_APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);
371typedef void (GL_APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
372typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
373typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
374typedef void (GL_APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor);
375typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
376typedef void (GL_APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
377typedef void (GL_APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
378typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
379typedef void (GL_APIENTRYP PFNGLCLEARPROC) (GLbitfield mask);
380typedef void (GL_APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
381typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d);
382typedef void (GL_APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s);
383typedef void (GL_APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
384typedef void (GL_APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
385typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
386typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
387typedef void (GL_APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
388typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
389typedef GLuint (GL_APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
390typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
391typedef void (GL_APIENTRYP PFNGLCULLFACEPROC) (GLenum mode);
392typedef void (GL_APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
393typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
394typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
395typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
396typedef void (GL_APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
397typedef void (GL_APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures);
398typedef void (GL_APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func);
399typedef void (GL_APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag);
400typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f);
401typedef void (GL_APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
402typedef void (GL_APIENTRYP PFNGLDISABLEPROC) (GLenum cap);
403typedef void (GL_APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
404typedef void (GL_APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count);
405typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices);
406typedef void (GL_APIENTRYP PFNGLENABLEPROC) (GLenum cap);
407typedef void (GL_APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
408typedef void (GL_APIENTRYP PFNGLFINISHPROC) (void);
409typedef void (GL_APIENTRYP PFNGLFLUSHPROC) (void);
410typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
411typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
412typedef void (GL_APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode);
413typedef void (GL_APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
414typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);
415typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
416typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
417typedef void (GL_APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures);
418typedef void (GL_APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
419typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
420typedef void (GL_APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
421typedef GLint (GL_APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
422typedef void (GL_APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *data);
423typedef void (GL_APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
424typedef GLenum (GL_APIENTRYP PFNGLGETERRORPROC) (void);
425typedef void (GL_APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *data);
426typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
427typedef void (GL_APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data);
428typedef void (GL_APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
429typedef void (GL_APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
430typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
431typedef void (GL_APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
432typedef void (GL_APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
433typedef void (GL_APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
434typedef void (GL_APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
435typedef const GLubyte *(GL_APIENTRYP PFNGLGETSTRINGPROC) (GLenum name);
436typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
437typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
438typedef void (GL_APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
439typedef void (GL_APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
440typedef GLint (GL_APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
441typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
442typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
443typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer);
444typedef void (GL_APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode);
445typedef GLboolean (GL_APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
446typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDPROC) (GLenum cap);
447typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
448typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
449typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
450typedef GLboolean (GL_APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
451typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture);
452typedef void (GL_APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width);
453typedef void (GL_APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
454typedef void (GL_APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);
455typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units);
456typedef void (GL_APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
457typedef void (GL_APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void);
458typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
459typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert);
460typedef void (GL_APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
461typedef void (GL_APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length);
462typedef void (GL_APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
463typedef void (GL_APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask);
464typedef void (GL_APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
465typedef void (GL_APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask);
466typedef void (GL_APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
467typedef void (GL_APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass);
468typedef void (GL_APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
469typedef void (GL_APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
470typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param);
471typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
472typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
473typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
474typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
475typedef void (GL_APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
476typedef void (GL_APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
477typedef void (GL_APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
478typedef void (GL_APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
479typedef void (GL_APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
480typedef void (GL_APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
481typedef void (GL_APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
482typedef void (GL_APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
483typedef void (GL_APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
484typedef void (GL_APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
485typedef void (GL_APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
486typedef void (GL_APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
487typedef void (GL_APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
488typedef void (GL_APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
489typedef void (GL_APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
490typedef void (GL_APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
491typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
492typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
493typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
494typedef void (GL_APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
495typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
496typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
497typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
498typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
499typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
500typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
501typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
502typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
503typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
504typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
505typedef void (GL_APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
506#if GL_GLES_PROTOTYPES
507GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture);
508GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader);
509GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
510GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer);
511GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
512GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
513GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture);
514GL_APICALL void GL_APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
515GL_APICALL void GL_APIENTRY glBlendEquation (GLenum mode);
516GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
517GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
518GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
519GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
520GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
521GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target);
522GL_APICALL void GL_APIENTRY glClear (GLbitfield mask);
523GL_APICALL void GL_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
524GL_APICALL void GL_APIENTRY glClearDepthf (GLfloat d);
525GL_APICALL void GL_APIENTRY glClearStencil (GLint s);
526GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
527GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader);
528GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
529GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
530GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
531GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
532GL_APICALL GLuint GL_APIENTRY glCreateProgram (void);
533GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type);
534GL_APICALL void GL_APIENTRY glCullFace (GLenum mode);
535GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);
536GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);
537GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program);
538GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);
539GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader);
540GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures);
541GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func);
542GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag);
543GL_APICALL void GL_APIENTRY glDepthRangef (GLfloat n, GLfloat f);
544GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader);
545GL_APICALL void GL_APIENTRY glDisable (GLenum cap);
546GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index);
547GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
548GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices);
549GL_APICALL void GL_APIENTRY glEnable (GLenum cap);
550GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index);
551GL_APICALL void GL_APIENTRY glFinish (void);
552GL_APICALL void GL_APIENTRY glFlush (void);
553GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
554GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
555GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode);
556GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);
557GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target);
558GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers);
559GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);
560GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures);
561GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
562GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
563GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
564GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);
565GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *data);
566GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);
567GL_APICALL GLenum GL_APIENTRY glGetError (void);
568GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *data);
569GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params);
570GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *data);
571GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);
572GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
573GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params);
574GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
575GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
576GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
577GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
578GL_APICALL const GLubyte *GL_APIENTRY glGetString (GLenum name);
579GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params);
580GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params);
581GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params);
582GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params);
583GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);
584GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params);
585GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);
586GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer);
587GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode);
588GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer);
589GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap);
590GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer);
591GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program);
592GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer);
593GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader);
594GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture);
595GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width);
596GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program);
597GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param);
598GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
599GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
600GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void);
601GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
602GL_APICALL void GL_APIENTRY glSampleCoverage (GLfloat value, GLboolean invert);
603GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
604GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length);
605GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
606GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
607GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
608GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask);
609GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
610GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
611GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
612GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
613GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
614GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params);
615GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
616GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params);
617GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
618GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat v0);
619GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value);
620GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint v0);
621GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value);
622GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1);
623GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value);
624GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint v0, GLint v1);
625GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value);
626GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
627GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value);
628GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2);
629GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value);
630GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
631GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value);
632GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
633GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value);
634GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
635GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
636GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
637GL_APICALL void GL_APIENTRY glUseProgram (GLuint program);
638GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program);
639GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint index, GLfloat x);
640GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v);
641GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y);
642GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v);
643GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z);
644GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v);
645GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
646GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v);
647GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
648GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
649#endif
650#endif /* GL_ES_VERSION_2_0 */
651
652#ifdef __cplusplus
653}
654#endif
655
656#endif
diff --git a/src/contrib/SDL-2.30.2/include/SDL_opengles2_gl2ext.h b/src/contrib/SDL-2.30.2/include/SDL_opengles2_gl2ext.h
new file mode 100644
index 0000000..9448ce0
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_opengles2_gl2ext.h
@@ -0,0 +1,4033 @@
1#ifndef __gles2_gl2ext_h_
2#define __gles2_gl2ext_h_ 1
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8/*
9** Copyright 2013-2020 The Khronos Group Inc.
10** SPDX-License-Identifier: MIT
11**
12** This header is generated from the Khronos OpenGL / OpenGL ES XML
13** API Registry. The current version of the Registry, generator scripts
14** used to make the header, and the header can be found at
15** https://github.com/KhronosGroup/OpenGL-Registry
16*/
17
18#ifndef GL_APIENTRYP
19#define GL_APIENTRYP GL_APIENTRY*
20#endif
21
22/* Generated on date 20220530 */
23
24/* Generated C header for:
25 * API: gles2
26 * Profile: common
27 * Versions considered: 2\.[0-9]
28 * Versions emitted: _nomatch_^
29 * Default extensions included: gles2
30 * Additional extensions included: _nomatch_^
31 * Extensions removed: _nomatch_^
32 */
33
34#ifndef GL_KHR_blend_equation_advanced
35#define GL_KHR_blend_equation_advanced 1
36#define GL_MULTIPLY_KHR 0x9294
37#define GL_SCREEN_KHR 0x9295
38#define GL_OVERLAY_KHR 0x9296
39#define GL_DARKEN_KHR 0x9297
40#define GL_LIGHTEN_KHR 0x9298
41#define GL_COLORDODGE_KHR 0x9299
42#define GL_COLORBURN_KHR 0x929A
43#define GL_HARDLIGHT_KHR 0x929B
44#define GL_SOFTLIGHT_KHR 0x929C
45#define GL_DIFFERENCE_KHR 0x929E
46#define GL_EXCLUSION_KHR 0x92A0
47#define GL_HSL_HUE_KHR 0x92AD
48#define GL_HSL_SATURATION_KHR 0x92AE
49#define GL_HSL_COLOR_KHR 0x92AF
50#define GL_HSL_LUMINOSITY_KHR 0x92B0
51typedef void (GL_APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void);
52#ifdef GL_GLEXT_PROTOTYPES
53GL_APICALL void GL_APIENTRY glBlendBarrierKHR (void);
54#endif
55#endif /* GL_KHR_blend_equation_advanced */
56
57#ifndef GL_KHR_blend_equation_advanced_coherent
58#define GL_KHR_blend_equation_advanced_coherent 1
59#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285
60#endif /* GL_KHR_blend_equation_advanced_coherent */
61
62#ifndef GL_KHR_context_flush_control
63#define GL_KHR_context_flush_control 1
64#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x82FB
65#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC
66#endif /* GL_KHR_context_flush_control */
67
68#ifndef GL_KHR_debug
69#define GL_KHR_debug 1
70typedef void (GL_APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
71#define GL_SAMPLER 0x82E6
72#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242
73#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243
74#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244
75#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245
76#define GL_DEBUG_SOURCE_API_KHR 0x8246
77#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247
78#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248
79#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249
80#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A
81#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B
82#define GL_DEBUG_TYPE_ERROR_KHR 0x824C
83#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D
84#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E
85#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F
86#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250
87#define GL_DEBUG_TYPE_OTHER_KHR 0x8251
88#define GL_DEBUG_TYPE_MARKER_KHR 0x8268
89#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269
90#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A
91#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B
92#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C
93#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D
94#define GL_BUFFER_KHR 0x82E0
95#define GL_SHADER_KHR 0x82E1
96#define GL_PROGRAM_KHR 0x82E2
97#define GL_VERTEX_ARRAY_KHR 0x8074
98#define GL_QUERY_KHR 0x82E3
99#define GL_PROGRAM_PIPELINE_KHR 0x82E4
100#define GL_SAMPLER_KHR 0x82E6
101#define GL_MAX_LABEL_LENGTH_KHR 0x82E8
102#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143
103#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144
104#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145
105#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146
106#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147
107#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148
108#define GL_DEBUG_OUTPUT_KHR 0x92E0
109#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002
110#define GL_STACK_OVERFLOW_KHR 0x0503
111#define GL_STACK_UNDERFLOW_KHR 0x0504
112typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
113typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
114typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam);
115typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
116typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
117typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void);
118typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
119typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
120typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label);
121typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
122typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, void **params);
123#ifdef GL_GLEXT_PROTOTYPES
124GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
125GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
126GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam);
127GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
128GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message);
129GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void);
130GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
131GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
132GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label);
133GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
134GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, void **params);
135#endif
136#endif /* GL_KHR_debug */
137
138#ifndef GL_KHR_no_error
139#define GL_KHR_no_error 1
140#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008
141#endif /* GL_KHR_no_error */
142
143#ifndef GL_KHR_parallel_shader_compile
144#define GL_KHR_parallel_shader_compile 1
145#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0
146#define GL_COMPLETION_STATUS_KHR 0x91B1
147typedef void (GL_APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count);
148#ifdef GL_GLEXT_PROTOTYPES
149GL_APICALL void GL_APIENTRY glMaxShaderCompilerThreadsKHR (GLuint count);
150#endif
151#endif /* GL_KHR_parallel_shader_compile */
152
153#ifndef GL_KHR_robust_buffer_access_behavior
154#define GL_KHR_robust_buffer_access_behavior 1
155#endif /* GL_KHR_robust_buffer_access_behavior */
156
157#ifndef GL_KHR_robustness
158#define GL_KHR_robustness 1
159#define GL_CONTEXT_ROBUST_ACCESS_KHR 0x90F3
160#define GL_LOSE_CONTEXT_ON_RESET_KHR 0x8252
161#define GL_GUILTY_CONTEXT_RESET_KHR 0x8253
162#define GL_INNOCENT_CONTEXT_RESET_KHR 0x8254
163#define GL_UNKNOWN_CONTEXT_RESET_KHR 0x8255
164#define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256
165#define GL_NO_RESET_NOTIFICATION_KHR 0x8261
166#define GL_CONTEXT_LOST_KHR 0x0507
167typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSKHRPROC) (void);
168typedef void (GL_APIENTRYP PFNGLREADNPIXELSKHRPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
169typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
170typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
171typedef void (GL_APIENTRYP PFNGLGETNUNIFORMUIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
172#ifdef GL_GLEXT_PROTOTYPES
173GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusKHR (void);
174GL_APICALL void GL_APIENTRY glReadnPixelsKHR (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
175GL_APICALL void GL_APIENTRY glGetnUniformfvKHR (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
176GL_APICALL void GL_APIENTRY glGetnUniformivKHR (GLuint program, GLint location, GLsizei bufSize, GLint *params);
177GL_APICALL void GL_APIENTRY glGetnUniformuivKHR (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
178#endif
179#endif /* GL_KHR_robustness */
180
181#ifndef GL_KHR_shader_subgroup
182#define GL_KHR_shader_subgroup 1
183#define GL_SUBGROUP_SIZE_KHR 0x9532
184#define GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533
185#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534
186#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535
187#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001
188#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002
189#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004
190#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008
191#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010
192#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020
193#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040
194#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080
195#endif /* GL_KHR_shader_subgroup */
196
197#ifndef GL_KHR_texture_compression_astc_hdr
198#define GL_KHR_texture_compression_astc_hdr 1
199#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
200#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
201#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
202#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
203#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
204#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
205#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
206#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
207#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
208#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
209#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
210#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
211#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
212#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
213#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
214#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
215#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
216#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
217#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
218#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
219#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
220#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
221#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
222#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
223#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
224#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
225#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
226#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
227#endif /* GL_KHR_texture_compression_astc_hdr */
228
229#ifndef GL_KHR_texture_compression_astc_ldr
230#define GL_KHR_texture_compression_astc_ldr 1
231#endif /* GL_KHR_texture_compression_astc_ldr */
232
233#ifndef GL_KHR_texture_compression_astc_sliced_3d
234#define GL_KHR_texture_compression_astc_sliced_3d 1
235#endif /* GL_KHR_texture_compression_astc_sliced_3d */
236
237#ifndef GL_OES_EGL_image
238#define GL_OES_EGL_image 1
239typedef void *GLeglImageOES;
240typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
241typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
242#ifdef GL_GLEXT_PROTOTYPES
243GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image);
244GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image);
245#endif
246#endif /* GL_OES_EGL_image */
247
248#ifndef GL_OES_EGL_image_external
249#define GL_OES_EGL_image_external 1
250#define GL_TEXTURE_EXTERNAL_OES 0x8D65
251#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67
252#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
253#define GL_SAMPLER_EXTERNAL_OES 0x8D66
254#endif /* GL_OES_EGL_image_external */
255
256#ifndef GL_OES_EGL_image_external_essl3
257#define GL_OES_EGL_image_external_essl3 1
258#endif /* GL_OES_EGL_image_external_essl3 */
259
260#ifndef GL_OES_compressed_ETC1_RGB8_sub_texture
261#define GL_OES_compressed_ETC1_RGB8_sub_texture 1
262#endif /* GL_OES_compressed_ETC1_RGB8_sub_texture */
263
264#ifndef GL_OES_compressed_ETC1_RGB8_texture
265#define GL_OES_compressed_ETC1_RGB8_texture 1
266#define GL_ETC1_RGB8_OES 0x8D64
267#endif /* GL_OES_compressed_ETC1_RGB8_texture */
268
269#ifndef GL_OES_compressed_paletted_texture
270#define GL_OES_compressed_paletted_texture 1
271#define GL_PALETTE4_RGB8_OES 0x8B90
272#define GL_PALETTE4_RGBA8_OES 0x8B91
273#define GL_PALETTE4_R5_G6_B5_OES 0x8B92
274#define GL_PALETTE4_RGBA4_OES 0x8B93
275#define GL_PALETTE4_RGB5_A1_OES 0x8B94
276#define GL_PALETTE8_RGB8_OES 0x8B95
277#define GL_PALETTE8_RGBA8_OES 0x8B96
278#define GL_PALETTE8_R5_G6_B5_OES 0x8B97
279#define GL_PALETTE8_RGBA4_OES 0x8B98
280#define GL_PALETTE8_RGB5_A1_OES 0x8B99
281#endif /* GL_OES_compressed_paletted_texture */
282
283#ifndef GL_OES_copy_image
284#define GL_OES_copy_image 1
285typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAOESPROC) (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);
286#ifdef GL_GLEXT_PROTOTYPES
287GL_APICALL void GL_APIENTRY glCopyImageSubDataOES (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);
288#endif
289#endif /* GL_OES_copy_image */
290
291#ifndef GL_OES_depth24
292#define GL_OES_depth24 1
293#define GL_DEPTH_COMPONENT24_OES 0x81A6
294#endif /* GL_OES_depth24 */
295
296#ifndef GL_OES_depth32
297#define GL_OES_depth32 1
298#define GL_DEPTH_COMPONENT32_OES 0x81A7
299#endif /* GL_OES_depth32 */
300
301#ifndef GL_OES_depth_texture
302#define GL_OES_depth_texture 1
303#endif /* GL_OES_depth_texture */
304
305#ifndef GL_OES_draw_buffers_indexed
306#define GL_OES_draw_buffers_indexed 1
307#define GL_MIN 0x8007
308#define GL_MAX 0x8008
309typedef void (GL_APIENTRYP PFNGLENABLEIOESPROC) (GLenum target, GLuint index);
310typedef void (GL_APIENTRYP PFNGLDISABLEIOESPROC) (GLenum target, GLuint index);
311typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIOESPROC) (GLuint buf, GLenum mode);
312typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIOESPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
313typedef void (GL_APIENTRYP PFNGLBLENDFUNCIOESPROC) (GLuint buf, GLenum src, GLenum dst);
314typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIOESPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
315typedef void (GL_APIENTRYP PFNGLCOLORMASKIOESPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
316typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIOESPROC) (GLenum target, GLuint index);
317#ifdef GL_GLEXT_PROTOTYPES
318GL_APICALL void GL_APIENTRY glEnableiOES (GLenum target, GLuint index);
319GL_APICALL void GL_APIENTRY glDisableiOES (GLenum target, GLuint index);
320GL_APICALL void GL_APIENTRY glBlendEquationiOES (GLuint buf, GLenum mode);
321GL_APICALL void GL_APIENTRY glBlendEquationSeparateiOES (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
322GL_APICALL void GL_APIENTRY glBlendFunciOES (GLuint buf, GLenum src, GLenum dst);
323GL_APICALL void GL_APIENTRY glBlendFuncSeparateiOES (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
324GL_APICALL void GL_APIENTRY glColorMaskiOES (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
325GL_APICALL GLboolean GL_APIENTRY glIsEnablediOES (GLenum target, GLuint index);
326#endif
327#endif /* GL_OES_draw_buffers_indexed */
328
329#ifndef GL_OES_draw_elements_base_vertex
330#define GL_OES_draw_elements_base_vertex 1
331typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
332typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
333typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
334typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
335#ifdef GL_GLEXT_PROTOTYPES
336GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
337GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexOES (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
338GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
339GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
340#endif
341#endif /* GL_OES_draw_elements_base_vertex */
342
343#ifndef GL_OES_element_index_uint
344#define GL_OES_element_index_uint 1
345#endif /* GL_OES_element_index_uint */
346
347#ifndef GL_OES_fbo_render_mipmap
348#define GL_OES_fbo_render_mipmap 1
349#endif /* GL_OES_fbo_render_mipmap */
350
351#ifndef GL_OES_fragment_precision_high
352#define GL_OES_fragment_precision_high 1
353#endif /* GL_OES_fragment_precision_high */
354
355#ifndef GL_OES_geometry_point_size
356#define GL_OES_geometry_point_size 1
357#endif /* GL_OES_geometry_point_size */
358
359#ifndef GL_OES_geometry_shader
360#define GL_OES_geometry_shader 1
361#define GL_GEOMETRY_SHADER_OES 0x8DD9
362#define GL_GEOMETRY_SHADER_BIT_OES 0x00000004
363#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916
364#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917
365#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918
366#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F
367#define GL_LAYER_PROVOKING_VERTEX_OES 0x825E
368#define GL_LINES_ADJACENCY_OES 0x000A
369#define GL_LINE_STRIP_ADJACENCY_OES 0x000B
370#define GL_TRIANGLES_ADJACENCY_OES 0x000C
371#define GL_TRIANGLE_STRIP_ADJACENCY_OES 0x000D
372#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF
373#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C
374#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32
375#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123
376#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124
377#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0
378#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1
379#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A
380#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29
381#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF
382#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5
383#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD
384#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7
385#define GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D
386#define GL_LAST_VERTEX_CONVENTION_OES 0x8E4E
387#define GL_UNDEFINED_VERTEX_OES 0x8260
388#define GL_PRIMITIVES_GENERATED_OES 0x8C87
389#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312
390#define GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317
391#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8
392#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7
393#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309
394typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREOESPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
395#ifdef GL_GLEXT_PROTOTYPES
396GL_APICALL void GL_APIENTRY glFramebufferTextureOES (GLenum target, GLenum attachment, GLuint texture, GLint level);
397#endif
398#endif /* GL_OES_geometry_shader */
399
400#ifndef GL_OES_get_program_binary
401#define GL_OES_get_program_binary 1
402#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741
403#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE
404#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF
405typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
406typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLint length);
407#ifdef GL_GLEXT_PROTOTYPES
408GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
409GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const void *binary, GLint length);
410#endif
411#endif /* GL_OES_get_program_binary */
412
413#ifndef GL_OES_gpu_shader5
414#define GL_OES_gpu_shader5 1
415#endif /* GL_OES_gpu_shader5 */
416
417#ifndef GL_OES_mapbuffer
418#define GL_OES_mapbuffer 1
419#define GL_WRITE_ONLY_OES 0x88B9
420#define GL_BUFFER_ACCESS_OES 0x88BB
421#define GL_BUFFER_MAPPED_OES 0x88BC
422#define GL_BUFFER_MAP_POINTER_OES 0x88BD
423typedef void *(GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access);
424typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target);
425typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void **params);
426#ifdef GL_GLEXT_PROTOTYPES
427GL_APICALL void *GL_APIENTRY glMapBufferOES (GLenum target, GLenum access);
428GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target);
429GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, void **params);
430#endif
431#endif /* GL_OES_mapbuffer */
432
433#ifndef GL_OES_packed_depth_stencil
434#define GL_OES_packed_depth_stencil 1
435#define GL_DEPTH_STENCIL_OES 0x84F9
436#define GL_UNSIGNED_INT_24_8_OES 0x84FA
437#define GL_DEPTH24_STENCIL8_OES 0x88F0
438#endif /* GL_OES_packed_depth_stencil */
439
440#ifndef GL_OES_primitive_bounding_box
441#define GL_OES_primitive_bounding_box 1
442#define GL_PRIMITIVE_BOUNDING_BOX_OES 0x92BE
443typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXOESPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
444#ifdef GL_GLEXT_PROTOTYPES
445GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxOES (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
446#endif
447#endif /* GL_OES_primitive_bounding_box */
448
449#ifndef GL_OES_required_internalformat
450#define GL_OES_required_internalformat 1
451#define GL_ALPHA8_OES 0x803C
452#define GL_DEPTH_COMPONENT16_OES 0x81A5
453#define GL_LUMINANCE4_ALPHA4_OES 0x8043
454#define GL_LUMINANCE8_ALPHA8_OES 0x8045
455#define GL_LUMINANCE8_OES 0x8040
456#define GL_RGBA4_OES 0x8056
457#define GL_RGB5_A1_OES 0x8057
458#define GL_RGB565_OES 0x8D62
459#define GL_RGB8_OES 0x8051
460#define GL_RGBA8_OES 0x8058
461#define GL_RGB10_EXT 0x8052
462#define GL_RGB10_A2_EXT 0x8059
463#endif /* GL_OES_required_internalformat */
464
465#ifndef GL_OES_rgb8_rgba8
466#define GL_OES_rgb8_rgba8 1
467#endif /* GL_OES_rgb8_rgba8 */
468
469#ifndef GL_OES_sample_shading
470#define GL_OES_sample_shading 1
471#define GL_SAMPLE_SHADING_OES 0x8C36
472#define GL_MIN_SAMPLE_SHADING_VALUE_OES 0x8C37
473typedef void (GL_APIENTRYP PFNGLMINSAMPLESHADINGOESPROC) (GLfloat value);
474#ifdef GL_GLEXT_PROTOTYPES
475GL_APICALL void GL_APIENTRY glMinSampleShadingOES (GLfloat value);
476#endif
477#endif /* GL_OES_sample_shading */
478
479#ifndef GL_OES_sample_variables
480#define GL_OES_sample_variables 1
481#endif /* GL_OES_sample_variables */
482
483#ifndef GL_OES_shader_image_atomic
484#define GL_OES_shader_image_atomic 1
485#endif /* GL_OES_shader_image_atomic */
486
487#ifndef GL_OES_shader_io_blocks
488#define GL_OES_shader_io_blocks 1
489#endif /* GL_OES_shader_io_blocks */
490
491#ifndef GL_OES_shader_multisample_interpolation
492#define GL_OES_shader_multisample_interpolation 1
493#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B
494#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C
495#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D
496#endif /* GL_OES_shader_multisample_interpolation */
497
498#ifndef GL_OES_standard_derivatives
499#define GL_OES_standard_derivatives 1
500#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B
501#endif /* GL_OES_standard_derivatives */
502
503#ifndef GL_OES_stencil1
504#define GL_OES_stencil1 1
505#define GL_STENCIL_INDEX1_OES 0x8D46
506#endif /* GL_OES_stencil1 */
507
508#ifndef GL_OES_stencil4
509#define GL_OES_stencil4 1
510#define GL_STENCIL_INDEX4_OES 0x8D47
511#endif /* GL_OES_stencil4 */
512
513#ifndef GL_OES_surfaceless_context
514#define GL_OES_surfaceless_context 1
515#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219
516#endif /* GL_OES_surfaceless_context */
517
518#ifndef GL_OES_tessellation_point_size
519#define GL_OES_tessellation_point_size 1
520#endif /* GL_OES_tessellation_point_size */
521
522#ifndef GL_OES_tessellation_shader
523#define GL_OES_tessellation_shader 1
524#define GL_PATCHES_OES 0x000E
525#define GL_PATCH_VERTICES_OES 0x8E72
526#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75
527#define GL_TESS_GEN_MODE_OES 0x8E76
528#define GL_TESS_GEN_SPACING_OES 0x8E77
529#define GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78
530#define GL_TESS_GEN_POINT_MODE_OES 0x8E79
531#define GL_ISOLINES_OES 0x8E7A
532#define GL_QUADS_OES 0x0007
533#define GL_FRACTIONAL_ODD_OES 0x8E7B
534#define GL_FRACTIONAL_EVEN_OES 0x8E7C
535#define GL_MAX_PATCH_VERTICES_OES 0x8E7D
536#define GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E
537#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F
538#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80
539#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81
540#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82
541#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83
542#define GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84
543#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85
544#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86
545#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89
546#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A
547#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C
548#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D
549#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E
550#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F
551#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD
552#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE
553#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3
554#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4
555#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB
556#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC
557#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8
558#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9
559#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221
560#define GL_IS_PER_PATCH_OES 0x92E7
561#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307
562#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308
563#define GL_TESS_CONTROL_SHADER_OES 0x8E88
564#define GL_TESS_EVALUATION_SHADER_OES 0x8E87
565#define GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008
566#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010
567typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIOESPROC) (GLenum pname, GLint value);
568#ifdef GL_GLEXT_PROTOTYPES
569GL_APICALL void GL_APIENTRY glPatchParameteriOES (GLenum pname, GLint value);
570#endif
571#endif /* GL_OES_tessellation_shader */
572
573#ifndef GL_OES_texture_3D
574#define GL_OES_texture_3D 1
575#define GL_TEXTURE_WRAP_R_OES 0x8072
576#define GL_TEXTURE_3D_OES 0x806F
577#define GL_TEXTURE_BINDING_3D_OES 0x806A
578#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073
579#define GL_SAMPLER_3D_OES 0x8B5F
580#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4
581typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
582typedef 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 void *pixels);
583typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
584typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
585typedef 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 void *data);
586typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
587#ifdef GL_GLEXT_PROTOTYPES
588GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
589GL_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 void *pixels);
590GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
591GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
592GL_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 void *data);
593GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
594#endif
595#endif /* GL_OES_texture_3D */
596
597#ifndef GL_OES_texture_border_clamp
598#define GL_OES_texture_border_clamp 1
599#define GL_TEXTURE_BORDER_COLOR_OES 0x1004
600#define GL_CLAMP_TO_BORDER_OES 0x812D
601typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, const GLint *params);
602typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, const GLuint *params);
603typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, GLint *params);
604typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, GLuint *params);
605typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, const GLint *param);
606typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, const GLuint *param);
607typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, GLint *params);
608typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, GLuint *params);
609#ifdef GL_GLEXT_PROTOTYPES
610GL_APICALL void GL_APIENTRY glTexParameterIivOES (GLenum target, GLenum pname, const GLint *params);
611GL_APICALL void GL_APIENTRY glTexParameterIuivOES (GLenum target, GLenum pname, const GLuint *params);
612GL_APICALL void GL_APIENTRY glGetTexParameterIivOES (GLenum target, GLenum pname, GLint *params);
613GL_APICALL void GL_APIENTRY glGetTexParameterIuivOES (GLenum target, GLenum pname, GLuint *params);
614GL_APICALL void GL_APIENTRY glSamplerParameterIivOES (GLuint sampler, GLenum pname, const GLint *param);
615GL_APICALL void GL_APIENTRY glSamplerParameterIuivOES (GLuint sampler, GLenum pname, const GLuint *param);
616GL_APICALL void GL_APIENTRY glGetSamplerParameterIivOES (GLuint sampler, GLenum pname, GLint *params);
617GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivOES (GLuint sampler, GLenum pname, GLuint *params);
618#endif
619#endif /* GL_OES_texture_border_clamp */
620
621#ifndef GL_OES_texture_buffer
622#define GL_OES_texture_buffer 1
623#define GL_TEXTURE_BUFFER_OES 0x8C2A
624#define GL_TEXTURE_BUFFER_BINDING_OES 0x8C2A
625#define GL_MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B
626#define GL_TEXTURE_BINDING_BUFFER_OES 0x8C2C
627#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D
628#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F
629#define GL_SAMPLER_BUFFER_OES 0x8DC2
630#define GL_INT_SAMPLER_BUFFER_OES 0x8DD0
631#define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8
632#define GL_IMAGE_BUFFER_OES 0x9051
633#define GL_INT_IMAGE_BUFFER_OES 0x905C
634#define GL_UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067
635#define GL_TEXTURE_BUFFER_OFFSET_OES 0x919D
636#define GL_TEXTURE_BUFFER_SIZE_OES 0x919E
637typedef void (GL_APIENTRYP PFNGLTEXBUFFEROESPROC) (GLenum target, GLenum internalformat, GLuint buffer);
638typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEOESPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
639#ifdef GL_GLEXT_PROTOTYPES
640GL_APICALL void GL_APIENTRY glTexBufferOES (GLenum target, GLenum internalformat, GLuint buffer);
641GL_APICALL void GL_APIENTRY glTexBufferRangeOES (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
642#endif
643#endif /* GL_OES_texture_buffer */
644
645#ifndef GL_OES_texture_compression_astc
646#define GL_OES_texture_compression_astc 1
647#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
648#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
649#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
650#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
651#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
652#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
653#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
654#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
655#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
656#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
657#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
658#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
659#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
660#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
661#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
662#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
663#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
664#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
665#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
666#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
667#endif /* GL_OES_texture_compression_astc */
668
669#ifndef GL_OES_texture_cube_map_array
670#define GL_OES_texture_cube_map_array 1
671#define GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009
672#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A
673#define GL_SAMPLER_CUBE_MAP_ARRAY_OES 0x900C
674#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D
675#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E
676#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F
677#define GL_IMAGE_CUBE_MAP_ARRAY_OES 0x9054
678#define GL_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x905F
679#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A
680#endif /* GL_OES_texture_cube_map_array */
681
682#ifndef GL_OES_texture_float
683#define GL_OES_texture_float 1
684#endif /* GL_OES_texture_float */
685
686#ifndef GL_OES_texture_float_linear
687#define GL_OES_texture_float_linear 1
688#endif /* GL_OES_texture_float_linear */
689
690#ifndef GL_OES_texture_half_float
691#define GL_OES_texture_half_float 1
692#define GL_HALF_FLOAT_OES 0x8D61
693#endif /* GL_OES_texture_half_float */
694
695#ifndef GL_OES_texture_half_float_linear
696#define GL_OES_texture_half_float_linear 1
697#endif /* GL_OES_texture_half_float_linear */
698
699#ifndef GL_OES_texture_npot
700#define GL_OES_texture_npot 1
701#endif /* GL_OES_texture_npot */
702
703#ifndef GL_OES_texture_stencil8
704#define GL_OES_texture_stencil8 1
705#define GL_STENCIL_INDEX_OES 0x1901
706#define GL_STENCIL_INDEX8_OES 0x8D48
707#endif /* GL_OES_texture_stencil8 */
708
709#ifndef GL_OES_texture_storage_multisample_2d_array
710#define GL_OES_texture_storage_multisample_2d_array 1
711#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102
712#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105
713#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B
714#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C
715#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D
716typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
717#ifdef GL_GLEXT_PROTOTYPES
718GL_APICALL void GL_APIENTRY glTexStorage3DMultisampleOES (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
719#endif
720#endif /* GL_OES_texture_storage_multisample_2d_array */
721
722#ifndef GL_OES_texture_view
723#define GL_OES_texture_view 1
724#define GL_TEXTURE_VIEW_MIN_LEVEL_OES 0x82DB
725#define GL_TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC
726#define GL_TEXTURE_VIEW_MIN_LAYER_OES 0x82DD
727#define GL_TEXTURE_VIEW_NUM_LAYERS_OES 0x82DE
728#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
729typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWOESPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
730#ifdef GL_GLEXT_PROTOTYPES
731GL_APICALL void GL_APIENTRY glTextureViewOES (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
732#endif
733#endif /* GL_OES_texture_view */
734
735#ifndef GL_OES_vertex_array_object
736#define GL_OES_vertex_array_object 1
737#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5
738typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array);
739typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays);
740typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays);
741typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array);
742#ifdef GL_GLEXT_PROTOTYPES
743GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array);
744GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays);
745GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays);
746GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array);
747#endif
748#endif /* GL_OES_vertex_array_object */
749
750#ifndef GL_OES_vertex_half_float
751#define GL_OES_vertex_half_float 1
752#endif /* GL_OES_vertex_half_float */
753
754#ifndef GL_OES_vertex_type_10_10_10_2
755#define GL_OES_vertex_type_10_10_10_2 1
756#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6
757#define GL_INT_10_10_10_2_OES 0x8DF7
758#endif /* GL_OES_vertex_type_10_10_10_2 */
759
760#ifndef GL_OES_viewport_array
761#define GL_OES_viewport_array 1
762#define GL_MAX_VIEWPORTS_OES 0x825B
763#define GL_VIEWPORT_SUBPIXEL_BITS_OES 0x825C
764#define GL_VIEWPORT_BOUNDS_RANGE_OES 0x825D
765#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES 0x825F
766typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVOESPROC) (GLuint first, GLsizei count, const GLfloat *v);
767typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFOESPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
768typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVOESPROC) (GLuint index, const GLfloat *v);
769typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVOESPROC) (GLuint first, GLsizei count, const GLint *v);
770typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDOESPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
771typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVOESPROC) (GLuint index, const GLint *v);
772typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVOESPROC) (GLuint first, GLsizei count, const GLfloat *v);
773typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFOESPROC) (GLuint index, GLfloat n, GLfloat f);
774typedef void (GL_APIENTRYP PFNGLGETFLOATI_VOESPROC) (GLenum target, GLuint index, GLfloat *data);
775#ifdef GL_GLEXT_PROTOTYPES
776GL_APICALL void GL_APIENTRY glViewportArrayvOES (GLuint first, GLsizei count, const GLfloat *v);
777GL_APICALL void GL_APIENTRY glViewportIndexedfOES (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
778GL_APICALL void GL_APIENTRY glViewportIndexedfvOES (GLuint index, const GLfloat *v);
779GL_APICALL void GL_APIENTRY glScissorArrayvOES (GLuint first, GLsizei count, const GLint *v);
780GL_APICALL void GL_APIENTRY glScissorIndexedOES (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
781GL_APICALL void GL_APIENTRY glScissorIndexedvOES (GLuint index, const GLint *v);
782GL_APICALL void GL_APIENTRY glDepthRangeArrayfvOES (GLuint first, GLsizei count, const GLfloat *v);
783GL_APICALL void GL_APIENTRY glDepthRangeIndexedfOES (GLuint index, GLfloat n, GLfloat f);
784GL_APICALL void GL_APIENTRY glGetFloati_vOES (GLenum target, GLuint index, GLfloat *data);
785#endif
786#endif /* GL_OES_viewport_array */
787
788#ifndef GL_AMD_compressed_3DC_texture
789#define GL_AMD_compressed_3DC_texture 1
790#define GL_3DC_X_AMD 0x87F9
791#define GL_3DC_XY_AMD 0x87FA
792#endif /* GL_AMD_compressed_3DC_texture */
793
794#ifndef GL_AMD_compressed_ATC_texture
795#define GL_AMD_compressed_ATC_texture 1
796#define GL_ATC_RGB_AMD 0x8C92
797#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93
798#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE
799#endif /* GL_AMD_compressed_ATC_texture */
800
801#ifndef GL_AMD_framebuffer_multisample_advanced
802#define GL_AMD_framebuffer_multisample_advanced 1
803#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2
804#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3
805#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4
806#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5
807#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6
808#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7
809typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
810typedef void (GL_APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
811#ifdef GL_GLEXT_PROTOTYPES
812GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAdvancedAMD (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
813GL_APICALL void GL_APIENTRY glNamedRenderbufferStorageMultisampleAdvancedAMD (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
814#endif
815#endif /* GL_AMD_framebuffer_multisample_advanced */
816
817#ifndef GL_AMD_performance_monitor
818#define GL_AMD_performance_monitor 1
819#define GL_COUNTER_TYPE_AMD 0x8BC0
820#define GL_COUNTER_RANGE_AMD 0x8BC1
821#define GL_UNSIGNED_INT64_AMD 0x8BC2
822#define GL_PERCENTAGE_AMD 0x8BC3
823#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4
824#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5
825#define GL_PERFMON_RESULT_AMD 0x8BC6
826typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
827typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
828typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
829typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
830typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data);
831typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
832typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
833typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
834typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
835typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
836typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
837#ifdef GL_GLEXT_PROTOTYPES
838GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
839GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
840GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
841GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
842GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data);
843GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
844GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
845GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
846GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
847GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor);
848GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
849#endif
850#endif /* GL_AMD_performance_monitor */
851
852#ifndef GL_AMD_program_binary_Z400
853#define GL_AMD_program_binary_Z400 1
854#define GL_Z400_BINARY_AMD 0x8740
855#endif /* GL_AMD_program_binary_Z400 */
856
857#ifndef GL_ANDROID_extension_pack_es31a
858#define GL_ANDROID_extension_pack_es31a 1
859#endif /* GL_ANDROID_extension_pack_es31a */
860
861#ifndef GL_ANGLE_depth_texture
862#define GL_ANGLE_depth_texture 1
863#endif /* GL_ANGLE_depth_texture */
864
865#ifndef GL_ANGLE_framebuffer_blit
866#define GL_ANGLE_framebuffer_blit 1
867#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8
868#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9
869#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6
870#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA
871typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
872#ifdef GL_GLEXT_PROTOTYPES
873GL_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);
874#endif
875#endif /* GL_ANGLE_framebuffer_blit */
876
877#ifndef GL_ANGLE_framebuffer_multisample
878#define GL_ANGLE_framebuffer_multisample 1
879#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB
880#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56
881#define GL_MAX_SAMPLES_ANGLE 0x8D57
882typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
883#ifdef GL_GLEXT_PROTOTYPES
884GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
885#endif
886#endif /* GL_ANGLE_framebuffer_multisample */
887
888#ifndef GL_ANGLE_instanced_arrays
889#define GL_ANGLE_instanced_arrays 1
890#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE
891typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
892typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
893typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor);
894#ifdef GL_GLEXT_PROTOTYPES
895GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
896GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
897GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor);
898#endif
899#endif /* GL_ANGLE_instanced_arrays */
900
901#ifndef GL_ANGLE_pack_reverse_row_order
902#define GL_ANGLE_pack_reverse_row_order 1
903#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4
904#endif /* GL_ANGLE_pack_reverse_row_order */
905
906#ifndef GL_ANGLE_program_binary
907#define GL_ANGLE_program_binary 1
908#define GL_PROGRAM_BINARY_ANGLE 0x93A6
909#endif /* GL_ANGLE_program_binary */
910
911#ifndef GL_ANGLE_texture_compression_dxt3
912#define GL_ANGLE_texture_compression_dxt3 1
913#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
914#endif /* GL_ANGLE_texture_compression_dxt3 */
915
916#ifndef GL_ANGLE_texture_compression_dxt5
917#define GL_ANGLE_texture_compression_dxt5 1
918#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
919#endif /* GL_ANGLE_texture_compression_dxt5 */
920
921#ifndef GL_ANGLE_texture_usage
922#define GL_ANGLE_texture_usage 1
923#define GL_TEXTURE_USAGE_ANGLE 0x93A2
924#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3
925#endif /* GL_ANGLE_texture_usage */
926
927#ifndef GL_ANGLE_translated_shader_source
928#define GL_ANGLE_translated_shader_source 1
929#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0
930typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
931#ifdef GL_GLEXT_PROTOTYPES
932GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
933#endif
934#endif /* GL_ANGLE_translated_shader_source */
935
936#ifndef GL_APPLE_clip_distance
937#define GL_APPLE_clip_distance 1
938#define GL_MAX_CLIP_DISTANCES_APPLE 0x0D32
939#define GL_CLIP_DISTANCE0_APPLE 0x3000
940#define GL_CLIP_DISTANCE1_APPLE 0x3001
941#define GL_CLIP_DISTANCE2_APPLE 0x3002
942#define GL_CLIP_DISTANCE3_APPLE 0x3003
943#define GL_CLIP_DISTANCE4_APPLE 0x3004
944#define GL_CLIP_DISTANCE5_APPLE 0x3005
945#define GL_CLIP_DISTANCE6_APPLE 0x3006
946#define GL_CLIP_DISTANCE7_APPLE 0x3007
947#endif /* GL_APPLE_clip_distance */
948
949#ifndef GL_APPLE_color_buffer_packed_float
950#define GL_APPLE_color_buffer_packed_float 1
951#endif /* GL_APPLE_color_buffer_packed_float */
952
953#ifndef GL_APPLE_copy_texture_levels
954#define GL_APPLE_copy_texture_levels 1
955typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
956#ifdef GL_GLEXT_PROTOTYPES
957GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
958#endif
959#endif /* GL_APPLE_copy_texture_levels */
960
961#ifndef GL_APPLE_framebuffer_multisample
962#define GL_APPLE_framebuffer_multisample 1
963#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB
964#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56
965#define GL_MAX_SAMPLES_APPLE 0x8D57
966#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8
967#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9
968#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6
969#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA
970typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
971typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void);
972#ifdef GL_GLEXT_PROTOTYPES
973GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
974GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void);
975#endif
976#endif /* GL_APPLE_framebuffer_multisample */
977
978#ifndef GL_APPLE_rgb_422
979#define GL_APPLE_rgb_422 1
980#define GL_RGB_422_APPLE 0x8A1F
981#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
982#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
983#define GL_RGB_RAW_422_APPLE 0x8A51
984#endif /* GL_APPLE_rgb_422 */
985
986#ifndef GL_APPLE_sync
987#define GL_APPLE_sync 1
988#define GL_SYNC_OBJECT_APPLE 0x8A53
989#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111
990#define GL_OBJECT_TYPE_APPLE 0x9112
991#define GL_SYNC_CONDITION_APPLE 0x9113
992#define GL_SYNC_STATUS_APPLE 0x9114
993#define GL_SYNC_FLAGS_APPLE 0x9115
994#define GL_SYNC_FENCE_APPLE 0x9116
995#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117
996#define GL_UNSIGNALED_APPLE 0x9118
997#define GL_SIGNALED_APPLE 0x9119
998#define GL_ALREADY_SIGNALED_APPLE 0x911A
999#define GL_TIMEOUT_EXPIRED_APPLE 0x911B
1000#define GL_CONDITION_SATISFIED_APPLE 0x911C
1001#define GL_WAIT_FAILED_APPLE 0x911D
1002#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001
1003#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull
1004typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags);
1005typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync);
1006typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync);
1007typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
1008typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
1009typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params);
1010typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values);
1011#ifdef GL_GLEXT_PROTOTYPES
1012GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags);
1013GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync);
1014GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync);
1015GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout);
1016GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout);
1017GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params);
1018GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values);
1019#endif
1020#endif /* GL_APPLE_sync */
1021
1022#ifndef GL_APPLE_texture_format_BGRA8888
1023#define GL_APPLE_texture_format_BGRA8888 1
1024#define GL_BGRA_EXT 0x80E1
1025#define GL_BGRA8_EXT 0x93A1
1026#endif /* GL_APPLE_texture_format_BGRA8888 */
1027
1028#ifndef GL_APPLE_texture_max_level
1029#define GL_APPLE_texture_max_level 1
1030#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D
1031#endif /* GL_APPLE_texture_max_level */
1032
1033#ifndef GL_APPLE_texture_packed_float
1034#define GL_APPLE_texture_packed_float 1
1035#define GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B
1036#define GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E
1037#define GL_R11F_G11F_B10F_APPLE 0x8C3A
1038#define GL_RGB9_E5_APPLE 0x8C3D
1039#endif /* GL_APPLE_texture_packed_float */
1040
1041#ifndef GL_ARM_mali_program_binary
1042#define GL_ARM_mali_program_binary 1
1043#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61
1044#endif /* GL_ARM_mali_program_binary */
1045
1046#ifndef GL_ARM_mali_shader_binary
1047#define GL_ARM_mali_shader_binary 1
1048#define GL_MALI_SHADER_BINARY_ARM 0x8F60
1049#endif /* GL_ARM_mali_shader_binary */
1050
1051#ifndef GL_ARM_rgba8
1052#define GL_ARM_rgba8 1
1053#endif /* GL_ARM_rgba8 */
1054
1055#ifndef GL_ARM_shader_framebuffer_fetch
1056#define GL_ARM_shader_framebuffer_fetch 1
1057#define GL_FETCH_PER_SAMPLE_ARM 0x8F65
1058#define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66
1059#endif /* GL_ARM_shader_framebuffer_fetch */
1060
1061#ifndef GL_ARM_shader_framebuffer_fetch_depth_stencil
1062#define GL_ARM_shader_framebuffer_fetch_depth_stencil 1
1063#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */
1064
1065#ifndef GL_ARM_texture_unnormalized_coordinates
1066#define GL_ARM_texture_unnormalized_coordinates 1
1067#define GL_TEXTURE_UNNORMALIZED_COORDINATES_ARM 0x8F6A
1068#endif /* GL_ARM_texture_unnormalized_coordinates */
1069
1070#ifndef GL_DMP_program_binary
1071#define GL_DMP_program_binary 1
1072#define GL_SMAPHS30_PROGRAM_BINARY_DMP 0x9251
1073#define GL_SMAPHS_PROGRAM_BINARY_DMP 0x9252
1074#define GL_DMP_PROGRAM_BINARY_DMP 0x9253
1075#endif /* GL_DMP_program_binary */
1076
1077#ifndef GL_DMP_shader_binary
1078#define GL_DMP_shader_binary 1
1079#define GL_SHADER_BINARY_DMP 0x9250
1080#endif /* GL_DMP_shader_binary */
1081
1082#ifndef GL_EXT_EGL_image_array
1083#define GL_EXT_EGL_image_array 1
1084#endif /* GL_EXT_EGL_image_array */
1085
1086#ifndef GL_EXT_EGL_image_storage
1087#define GL_EXT_EGL_image_storage 1
1088typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list);
1089typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list);
1090#ifdef GL_GLEXT_PROTOTYPES
1091GL_APICALL void GL_APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list);
1092GL_APICALL void GL_APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list);
1093#endif
1094#endif /* GL_EXT_EGL_image_storage */
1095
1096#ifndef GL_EXT_EGL_image_storage_compression
1097#define GL_EXT_EGL_image_storage_compression 1
1098#define GL_SURFACE_COMPRESSION_EXT 0x96C0
1099#define GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1
1100#define GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2
1101#endif /* GL_EXT_EGL_image_storage_compression */
1102
1103#ifndef GL_EXT_YUV_target
1104#define GL_EXT_YUV_target 1
1105#define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7
1106#endif /* GL_EXT_YUV_target */
1107
1108#ifndef GL_EXT_base_instance
1109#define GL_EXT_base_instance 1
1110typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
1111typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
1112typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
1113#ifdef GL_GLEXT_PROTOTYPES
1114GL_APICALL void GL_APIENTRY glDrawArraysInstancedBaseInstanceEXT (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
1115GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
1116GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
1117#endif
1118#endif /* GL_EXT_base_instance */
1119
1120#ifndef GL_EXT_blend_func_extended
1121#define GL_EXT_blend_func_extended 1
1122#define GL_SRC1_COLOR_EXT 0x88F9
1123#define GL_SRC1_ALPHA_EXT 0x8589
1124#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA
1125#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB
1126#define GL_SRC_ALPHA_SATURATE_EXT 0x0308
1127#define GL_LOCATION_INDEX_EXT 0x930F
1128#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC
1129typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
1130typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);
1131typedef GLint (GL_APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC) (GLuint program, GLenum programInterface, const GLchar *name);
1132typedef GLint (GL_APIENTRYP PFNGLGETFRAGDATAINDEXEXTPROC) (GLuint program, const GLchar *name);
1133#ifdef GL_GLEXT_PROTOTYPES
1134GL_APICALL void GL_APIENTRY glBindFragDataLocationIndexedEXT (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
1135GL_APICALL void GL_APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name);
1136GL_APICALL GLint GL_APIENTRY glGetProgramResourceLocationIndexEXT (GLuint program, GLenum programInterface, const GLchar *name);
1137GL_APICALL GLint GL_APIENTRY glGetFragDataIndexEXT (GLuint program, const GLchar *name);
1138#endif
1139#endif /* GL_EXT_blend_func_extended */
1140
1141#ifndef GL_EXT_blend_minmax
1142#define GL_EXT_blend_minmax 1
1143#define GL_MIN_EXT 0x8007
1144#define GL_MAX_EXT 0x8008
1145#endif /* GL_EXT_blend_minmax */
1146
1147#ifndef GL_EXT_buffer_storage
1148#define GL_EXT_buffer_storage 1
1149#define GL_MAP_READ_BIT 0x0001
1150#define GL_MAP_WRITE_BIT 0x0002
1151#define GL_MAP_PERSISTENT_BIT_EXT 0x0040
1152#define GL_MAP_COHERENT_BIT_EXT 0x0080
1153#define GL_DYNAMIC_STORAGE_BIT_EXT 0x0100
1154#define GL_CLIENT_STORAGE_BIT_EXT 0x0200
1155#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000
1156#define GL_BUFFER_IMMUTABLE_STORAGE_EXT 0x821F
1157#define GL_BUFFER_STORAGE_FLAGS_EXT 0x8220
1158typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
1159#ifdef GL_GLEXT_PROTOTYPES
1160GL_APICALL void GL_APIENTRY glBufferStorageEXT (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
1161#endif
1162#endif /* GL_EXT_buffer_storage */
1163
1164#ifndef GL_EXT_clear_texture
1165#define GL_EXT_clear_texture 1
1166typedef void (GL_APIENTRYP PFNGLCLEARTEXIMAGEEXTPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
1167typedef void (GL_APIENTRYP PFNGLCLEARTEXSUBIMAGEEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
1168#ifdef GL_GLEXT_PROTOTYPES
1169GL_APICALL void GL_APIENTRY glClearTexImageEXT (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
1170GL_APICALL void GL_APIENTRY glClearTexSubImageEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
1171#endif
1172#endif /* GL_EXT_clear_texture */
1173
1174#ifndef GL_EXT_clip_control
1175#define GL_EXT_clip_control 1
1176#define GL_LOWER_LEFT_EXT 0x8CA1
1177#define GL_UPPER_LEFT_EXT 0x8CA2
1178#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E
1179#define GL_ZERO_TO_ONE_EXT 0x935F
1180#define GL_CLIP_ORIGIN_EXT 0x935C
1181#define GL_CLIP_DEPTH_MODE_EXT 0x935D
1182typedef void (GL_APIENTRYP PFNGLCLIPCONTROLEXTPROC) (GLenum origin, GLenum depth);
1183#ifdef GL_GLEXT_PROTOTYPES
1184GL_APICALL void GL_APIENTRY glClipControlEXT (GLenum origin, GLenum depth);
1185#endif
1186#endif /* GL_EXT_clip_control */
1187
1188#ifndef GL_EXT_clip_cull_distance
1189#define GL_EXT_clip_cull_distance 1
1190#define GL_MAX_CLIP_DISTANCES_EXT 0x0D32
1191#define GL_MAX_CULL_DISTANCES_EXT 0x82F9
1192#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA
1193#define GL_CLIP_DISTANCE0_EXT 0x3000
1194#define GL_CLIP_DISTANCE1_EXT 0x3001
1195#define GL_CLIP_DISTANCE2_EXT 0x3002
1196#define GL_CLIP_DISTANCE3_EXT 0x3003
1197#define GL_CLIP_DISTANCE4_EXT 0x3004
1198#define GL_CLIP_DISTANCE5_EXT 0x3005
1199#define GL_CLIP_DISTANCE6_EXT 0x3006
1200#define GL_CLIP_DISTANCE7_EXT 0x3007
1201#endif /* GL_EXT_clip_cull_distance */
1202
1203#ifndef GL_EXT_color_buffer_float
1204#define GL_EXT_color_buffer_float 1
1205#endif /* GL_EXT_color_buffer_float */
1206
1207#ifndef GL_EXT_color_buffer_half_float
1208#define GL_EXT_color_buffer_half_float 1
1209#define GL_RGBA16F_EXT 0x881A
1210#define GL_RGB16F_EXT 0x881B
1211#define GL_RG16F_EXT 0x822F
1212#define GL_R16F_EXT 0x822D
1213#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211
1214#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17
1215#endif /* GL_EXT_color_buffer_half_float */
1216
1217#ifndef GL_EXT_conservative_depth
1218#define GL_EXT_conservative_depth 1
1219#endif /* GL_EXT_conservative_depth */
1220
1221#ifndef GL_EXT_copy_image
1222#define GL_EXT_copy_image 1
1223typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAEXTPROC) (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);
1224#ifdef GL_GLEXT_PROTOTYPES
1225GL_APICALL void GL_APIENTRY glCopyImageSubDataEXT (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);
1226#endif
1227#endif /* GL_EXT_copy_image */
1228
1229#ifndef GL_EXT_debug_label
1230#define GL_EXT_debug_label 1
1231#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F
1232#define GL_PROGRAM_OBJECT_EXT 0x8B40
1233#define GL_SHADER_OBJECT_EXT 0x8B48
1234#define GL_BUFFER_OBJECT_EXT 0x9151
1235#define GL_QUERY_OBJECT_EXT 0x9153
1236#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154
1237#define GL_TRANSFORM_FEEDBACK 0x8E22
1238typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);
1239typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
1240#ifdef GL_GLEXT_PROTOTYPES
1241GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label);
1242GL_APICALL void GL_APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
1243#endif
1244#endif /* GL_EXT_debug_label */
1245
1246#ifndef GL_EXT_debug_marker
1247#define GL_EXT_debug_marker 1
1248typedef void (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);
1249typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);
1250typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void);
1251#ifdef GL_GLEXT_PROTOTYPES
1252GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker);
1253GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker);
1254GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void);
1255#endif
1256#endif /* GL_EXT_debug_marker */
1257
1258#ifndef GL_EXT_depth_clamp
1259#define GL_EXT_depth_clamp 1
1260#define GL_DEPTH_CLAMP_EXT 0x864F
1261#endif /* GL_EXT_depth_clamp */
1262
1263#ifndef GL_EXT_discard_framebuffer
1264#define GL_EXT_discard_framebuffer 1
1265#define GL_COLOR_EXT 0x1800
1266#define GL_DEPTH_EXT 0x1801
1267#define GL_STENCIL_EXT 0x1802
1268typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
1269#ifdef GL_GLEXT_PROTOTYPES
1270GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments);
1271#endif
1272#endif /* GL_EXT_discard_framebuffer */
1273
1274#ifndef GL_EXT_disjoint_timer_query
1275#define GL_EXT_disjoint_timer_query 1
1276#define GL_QUERY_COUNTER_BITS_EXT 0x8864
1277#define GL_CURRENT_QUERY_EXT 0x8865
1278#define GL_QUERY_RESULT_EXT 0x8866
1279#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867
1280#define GL_TIME_ELAPSED_EXT 0x88BF
1281#define GL_TIMESTAMP_EXT 0x8E28
1282#define GL_GPU_DISJOINT_EXT 0x8FBB
1283typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids);
1284typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids);
1285typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id);
1286typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id);
1287typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target);
1288typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target);
1289typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
1290typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params);
1291typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params);
1292typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params);
1293typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params);
1294typedef void (GL_APIENTRYP PFNGLGETINTEGER64VEXTPROC) (GLenum pname, GLint64 *data);
1295#ifdef GL_GLEXT_PROTOTYPES
1296GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids);
1297GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids);
1298GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id);
1299GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id);
1300GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target);
1301GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target);
1302GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params);
1303GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params);
1304GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params);
1305GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params);
1306GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params);
1307GL_APICALL void GL_APIENTRY glGetInteger64vEXT (GLenum pname, GLint64 *data);
1308#endif
1309#endif /* GL_EXT_disjoint_timer_query */
1310
1311#ifndef GL_EXT_draw_buffers
1312#define GL_EXT_draw_buffers 1
1313#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
1314#define GL_MAX_DRAW_BUFFERS_EXT 0x8824
1315#define GL_DRAW_BUFFER0_EXT 0x8825
1316#define GL_DRAW_BUFFER1_EXT 0x8826
1317#define GL_DRAW_BUFFER2_EXT 0x8827
1318#define GL_DRAW_BUFFER3_EXT 0x8828
1319#define GL_DRAW_BUFFER4_EXT 0x8829
1320#define GL_DRAW_BUFFER5_EXT 0x882A
1321#define GL_DRAW_BUFFER6_EXT 0x882B
1322#define GL_DRAW_BUFFER7_EXT 0x882C
1323#define GL_DRAW_BUFFER8_EXT 0x882D
1324#define GL_DRAW_BUFFER9_EXT 0x882E
1325#define GL_DRAW_BUFFER10_EXT 0x882F
1326#define GL_DRAW_BUFFER11_EXT 0x8830
1327#define GL_DRAW_BUFFER12_EXT 0x8831
1328#define GL_DRAW_BUFFER13_EXT 0x8832
1329#define GL_DRAW_BUFFER14_EXT 0x8833
1330#define GL_DRAW_BUFFER15_EXT 0x8834
1331#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0
1332#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1
1333#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2
1334#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3
1335#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4
1336#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5
1337#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6
1338#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7
1339#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8
1340#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9
1341#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA
1342#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB
1343#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC
1344#define GL_COLOR_ATTACHMENT13_EXT 0x8CED
1345#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE
1346#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF
1347typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs);
1348#ifdef GL_GLEXT_PROTOTYPES
1349GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs);
1350#endif
1351#endif /* GL_EXT_draw_buffers */
1352
1353#ifndef GL_EXT_draw_buffers_indexed
1354#define GL_EXT_draw_buffers_indexed 1
1355typedef void (GL_APIENTRYP PFNGLENABLEIEXTPROC) (GLenum target, GLuint index);
1356typedef void (GL_APIENTRYP PFNGLDISABLEIEXTPROC) (GLenum target, GLuint index);
1357typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIEXTPROC) (GLuint buf, GLenum mode);
1358typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIEXTPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
1359typedef void (GL_APIENTRYP PFNGLBLENDFUNCIEXTPROC) (GLuint buf, GLenum src, GLenum dst);
1360typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIEXTPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
1361typedef void (GL_APIENTRYP PFNGLCOLORMASKIEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
1362typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIEXTPROC) (GLenum target, GLuint index);
1363#ifdef GL_GLEXT_PROTOTYPES
1364GL_APICALL void GL_APIENTRY glEnableiEXT (GLenum target, GLuint index);
1365GL_APICALL void GL_APIENTRY glDisableiEXT (GLenum target, GLuint index);
1366GL_APICALL void GL_APIENTRY glBlendEquationiEXT (GLuint buf, GLenum mode);
1367GL_APICALL void GL_APIENTRY glBlendEquationSeparateiEXT (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
1368GL_APICALL void GL_APIENTRY glBlendFunciEXT (GLuint buf, GLenum src, GLenum dst);
1369GL_APICALL void GL_APIENTRY glBlendFuncSeparateiEXT (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
1370GL_APICALL void GL_APIENTRY glColorMaskiEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
1371GL_APICALL GLboolean GL_APIENTRY glIsEnablediEXT (GLenum target, GLuint index);
1372#endif
1373#endif /* GL_EXT_draw_buffers_indexed */
1374
1375#ifndef GL_EXT_draw_elements_base_vertex
1376#define GL_EXT_draw_elements_base_vertex 1
1377typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
1378typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
1379typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
1380#ifdef GL_GLEXT_PROTOTYPES
1381GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
1382GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
1383GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
1384#endif
1385#endif /* GL_EXT_draw_elements_base_vertex */
1386
1387#ifndef GL_EXT_draw_instanced
1388#define GL_EXT_draw_instanced 1
1389typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
1390typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
1391#ifdef GL_GLEXT_PROTOTYPES
1392GL_APICALL void GL_APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
1393GL_APICALL void GL_APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
1394#endif
1395#endif /* GL_EXT_draw_instanced */
1396
1397#ifndef GL_EXT_draw_transform_feedback
1398#define GL_EXT_draw_transform_feedback 1
1399typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKEXTPROC) (GLenum mode, GLuint id);
1400typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC) (GLenum mode, GLuint id, GLsizei instancecount);
1401#ifdef GL_GLEXT_PROTOTYPES
1402GL_APICALL void GL_APIENTRY glDrawTransformFeedbackEXT (GLenum mode, GLuint id);
1403GL_APICALL void GL_APIENTRY glDrawTransformFeedbackInstancedEXT (GLenum mode, GLuint id, GLsizei instancecount);
1404#endif
1405#endif /* GL_EXT_draw_transform_feedback */
1406
1407#ifndef GL_EXT_external_buffer
1408#define GL_EXT_external_buffer 1
1409typedef void *GLeglClientBufferEXT;
1410typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTERNALEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
1411typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
1412#ifdef GL_GLEXT_PROTOTYPES
1413GL_APICALL void GL_APIENTRY glBufferStorageExternalEXT (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
1414GL_APICALL void GL_APIENTRY glNamedBufferStorageExternalEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
1415#endif
1416#endif /* GL_EXT_external_buffer */
1417
1418#ifndef GL_EXT_float_blend
1419#define GL_EXT_float_blend 1
1420#endif /* GL_EXT_float_blend */
1421
1422#ifndef GL_EXT_fragment_shading_rate
1423#define GL_EXT_fragment_shading_rate 1
1424#define GL_SHADING_RATE_1X1_PIXELS_EXT 0x96A6
1425#define GL_SHADING_RATE_1X2_PIXELS_EXT 0x96A7
1426#define GL_SHADING_RATE_2X1_PIXELS_EXT 0x96A8
1427#define GL_SHADING_RATE_2X2_PIXELS_EXT 0x96A9
1428#define GL_SHADING_RATE_1X4_PIXELS_EXT 0x96AA
1429#define GL_SHADING_RATE_4X1_PIXELS_EXT 0x96AB
1430#define GL_SHADING_RATE_4X2_PIXELS_EXT 0x96AC
1431#define GL_SHADING_RATE_2X4_PIXELS_EXT 0x96AD
1432#define GL_SHADING_RATE_4X4_PIXELS_EXT 0x96AE
1433#define GL_SHADING_RATE_EXT 0x96D0
1434#define GL_SHADING_RATE_ATTACHMENT_EXT 0x96D1
1435#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT 0x96D2
1436#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_EXT 0x96D3
1437#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_EXT 0x96D4
1438#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_EXT 0x96D5
1439#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_EXT 0x96D6
1440#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D7
1441#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D8
1442#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96D9
1443#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96DA
1444#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_ASPECT_RATIO_EXT 0x96DB
1445#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_LAYERS_EXT 0x96DC
1446#define GL_FRAGMENT_SHADING_RATE_WITH_SHADER_DEPTH_STENCIL_WRITES_SUPPORTED_EXT 0x96DD
1447#define GL_FRAGMENT_SHADING_RATE_WITH_SAMPLE_MASK_SUPPORTED_EXT 0x96DE
1448#define GL_FRAGMENT_SHADING_RATE_ATTACHMENT_WITH_DEFAULT_FRAMEBUFFER_SUPPORTED_EXT 0x96DF
1449#define GL_FRAGMENT_SHADING_RATE_NON_TRIVIAL_COMBINERS_SUPPORTED_EXT 0x8F6F
1450typedef void (GL_APIENTRYP PFNGLGETFRAGMENTSHADINGRATESEXTPROC) (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates);
1451typedef void (GL_APIENTRYP PFNGLSHADINGRATEEXTPROC) (GLenum rate);
1452typedef void (GL_APIENTRYP PFNGLSHADINGRATECOMBINEROPSEXTPROC) (GLenum combinerOp0, GLenum combinerOp1);
1453typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERSHADINGRATEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight);
1454#ifdef GL_GLEXT_PROTOTYPES
1455GL_APICALL void GL_APIENTRY glGetFragmentShadingRatesEXT (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates);
1456GL_APICALL void GL_APIENTRY glShadingRateEXT (GLenum rate);
1457GL_APICALL void GL_APIENTRY glShadingRateCombinerOpsEXT (GLenum combinerOp0, GLenum combinerOp1);
1458GL_APICALL void GL_APIENTRY glFramebufferShadingRateEXT (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight);
1459#endif
1460#endif /* GL_EXT_fragment_shading_rate */
1461
1462#ifndef GL_EXT_geometry_point_size
1463#define GL_EXT_geometry_point_size 1
1464#endif /* GL_EXT_geometry_point_size */
1465
1466#ifndef GL_EXT_geometry_shader
1467#define GL_EXT_geometry_shader 1
1468#define GL_GEOMETRY_SHADER_EXT 0x8DD9
1469#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004
1470#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916
1471#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917
1472#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918
1473#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F
1474#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E
1475#define GL_LINES_ADJACENCY_EXT 0x000A
1476#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B
1477#define GL_TRIANGLES_ADJACENCY_EXT 0x000C
1478#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D
1479#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
1480#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C
1481#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32
1482#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123
1483#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124
1484#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
1485#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
1486#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A
1487#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
1488#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF
1489#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5
1490#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD
1491#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7
1492#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
1493#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
1494#define GL_UNDEFINED_VERTEX_EXT 0x8260
1495#define GL_PRIMITIVES_GENERATED_EXT 0x8C87
1496#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312
1497#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317
1498#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
1499#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
1500#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309
1501typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
1502#ifdef GL_GLEXT_PROTOTYPES
1503GL_APICALL void GL_APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level);
1504#endif
1505#endif /* GL_EXT_geometry_shader */
1506
1507#ifndef GL_EXT_gpu_shader5
1508#define GL_EXT_gpu_shader5 1
1509#endif /* GL_EXT_gpu_shader5 */
1510
1511#ifndef GL_EXT_instanced_arrays
1512#define GL_EXT_instanced_arrays 1
1513#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE
1514typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor);
1515#ifdef GL_GLEXT_PROTOTYPES
1516GL_APICALL void GL_APIENTRY glVertexAttribDivisorEXT (GLuint index, GLuint divisor);
1517#endif
1518#endif /* GL_EXT_instanced_arrays */
1519
1520#ifndef GL_EXT_map_buffer_range
1521#define GL_EXT_map_buffer_range 1
1522#define GL_MAP_READ_BIT_EXT 0x0001
1523#define GL_MAP_WRITE_BIT_EXT 0x0002
1524#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004
1525#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008
1526#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010
1527#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020
1528typedef void *(GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
1529typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
1530#ifdef GL_GLEXT_PROTOTYPES
1531GL_APICALL void *GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
1532GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length);
1533#endif
1534#endif /* GL_EXT_map_buffer_range */
1535
1536#ifndef GL_EXT_memory_object
1537#define GL_EXT_memory_object 1
1538#define GL_TEXTURE_TILING_EXT 0x9580
1539#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581
1540#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B
1541#define GL_NUM_TILING_TYPES_EXT 0x9582
1542#define GL_TILING_TYPES_EXT 0x9583
1543#define GL_OPTIMAL_TILING_EXT 0x9584
1544#define GL_LINEAR_TILING_EXT 0x9585
1545#define GL_NUM_DEVICE_UUIDS_EXT 0x9596
1546#define GL_DEVICE_UUID_EXT 0x9597
1547#define GL_DRIVER_UUID_EXT 0x9598
1548#define GL_UUID_SIZE_EXT 16
1549typedef void (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEVEXTPROC) (GLenum pname, GLubyte *data);
1550typedef void (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEI_VEXTPROC) (GLenum target, GLuint index, GLubyte *data);
1551typedef void (GL_APIENTRYP PFNGLDELETEMEMORYOBJECTSEXTPROC) (GLsizei n, const GLuint *memoryObjects);
1552typedef GLboolean (GL_APIENTRYP PFNGLISMEMORYOBJECTEXTPROC) (GLuint memoryObject);
1553typedef void (GL_APIENTRYP PFNGLCREATEMEMORYOBJECTSEXTPROC) (GLsizei n, GLuint *memoryObjects);
1554typedef void (GL_APIENTRYP PFNGLMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, const GLint *params);
1555typedef void (GL_APIENTRYP PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, GLint *params);
1556typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
1557typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
1558typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
1559typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
1560typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEMEMEXTPROC) (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset);
1561typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
1562typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
1563typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
1564typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
1565typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC) (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset);
1566#ifdef GL_GLEXT_PROTOTYPES
1567GL_APICALL void GL_APIENTRY glGetUnsignedBytevEXT (GLenum pname, GLubyte *data);
1568GL_APICALL void GL_APIENTRY glGetUnsignedBytei_vEXT (GLenum target, GLuint index, GLubyte *data);
1569GL_APICALL void GL_APIENTRY glDeleteMemoryObjectsEXT (GLsizei n, const GLuint *memoryObjects);
1570GL_APICALL GLboolean GL_APIENTRY glIsMemoryObjectEXT (GLuint memoryObject);
1571GL_APICALL void GL_APIENTRY glCreateMemoryObjectsEXT (GLsizei n, GLuint *memoryObjects);
1572GL_APICALL void GL_APIENTRY glMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, const GLint *params);
1573GL_APICALL void GL_APIENTRY glGetMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, GLint *params);
1574GL_APICALL void GL_APIENTRY glTexStorageMem2DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
1575GL_APICALL void GL_APIENTRY glTexStorageMem2DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
1576GL_APICALL void GL_APIENTRY glTexStorageMem3DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
1577GL_APICALL void GL_APIENTRY glTexStorageMem3DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
1578GL_APICALL void GL_APIENTRY glBufferStorageMemEXT (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset);
1579GL_APICALL void GL_APIENTRY glTextureStorageMem2DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
1580GL_APICALL void GL_APIENTRY glTextureStorageMem2DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
1581GL_APICALL void GL_APIENTRY glTextureStorageMem3DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
1582GL_APICALL void GL_APIENTRY glTextureStorageMem3DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
1583GL_APICALL void GL_APIENTRY glNamedBufferStorageMemEXT (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset);
1584#endif
1585#endif /* GL_EXT_memory_object */
1586
1587#ifndef GL_EXT_memory_object_fd
1588#define GL_EXT_memory_object_fd 1
1589#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586
1590typedef void (GL_APIENTRYP PFNGLIMPORTMEMORYFDEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, GLint fd);
1591#ifdef GL_GLEXT_PROTOTYPES
1592GL_APICALL void GL_APIENTRY glImportMemoryFdEXT (GLuint memory, GLuint64 size, GLenum handleType, GLint fd);
1593#endif
1594#endif /* GL_EXT_memory_object_fd */
1595
1596#ifndef GL_EXT_memory_object_win32
1597#define GL_EXT_memory_object_win32 1
1598#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587
1599#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588
1600#define GL_DEVICE_LUID_EXT 0x9599
1601#define GL_DEVICE_NODE_MASK_EXT 0x959A
1602#define GL_LUID_SIZE_EXT 8
1603#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589
1604#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A
1605#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B
1606#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C
1607typedef void (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, void *handle);
1608typedef void (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32NAMEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, const void *name);
1609#ifdef GL_GLEXT_PROTOTYPES
1610GL_APICALL void GL_APIENTRY glImportMemoryWin32HandleEXT (GLuint memory, GLuint64 size, GLenum handleType, void *handle);
1611GL_APICALL void GL_APIENTRY glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GLenum handleType, const void *name);
1612#endif
1613#endif /* GL_EXT_memory_object_win32 */
1614
1615#ifndef GL_EXT_multi_draw_arrays
1616#define GL_EXT_multi_draw_arrays 1
1617typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
1618typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);
1619#ifdef GL_GLEXT_PROTOTYPES
1620GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
1621GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);
1622#endif
1623#endif /* GL_EXT_multi_draw_arrays */
1624
1625#ifndef GL_EXT_multi_draw_indirect
1626#define GL_EXT_multi_draw_indirect 1
1627typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
1628typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
1629#ifdef GL_GLEXT_PROTOTYPES
1630GL_APICALL void GL_APIENTRY glMultiDrawArraysIndirectEXT (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
1631GL_APICALL void GL_APIENTRY glMultiDrawElementsIndirectEXT (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
1632#endif
1633#endif /* GL_EXT_multi_draw_indirect */
1634
1635#ifndef GL_EXT_multisampled_compatibility
1636#define GL_EXT_multisampled_compatibility 1
1637#define GL_MULTISAMPLE_EXT 0x809D
1638#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
1639#endif /* GL_EXT_multisampled_compatibility */
1640
1641#ifndef GL_EXT_multisampled_render_to_texture
1642#define GL_EXT_multisampled_render_to_texture 1
1643#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C
1644#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
1645#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
1646#define GL_MAX_SAMPLES_EXT 0x8D57
1647typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1648typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
1649#ifdef GL_GLEXT_PROTOTYPES
1650GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
1651GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
1652#endif
1653#endif /* GL_EXT_multisampled_render_to_texture */
1654
1655#ifndef GL_EXT_multisampled_render_to_texture2
1656#define GL_EXT_multisampled_render_to_texture2 1
1657#endif /* GL_EXT_multisampled_render_to_texture2 */
1658
1659#ifndef GL_EXT_multiview_draw_buffers
1660#define GL_EXT_multiview_draw_buffers 1
1661#define GL_COLOR_ATTACHMENT_EXT 0x90F0
1662#define GL_MULTIVIEW_EXT 0x90F1
1663#define GL_DRAW_BUFFER_EXT 0x0C01
1664#define GL_READ_BUFFER_EXT 0x0C02
1665#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2
1666typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index);
1667typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices);
1668typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data);
1669#ifdef GL_GLEXT_PROTOTYPES
1670GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index);
1671GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices);
1672GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data);
1673#endif
1674#endif /* GL_EXT_multiview_draw_buffers */
1675
1676#ifndef GL_EXT_multiview_tessellation_geometry_shader
1677#define GL_EXT_multiview_tessellation_geometry_shader 1
1678#endif /* GL_EXT_multiview_tessellation_geometry_shader */
1679
1680#ifndef GL_EXT_multiview_texture_multisample
1681#define GL_EXT_multiview_texture_multisample 1
1682#endif /* GL_EXT_multiview_texture_multisample */
1683
1684#ifndef GL_EXT_multiview_timer_query
1685#define GL_EXT_multiview_timer_query 1
1686#endif /* GL_EXT_multiview_timer_query */
1687
1688#ifndef GL_EXT_occlusion_query_boolean
1689#define GL_EXT_occlusion_query_boolean 1
1690#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F
1691#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A
1692#endif /* GL_EXT_occlusion_query_boolean */
1693
1694#ifndef GL_EXT_polygon_offset_clamp
1695#define GL_EXT_polygon_offset_clamp 1
1696#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B
1697typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp);
1698#ifdef GL_GLEXT_PROTOTYPES
1699GL_APICALL void GL_APIENTRY glPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp);
1700#endif
1701#endif /* GL_EXT_polygon_offset_clamp */
1702
1703#ifndef GL_EXT_post_depth_coverage
1704#define GL_EXT_post_depth_coverage 1
1705#endif /* GL_EXT_post_depth_coverage */
1706
1707#ifndef GL_EXT_primitive_bounding_box
1708#define GL_EXT_primitive_bounding_box 1
1709#define GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE
1710typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXEXTPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
1711#ifdef GL_GLEXT_PROTOTYPES
1712GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxEXT (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
1713#endif
1714#endif /* GL_EXT_primitive_bounding_box */
1715
1716#ifndef GL_EXT_protected_textures
1717#define GL_EXT_protected_textures 1
1718#define GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010
1719#define GL_TEXTURE_PROTECTED_EXT 0x8BFA
1720#endif /* GL_EXT_protected_textures */
1721
1722#ifndef GL_EXT_pvrtc_sRGB
1723#define GL_EXT_pvrtc_sRGB 1
1724#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54
1725#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55
1726#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56
1727#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57
1728#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0
1729#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1
1730#endif /* GL_EXT_pvrtc_sRGB */
1731
1732#ifndef GL_EXT_raster_multisample
1733#define GL_EXT_raster_multisample 1
1734#define GL_RASTER_MULTISAMPLE_EXT 0x9327
1735#define GL_RASTER_SAMPLES_EXT 0x9328
1736#define GL_MAX_RASTER_SAMPLES_EXT 0x9329
1737#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A
1738#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B
1739#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C
1740typedef void (GL_APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations);
1741#ifdef GL_GLEXT_PROTOTYPES
1742GL_APICALL void GL_APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations);
1743#endif
1744#endif /* GL_EXT_raster_multisample */
1745
1746#ifndef GL_EXT_read_format_bgra
1747#define GL_EXT_read_format_bgra 1
1748#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365
1749#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366
1750#endif /* GL_EXT_read_format_bgra */
1751
1752#ifndef GL_EXT_render_snorm
1753#define GL_EXT_render_snorm 1
1754#define GL_R8_SNORM 0x8F94
1755#define GL_RG8_SNORM 0x8F95
1756#define GL_RGBA8_SNORM 0x8F97
1757#define GL_R16_SNORM_EXT 0x8F98
1758#define GL_RG16_SNORM_EXT 0x8F99
1759#define GL_RGBA16_SNORM_EXT 0x8F9B
1760#endif /* GL_EXT_render_snorm */
1761
1762#ifndef GL_EXT_robustness
1763#define GL_EXT_robustness 1
1764#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253
1765#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254
1766#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255
1767#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3
1768#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256
1769#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252
1770#define GL_NO_RESET_NOTIFICATION_EXT 0x8261
1771typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void);
1772typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
1773typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
1774typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
1775#ifdef GL_GLEXT_PROTOTYPES
1776GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void);
1777GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
1778GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
1779GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params);
1780#endif
1781#endif /* GL_EXT_robustness */
1782
1783#ifndef GL_EXT_sRGB
1784#define GL_EXT_sRGB 1
1785#define GL_SRGB_EXT 0x8C40
1786#define GL_SRGB_ALPHA_EXT 0x8C42
1787#define GL_SRGB8_ALPHA8_EXT 0x8C43
1788#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210
1789#endif /* GL_EXT_sRGB */
1790
1791#ifndef GL_EXT_sRGB_write_control
1792#define GL_EXT_sRGB_write_control 1
1793#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
1794#endif /* GL_EXT_sRGB_write_control */
1795
1796#ifndef GL_EXT_semaphore
1797#define GL_EXT_semaphore 1
1798#define GL_LAYOUT_GENERAL_EXT 0x958D
1799#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E
1800#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F
1801#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590
1802#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591
1803#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592
1804#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593
1805#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530
1806#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531
1807typedef void (GL_APIENTRYP PFNGLGENSEMAPHORESEXTPROC) (GLsizei n, GLuint *semaphores);
1808typedef void (GL_APIENTRYP PFNGLDELETESEMAPHORESEXTPROC) (GLsizei n, const GLuint *semaphores);
1809typedef GLboolean (GL_APIENTRYP PFNGLISSEMAPHOREEXTPROC) (GLuint semaphore);
1810typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, const GLuint64 *params);
1811typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, GLuint64 *params);
1812typedef void (GL_APIENTRYP PFNGLWAITSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts);
1813typedef void (GL_APIENTRYP PFNGLSIGNALSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts);
1814#ifdef GL_GLEXT_PROTOTYPES
1815GL_APICALL void GL_APIENTRY glGenSemaphoresEXT (GLsizei n, GLuint *semaphores);
1816GL_APICALL void GL_APIENTRY glDeleteSemaphoresEXT (GLsizei n, const GLuint *semaphores);
1817GL_APICALL GLboolean GL_APIENTRY glIsSemaphoreEXT (GLuint semaphore);
1818GL_APICALL void GL_APIENTRY glSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, const GLuint64 *params);
1819GL_APICALL void GL_APIENTRY glGetSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, GLuint64 *params);
1820GL_APICALL void GL_APIENTRY glWaitSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts);
1821GL_APICALL void GL_APIENTRY glSignalSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts);
1822#endif
1823#endif /* GL_EXT_semaphore */
1824
1825#ifndef GL_EXT_semaphore_fd
1826#define GL_EXT_semaphore_fd 1
1827typedef void (GL_APIENTRYP PFNGLIMPORTSEMAPHOREFDEXTPROC) (GLuint semaphore, GLenum handleType, GLint fd);
1828#ifdef GL_GLEXT_PROTOTYPES
1829GL_APICALL void GL_APIENTRY glImportSemaphoreFdEXT (GLuint semaphore, GLenum handleType, GLint fd);
1830#endif
1831#endif /* GL_EXT_semaphore_fd */
1832
1833#ifndef GL_EXT_semaphore_win32
1834#define GL_EXT_semaphore_win32 1
1835#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594
1836#define GL_D3D12_FENCE_VALUE_EXT 0x9595
1837typedef void (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC) (GLuint semaphore, GLenum handleType, void *handle);
1838typedef void (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC) (GLuint semaphore, GLenum handleType, const void *name);
1839#ifdef GL_GLEXT_PROTOTYPES
1840GL_APICALL void GL_APIENTRY glImportSemaphoreWin32HandleEXT (GLuint semaphore, GLenum handleType, void *handle);
1841GL_APICALL void GL_APIENTRY glImportSemaphoreWin32NameEXT (GLuint semaphore, GLenum handleType, const void *name);
1842#endif
1843#endif /* GL_EXT_semaphore_win32 */
1844
1845#ifndef GL_EXT_separate_depth_stencil
1846#define GL_EXT_separate_depth_stencil 1
1847#endif /* GL_EXT_separate_depth_stencil */
1848
1849#ifndef GL_EXT_separate_shader_objects
1850#define GL_EXT_separate_shader_objects 1
1851#define GL_ACTIVE_PROGRAM_EXT 0x8259
1852#define GL_VERTEX_SHADER_BIT_EXT 0x00000001
1853#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002
1854#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF
1855#define GL_PROGRAM_SEPARABLE_EXT 0x8258
1856#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A
1857typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program);
1858typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline);
1859typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings);
1860typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines);
1861typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines);
1862typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
1863typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params);
1864typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline);
1865typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
1866typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0);
1867typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1868typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0);
1869typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
1870typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
1871typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1872typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1);
1873typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
1874typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
1875typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1876typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
1877typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
1878typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
1879typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1880typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
1881typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
1882typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1883typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1884typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1885typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
1886typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline);
1887typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0);
1888typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
1889typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
1890typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
1891typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
1892typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
1893typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
1894typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
1895typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1896typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1897typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1898typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1899typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1900typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1901#ifdef GL_GLEXT_PROTOTYPES
1902GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program);
1903GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline);
1904GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings);
1905GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines);
1906GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines);
1907GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
1908GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params);
1909GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline);
1910GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value);
1911GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0);
1912GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1913GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0);
1914GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
1915GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1);
1916GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1917GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1);
1918GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
1919GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
1920GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1921GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
1922GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
1923GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
1924GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
1925GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
1926GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
1927GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1928GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1929GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1930GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program);
1931GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline);
1932GL_APICALL void GL_APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0);
1933GL_APICALL void GL_APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1);
1934GL_APICALL void GL_APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
1935GL_APICALL void GL_APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
1936GL_APICALL void GL_APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
1937GL_APICALL void GL_APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
1938GL_APICALL void GL_APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
1939GL_APICALL void GL_APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
1940GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1941GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1942GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1943GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1944GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1945GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
1946#endif
1947#endif /* GL_EXT_separate_shader_objects */
1948
1949#ifndef GL_EXT_shader_framebuffer_fetch
1950#define GL_EXT_shader_framebuffer_fetch 1
1951#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
1952#endif /* GL_EXT_shader_framebuffer_fetch */
1953
1954#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent
1955#define GL_EXT_shader_framebuffer_fetch_non_coherent 1
1956typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void);
1957#ifdef GL_GLEXT_PROTOTYPES
1958GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierEXT (void);
1959#endif
1960#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */
1961
1962#ifndef GL_EXT_shader_group_vote
1963#define GL_EXT_shader_group_vote 1
1964#endif /* GL_EXT_shader_group_vote */
1965
1966#ifndef GL_EXT_shader_implicit_conversions
1967#define GL_EXT_shader_implicit_conversions 1
1968#endif /* GL_EXT_shader_implicit_conversions */
1969
1970#ifndef GL_EXT_shader_integer_mix
1971#define GL_EXT_shader_integer_mix 1
1972#endif /* GL_EXT_shader_integer_mix */
1973
1974#ifndef GL_EXT_shader_io_blocks
1975#define GL_EXT_shader_io_blocks 1
1976#endif /* GL_EXT_shader_io_blocks */
1977
1978#ifndef GL_EXT_shader_non_constant_global_initializers
1979#define GL_EXT_shader_non_constant_global_initializers 1
1980#endif /* GL_EXT_shader_non_constant_global_initializers */
1981
1982#ifndef GL_EXT_shader_pixel_local_storage
1983#define GL_EXT_shader_pixel_local_storage 1
1984#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63
1985#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67
1986#define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64
1987#endif /* GL_EXT_shader_pixel_local_storage */
1988
1989#ifndef GL_EXT_shader_pixel_local_storage2
1990#define GL_EXT_shader_pixel_local_storage2 1
1991#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650
1992#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651
1993#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652
1994typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target, GLsizei size);
1995typedef GLsizei (GL_APIENTRYP PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target);
1996typedef void (GL_APIENTRYP PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC) (GLsizei offset, GLsizei n, const GLuint *values);
1997#ifdef GL_GLEXT_PROTOTYPES
1998GL_APICALL void GL_APIENTRY glFramebufferPixelLocalStorageSizeEXT (GLuint target, GLsizei size);
1999GL_APICALL GLsizei GL_APIENTRY glGetFramebufferPixelLocalStorageSizeEXT (GLuint target);
2000GL_APICALL void GL_APIENTRY glClearPixelLocalStorageuiEXT (GLsizei offset, GLsizei n, const GLuint *values);
2001#endif
2002#endif /* GL_EXT_shader_pixel_local_storage2 */
2003
2004#ifndef GL_EXT_shader_samples_identical
2005#define GL_EXT_shader_samples_identical 1
2006#endif /* GL_EXT_shader_samples_identical */
2007
2008#ifndef GL_EXT_shader_texture_lod
2009#define GL_EXT_shader_texture_lod 1
2010#endif /* GL_EXT_shader_texture_lod */
2011
2012#ifndef GL_EXT_shadow_samplers
2013#define GL_EXT_shadow_samplers 1
2014#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C
2015#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D
2016#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E
2017#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62
2018#endif /* GL_EXT_shadow_samplers */
2019
2020#ifndef GL_EXT_sparse_texture
2021#define GL_EXT_sparse_texture 1
2022#define GL_TEXTURE_SPARSE_EXT 0x91A6
2023#define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT 0x91A7
2024#define GL_NUM_SPARSE_LEVELS_EXT 0x91AA
2025#define GL_NUM_VIRTUAL_PAGE_SIZES_EXT 0x91A8
2026#define GL_VIRTUAL_PAGE_SIZE_X_EXT 0x9195
2027#define GL_VIRTUAL_PAGE_SIZE_Y_EXT 0x9196
2028#define GL_VIRTUAL_PAGE_SIZE_Z_EXT 0x9197
2029#define GL_TEXTURE_2D_ARRAY 0x8C1A
2030#define GL_TEXTURE_3D 0x806F
2031#define GL_MAX_SPARSE_TEXTURE_SIZE_EXT 0x9198
2032#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199
2033#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A
2034#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9
2035typedef void (GL_APIENTRYP PFNGLTEXPAGECOMMITMENTEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
2036#ifdef GL_GLEXT_PROTOTYPES
2037GL_APICALL void GL_APIENTRY glTexPageCommitmentEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
2038#endif
2039#endif /* GL_EXT_sparse_texture */
2040
2041#ifndef GL_EXT_sparse_texture2
2042#define GL_EXT_sparse_texture2 1
2043#endif /* GL_EXT_sparse_texture2 */
2044
2045#ifndef GL_EXT_tessellation_point_size
2046#define GL_EXT_tessellation_point_size 1
2047#endif /* GL_EXT_tessellation_point_size */
2048
2049#ifndef GL_EXT_tessellation_shader
2050#define GL_EXT_tessellation_shader 1
2051#define GL_PATCHES_EXT 0x000E
2052#define GL_PATCH_VERTICES_EXT 0x8E72
2053#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75
2054#define GL_TESS_GEN_MODE_EXT 0x8E76
2055#define GL_TESS_GEN_SPACING_EXT 0x8E77
2056#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78
2057#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79
2058#define GL_ISOLINES_EXT 0x8E7A
2059#define GL_QUADS_EXT 0x0007
2060#define GL_FRACTIONAL_ODD_EXT 0x8E7B
2061#define GL_FRACTIONAL_EVEN_EXT 0x8E7C
2062#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D
2063#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E
2064#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F
2065#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80
2066#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81
2067#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82
2068#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83
2069#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84
2070#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85
2071#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86
2072#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89
2073#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A
2074#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C
2075#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D
2076#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E
2077#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F
2078#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD
2079#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE
2080#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3
2081#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4
2082#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB
2083#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC
2084#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8
2085#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9
2086#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
2087#define GL_IS_PER_PATCH_EXT 0x92E7
2088#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307
2089#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308
2090#define GL_TESS_CONTROL_SHADER_EXT 0x8E88
2091#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87
2092#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008
2093#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010
2094typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIEXTPROC) (GLenum pname, GLint value);
2095#ifdef GL_GLEXT_PROTOTYPES
2096GL_APICALL void GL_APIENTRY glPatchParameteriEXT (GLenum pname, GLint value);
2097#endif
2098#endif /* GL_EXT_tessellation_shader */
2099
2100#ifndef GL_EXT_texture_border_clamp
2101#define GL_EXT_texture_border_clamp 1
2102#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004
2103#define GL_CLAMP_TO_BORDER_EXT 0x812D
2104typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
2105typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);
2106typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
2107typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params);
2108typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, const GLint *param);
2109typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, const GLuint *param);
2110typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, GLint *params);
2111typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, GLuint *params);
2112#ifdef GL_GLEXT_PROTOTYPES
2113GL_APICALL void GL_APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params);
2114GL_APICALL void GL_APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params);
2115GL_APICALL void GL_APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params);
2116GL_APICALL void GL_APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params);
2117GL_APICALL void GL_APIENTRY glSamplerParameterIivEXT (GLuint sampler, GLenum pname, const GLint *param);
2118GL_APICALL void GL_APIENTRY glSamplerParameterIuivEXT (GLuint sampler, GLenum pname, const GLuint *param);
2119GL_APICALL void GL_APIENTRY glGetSamplerParameterIivEXT (GLuint sampler, GLenum pname, GLint *params);
2120GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivEXT (GLuint sampler, GLenum pname, GLuint *params);
2121#endif
2122#endif /* GL_EXT_texture_border_clamp */
2123
2124#ifndef GL_EXT_texture_buffer
2125#define GL_EXT_texture_buffer 1
2126#define GL_TEXTURE_BUFFER_EXT 0x8C2A
2127#define GL_TEXTURE_BUFFER_BINDING_EXT 0x8C2A
2128#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
2129#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
2130#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
2131#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT 0x919F
2132#define GL_SAMPLER_BUFFER_EXT 0x8DC2
2133#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
2134#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
2135#define GL_IMAGE_BUFFER_EXT 0x9051
2136#define GL_INT_IMAGE_BUFFER_EXT 0x905C
2137#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067
2138#define GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D
2139#define GL_TEXTURE_BUFFER_SIZE_EXT 0x919E
2140typedef void (GL_APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);
2141typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEEXTPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
2142#ifdef GL_GLEXT_PROTOTYPES
2143GL_APICALL void GL_APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer);
2144GL_APICALL void GL_APIENTRY glTexBufferRangeEXT (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
2145#endif
2146#endif /* GL_EXT_texture_buffer */
2147
2148#ifndef GL_EXT_texture_compression_astc_decode_mode
2149#define GL_EXT_texture_compression_astc_decode_mode 1
2150#define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69
2151#endif /* GL_EXT_texture_compression_astc_decode_mode */
2152
2153#ifndef GL_EXT_texture_compression_bptc
2154#define GL_EXT_texture_compression_bptc 1
2155#define GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C
2156#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D
2157#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E
2158#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F
2159#endif /* GL_EXT_texture_compression_bptc */
2160
2161#ifndef GL_EXT_texture_compression_dxt1
2162#define GL_EXT_texture_compression_dxt1 1
2163#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
2164#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
2165#endif /* GL_EXT_texture_compression_dxt1 */
2166
2167#ifndef GL_EXT_texture_compression_rgtc
2168#define GL_EXT_texture_compression_rgtc 1
2169#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
2170#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
2171#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
2172#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
2173#endif /* GL_EXT_texture_compression_rgtc */
2174
2175#ifndef GL_EXT_texture_compression_s3tc
2176#define GL_EXT_texture_compression_s3tc 1
2177#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
2178#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
2179#endif /* GL_EXT_texture_compression_s3tc */
2180
2181#ifndef GL_EXT_texture_compression_s3tc_srgb
2182#define GL_EXT_texture_compression_s3tc_srgb 1
2183#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
2184#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
2185#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
2186#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
2187#endif /* GL_EXT_texture_compression_s3tc_srgb */
2188
2189#ifndef GL_EXT_texture_cube_map_array
2190#define GL_EXT_texture_cube_map_array 1
2191#define GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009
2192#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A
2193#define GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C
2194#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D
2195#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E
2196#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F
2197#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054
2198#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F
2199#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
2200#endif /* GL_EXT_texture_cube_map_array */
2201
2202#ifndef GL_EXT_texture_filter_anisotropic
2203#define GL_EXT_texture_filter_anisotropic 1
2204#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
2205#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
2206#endif /* GL_EXT_texture_filter_anisotropic */
2207
2208#ifndef GL_EXT_texture_filter_minmax
2209#define GL_EXT_texture_filter_minmax 1
2210#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366
2211#define GL_WEIGHTED_AVERAGE_EXT 0x9367
2212#endif /* GL_EXT_texture_filter_minmax */
2213
2214#ifndef GL_EXT_texture_format_BGRA8888
2215#define GL_EXT_texture_format_BGRA8888 1
2216#endif /* GL_EXT_texture_format_BGRA8888 */
2217
2218#ifndef GL_EXT_texture_format_sRGB_override
2219#define GL_EXT_texture_format_sRGB_override 1
2220#define GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT 0x8FBF
2221#endif /* GL_EXT_texture_format_sRGB_override */
2222
2223#ifndef GL_EXT_texture_mirror_clamp_to_edge
2224#define GL_EXT_texture_mirror_clamp_to_edge 1
2225#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
2226#endif /* GL_EXT_texture_mirror_clamp_to_edge */
2227
2228#ifndef GL_EXT_texture_norm16
2229#define GL_EXT_texture_norm16 1
2230#define GL_R16_EXT 0x822A
2231#define GL_RG16_EXT 0x822C
2232#define GL_RGBA16_EXT 0x805B
2233#define GL_RGB16_EXT 0x8054
2234#define GL_RGB16_SNORM_EXT 0x8F9A
2235#endif /* GL_EXT_texture_norm16 */
2236
2237#ifndef GL_EXT_texture_query_lod
2238#define GL_EXT_texture_query_lod 1
2239#endif /* GL_EXT_texture_query_lod */
2240
2241#ifndef GL_EXT_texture_rg
2242#define GL_EXT_texture_rg 1
2243#define GL_RED_EXT 0x1903
2244#define GL_RG_EXT 0x8227
2245#define GL_R8_EXT 0x8229
2246#define GL_RG8_EXT 0x822B
2247#endif /* GL_EXT_texture_rg */
2248
2249#ifndef GL_EXT_texture_sRGB_R8
2250#define GL_EXT_texture_sRGB_R8 1
2251#define GL_SR8_EXT 0x8FBD
2252#endif /* GL_EXT_texture_sRGB_R8 */
2253
2254#ifndef GL_EXT_texture_sRGB_RG8
2255#define GL_EXT_texture_sRGB_RG8 1
2256#define GL_SRG8_EXT 0x8FBE
2257#endif /* GL_EXT_texture_sRGB_RG8 */
2258
2259#ifndef GL_EXT_texture_sRGB_decode
2260#define GL_EXT_texture_sRGB_decode 1
2261#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48
2262#define GL_DECODE_EXT 0x8A49
2263#define GL_SKIP_DECODE_EXT 0x8A4A
2264#endif /* GL_EXT_texture_sRGB_decode */
2265
2266#ifndef GL_EXT_texture_shadow_lod
2267#define GL_EXT_texture_shadow_lod 1
2268#endif /* GL_EXT_texture_shadow_lod */
2269
2270#ifndef GL_EXT_texture_storage
2271#define GL_EXT_texture_storage 1
2272#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F
2273#define GL_ALPHA8_EXT 0x803C
2274#define GL_LUMINANCE8_EXT 0x8040
2275#define GL_LUMINANCE8_ALPHA8_EXT 0x8045
2276#define GL_RGBA32F_EXT 0x8814
2277#define GL_RGB32F_EXT 0x8815
2278#define GL_ALPHA32F_EXT 0x8816
2279#define GL_LUMINANCE32F_EXT 0x8818
2280#define GL_LUMINANCE_ALPHA32F_EXT 0x8819
2281#define GL_ALPHA16F_EXT 0x881C
2282#define GL_LUMINANCE16F_EXT 0x881E
2283#define GL_LUMINANCE_ALPHA16F_EXT 0x881F
2284#define GL_R32F_EXT 0x822E
2285#define GL_RG32F_EXT 0x8230
2286typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
2287typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
2288typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
2289typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
2290typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
2291typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
2292#ifdef GL_GLEXT_PROTOTYPES
2293GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
2294GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
2295GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
2296GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
2297GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
2298GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
2299#endif
2300#endif /* GL_EXT_texture_storage */
2301
2302#ifndef GL_EXT_texture_storage_compression
2303#define GL_EXT_texture_storage_compression 1
2304#define GL_NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT 0x8F6E
2305#define GL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x96C4
2306#define GL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x96C5
2307#define GL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x96C6
2308#define GL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x96C7
2309#define GL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x96C8
2310#define GL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x96C9
2311#define GL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x96CA
2312#define GL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x96CB
2313#define GL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x96CC
2314#define GL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x96CD
2315#define GL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x96CE
2316#define GL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x96CF
2317typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list);
2318typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list);
2319#ifdef GL_GLEXT_PROTOTYPES
2320GL_APICALL void GL_APIENTRY glTexStorageAttribs2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list);
2321GL_APICALL void GL_APIENTRY glTexStorageAttribs3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list);
2322#endif
2323#endif /* GL_EXT_texture_storage_compression */
2324
2325#ifndef GL_EXT_texture_type_2_10_10_10_REV
2326#define GL_EXT_texture_type_2_10_10_10_REV 1
2327#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368
2328#endif /* GL_EXT_texture_type_2_10_10_10_REV */
2329
2330#ifndef GL_EXT_texture_view
2331#define GL_EXT_texture_view 1
2332#define GL_TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB
2333#define GL_TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC
2334#define GL_TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD
2335#define GL_TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE
2336typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWEXTPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
2337#ifdef GL_GLEXT_PROTOTYPES
2338GL_APICALL void GL_APIENTRY glTextureViewEXT (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
2339#endif
2340#endif /* GL_EXT_texture_view */
2341
2342#ifndef GL_EXT_unpack_subimage
2343#define GL_EXT_unpack_subimage 1
2344#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2
2345#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3
2346#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4
2347#endif /* GL_EXT_unpack_subimage */
2348
2349#ifndef GL_EXT_win32_keyed_mutex
2350#define GL_EXT_win32_keyed_mutex 1
2351typedef GLboolean (GL_APIENTRYP PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key, GLuint timeout);
2352typedef GLboolean (GL_APIENTRYP PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key);
2353#ifdef GL_GLEXT_PROTOTYPES
2354GL_APICALL GLboolean GL_APIENTRY glAcquireKeyedMutexWin32EXT (GLuint memory, GLuint64 key, GLuint timeout);
2355GL_APICALL GLboolean GL_APIENTRY glReleaseKeyedMutexWin32EXT (GLuint memory, GLuint64 key);
2356#endif
2357#endif /* GL_EXT_win32_keyed_mutex */
2358
2359#ifndef GL_EXT_window_rectangles
2360#define GL_EXT_window_rectangles 1
2361#define GL_INCLUSIVE_EXT 0x8F10
2362#define GL_EXCLUSIVE_EXT 0x8F11
2363#define GL_WINDOW_RECTANGLE_EXT 0x8F12
2364#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13
2365#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14
2366#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15
2367typedef void (GL_APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box);
2368#ifdef GL_GLEXT_PROTOTYPES
2369GL_APICALL void GL_APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box);
2370#endif
2371#endif /* GL_EXT_window_rectangles */
2372
2373#ifndef GL_FJ_shader_binary_GCCSO
2374#define GL_FJ_shader_binary_GCCSO 1
2375#define GL_GCCSO_SHADER_BINARY_FJ 0x9260
2376#endif /* GL_FJ_shader_binary_GCCSO */
2377
2378#ifndef GL_IMG_bindless_texture
2379#define GL_IMG_bindless_texture 1
2380typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLEIMGPROC) (GLuint texture);
2381typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEIMGPROC) (GLuint texture, GLuint sampler);
2382typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64IMGPROC) (GLint location, GLuint64 value);
2383typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VIMGPROC) (GLint location, GLsizei count, const GLuint64 *value);
2384typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC) (GLuint program, GLint location, GLuint64 value);
2385typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
2386#ifdef GL_GLEXT_PROTOTYPES
2387GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleIMG (GLuint texture);
2388GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleIMG (GLuint texture, GLuint sampler);
2389GL_APICALL void GL_APIENTRY glUniformHandleui64IMG (GLint location, GLuint64 value);
2390GL_APICALL void GL_APIENTRY glUniformHandleui64vIMG (GLint location, GLsizei count, const GLuint64 *value);
2391GL_APICALL void GL_APIENTRY glProgramUniformHandleui64IMG (GLuint program, GLint location, GLuint64 value);
2392GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vIMG (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
2393#endif
2394#endif /* GL_IMG_bindless_texture */
2395
2396#ifndef GL_IMG_framebuffer_downsample
2397#define GL_IMG_framebuffer_downsample 1
2398#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C
2399#define GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D
2400#define GL_DOWNSAMPLE_SCALES_IMG 0x913E
2401#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F
2402typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale);
2403typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale);
2404#ifdef GL_GLEXT_PROTOTYPES
2405GL_APICALL void GL_APIENTRY glFramebufferTexture2DDownsampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale);
2406GL_APICALL void GL_APIENTRY glFramebufferTextureLayerDownsampleIMG (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale);
2407#endif
2408#endif /* GL_IMG_framebuffer_downsample */
2409
2410#ifndef GL_IMG_multisampled_render_to_texture
2411#define GL_IMG_multisampled_render_to_texture 1
2412#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133
2413#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134
2414#define GL_MAX_SAMPLES_IMG 0x9135
2415#define GL_TEXTURE_SAMPLES_IMG 0x9136
2416typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
2417typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
2418#ifdef GL_GLEXT_PROTOTYPES
2419GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
2420GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
2421#endif
2422#endif /* GL_IMG_multisampled_render_to_texture */
2423
2424#ifndef GL_IMG_program_binary
2425#define GL_IMG_program_binary 1
2426#define GL_SGX_PROGRAM_BINARY_IMG 0x9130
2427#endif /* GL_IMG_program_binary */
2428
2429#ifndef GL_IMG_read_format
2430#define GL_IMG_read_format 1
2431#define GL_BGRA_IMG 0x80E1
2432#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365
2433#endif /* GL_IMG_read_format */
2434
2435#ifndef GL_IMG_shader_binary
2436#define GL_IMG_shader_binary 1
2437#define GL_SGX_BINARY_IMG 0x8C0A
2438#endif /* GL_IMG_shader_binary */
2439
2440#ifndef GL_IMG_texture_compression_pvrtc
2441#define GL_IMG_texture_compression_pvrtc 1
2442#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00
2443#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01
2444#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02
2445#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03
2446#endif /* GL_IMG_texture_compression_pvrtc */
2447
2448#ifndef GL_IMG_texture_compression_pvrtc2
2449#define GL_IMG_texture_compression_pvrtc2 1
2450#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137
2451#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138
2452#endif /* GL_IMG_texture_compression_pvrtc2 */
2453
2454#ifndef GL_IMG_texture_filter_cubic
2455#define GL_IMG_texture_filter_cubic 1
2456#define GL_CUBIC_IMG 0x9139
2457#define GL_CUBIC_MIPMAP_NEAREST_IMG 0x913A
2458#define GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B
2459#endif /* GL_IMG_texture_filter_cubic */
2460
2461#ifndef GL_INTEL_blackhole_render
2462#define GL_INTEL_blackhole_render 1
2463#define GL_BLACKHOLE_RENDER_INTEL 0x83FC
2464#endif /* GL_INTEL_blackhole_render */
2465
2466#ifndef GL_INTEL_conservative_rasterization
2467#define GL_INTEL_conservative_rasterization 1
2468#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE
2469#endif /* GL_INTEL_conservative_rasterization */
2470
2471#ifndef GL_INTEL_framebuffer_CMAA
2472#define GL_INTEL_framebuffer_CMAA 1
2473typedef void (GL_APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void);
2474#ifdef GL_GLEXT_PROTOTYPES
2475GL_APICALL void GL_APIENTRY glApplyFramebufferAttachmentCMAAINTEL (void);
2476#endif
2477#endif /* GL_INTEL_framebuffer_CMAA */
2478
2479#ifndef GL_INTEL_performance_query
2480#define GL_INTEL_performance_query 1
2481#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000
2482#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001
2483#define GL_PERFQUERY_WAIT_INTEL 0x83FB
2484#define GL_PERFQUERY_FLUSH_INTEL 0x83FA
2485#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9
2486#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0
2487#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
2488#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
2489#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
2490#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4
2491#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
2492#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
2493#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
2494#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
2495#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
2496#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
2497#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
2498#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
2499#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
2500#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
2501typedef void (GL_APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);
2502typedef void (GL_APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle);
2503typedef void (GL_APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);
2504typedef void (GL_APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);
2505typedef void (GL_APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId);
2506typedef void (GL_APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId);
2507typedef void (GL_APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
2508typedef void (GL_APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten);
2509typedef void (GL_APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId);
2510typedef void (GL_APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
2511#ifdef GL_GLEXT_PROTOTYPES
2512GL_APICALL void GL_APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle);
2513GL_APICALL void GL_APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle);
2514GL_APICALL void GL_APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle);
2515GL_APICALL void GL_APIENTRY glEndPerfQueryINTEL (GLuint queryHandle);
2516GL_APICALL void GL_APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId);
2517GL_APICALL void GL_APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId);
2518GL_APICALL void GL_APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
2519GL_APICALL void GL_APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten);
2520GL_APICALL void GL_APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId);
2521GL_APICALL void GL_APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
2522#endif
2523#endif /* GL_INTEL_performance_query */
2524
2525#ifndef GL_MESA_bgra
2526#define GL_MESA_bgra 1
2527#define GL_BGR_EXT 0x80E0
2528#endif /* GL_MESA_bgra */
2529
2530#ifndef GL_MESA_framebuffer_flip_x
2531#define GL_MESA_framebuffer_flip_x 1
2532#define GL_FRAMEBUFFER_FLIP_X_MESA 0x8BBC
2533#endif /* GL_MESA_framebuffer_flip_x */
2534
2535#ifndef GL_MESA_framebuffer_flip_y
2536#define GL_MESA_framebuffer_flip_y 1
2537#define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB
2538typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param);
2539typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint *params);
2540#ifdef GL_GLEXT_PROTOTYPES
2541GL_APICALL void GL_APIENTRY glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param);
2542GL_APICALL void GL_APIENTRY glGetFramebufferParameterivMESA (GLenum target, GLenum pname, GLint *params);
2543#endif
2544#endif /* GL_MESA_framebuffer_flip_y */
2545
2546#ifndef GL_MESA_framebuffer_swap_xy
2547#define GL_MESA_framebuffer_swap_xy 1
2548#define GL_FRAMEBUFFER_SWAP_XY_MESA 0x8BBD
2549#endif /* GL_MESA_framebuffer_swap_xy */
2550
2551#ifndef GL_MESA_program_binary_formats
2552#define GL_MESA_program_binary_formats 1
2553#define GL_PROGRAM_BINARY_FORMAT_MESA 0x875F
2554#endif /* GL_MESA_program_binary_formats */
2555
2556#ifndef GL_MESA_shader_integer_functions
2557#define GL_MESA_shader_integer_functions 1
2558#endif /* GL_MESA_shader_integer_functions */
2559
2560#ifndef GL_NVX_blend_equation_advanced_multi_draw_buffers
2561#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1
2562#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */
2563
2564#ifndef GL_NV_bindless_texture
2565#define GL_NV_bindless_texture 1
2566typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture);
2567typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler);
2568typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
2569typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle);
2570typedef GLuint64 (GL_APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
2571typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access);
2572typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle);
2573typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value);
2574typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value);
2575typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value);
2576typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
2577typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
2578typedef GLboolean (GL_APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle);
2579#ifdef GL_GLEXT_PROTOTYPES
2580GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleNV (GLuint texture);
2581GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler);
2582GL_APICALL void GL_APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle);
2583GL_APICALL void GL_APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle);
2584GL_APICALL GLuint64 GL_APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
2585GL_APICALL void GL_APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access);
2586GL_APICALL void GL_APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle);
2587GL_APICALL void GL_APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value);
2588GL_APICALL void GL_APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value);
2589GL_APICALL void GL_APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value);
2590GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
2591GL_APICALL GLboolean GL_APIENTRY glIsTextureHandleResidentNV (GLuint64 handle);
2592GL_APICALL GLboolean GL_APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
2593#endif
2594#endif /* GL_NV_bindless_texture */
2595
2596#ifndef GL_NV_blend_equation_advanced
2597#define GL_NV_blend_equation_advanced 1
2598#define GL_BLEND_OVERLAP_NV 0x9281
2599#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280
2600#define GL_BLUE_NV 0x1905
2601#define GL_COLORBURN_NV 0x929A
2602#define GL_COLORDODGE_NV 0x9299
2603#define GL_CONJOINT_NV 0x9284
2604#define GL_CONTRAST_NV 0x92A1
2605#define GL_DARKEN_NV 0x9297
2606#define GL_DIFFERENCE_NV 0x929E
2607#define GL_DISJOINT_NV 0x9283
2608#define GL_DST_ATOP_NV 0x928F
2609#define GL_DST_IN_NV 0x928B
2610#define GL_DST_NV 0x9287
2611#define GL_DST_OUT_NV 0x928D
2612#define GL_DST_OVER_NV 0x9289
2613#define GL_EXCLUSION_NV 0x92A0
2614#define GL_GREEN_NV 0x1904
2615#define GL_HARDLIGHT_NV 0x929B
2616#define GL_HARDMIX_NV 0x92A9
2617#define GL_HSL_COLOR_NV 0x92AF
2618#define GL_HSL_HUE_NV 0x92AD
2619#define GL_HSL_LUMINOSITY_NV 0x92B0
2620#define GL_HSL_SATURATION_NV 0x92AE
2621#define GL_INVERT_OVG_NV 0x92B4
2622#define GL_INVERT_RGB_NV 0x92A3
2623#define GL_LIGHTEN_NV 0x9298
2624#define GL_LINEARBURN_NV 0x92A5
2625#define GL_LINEARDODGE_NV 0x92A4
2626#define GL_LINEARLIGHT_NV 0x92A7
2627#define GL_MINUS_CLAMPED_NV 0x92B3
2628#define GL_MINUS_NV 0x929F
2629#define GL_MULTIPLY_NV 0x9294
2630#define GL_OVERLAY_NV 0x9296
2631#define GL_PINLIGHT_NV 0x92A8
2632#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2
2633#define GL_PLUS_CLAMPED_NV 0x92B1
2634#define GL_PLUS_DARKER_NV 0x9292
2635#define GL_PLUS_NV 0x9291
2636#define GL_RED_NV 0x1903
2637#define GL_SCREEN_NV 0x9295
2638#define GL_SOFTLIGHT_NV 0x929C
2639#define GL_SRC_ATOP_NV 0x928E
2640#define GL_SRC_IN_NV 0x928A
2641#define GL_SRC_NV 0x9286
2642#define GL_SRC_OUT_NV 0x928C
2643#define GL_SRC_OVER_NV 0x9288
2644#define GL_UNCORRELATED_NV 0x9282
2645#define GL_VIVIDLIGHT_NV 0x92A6
2646#define GL_XOR_NV 0x1506
2647typedef void (GL_APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value);
2648typedef void (GL_APIENTRYP PFNGLBLENDBARRIERNVPROC) (void);
2649#ifdef GL_GLEXT_PROTOTYPES
2650GL_APICALL void GL_APIENTRY glBlendParameteriNV (GLenum pname, GLint value);
2651GL_APICALL void GL_APIENTRY glBlendBarrierNV (void);
2652#endif
2653#endif /* GL_NV_blend_equation_advanced */
2654
2655#ifndef GL_NV_blend_equation_advanced_coherent
2656#define GL_NV_blend_equation_advanced_coherent 1
2657#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285
2658#endif /* GL_NV_blend_equation_advanced_coherent */
2659
2660#ifndef GL_NV_blend_minmax_factor
2661#define GL_NV_blend_minmax_factor 1
2662#define GL_FACTOR_MIN_AMD 0x901C
2663#define GL_FACTOR_MAX_AMD 0x901D
2664#endif /* GL_NV_blend_minmax_factor */
2665
2666#ifndef GL_NV_clip_space_w_scaling
2667#define GL_NV_clip_space_w_scaling 1
2668#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C
2669#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D
2670#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E
2671typedef void (GL_APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff);
2672#ifdef GL_GLEXT_PROTOTYPES
2673GL_APICALL void GL_APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff);
2674#endif
2675#endif /* GL_NV_clip_space_w_scaling */
2676
2677#ifndef GL_NV_compute_shader_derivatives
2678#define GL_NV_compute_shader_derivatives 1
2679#endif /* GL_NV_compute_shader_derivatives */
2680
2681#ifndef GL_NV_conditional_render
2682#define GL_NV_conditional_render 1
2683#define GL_QUERY_WAIT_NV 0x8E13
2684#define GL_QUERY_NO_WAIT_NV 0x8E14
2685#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15
2686#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16
2687typedef void (GL_APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);
2688typedef void (GL_APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void);
2689#ifdef GL_GLEXT_PROTOTYPES
2690GL_APICALL void GL_APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode);
2691GL_APICALL void GL_APIENTRY glEndConditionalRenderNV (void);
2692#endif
2693#endif /* GL_NV_conditional_render */
2694
2695#ifndef GL_NV_conservative_raster
2696#define GL_NV_conservative_raster 1
2697#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346
2698#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347
2699#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348
2700#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349
2701typedef void (GL_APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits);
2702#ifdef GL_GLEXT_PROTOTYPES
2703GL_APICALL void GL_APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits);
2704#endif
2705#endif /* GL_NV_conservative_raster */
2706
2707#ifndef GL_NV_conservative_raster_pre_snap
2708#define GL_NV_conservative_raster_pre_snap 1
2709#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550
2710#endif /* GL_NV_conservative_raster_pre_snap */
2711
2712#ifndef GL_NV_conservative_raster_pre_snap_triangles
2713#define GL_NV_conservative_raster_pre_snap_triangles 1
2714#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D
2715#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E
2716#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F
2717typedef void (GL_APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param);
2718#ifdef GL_GLEXT_PROTOTYPES
2719GL_APICALL void GL_APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param);
2720#endif
2721#endif /* GL_NV_conservative_raster_pre_snap_triangles */
2722
2723#ifndef GL_NV_copy_buffer
2724#define GL_NV_copy_buffer 1
2725#define GL_COPY_READ_BUFFER_NV 0x8F36
2726#define GL_COPY_WRITE_BUFFER_NV 0x8F37
2727typedef void (GL_APIENTRYP PFNGLCOPYBUFFERSUBDATANVPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
2728#ifdef GL_GLEXT_PROTOTYPES
2729GL_APICALL void GL_APIENTRY glCopyBufferSubDataNV (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
2730#endif
2731#endif /* GL_NV_copy_buffer */
2732
2733#ifndef GL_NV_coverage_sample
2734#define GL_NV_coverage_sample 1
2735#define GL_COVERAGE_COMPONENT_NV 0x8ED0
2736#define GL_COVERAGE_COMPONENT4_NV 0x8ED1
2737#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2
2738#define GL_COVERAGE_BUFFERS_NV 0x8ED3
2739#define GL_COVERAGE_SAMPLES_NV 0x8ED4
2740#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5
2741#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6
2742#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7
2743#define GL_COVERAGE_BUFFER_BIT_NV 0x00008000
2744typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask);
2745typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation);
2746#ifdef GL_GLEXT_PROTOTYPES
2747GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask);
2748GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation);
2749#endif
2750#endif /* GL_NV_coverage_sample */
2751
2752#ifndef GL_NV_depth_nonlinear
2753#define GL_NV_depth_nonlinear 1
2754#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C
2755#endif /* GL_NV_depth_nonlinear */
2756
2757#ifndef GL_NV_draw_buffers
2758#define GL_NV_draw_buffers 1
2759#define GL_MAX_DRAW_BUFFERS_NV 0x8824
2760#define GL_DRAW_BUFFER0_NV 0x8825
2761#define GL_DRAW_BUFFER1_NV 0x8826
2762#define GL_DRAW_BUFFER2_NV 0x8827
2763#define GL_DRAW_BUFFER3_NV 0x8828
2764#define GL_DRAW_BUFFER4_NV 0x8829
2765#define GL_DRAW_BUFFER5_NV 0x882A
2766#define GL_DRAW_BUFFER6_NV 0x882B
2767#define GL_DRAW_BUFFER7_NV 0x882C
2768#define GL_DRAW_BUFFER8_NV 0x882D
2769#define GL_DRAW_BUFFER9_NV 0x882E
2770#define GL_DRAW_BUFFER10_NV 0x882F
2771#define GL_DRAW_BUFFER11_NV 0x8830
2772#define GL_DRAW_BUFFER12_NV 0x8831
2773#define GL_DRAW_BUFFER13_NV 0x8832
2774#define GL_DRAW_BUFFER14_NV 0x8833
2775#define GL_DRAW_BUFFER15_NV 0x8834
2776#define GL_COLOR_ATTACHMENT0_NV 0x8CE0
2777#define GL_COLOR_ATTACHMENT1_NV 0x8CE1
2778#define GL_COLOR_ATTACHMENT2_NV 0x8CE2
2779#define GL_COLOR_ATTACHMENT3_NV 0x8CE3
2780#define GL_COLOR_ATTACHMENT4_NV 0x8CE4
2781#define GL_COLOR_ATTACHMENT5_NV 0x8CE5
2782#define GL_COLOR_ATTACHMENT6_NV 0x8CE6
2783#define GL_COLOR_ATTACHMENT7_NV 0x8CE7
2784#define GL_COLOR_ATTACHMENT8_NV 0x8CE8
2785#define GL_COLOR_ATTACHMENT9_NV 0x8CE9
2786#define GL_COLOR_ATTACHMENT10_NV 0x8CEA
2787#define GL_COLOR_ATTACHMENT11_NV 0x8CEB
2788#define GL_COLOR_ATTACHMENT12_NV 0x8CEC
2789#define GL_COLOR_ATTACHMENT13_NV 0x8CED
2790#define GL_COLOR_ATTACHMENT14_NV 0x8CEE
2791#define GL_COLOR_ATTACHMENT15_NV 0x8CEF
2792typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs);
2793#ifdef GL_GLEXT_PROTOTYPES
2794GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs);
2795#endif
2796#endif /* GL_NV_draw_buffers */
2797
2798#ifndef GL_NV_draw_instanced
2799#define GL_NV_draw_instanced 1
2800typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
2801typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
2802#ifdef GL_GLEXT_PROTOTYPES
2803GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
2804GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
2805#endif
2806#endif /* GL_NV_draw_instanced */
2807
2808#ifndef GL_NV_draw_vulkan_image
2809#define GL_NV_draw_vulkan_image 1
2810typedef void (GL_APIENTRY *GLVULKANPROCNV)(void);
2811typedef void (GL_APIENTRYP PFNGLDRAWVKIMAGENVPROC) (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
2812typedef GLVULKANPROCNV (GL_APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name);
2813typedef void (GL_APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);
2814typedef void (GL_APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);
2815typedef void (GL_APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence);
2816#ifdef GL_GLEXT_PROTOTYPES
2817GL_APICALL void GL_APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
2818GL_APICALL GLVULKANPROCNV GL_APIENTRY glGetVkProcAddrNV (const GLchar *name);
2819GL_APICALL void GL_APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore);
2820GL_APICALL void GL_APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore);
2821GL_APICALL void GL_APIENTRY glSignalVkFenceNV (GLuint64 vkFence);
2822#endif
2823#endif /* GL_NV_draw_vulkan_image */
2824
2825#ifndef GL_NV_explicit_attrib_location
2826#define GL_NV_explicit_attrib_location 1
2827#endif /* GL_NV_explicit_attrib_location */
2828
2829#ifndef GL_NV_fbo_color_attachments
2830#define GL_NV_fbo_color_attachments 1
2831#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF
2832#endif /* GL_NV_fbo_color_attachments */
2833
2834#ifndef GL_NV_fence
2835#define GL_NV_fence 1
2836#define GL_ALL_COMPLETED_NV 0x84F2
2837#define GL_FENCE_STATUS_NV 0x84F3
2838#define GL_FENCE_CONDITION_NV 0x84F4
2839typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
2840typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
2841typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
2842typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
2843typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
2844typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
2845typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
2846#ifdef GL_GLEXT_PROTOTYPES
2847GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);
2848GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);
2849GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence);
2850GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence);
2851GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
2852GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence);
2853GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint fence, GLenum condition);
2854#endif
2855#endif /* GL_NV_fence */
2856
2857#ifndef GL_NV_fill_rectangle
2858#define GL_NV_fill_rectangle 1
2859#define GL_FILL_RECTANGLE_NV 0x933C
2860#endif /* GL_NV_fill_rectangle */
2861
2862#ifndef GL_NV_fragment_coverage_to_color
2863#define GL_NV_fragment_coverage_to_color 1
2864#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD
2865#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE
2866typedef void (GL_APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color);
2867#ifdef GL_GLEXT_PROTOTYPES
2868GL_APICALL void GL_APIENTRY glFragmentCoverageColorNV (GLuint color);
2869#endif
2870#endif /* GL_NV_fragment_coverage_to_color */
2871
2872#ifndef GL_NV_fragment_shader_barycentric
2873#define GL_NV_fragment_shader_barycentric 1
2874#endif /* GL_NV_fragment_shader_barycentric */
2875
2876#ifndef GL_NV_fragment_shader_interlock
2877#define GL_NV_fragment_shader_interlock 1
2878#endif /* GL_NV_fragment_shader_interlock */
2879
2880#ifndef GL_NV_framebuffer_blit
2881#define GL_NV_framebuffer_blit 1
2882#define GL_READ_FRAMEBUFFER_NV 0x8CA8
2883#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9
2884#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6
2885#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA
2886typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
2887#ifdef GL_GLEXT_PROTOTYPES
2888GL_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);
2889#endif
2890#endif /* GL_NV_framebuffer_blit */
2891
2892#ifndef GL_NV_framebuffer_mixed_samples
2893#define GL_NV_framebuffer_mixed_samples 1
2894#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331
2895#define GL_COLOR_SAMPLES_NV 0x8E20
2896#define GL_DEPTH_SAMPLES_NV 0x932D
2897#define GL_STENCIL_SAMPLES_NV 0x932E
2898#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F
2899#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330
2900#define GL_COVERAGE_MODULATION_NV 0x9332
2901#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333
2902typedef void (GL_APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v);
2903typedef void (GL_APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufSize, GLfloat *v);
2904typedef void (GL_APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components);
2905#ifdef GL_GLEXT_PROTOTYPES
2906GL_APICALL void GL_APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v);
2907GL_APICALL void GL_APIENTRY glGetCoverageModulationTableNV (GLsizei bufSize, GLfloat *v);
2908GL_APICALL void GL_APIENTRY glCoverageModulationNV (GLenum components);
2909#endif
2910#endif /* GL_NV_framebuffer_mixed_samples */
2911
2912#ifndef GL_NV_framebuffer_multisample
2913#define GL_NV_framebuffer_multisample 1
2914#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB
2915#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56
2916#define GL_MAX_SAMPLES_NV 0x8D57
2917typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
2918#ifdef GL_GLEXT_PROTOTYPES
2919GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
2920#endif
2921#endif /* GL_NV_framebuffer_multisample */
2922
2923#ifndef GL_NV_generate_mipmap_sRGB
2924#define GL_NV_generate_mipmap_sRGB 1
2925#endif /* GL_NV_generate_mipmap_sRGB */
2926
2927#ifndef GL_NV_geometry_shader_passthrough
2928#define GL_NV_geometry_shader_passthrough 1
2929#endif /* GL_NV_geometry_shader_passthrough */
2930
2931#ifndef GL_NV_gpu_shader5
2932#define GL_NV_gpu_shader5 1
2933typedef khronos_int64_t GLint64EXT;
2934typedef khronos_uint64_t GLuint64EXT;
2935#define GL_INT64_NV 0x140E
2936#define GL_UNSIGNED_INT64_NV 0x140F
2937#define GL_INT8_NV 0x8FE0
2938#define GL_INT8_VEC2_NV 0x8FE1
2939#define GL_INT8_VEC3_NV 0x8FE2
2940#define GL_INT8_VEC4_NV 0x8FE3
2941#define GL_INT16_NV 0x8FE4
2942#define GL_INT16_VEC2_NV 0x8FE5
2943#define GL_INT16_VEC3_NV 0x8FE6
2944#define GL_INT16_VEC4_NV 0x8FE7
2945#define GL_INT64_VEC2_NV 0x8FE9
2946#define GL_INT64_VEC3_NV 0x8FEA
2947#define GL_INT64_VEC4_NV 0x8FEB
2948#define GL_UNSIGNED_INT8_NV 0x8FEC
2949#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED
2950#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE
2951#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF
2952#define GL_UNSIGNED_INT16_NV 0x8FF0
2953#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1
2954#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2
2955#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3
2956#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5
2957#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6
2958#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7
2959#define GL_FLOAT16_NV 0x8FF8
2960#define GL_FLOAT16_VEC2_NV 0x8FF9
2961#define GL_FLOAT16_VEC3_NV 0x8FFA
2962#define GL_FLOAT16_VEC4_NV 0x8FFB
2963#define GL_PATCHES 0x000E
2964typedef void (GL_APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);
2965typedef void (GL_APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);
2966typedef void (GL_APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
2967typedef void (GL_APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
2968typedef void (GL_APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
2969typedef void (GL_APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
2970typedef void (GL_APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
2971typedef void (GL_APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
2972typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x);
2973typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y);
2974typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
2975typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
2976typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
2977typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
2978typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
2979typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
2980typedef void (GL_APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params);
2981typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x);
2982typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
2983typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
2984typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
2985typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
2986typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
2987typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
2988typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
2989typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x);
2990typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
2991typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
2992typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
2993typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
2994typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
2995typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
2996typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
2997#ifdef GL_GLEXT_PROTOTYPES
2998GL_APICALL void GL_APIENTRY glUniform1i64NV (GLint location, GLint64EXT x);
2999GL_APICALL void GL_APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y);
3000GL_APICALL void GL_APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
3001GL_APICALL void GL_APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
3002GL_APICALL void GL_APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
3003GL_APICALL void GL_APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
3004GL_APICALL void GL_APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
3005GL_APICALL void GL_APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
3006GL_APICALL void GL_APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x);
3007GL_APICALL void GL_APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y);
3008GL_APICALL void GL_APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
3009GL_APICALL void GL_APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
3010GL_APICALL void GL_APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
3011GL_APICALL void GL_APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
3012GL_APICALL void GL_APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
3013GL_APICALL void GL_APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
3014GL_APICALL void GL_APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params);
3015GL_APICALL void GL_APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x);
3016GL_APICALL void GL_APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
3017GL_APICALL void GL_APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
3018GL_APICALL void GL_APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
3019GL_APICALL void GL_APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
3020GL_APICALL void GL_APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
3021GL_APICALL void GL_APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
3022GL_APICALL void GL_APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
3023GL_APICALL void GL_APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x);
3024GL_APICALL void GL_APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
3025GL_APICALL void GL_APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
3026GL_APICALL void GL_APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
3027GL_APICALL void GL_APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
3028GL_APICALL void GL_APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
3029GL_APICALL void GL_APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
3030GL_APICALL void GL_APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
3031#endif
3032#endif /* GL_NV_gpu_shader5 */
3033
3034#ifndef GL_NV_image_formats
3035#define GL_NV_image_formats 1
3036#endif /* GL_NV_image_formats */
3037
3038#ifndef GL_NV_instanced_arrays
3039#define GL_NV_instanced_arrays 1
3040#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE
3041typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor);
3042#ifdef GL_GLEXT_PROTOTYPES
3043GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor);
3044#endif
3045#endif /* GL_NV_instanced_arrays */
3046
3047#ifndef GL_NV_internalformat_sample_query
3048#define GL_NV_internalformat_sample_query 1
3049#define GL_TEXTURE_2D_MULTISAMPLE 0x9100
3050#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
3051#define GL_MULTISAMPLES_NV 0x9371
3052#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372
3053#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373
3054#define GL_CONFORMANT_NV 0x9374
3055typedef void (GL_APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params);
3056#ifdef GL_GLEXT_PROTOTYPES
3057GL_APICALL void GL_APIENTRY glGetInternalformatSampleivNV (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params);
3058#endif
3059#endif /* GL_NV_internalformat_sample_query */
3060
3061#ifndef GL_NV_memory_attachment
3062#define GL_NV_memory_attachment 1
3063#define GL_ATTACHED_MEMORY_OBJECT_NV 0x95A4
3064#define GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5
3065#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6
3066#define GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7
3067#define GL_MEMORY_ATTACHABLE_NV 0x95A8
3068#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9
3069#define GL_DETACHED_TEXTURES_NV 0x95AA
3070#define GL_DETACHED_BUFFERS_NV 0x95AB
3071#define GL_MAX_DETACHED_TEXTURES_NV 0x95AC
3072#define GL_MAX_DETACHED_BUFFERS_NV 0x95AD
3073typedef void (GL_APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC) (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params);
3074typedef void (GL_APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC) (GLuint memory, GLenum pname);
3075typedef void (GL_APIENTRYP PFNGLTEXATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset);
3076typedef void (GL_APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset);
3077typedef void (GL_APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC) (GLuint texture, GLuint memory, GLuint64 offset);
3078typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC) (GLuint buffer, GLuint memory, GLuint64 offset);
3079#ifdef GL_GLEXT_PROTOTYPES
3080GL_APICALL void GL_APIENTRY glGetMemoryObjectDetachedResourcesuivNV (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params);
3081GL_APICALL void GL_APIENTRY glResetMemoryObjectParameterNV (GLuint memory, GLenum pname);
3082GL_APICALL void GL_APIENTRY glTexAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset);
3083GL_APICALL void GL_APIENTRY glBufferAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset);
3084GL_APICALL void GL_APIENTRY glTextureAttachMemoryNV (GLuint texture, GLuint memory, GLuint64 offset);
3085GL_APICALL void GL_APIENTRY glNamedBufferAttachMemoryNV (GLuint buffer, GLuint memory, GLuint64 offset);
3086#endif
3087#endif /* GL_NV_memory_attachment */
3088
3089#ifndef GL_NV_memory_object_sparse
3090#define GL_NV_memory_object_sparse 1
3091typedef void (GL_APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
3092typedef void (GL_APIENTRYP PFNGLTEXPAGECOMMITMENTMEMNVPROC) (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
3093typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
3094typedef void (GL_APIENTRYP PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC) (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
3095#ifdef GL_GLEXT_PROTOTYPES
3096GL_APICALL void GL_APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
3097GL_APICALL void GL_APIENTRY glTexPageCommitmentMemNV (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
3098GL_APICALL void GL_APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
3099GL_APICALL void GL_APIENTRY glTexturePageCommitmentMemNV (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
3100#endif
3101#endif /* GL_NV_memory_object_sparse */
3102
3103#ifndef GL_NV_mesh_shader
3104#define GL_NV_mesh_shader 1
3105#define GL_MESH_SHADER_NV 0x9559
3106#define GL_TASK_SHADER_NV 0x955A
3107#define GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60
3108#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61
3109#define GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62
3110#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63
3111#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64
3112#define GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65
3113#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66
3114#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67
3115#define GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68
3116#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69
3117#define GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A
3118#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B
3119#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C
3120#define GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D
3121#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E
3122#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F
3123#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2
3124#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3
3125#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536
3126#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537
3127#define GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538
3128#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539
3129#define GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A
3130#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D
3131#define GL_MAX_MESH_VIEWS_NV 0x9557
3132#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF
3133#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543
3134#define GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B
3135#define GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C
3136#define GL_MESH_WORK_GROUP_SIZE_NV 0x953E
3137#define GL_TASK_WORK_GROUP_SIZE_NV 0x953F
3138#define GL_MESH_VERTICES_OUT_NV 0x9579
3139#define GL_MESH_PRIMITIVES_OUT_NV 0x957A
3140#define GL_MESH_OUTPUT_TYPE_NV 0x957B
3141#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C
3142#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D
3143#define GL_REFERENCED_BY_MESH_SHADER_NV 0x95A0
3144#define GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1
3145#define GL_MESH_SHADER_BIT_NV 0x00000040
3146#define GL_TASK_SHADER_BIT_NV 0x00000080
3147#define GL_MESH_SUBROUTINE_NV 0x957C
3148#define GL_TASK_SUBROUTINE_NV 0x957D
3149#define GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E
3150#define GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F
3151#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E
3152#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F
3153typedef void (GL_APIENTRYP PFNGLDRAWMESHTASKSNVPROC) (GLuint first, GLuint count);
3154typedef void (GL_APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect);
3155typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride);
3156typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
3157#ifdef GL_GLEXT_PROTOTYPES
3158GL_APICALL void GL_APIENTRY glDrawMeshTasksNV (GLuint first, GLuint count);
3159GL_APICALL void GL_APIENTRY glDrawMeshTasksIndirectNV (GLintptr indirect);
3160GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectNV (GLintptr indirect, GLsizei drawcount, GLsizei stride);
3161GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectCountNV (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
3162#endif
3163#endif /* GL_NV_mesh_shader */
3164
3165#ifndef GL_NV_non_square_matrices
3166#define GL_NV_non_square_matrices 1
3167#define GL_FLOAT_MAT2x3_NV 0x8B65
3168#define GL_FLOAT_MAT2x4_NV 0x8B66
3169#define GL_FLOAT_MAT3x2_NV 0x8B67
3170#define GL_FLOAT_MAT3x4_NV 0x8B68
3171#define GL_FLOAT_MAT4x2_NV 0x8B69
3172#define GL_FLOAT_MAT4x3_NV 0x8B6A
3173typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3174typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3175typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3176typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3177typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3178typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3179#ifdef GL_GLEXT_PROTOTYPES
3180GL_APICALL void GL_APIENTRY glUniformMatrix2x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3181GL_APICALL void GL_APIENTRY glUniformMatrix3x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3182GL_APICALL void GL_APIENTRY glUniformMatrix2x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3183GL_APICALL void GL_APIENTRY glUniformMatrix4x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3184GL_APICALL void GL_APIENTRY glUniformMatrix3x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3185GL_APICALL void GL_APIENTRY glUniformMatrix4x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
3186#endif
3187#endif /* GL_NV_non_square_matrices */
3188
3189#ifndef GL_NV_path_rendering
3190#define GL_NV_path_rendering 1
3191typedef double GLdouble;
3192#define GL_PATH_FORMAT_SVG_NV 0x9070
3193#define GL_PATH_FORMAT_PS_NV 0x9071
3194#define GL_STANDARD_FONT_NAME_NV 0x9072
3195#define GL_SYSTEM_FONT_NAME_NV 0x9073
3196#define GL_FILE_NAME_NV 0x9074
3197#define GL_PATH_STROKE_WIDTH_NV 0x9075
3198#define GL_PATH_END_CAPS_NV 0x9076
3199#define GL_PATH_INITIAL_END_CAP_NV 0x9077
3200#define GL_PATH_TERMINAL_END_CAP_NV 0x9078
3201#define GL_PATH_JOIN_STYLE_NV 0x9079
3202#define GL_PATH_MITER_LIMIT_NV 0x907A
3203#define GL_PATH_DASH_CAPS_NV 0x907B
3204#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C
3205#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D
3206#define GL_PATH_DASH_OFFSET_NV 0x907E
3207#define GL_PATH_CLIENT_LENGTH_NV 0x907F
3208#define GL_PATH_FILL_MODE_NV 0x9080
3209#define GL_PATH_FILL_MASK_NV 0x9081
3210#define GL_PATH_FILL_COVER_MODE_NV 0x9082
3211#define GL_PATH_STROKE_COVER_MODE_NV 0x9083
3212#define GL_PATH_STROKE_MASK_NV 0x9084
3213#define GL_COUNT_UP_NV 0x9088
3214#define GL_COUNT_DOWN_NV 0x9089
3215#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A
3216#define GL_CONVEX_HULL_NV 0x908B
3217#define GL_BOUNDING_BOX_NV 0x908D
3218#define GL_TRANSLATE_X_NV 0x908E
3219#define GL_TRANSLATE_Y_NV 0x908F
3220#define GL_TRANSLATE_2D_NV 0x9090
3221#define GL_TRANSLATE_3D_NV 0x9091
3222#define GL_AFFINE_2D_NV 0x9092
3223#define GL_AFFINE_3D_NV 0x9094
3224#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096
3225#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098
3226#define GL_UTF8_NV 0x909A
3227#define GL_UTF16_NV 0x909B
3228#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C
3229#define GL_PATH_COMMAND_COUNT_NV 0x909D
3230#define GL_PATH_COORD_COUNT_NV 0x909E
3231#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F
3232#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0
3233#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1
3234#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2
3235#define GL_SQUARE_NV 0x90A3
3236#define GL_ROUND_NV 0x90A4
3237#define GL_TRIANGULAR_NV 0x90A5
3238#define GL_BEVEL_NV 0x90A6
3239#define GL_MITER_REVERT_NV 0x90A7
3240#define GL_MITER_TRUNCATE_NV 0x90A8
3241#define GL_SKIP_MISSING_GLYPH_NV 0x90A9
3242#define GL_USE_MISSING_GLYPH_NV 0x90AA
3243#define GL_PATH_ERROR_POSITION_NV 0x90AB
3244#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD
3245#define GL_ADJACENT_PAIRS_NV 0x90AE
3246#define GL_FIRST_TO_REST_NV 0x90AF
3247#define GL_PATH_GEN_MODE_NV 0x90B0
3248#define GL_PATH_GEN_COEFF_NV 0x90B1
3249#define GL_PATH_GEN_COMPONENTS_NV 0x90B3
3250#define GL_PATH_STENCIL_FUNC_NV 0x90B7
3251#define GL_PATH_STENCIL_REF_NV 0x90B8
3252#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9
3253#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD
3254#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE
3255#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF
3256#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4
3257#define GL_MOVE_TO_RESETS_NV 0x90B5
3258#define GL_MOVE_TO_CONTINUES_NV 0x90B6
3259#define GL_CLOSE_PATH_NV 0x00
3260#define GL_MOVE_TO_NV 0x02
3261#define GL_RELATIVE_MOVE_TO_NV 0x03
3262#define GL_LINE_TO_NV 0x04
3263#define GL_RELATIVE_LINE_TO_NV 0x05
3264#define GL_HORIZONTAL_LINE_TO_NV 0x06
3265#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
3266#define GL_VERTICAL_LINE_TO_NV 0x08
3267#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09
3268#define GL_QUADRATIC_CURVE_TO_NV 0x0A
3269#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B
3270#define GL_CUBIC_CURVE_TO_NV 0x0C
3271#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D
3272#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E
3273#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F
3274#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10
3275#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11
3276#define GL_SMALL_CCW_ARC_TO_NV 0x12
3277#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13
3278#define GL_SMALL_CW_ARC_TO_NV 0x14
3279#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15
3280#define GL_LARGE_CCW_ARC_TO_NV 0x16
3281#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17
3282#define GL_LARGE_CW_ARC_TO_NV 0x18
3283#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19
3284#define GL_RESTART_PATH_NV 0xF0
3285#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2
3286#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4
3287#define GL_RECT_NV 0xF6
3288#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8
3289#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA
3290#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC
3291#define GL_ARC_TO_NV 0xFE
3292#define GL_RELATIVE_ARC_TO_NV 0xFF
3293#define GL_BOLD_BIT_NV 0x01
3294#define GL_ITALIC_BIT_NV 0x02
3295#define GL_GLYPH_WIDTH_BIT_NV 0x01
3296#define GL_GLYPH_HEIGHT_BIT_NV 0x02
3297#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
3298#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08
3299#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10
3300#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20
3301#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40
3302#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80
3303#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100
3304#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000
3305#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000
3306#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000
3307#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000
3308#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000
3309#define GL_FONT_ASCENDER_BIT_NV 0x00200000
3310#define GL_FONT_DESCENDER_BIT_NV 0x00400000
3311#define GL_FONT_HEIGHT_BIT_NV 0x00800000
3312#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000
3313#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000
3314#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000
3315#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000
3316#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000
3317#define GL_ROUNDED_RECT_NV 0xE8
3318#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9
3319#define GL_ROUNDED_RECT2_NV 0xEA
3320#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB
3321#define GL_ROUNDED_RECT4_NV 0xEC
3322#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED
3323#define GL_ROUNDED_RECT8_NV 0xEE
3324#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF
3325#define GL_RELATIVE_RECT_NV 0xF7
3326#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368
3327#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369
3328#define GL_FONT_UNAVAILABLE_NV 0x936A
3329#define GL_FONT_UNINTELLIGIBLE_NV 0x936B
3330#define GL_CONIC_CURVE_TO_NV 0x1A
3331#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B
3332#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000
3333#define GL_STANDARD_FONT_FORMAT_NV 0x936C
3334#define GL_PATH_PROJECTION_NV 0x1701
3335#define GL_PATH_MODELVIEW_NV 0x1700
3336#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3
3337#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6
3338#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36
3339#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3
3340#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4
3341#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7
3342#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38
3343#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4
3344#define GL_FRAGMENT_INPUT_NV 0x936D
3345typedef GLuint (GL_APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range);
3346typedef void (GL_APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range);
3347typedef GLboolean (GL_APIENTRYP PFNGLISPATHNVPROC) (GLuint path);
3348typedef void (GL_APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
3349typedef void (GL_APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
3350typedef void (GL_APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
3351typedef void (GL_APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
3352typedef void (GL_APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString);
3353typedef void (GL_APIENTRYP PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
3354typedef void (GL_APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
3355typedef void (GL_APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
3356typedef void (GL_APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath);
3357typedef void (GL_APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
3358typedef void (GL_APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
3359typedef void (GL_APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value);
3360typedef void (GL_APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value);
3361typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value);
3362typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value);
3363typedef void (GL_APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
3364typedef void (GL_APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask);
3365typedef void (GL_APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units);
3366typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask);
3367typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask);
3368typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
3369typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
3370typedef void (GL_APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func);
3371typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode);
3372typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode);
3373typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
3374typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
3375typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value);
3376typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value);
3377typedef void (GL_APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands);
3378typedef void (GL_APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords);
3379typedef void (GL_APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray);
3380typedef void (GL_APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
3381typedef void (GL_APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
3382typedef void (GL_APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
3383typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y);
3384typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y);
3385typedef GLfloat (GL_APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments);
3386typedef GLboolean (GL_APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
3387typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m);
3388typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
3389typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
3390typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m);
3391typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
3392typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);
3393typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);
3394typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode);
3395typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
3396typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
3397typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount);
3398typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
3399typedef GLenum (GL_APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
3400typedef void (GL_APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs);
3401typedef void (GL_APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params);
3402typedef void (GL_APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
3403typedef void (GL_APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode);
3404typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
3405typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
3406typedef void (GL_APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m);
3407typedef void (GL_APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m);
3408typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
3409typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
3410typedef void (GL_APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m);
3411typedef void (GL_APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m);
3412typedef void (GL_APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
3413typedef void (GL_APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode);
3414typedef void (GL_APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode);
3415typedef void (GL_APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
3416typedef void (GL_APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
3417typedef void (GL_APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
3418typedef void (GL_APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
3419typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
3420typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
3421#ifdef GL_GLEXT_PROTOTYPES
3422GL_APICALL GLuint GL_APIENTRY glGenPathsNV (GLsizei range);
3423GL_APICALL void GL_APIENTRY glDeletePathsNV (GLuint path, GLsizei range);
3424GL_APICALL GLboolean GL_APIENTRY glIsPathNV (GLuint path);
3425GL_APICALL void GL_APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
3426GL_APICALL void GL_APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
3427GL_APICALL void GL_APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
3428GL_APICALL void GL_APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
3429GL_APICALL void GL_APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString);
3430GL_APICALL void GL_APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
3431GL_APICALL void GL_APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
3432GL_APICALL void GL_APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
3433GL_APICALL void GL_APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath);
3434GL_APICALL void GL_APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
3435GL_APICALL void GL_APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
3436GL_APICALL void GL_APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value);
3437GL_APICALL void GL_APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value);
3438GL_APICALL void GL_APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value);
3439GL_APICALL void GL_APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value);
3440GL_APICALL void GL_APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
3441GL_APICALL void GL_APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask);
3442GL_APICALL void GL_APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units);
3443GL_APICALL void GL_APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask);
3444GL_APICALL void GL_APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask);
3445GL_APICALL void GL_APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
3446GL_APICALL void GL_APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
3447GL_APICALL void GL_APIENTRY glPathCoverDepthFuncNV (GLenum func);
3448GL_APICALL void GL_APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode);
3449GL_APICALL void GL_APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode);
3450GL_APICALL void GL_APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
3451GL_APICALL void GL_APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
3452GL_APICALL void GL_APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value);
3453GL_APICALL void GL_APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value);
3454GL_APICALL void GL_APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands);
3455GL_APICALL void GL_APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords);
3456GL_APICALL void GL_APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray);
3457GL_APICALL void GL_APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
3458GL_APICALL void GL_APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
3459GL_APICALL void GL_APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
3460GL_APICALL GLboolean GL_APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y);
3461GL_APICALL GLboolean GL_APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y);
3462GL_APICALL GLfloat GL_APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments);
3463GL_APICALL GLboolean GL_APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
3464GL_APICALL void GL_APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m);
3465GL_APICALL void GL_APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m);
3466GL_APICALL void GL_APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m);
3467GL_APICALL void GL_APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m);
3468GL_APICALL void GL_APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m);
3469GL_APICALL void GL_APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m);
3470GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);
3471GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode);
3472GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
3473GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
3474GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount);
3475GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
3476GL_APICALL GLenum GL_APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
3477GL_APICALL void GL_APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs);
3478GL_APICALL void GL_APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params);
3479GL_APICALL void GL_APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
3480GL_APICALL void GL_APIENTRY glMatrixLoadIdentityEXT (GLenum mode);
3481GL_APICALL void GL_APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m);
3482GL_APICALL void GL_APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m);
3483GL_APICALL void GL_APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m);
3484GL_APICALL void GL_APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m);
3485GL_APICALL void GL_APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m);
3486GL_APICALL void GL_APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m);
3487GL_APICALL void GL_APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m);
3488GL_APICALL void GL_APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m);
3489GL_APICALL void GL_APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
3490GL_APICALL void GL_APIENTRY glMatrixPopEXT (GLenum mode);
3491GL_APICALL void GL_APIENTRY glMatrixPushEXT (GLenum mode);
3492GL_APICALL void GL_APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
3493GL_APICALL void GL_APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
3494GL_APICALL void GL_APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
3495GL_APICALL void GL_APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
3496GL_APICALL void GL_APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
3497GL_APICALL void GL_APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
3498#endif
3499#endif /* GL_NV_path_rendering */
3500
3501#ifndef GL_NV_path_rendering_shared_edge
3502#define GL_NV_path_rendering_shared_edge 1
3503#define GL_SHARED_EDGE_NV 0xC0
3504#endif /* GL_NV_path_rendering_shared_edge */
3505
3506#ifndef GL_NV_pixel_buffer_object
3507#define GL_NV_pixel_buffer_object 1
3508#define GL_PIXEL_PACK_BUFFER_NV 0x88EB
3509#define GL_PIXEL_UNPACK_BUFFER_NV 0x88EC
3510#define GL_PIXEL_PACK_BUFFER_BINDING_NV 0x88ED
3511#define GL_PIXEL_UNPACK_BUFFER_BINDING_NV 0x88EF
3512#endif /* GL_NV_pixel_buffer_object */
3513
3514#ifndef GL_NV_polygon_mode
3515#define GL_NV_polygon_mode 1
3516#define GL_POLYGON_MODE_NV 0x0B40
3517#define GL_POLYGON_OFFSET_POINT_NV 0x2A01
3518#define GL_POLYGON_OFFSET_LINE_NV 0x2A02
3519#define GL_POINT_NV 0x1B00
3520#define GL_LINE_NV 0x1B01
3521#define GL_FILL_NV 0x1B02
3522typedef void (GL_APIENTRYP PFNGLPOLYGONMODENVPROC) (GLenum face, GLenum mode);
3523#ifdef GL_GLEXT_PROTOTYPES
3524GL_APICALL void GL_APIENTRY glPolygonModeNV (GLenum face, GLenum mode);
3525#endif
3526#endif /* GL_NV_polygon_mode */
3527
3528#ifndef GL_NV_primitive_shading_rate
3529#define GL_NV_primitive_shading_rate 1
3530#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1
3531#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2
3532#endif /* GL_NV_primitive_shading_rate */
3533
3534#ifndef GL_NV_read_buffer
3535#define GL_NV_read_buffer 1
3536#define GL_READ_BUFFER_NV 0x0C02
3537typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode);
3538#ifdef GL_GLEXT_PROTOTYPES
3539GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode);
3540#endif
3541#endif /* GL_NV_read_buffer */
3542
3543#ifndef GL_NV_read_buffer_front
3544#define GL_NV_read_buffer_front 1
3545#endif /* GL_NV_read_buffer_front */
3546
3547#ifndef GL_NV_read_depth
3548#define GL_NV_read_depth 1
3549#endif /* GL_NV_read_depth */
3550
3551#ifndef GL_NV_read_depth_stencil
3552#define GL_NV_read_depth_stencil 1
3553#endif /* GL_NV_read_depth_stencil */
3554
3555#ifndef GL_NV_read_stencil
3556#define GL_NV_read_stencil 1
3557#endif /* GL_NV_read_stencil */
3558
3559#ifndef GL_NV_representative_fragment_test
3560#define GL_NV_representative_fragment_test 1
3561#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F
3562#endif /* GL_NV_representative_fragment_test */
3563
3564#ifndef GL_NV_sRGB_formats
3565#define GL_NV_sRGB_formats 1
3566#define GL_SLUMINANCE_NV 0x8C46
3567#define GL_SLUMINANCE_ALPHA_NV 0x8C44
3568#define GL_SRGB8_NV 0x8C41
3569#define GL_SLUMINANCE8_NV 0x8C47
3570#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45
3571#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C
3572#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D
3573#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E
3574#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F
3575#define GL_ETC1_SRGB8_NV 0x88EE
3576#endif /* GL_NV_sRGB_formats */
3577
3578#ifndef GL_NV_sample_locations
3579#define GL_NV_sample_locations 1
3580#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D
3581#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E
3582#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F
3583#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340
3584#define GL_SAMPLE_LOCATION_NV 0x8E50
3585#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341
3586#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342
3587#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343
3588typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v);
3589typedef void (GL_APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
3590typedef void (GL_APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void);
3591#ifdef GL_GLEXT_PROTOTYPES
3592GL_APICALL void GL_APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v);
3593GL_APICALL void GL_APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
3594GL_APICALL void GL_APIENTRY glResolveDepthValuesNV (void);
3595#endif
3596#endif /* GL_NV_sample_locations */
3597
3598#ifndef GL_NV_sample_mask_override_coverage
3599#define GL_NV_sample_mask_override_coverage 1
3600#endif /* GL_NV_sample_mask_override_coverage */
3601
3602#ifndef GL_NV_scissor_exclusive
3603#define GL_NV_scissor_exclusive 1
3604#define GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555
3605#define GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556
3606typedef void (GL_APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
3607typedef void (GL_APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v);
3608#ifdef GL_GLEXT_PROTOTYPES
3609GL_APICALL void GL_APIENTRY glScissorExclusiveNV (GLint x, GLint y, GLsizei width, GLsizei height);
3610GL_APICALL void GL_APIENTRY glScissorExclusiveArrayvNV (GLuint first, GLsizei count, const GLint *v);
3611#endif
3612#endif /* GL_NV_scissor_exclusive */
3613
3614#ifndef GL_NV_shader_atomic_fp16_vector
3615#define GL_NV_shader_atomic_fp16_vector 1
3616#endif /* GL_NV_shader_atomic_fp16_vector */
3617
3618#ifndef GL_NV_shader_noperspective_interpolation
3619#define GL_NV_shader_noperspective_interpolation 1
3620#endif /* GL_NV_shader_noperspective_interpolation */
3621
3622#ifndef GL_NV_shader_subgroup_partitioned
3623#define GL_NV_shader_subgroup_partitioned 1
3624#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100
3625#endif /* GL_NV_shader_subgroup_partitioned */
3626
3627#ifndef GL_NV_shader_texture_footprint
3628#define GL_NV_shader_texture_footprint 1
3629#endif /* GL_NV_shader_texture_footprint */
3630
3631#ifndef GL_NV_shading_rate_image
3632#define GL_NV_shading_rate_image 1
3633#define GL_SHADING_RATE_IMAGE_NV 0x9563
3634#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564
3635#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565
3636#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566
3637#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567
3638#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568
3639#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569
3640#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A
3641#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B
3642#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C
3643#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D
3644#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E
3645#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F
3646#define GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B
3647#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C
3648#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D
3649#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E
3650#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F
3651#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE
3652#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF
3653#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0
3654typedef void (GL_APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC) (GLuint texture);
3655typedef void (GL_APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint entry, GLenum *rate);
3656typedef void (GL_APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC) (GLenum rate, GLuint samples, GLuint index, GLint *location);
3657typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC) (GLboolean synchronize);
3658typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates);
3659typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC) (GLenum order);
3660typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC) (GLenum rate, GLuint samples, const GLint *locations);
3661#ifdef GL_GLEXT_PROTOTYPES
3662GL_APICALL void GL_APIENTRY glBindShadingRateImageNV (GLuint texture);
3663GL_APICALL void GL_APIENTRY glGetShadingRateImagePaletteNV (GLuint viewport, GLuint entry, GLenum *rate);
3664GL_APICALL void GL_APIENTRY glGetShadingRateSampleLocationivNV (GLenum rate, GLuint samples, GLuint index, GLint *location);
3665GL_APICALL void GL_APIENTRY glShadingRateImageBarrierNV (GLboolean synchronize);
3666GL_APICALL void GL_APIENTRY glShadingRateImagePaletteNV (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates);
3667GL_APICALL void GL_APIENTRY glShadingRateSampleOrderNV (GLenum order);
3668GL_APICALL void GL_APIENTRY glShadingRateSampleOrderCustomNV (GLenum rate, GLuint samples, const GLint *locations);
3669#endif
3670#endif /* GL_NV_shading_rate_image */
3671
3672#ifndef GL_NV_shadow_samplers_array
3673#define GL_NV_shadow_samplers_array 1
3674#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4
3675#endif /* GL_NV_shadow_samplers_array */
3676
3677#ifndef GL_NV_shadow_samplers_cube
3678#define GL_NV_shadow_samplers_cube 1
3679#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5
3680#endif /* GL_NV_shadow_samplers_cube */
3681
3682#ifndef GL_NV_stereo_view_rendering
3683#define GL_NV_stereo_view_rendering 1
3684#endif /* GL_NV_stereo_view_rendering */
3685
3686#ifndef GL_NV_texture_border_clamp
3687#define GL_NV_texture_border_clamp 1
3688#define GL_TEXTURE_BORDER_COLOR_NV 0x1004
3689#define GL_CLAMP_TO_BORDER_NV 0x812D
3690#endif /* GL_NV_texture_border_clamp */
3691
3692#ifndef GL_NV_texture_compression_s3tc_update
3693#define GL_NV_texture_compression_s3tc_update 1
3694#endif /* GL_NV_texture_compression_s3tc_update */
3695
3696#ifndef GL_NV_texture_npot_2D_mipmap
3697#define GL_NV_texture_npot_2D_mipmap 1
3698#endif /* GL_NV_texture_npot_2D_mipmap */
3699
3700#ifndef GL_NV_timeline_semaphore
3701#define GL_NV_timeline_semaphore 1
3702#define GL_TIMELINE_SEMAPHORE_VALUE_NV 0x9595
3703#define GL_SEMAPHORE_TYPE_NV 0x95B3
3704#define GL_SEMAPHORE_TYPE_BINARY_NV 0x95B4
3705#define GL_SEMAPHORE_TYPE_TIMELINE_NV 0x95B5
3706#define GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6
3707typedef void (GL_APIENTRYP PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint *semaphores);
3708typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint *params);
3709typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint *params);
3710#ifdef GL_GLEXT_PROTOTYPES
3711GL_APICALL void GL_APIENTRY glCreateSemaphoresNV (GLsizei n, GLuint *semaphores);
3712GL_APICALL void GL_APIENTRY glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint *params);
3713GL_APICALL void GL_APIENTRY glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint *params);
3714#endif
3715#endif /* GL_NV_timeline_semaphore */
3716
3717#ifndef GL_NV_viewport_array
3718#define GL_NV_viewport_array 1
3719#define GL_MAX_VIEWPORTS_NV 0x825B
3720#define GL_VIEWPORT_SUBPIXEL_BITS_NV 0x825C
3721#define GL_VIEWPORT_BOUNDS_RANGE_NV 0x825D
3722#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F
3723typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVNVPROC) (GLuint first, GLsizei count, const GLfloat *v);
3724typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
3725typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVNVPROC) (GLuint index, const GLfloat *v);
3726typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v);
3727typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDNVPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
3728typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVNVPROC) (GLuint index, const GLint *v);
3729typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVNVPROC) (GLuint first, GLsizei count, const GLfloat *v);
3730typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFNVPROC) (GLuint index, GLfloat n, GLfloat f);
3731typedef void (GL_APIENTRYP PFNGLGETFLOATI_VNVPROC) (GLenum target, GLuint index, GLfloat *data);
3732typedef void (GL_APIENTRYP PFNGLENABLEINVPROC) (GLenum target, GLuint index);
3733typedef void (GL_APIENTRYP PFNGLDISABLEINVPROC) (GLenum target, GLuint index);
3734typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDINVPROC) (GLenum target, GLuint index);
3735#ifdef GL_GLEXT_PROTOTYPES
3736GL_APICALL void GL_APIENTRY glViewportArrayvNV (GLuint first, GLsizei count, const GLfloat *v);
3737GL_APICALL void GL_APIENTRY glViewportIndexedfNV (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
3738GL_APICALL void GL_APIENTRY glViewportIndexedfvNV (GLuint index, const GLfloat *v);
3739GL_APICALL void GL_APIENTRY glScissorArrayvNV (GLuint first, GLsizei count, const GLint *v);
3740GL_APICALL void GL_APIENTRY glScissorIndexedNV (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
3741GL_APICALL void GL_APIENTRY glScissorIndexedvNV (GLuint index, const GLint *v);
3742GL_APICALL void GL_APIENTRY glDepthRangeArrayfvNV (GLuint first, GLsizei count, const GLfloat *v);
3743GL_APICALL void GL_APIENTRY glDepthRangeIndexedfNV (GLuint index, GLfloat n, GLfloat f);
3744GL_APICALL void GL_APIENTRY glGetFloati_vNV (GLenum target, GLuint index, GLfloat *data);
3745GL_APICALL void GL_APIENTRY glEnableiNV (GLenum target, GLuint index);
3746GL_APICALL void GL_APIENTRY glDisableiNV (GLenum target, GLuint index);
3747GL_APICALL GLboolean GL_APIENTRY glIsEnablediNV (GLenum target, GLuint index);
3748#endif
3749#endif /* GL_NV_viewport_array */
3750
3751#ifndef GL_NV_viewport_array2
3752#define GL_NV_viewport_array2 1
3753#endif /* GL_NV_viewport_array2 */
3754
3755#ifndef GL_NV_viewport_swizzle
3756#define GL_NV_viewport_swizzle 1
3757#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350
3758#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351
3759#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352
3760#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353
3761#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354
3762#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355
3763#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356
3764#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357
3765#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358
3766#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359
3767#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A
3768#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B
3769typedef void (GL_APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
3770#ifdef GL_GLEXT_PROTOTYPES
3771GL_APICALL void GL_APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
3772#endif
3773#endif /* GL_NV_viewport_swizzle */
3774
3775#ifndef GL_OVR_multiview
3776#define GL_OVR_multiview 1
3777#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630
3778#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632
3779#define GL_MAX_VIEWS_OVR 0x9631
3780#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
3781typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
3782#ifdef GL_GLEXT_PROTOTYPES
3783GL_APICALL void GL_APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
3784#endif
3785#endif /* GL_OVR_multiview */
3786
3787#ifndef GL_OVR_multiview2
3788#define GL_OVR_multiview2 1
3789#endif /* GL_OVR_multiview2 */
3790
3791#ifndef GL_OVR_multiview_multisampled_render_to_texture
3792#define GL_OVR_multiview_multisampled_render_to_texture 1
3793typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews);
3794#ifdef GL_GLEXT_PROTOTYPES
3795GL_APICALL void GL_APIENTRY glFramebufferTextureMultisampleMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews);
3796#endif
3797#endif /* GL_OVR_multiview_multisampled_render_to_texture */
3798
3799#ifndef GL_QCOM_YUV_texture_gather
3800#define GL_QCOM_YUV_texture_gather 1
3801#endif /* GL_QCOM_YUV_texture_gather */
3802
3803#ifndef GL_QCOM_alpha_test
3804#define GL_QCOM_alpha_test 1
3805#define GL_ALPHA_TEST_QCOM 0x0BC0
3806#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1
3807#define GL_ALPHA_TEST_REF_QCOM 0x0BC2
3808typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref);
3809#ifdef GL_GLEXT_PROTOTYPES
3810GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref);
3811#endif
3812#endif /* GL_QCOM_alpha_test */
3813
3814#ifndef GL_QCOM_binning_control
3815#define GL_QCOM_binning_control 1
3816#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0
3817#define GL_CPU_OPTIMIZED_QCOM 0x8FB1
3818#define GL_GPU_OPTIMIZED_QCOM 0x8FB2
3819#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3
3820#endif /* GL_QCOM_binning_control */
3821
3822#ifndef GL_QCOM_driver_control
3823#define GL_QCOM_driver_control 1
3824typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls);
3825typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
3826typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
3827typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
3828#ifdef GL_GLEXT_PROTOTYPES
3829GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls);
3830GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
3831GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl);
3832GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl);
3833#endif
3834#endif /* GL_QCOM_driver_control */
3835
3836#ifndef GL_QCOM_extended_get
3837#define GL_QCOM_extended_get 1
3838#define GL_TEXTURE_WIDTH_QCOM 0x8BD2
3839#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3
3840#define GL_TEXTURE_DEPTH_QCOM 0x8BD4
3841#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5
3842#define GL_TEXTURE_FORMAT_QCOM 0x8BD6
3843#define GL_TEXTURE_TYPE_QCOM 0x8BD7
3844#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8
3845#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9
3846#define GL_TEXTURE_TARGET_QCOM 0x8BDA
3847#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB
3848#define GL_STATE_RESTORE 0x8BDC
3849typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures);
3850typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
3851typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
3852typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
3853typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
3854typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param);
3855typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels);
3856typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, void **params);
3857#ifdef GL_GLEXT_PROTOTYPES
3858GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures);
3859GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
3860GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
3861GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
3862GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
3863GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param);
3864GL_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, void *texels);
3865GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, void **params);
3866#endif
3867#endif /* GL_QCOM_extended_get */
3868
3869#ifndef GL_QCOM_extended_get2
3870#define GL_QCOM_extended_get2 1
3871typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders);
3872typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
3873typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program);
3874typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
3875#ifdef GL_GLEXT_PROTOTYPES
3876GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders);
3877GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
3878GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program);
3879GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
3880#endif
3881#endif /* GL_QCOM_extended_get2 */
3882
3883#ifndef GL_QCOM_frame_extrapolation
3884#define GL_QCOM_frame_extrapolation 1
3885typedef void (GL_APIENTRYP PFNGLEXTRAPOLATETEX2DQCOMPROC) (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor);
3886#ifdef GL_GLEXT_PROTOTYPES
3887GL_APICALL void GL_APIENTRY glExtrapolateTex2DQCOM (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor);
3888#endif
3889#endif /* GL_QCOM_frame_extrapolation */
3890
3891#ifndef GL_QCOM_framebuffer_foveated
3892#define GL_QCOM_framebuffer_foveated 1
3893#define GL_FOVEATION_ENABLE_BIT_QCOM 0x00000001
3894#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x00000002
3895typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC) (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures);
3896typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC) (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);
3897#ifdef GL_GLEXT_PROTOTYPES
3898GL_APICALL void GL_APIENTRY glFramebufferFoveationConfigQCOM (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures);
3899GL_APICALL void GL_APIENTRY glFramebufferFoveationParametersQCOM (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);
3900#endif
3901#endif /* GL_QCOM_framebuffer_foveated */
3902
3903#ifndef GL_QCOM_motion_estimation
3904#define GL_QCOM_motion_estimation 1
3905#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM 0x8C90
3906#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM 0x8C91
3907typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONQCOMPROC) (GLuint ref, GLuint target, GLuint output);
3908typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC) (GLuint ref, GLuint target, GLuint output, GLuint mask);
3909#ifdef GL_GLEXT_PROTOTYPES
3910GL_APICALL void GL_APIENTRY glTexEstimateMotionQCOM (GLuint ref, GLuint target, GLuint output);
3911GL_APICALL void GL_APIENTRY glTexEstimateMotionRegionsQCOM (GLuint ref, GLuint target, GLuint output, GLuint mask);
3912#endif
3913#endif /* GL_QCOM_motion_estimation */
3914
3915#ifndef GL_QCOM_perfmon_global_mode
3916#define GL_QCOM_perfmon_global_mode 1
3917#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0
3918#endif /* GL_QCOM_perfmon_global_mode */
3919
3920#ifndef GL_QCOM_render_shared_exponent
3921#define GL_QCOM_render_shared_exponent 1
3922#endif /* GL_QCOM_render_shared_exponent */
3923
3924#ifndef GL_QCOM_shader_framebuffer_fetch_noncoherent
3925#define GL_QCOM_shader_framebuffer_fetch_noncoherent 1
3926#define GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM 0x96A2
3927typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC) (void);
3928#ifdef GL_GLEXT_PROTOTYPES
3929GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierQCOM (void);
3930#endif
3931#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */
3932
3933#ifndef GL_QCOM_shader_framebuffer_fetch_rate
3934#define GL_QCOM_shader_framebuffer_fetch_rate 1
3935#endif /* GL_QCOM_shader_framebuffer_fetch_rate */
3936
3937#ifndef GL_QCOM_shading_rate
3938#define GL_QCOM_shading_rate 1
3939#define GL_SHADING_RATE_QCOM 0x96A4
3940#define GL_SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM 0x96A5
3941#define GL_SHADING_RATE_1X1_PIXELS_QCOM 0x96A6
3942#define GL_SHADING_RATE_1X2_PIXELS_QCOM 0x96A7
3943#define GL_SHADING_RATE_2X1_PIXELS_QCOM 0x96A8
3944#define GL_SHADING_RATE_2X2_PIXELS_QCOM 0x96A9
3945#define GL_SHADING_RATE_4X2_PIXELS_QCOM 0x96AC
3946#define GL_SHADING_RATE_4X4_PIXELS_QCOM 0x96AE
3947typedef void (GL_APIENTRYP PFNGLSHADINGRATEQCOMPROC) (GLenum rate);
3948#ifdef GL_GLEXT_PROTOTYPES
3949GL_APICALL void GL_APIENTRY glShadingRateQCOM (GLenum rate);
3950#endif
3951#endif /* GL_QCOM_shading_rate */
3952
3953#ifndef GL_QCOM_texture_foveated
3954#define GL_QCOM_texture_foveated 1
3955#define GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM 0x8BFB
3956#define GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM 0x8BFC
3957#define GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM 0x8BFD
3958#define GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM 0x8BFE
3959#define GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM 0x8BFF
3960typedef void (GL_APIENTRYP PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC) (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);
3961#ifdef GL_GLEXT_PROTOTYPES
3962GL_APICALL void GL_APIENTRY glTextureFoveationParametersQCOM (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);
3963#endif
3964#endif /* GL_QCOM_texture_foveated */
3965
3966#ifndef GL_QCOM_texture_foveated2
3967#define GL_QCOM_texture_foveated2 1
3968#define GL_TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM 0x96A0
3969#endif /* GL_QCOM_texture_foveated2 */
3970
3971#ifndef GL_QCOM_texture_foveated_subsampled_layout
3972#define GL_QCOM_texture_foveated_subsampled_layout 1
3973#define GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM 0x00000004
3974#define GL_MAX_SHADER_SUBSAMPLED_IMAGE_UNITS_QCOM 0x8FA1
3975#endif /* GL_QCOM_texture_foveated_subsampled_layout */
3976
3977#ifndef GL_QCOM_tiled_rendering
3978#define GL_QCOM_tiled_rendering 1
3979#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001
3980#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002
3981#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004
3982#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008
3983#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010
3984#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020
3985#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040
3986#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080
3987#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100
3988#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200
3989#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400
3990#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800
3991#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000
3992#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000
3993#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000
3994#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000
3995#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000
3996#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000
3997#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000
3998#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000
3999#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000
4000#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000
4001#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000
4002#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000
4003#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000
4004#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000
4005#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000
4006#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000
4007#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000
4008#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000
4009#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000
4010#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000
4011typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
4012typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask);
4013#ifdef GL_GLEXT_PROTOTYPES
4014GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
4015GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask);
4016#endif
4017#endif /* GL_QCOM_tiled_rendering */
4018
4019#ifndef GL_QCOM_writeonly_rendering
4020#define GL_QCOM_writeonly_rendering 1
4021#define GL_WRITEONLY_RENDERING_QCOM 0x8823
4022#endif /* GL_QCOM_writeonly_rendering */
4023
4024#ifndef GL_VIV_shader_binary
4025#define GL_VIV_shader_binary 1
4026#define GL_SHADER_BINARY_VIV 0x8FC4
4027#endif /* GL_VIV_shader_binary */
4028
4029#ifdef __cplusplus
4030}
4031#endif
4032
4033#endif
diff --git a/src/contrib/SDL-2.30.2/include/SDL_opengles2_gl2platform.h b/src/contrib/SDL-2.30.2/include/SDL_opengles2_gl2platform.h
new file mode 100644
index 0000000..426796e
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_opengles2_gl2platform.h
@@ -0,0 +1,27 @@
1#ifndef __gl2platform_h_
2#define __gl2platform_h_
3
4/*
5** Copyright 2017-2020 The Khronos Group Inc.
6** SPDX-License-Identifier: Apache-2.0
7*/
8
9/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h
10 *
11 * Adopters may modify khrplatform.h and this file to suit their platform.
12 * Please contribute modifications back to Khronos as pull requests on the
13 * public github repository:
14 * https://github.com/KhronosGroup/OpenGL-Registry
15 */
16
17/*#include <KHR/khrplatform.h>*/
18
19#ifndef GL_APICALL
20#define GL_APICALL KHRONOS_APICALL
21#endif
22
23#ifndef GL_APIENTRY
24#define GL_APIENTRY KHRONOS_APIENTRY
25#endif
26
27#endif /* __gl2platform_h_ */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_opengles2_khrplatform.h b/src/contrib/SDL-2.30.2/include/SDL_opengles2_khrplatform.h
new file mode 100644
index 0000000..0164644
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_opengles2_khrplatform.h
@@ -0,0 +1,311 @@
1#ifndef __khrplatform_h_
2#define __khrplatform_h_
3
4/*
5** Copyright (c) 2008-2018 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 * The master copy of khrplatform.h is maintained in the Khronos EGL
30 * Registry repository at https://github.com/KhronosGroup/EGL-Registry
31 * The last semantic modification to khrplatform.h was at commit ID:
32 * 67a3e0864c2d75ea5287b9f3d2eb74a745936692
33 *
34 * Adopters may modify this file to suit their platform. Adopters are
35 * encouraged to submit platform specific modifications to the Khronos
36 * group so that they can be included in future versions of this file.
37 * Please submit changes by filing pull requests or issues on
38 * the EGL Registry repository linked above.
39 *
40 *
41 * See the Implementer's Guidelines for information about where this file
42 * should be located on your system and for more details of its use:
43 * http://www.khronos.org/registry/implementers_guide.pdf
44 *
45 * This file should be included as
46 * #include <KHR/khrplatform.h>
47 * by Khronos client API header files that use its types and defines.
48 *
49 * The types in khrplatform.h should only be used to define API-specific types.
50 *
51 * Types defined in khrplatform.h:
52 * khronos_int8_t signed 8 bit
53 * khronos_uint8_t unsigned 8 bit
54 * khronos_int16_t signed 16 bit
55 * khronos_uint16_t unsigned 16 bit
56 * khronos_int32_t signed 32 bit
57 * khronos_uint32_t unsigned 32 bit
58 * khronos_int64_t signed 64 bit
59 * khronos_uint64_t unsigned 64 bit
60 * khronos_intptr_t signed same number of bits as a pointer
61 * khronos_uintptr_t unsigned same number of bits as a pointer
62 * khronos_ssize_t signed size
63 * khronos_usize_t unsigned size
64 * khronos_float_t signed 32 bit floating point
65 * khronos_time_ns_t unsigned 64 bit time in nanoseconds
66 * khronos_utime_nanoseconds_t unsigned time interval or absolute time in
67 * nanoseconds
68 * khronos_stime_nanoseconds_t signed time interval in nanoseconds
69 * khronos_boolean_enum_t enumerated boolean type. This should
70 * only be used as a base type when a client API's boolean type is
71 * an enum. Client APIs which use an integer or other type for
72 * booleans cannot use this as the base type for their boolean.
73 *
74 * Tokens defined in khrplatform.h:
75 *
76 * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
77 *
78 * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
79 * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
80 *
81 * Calling convention macros defined in this file:
82 * KHRONOS_APICALL
83 * KHRONOS_APIENTRY
84 * KHRONOS_APIATTRIBUTES
85 *
86 * These may be used in function prototypes as:
87 *
88 * KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
89 * int arg1,
90 * int arg2) KHRONOS_APIATTRIBUTES;
91 */
92
93#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)
94# define KHRONOS_STATIC 1
95#endif
96
97/*-------------------------------------------------------------------------
98 * Definition of KHRONOS_APICALL
99 *-------------------------------------------------------------------------
100 * This precedes the return type of the function in the function prototype.
101 */
102#if defined(KHRONOS_STATIC)
103 /* If the preprocessor constant KHRONOS_STATIC is defined, make the
104 * header compatible with static linking. */
105# define KHRONOS_APICALL
106#elif defined(_WIN32)
107# define KHRONOS_APICALL __declspec(dllimport)
108#elif defined (__SYMBIAN32__)
109# define KHRONOS_APICALL IMPORT_C
110#elif defined(__ANDROID__)
111# define KHRONOS_APICALL __attribute__((visibility("default")))
112#else
113# define KHRONOS_APICALL
114#endif
115
116/*-------------------------------------------------------------------------
117 * Definition of KHRONOS_APIENTRY
118 *-------------------------------------------------------------------------
119 * This follows the return type of the function and precedes the function
120 * name in the function prototype.
121 */
122#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
123 /* Win32 but not WinCE */
124# define KHRONOS_APIENTRY __stdcall
125#else
126# define KHRONOS_APIENTRY
127#endif
128
129/*-------------------------------------------------------------------------
130 * Definition of KHRONOS_APIATTRIBUTES
131 *-------------------------------------------------------------------------
132 * This follows the closing parenthesis of the function prototype arguments.
133 */
134#if defined (__ARMCC_2__)
135#define KHRONOS_APIATTRIBUTES __softfp
136#else
137#define KHRONOS_APIATTRIBUTES
138#endif
139
140/*-------------------------------------------------------------------------
141 * basic type definitions
142 *-----------------------------------------------------------------------*/
143#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
144
145
146/*
147 * Using <stdint.h>
148 */
149#include <stdint.h>
150typedef int32_t khronos_int32_t;
151typedef uint32_t khronos_uint32_t;
152typedef int64_t khronos_int64_t;
153typedef uint64_t khronos_uint64_t;
154#define KHRONOS_SUPPORT_INT64 1
155#define KHRONOS_SUPPORT_FLOAT 1
156/*
157 * To support platform where unsigned long cannot be used interchangeably with
158 * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.
159 * Ideally, we could just use (u)intptr_t everywhere, but this could result in
160 * ABI breakage if khronos_uintptr_t is changed from unsigned long to
161 * unsigned long long or similar (this results in different C++ name mangling).
162 * To avoid changes for existing platforms, we restrict usage of intptr_t to
163 * platforms where the size of a pointer is larger than the size of long.
164 */
165#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)
166#if __SIZEOF_POINTER__ > __SIZEOF_LONG__
167#define KHRONOS_USE_INTPTR_T
168#endif
169#endif
170
171#elif defined(__VMS ) || defined(__sgi)
172
173/*
174 * Using <inttypes.h>
175 */
176#include <inttypes.h>
177typedef int32_t khronos_int32_t;
178typedef uint32_t khronos_uint32_t;
179typedef int64_t khronos_int64_t;
180typedef uint64_t khronos_uint64_t;
181#define KHRONOS_SUPPORT_INT64 1
182#define KHRONOS_SUPPORT_FLOAT 1
183
184#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
185
186/*
187 * Win32
188 */
189typedef __int32 khronos_int32_t;
190typedef unsigned __int32 khronos_uint32_t;
191typedef __int64 khronos_int64_t;
192typedef unsigned __int64 khronos_uint64_t;
193#define KHRONOS_SUPPORT_INT64 1
194#define KHRONOS_SUPPORT_FLOAT 1
195
196#elif defined(__sun__) || defined(__digital__)
197
198/*
199 * Sun or Digital
200 */
201typedef int khronos_int32_t;
202typedef unsigned int khronos_uint32_t;
203#if defined(__arch64__) || defined(_LP64)
204typedef long int khronos_int64_t;
205typedef unsigned long int khronos_uint64_t;
206#else
207typedef long long int khronos_int64_t;
208typedef unsigned long long int khronos_uint64_t;
209#endif /* __arch64__ */
210#define KHRONOS_SUPPORT_INT64 1
211#define KHRONOS_SUPPORT_FLOAT 1
212
213#elif 0
214
215/*
216 * Hypothetical platform with no float or int64 support
217 */
218typedef int khronos_int32_t;
219typedef unsigned int khronos_uint32_t;
220#define KHRONOS_SUPPORT_INT64 0
221#define KHRONOS_SUPPORT_FLOAT 0
222
223#else
224
225/*
226 * Generic fallback
227 */
228#include <stdint.h>
229typedef int32_t khronos_int32_t;
230typedef uint32_t khronos_uint32_t;
231typedef int64_t khronos_int64_t;
232typedef uint64_t khronos_uint64_t;
233#define KHRONOS_SUPPORT_INT64 1
234#define KHRONOS_SUPPORT_FLOAT 1
235
236#endif
237
238
239/*
240 * Types that are (so far) the same on all platforms
241 */
242typedef signed char khronos_int8_t;
243typedef unsigned char khronos_uint8_t;
244typedef signed short int khronos_int16_t;
245typedef unsigned short int khronos_uint16_t;
246
247/*
248 * Types that differ between LLP64 and LP64 architectures - in LLP64,
249 * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
250 * to be the only LLP64 architecture in current use.
251 */
252#ifdef KHRONOS_USE_INTPTR_T
253typedef intptr_t khronos_intptr_t;
254typedef uintptr_t khronos_uintptr_t;
255#elif defined(_WIN64)
256typedef signed long long int khronos_intptr_t;
257typedef unsigned long long int khronos_uintptr_t;
258#else
259typedef signed long int khronos_intptr_t;
260typedef unsigned long int khronos_uintptr_t;
261#endif
262
263#if defined(_WIN64)
264typedef signed long long int khronos_ssize_t;
265typedef unsigned long long int khronos_usize_t;
266#else
267typedef signed long int khronos_ssize_t;
268typedef unsigned long int khronos_usize_t;
269#endif
270
271#if KHRONOS_SUPPORT_FLOAT
272/*
273 * Float type
274 */
275typedef float khronos_float_t;
276#endif
277
278#if KHRONOS_SUPPORT_INT64
279/* Time types
280 *
281 * These types can be used to represent a time interval in nanoseconds or
282 * an absolute Unadjusted System Time. Unadjusted System Time is the number
283 * of nanoseconds since some arbitrary system event (e.g. since the last
284 * time the system booted). The Unadjusted System Time is an unsigned
285 * 64 bit value that wraps back to 0 every 584 years. Time intervals
286 * may be either signed or unsigned.
287 */
288typedef khronos_uint64_t khronos_utime_nanoseconds_t;
289typedef khronos_int64_t khronos_stime_nanoseconds_t;
290#endif
291
292/*
293 * Dummy value used to pad enum types to 32 bits.
294 */
295#ifndef KHRONOS_MAX_ENUM
296#define KHRONOS_MAX_ENUM 0x7FFFFFFF
297#endif
298
299/*
300 * Enumerated boolean type
301 *
302 * Values other than zero should be considered to be true. Therefore
303 * comparisons should not be made against KHRONOS_TRUE.
304 */
305typedef enum {
306 KHRONOS_FALSE = 0,
307 KHRONOS_TRUE = 1,
308 KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
309} khronos_boolean_enum_t;
310
311#endif /* __khrplatform_h_ */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_pixels.h b/src/contrib/SDL-2.30.2/include/SDL_pixels.h
new file mode 100644
index 0000000..44757cd
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_pixels.h
@@ -0,0 +1,662 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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
66 /* This must be at the end of the list to avoid breaking the existing ABI */
67 SDL_PIXELTYPE_INDEX2
68} SDL_PixelType;
69
70/** Bitmap pixel order, high bit -> low bit. */
71typedef enum
72{
73 SDL_BITMAPORDER_NONE,
74 SDL_BITMAPORDER_4321,
75 SDL_BITMAPORDER_1234
76} SDL_BitmapOrder;
77
78/** Packed component order, high bit -> low bit. */
79typedef enum
80{
81 SDL_PACKEDORDER_NONE,
82 SDL_PACKEDORDER_XRGB,
83 SDL_PACKEDORDER_RGBX,
84 SDL_PACKEDORDER_ARGB,
85 SDL_PACKEDORDER_RGBA,
86 SDL_PACKEDORDER_XBGR,
87 SDL_PACKEDORDER_BGRX,
88 SDL_PACKEDORDER_ABGR,
89 SDL_PACKEDORDER_BGRA
90} SDL_PackedOrder;
91
92/** Array component order, low byte -> high byte. */
93/* !!! FIXME: in 2.1, make these not overlap differently with
94 !!! FIXME: SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */
95typedef enum
96{
97 SDL_ARRAYORDER_NONE,
98 SDL_ARRAYORDER_RGB,
99 SDL_ARRAYORDER_RGBA,
100 SDL_ARRAYORDER_ARGB,
101 SDL_ARRAYORDER_BGR,
102 SDL_ARRAYORDER_BGRA,
103 SDL_ARRAYORDER_ABGR
104} SDL_ArrayOrder;
105
106/** Packed component layout. */
107typedef enum
108{
109 SDL_PACKEDLAYOUT_NONE,
110 SDL_PACKEDLAYOUT_332,
111 SDL_PACKEDLAYOUT_4444,
112 SDL_PACKEDLAYOUT_1555,
113 SDL_PACKEDLAYOUT_5551,
114 SDL_PACKEDLAYOUT_565,
115 SDL_PACKEDLAYOUT_8888,
116 SDL_PACKEDLAYOUT_2101010,
117 SDL_PACKEDLAYOUT_1010102
118} SDL_PackedLayout;
119
120#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D)
121
122#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \
123 ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \
124 ((bits) << 8) | ((bytes) << 0))
125
126#define SDL_PIXELFLAG(X) (((X) >> 28) & 0x0F)
127#define SDL_PIXELTYPE(X) (((X) >> 24) & 0x0F)
128#define SDL_PIXELORDER(X) (((X) >> 20) & 0x0F)
129#define SDL_PIXELLAYOUT(X) (((X) >> 16) & 0x0F)
130#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF)
131#define SDL_BYTESPERPIXEL(X) \
132 (SDL_ISPIXELFORMAT_FOURCC(X) ? \
133 ((((X) == SDL_PIXELFORMAT_YUY2) || \
134 ((X) == SDL_PIXELFORMAT_UYVY) || \
135 ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF))
136
137#define SDL_ISPIXELFORMAT_INDEXED(format) \
138 (!SDL_ISPIXELFORMAT_FOURCC(format) && \
139 ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \
140 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX2) || \
141 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \
142 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8)))
143
144#define SDL_ISPIXELFORMAT_PACKED(format) \
145 (!SDL_ISPIXELFORMAT_FOURCC(format) && \
146 ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \
147 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \
148 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32)))
149
150#define SDL_ISPIXELFORMAT_ARRAY(format) \
151 (!SDL_ISPIXELFORMAT_FOURCC(format) && \
152 ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \
153 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \
154 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \
155 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \
156 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32)))
157
158#define SDL_ISPIXELFORMAT_ALPHA(format) \
159 ((SDL_ISPIXELFORMAT_PACKED(format) && \
160 ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \
161 (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \
162 (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \
163 (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \
164 (SDL_ISPIXELFORMAT_ARRAY(format) && \
165 ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \
166 (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \
167 (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \
168 (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA))))
169
170/* The flag is set to 1 because 0x1? is not in the printable ASCII range */
171#define SDL_ISPIXELFORMAT_FOURCC(format) \
172 ((format) && (SDL_PIXELFLAG(format) != 1))
173
174/* Note: If you modify this list, update SDL_GetPixelFormatName() */
175typedef enum
176{
177 SDL_PIXELFORMAT_UNKNOWN,
178 SDL_PIXELFORMAT_INDEX1LSB =
179 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0,
180 1, 0),
181 SDL_PIXELFORMAT_INDEX1MSB =
182 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0,
183 1, 0),
184 SDL_PIXELFORMAT_INDEX2LSB =
185 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX2, SDL_BITMAPORDER_4321, 0,
186 2, 0),
187 SDL_PIXELFORMAT_INDEX2MSB =
188 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX2, SDL_BITMAPORDER_1234, 0,
189 2, 0),
190 SDL_PIXELFORMAT_INDEX4LSB =
191 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0,
192 4, 0),
193 SDL_PIXELFORMAT_INDEX4MSB =
194 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0,
195 4, 0),
196 SDL_PIXELFORMAT_INDEX8 =
197 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1),
198 SDL_PIXELFORMAT_RGB332 =
199 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB,
200 SDL_PACKEDLAYOUT_332, 8, 1),
201 SDL_PIXELFORMAT_XRGB4444 =
202 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
203 SDL_PACKEDLAYOUT_4444, 12, 2),
204 SDL_PIXELFORMAT_RGB444 = SDL_PIXELFORMAT_XRGB4444,
205 SDL_PIXELFORMAT_XBGR4444 =
206 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
207 SDL_PACKEDLAYOUT_4444, 12, 2),
208 SDL_PIXELFORMAT_BGR444 = SDL_PIXELFORMAT_XBGR4444,
209 SDL_PIXELFORMAT_XRGB1555 =
210 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
211 SDL_PACKEDLAYOUT_1555, 15, 2),
212 SDL_PIXELFORMAT_RGB555 = SDL_PIXELFORMAT_XRGB1555,
213 SDL_PIXELFORMAT_XBGR1555 =
214 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
215 SDL_PACKEDLAYOUT_1555, 15, 2),
216 SDL_PIXELFORMAT_BGR555 = SDL_PIXELFORMAT_XBGR1555,
217 SDL_PIXELFORMAT_ARGB4444 =
218 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
219 SDL_PACKEDLAYOUT_4444, 16, 2),
220 SDL_PIXELFORMAT_RGBA4444 =
221 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
222 SDL_PACKEDLAYOUT_4444, 16, 2),
223 SDL_PIXELFORMAT_ABGR4444 =
224 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
225 SDL_PACKEDLAYOUT_4444, 16, 2),
226 SDL_PIXELFORMAT_BGRA4444 =
227 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
228 SDL_PACKEDLAYOUT_4444, 16, 2),
229 SDL_PIXELFORMAT_ARGB1555 =
230 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
231 SDL_PACKEDLAYOUT_1555, 16, 2),
232 SDL_PIXELFORMAT_RGBA5551 =
233 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
234 SDL_PACKEDLAYOUT_5551, 16, 2),
235 SDL_PIXELFORMAT_ABGR1555 =
236 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
237 SDL_PACKEDLAYOUT_1555, 16, 2),
238 SDL_PIXELFORMAT_BGRA5551 =
239 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
240 SDL_PACKEDLAYOUT_5551, 16, 2),
241 SDL_PIXELFORMAT_RGB565 =
242 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
243 SDL_PACKEDLAYOUT_565, 16, 2),
244 SDL_PIXELFORMAT_BGR565 =
245 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
246 SDL_PACKEDLAYOUT_565, 16, 2),
247 SDL_PIXELFORMAT_RGB24 =
248 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0,
249 24, 3),
250 SDL_PIXELFORMAT_BGR24 =
251 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0,
252 24, 3),
253 SDL_PIXELFORMAT_XRGB8888 =
254 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB,
255 SDL_PACKEDLAYOUT_8888, 24, 4),
256 SDL_PIXELFORMAT_RGB888 = SDL_PIXELFORMAT_XRGB8888,
257 SDL_PIXELFORMAT_RGBX8888 =
258 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX,
259 SDL_PACKEDLAYOUT_8888, 24, 4),
260 SDL_PIXELFORMAT_XBGR8888 =
261 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR,
262 SDL_PACKEDLAYOUT_8888, 24, 4),
263 SDL_PIXELFORMAT_BGR888 = SDL_PIXELFORMAT_XBGR8888,
264 SDL_PIXELFORMAT_BGRX8888 =
265 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX,
266 SDL_PACKEDLAYOUT_8888, 24, 4),
267 SDL_PIXELFORMAT_ARGB8888 =
268 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
269 SDL_PACKEDLAYOUT_8888, 32, 4),
270 SDL_PIXELFORMAT_RGBA8888 =
271 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA,
272 SDL_PACKEDLAYOUT_8888, 32, 4),
273 SDL_PIXELFORMAT_ABGR8888 =
274 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR,
275 SDL_PACKEDLAYOUT_8888, 32, 4),
276 SDL_PIXELFORMAT_BGRA8888 =
277 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA,
278 SDL_PACKEDLAYOUT_8888, 32, 4),
279 SDL_PIXELFORMAT_ARGB2101010 =
280 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
281 SDL_PACKEDLAYOUT_2101010, 32, 4),
282
283 /* Aliases for RGBA byte arrays of color data, for the current platform */
284#if SDL_BYTEORDER == SDL_BIG_ENDIAN
285 SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888,
286 SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888,
287 SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888,
288 SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888,
289 SDL_PIXELFORMAT_RGBX32 = SDL_PIXELFORMAT_RGBX8888,
290 SDL_PIXELFORMAT_XRGB32 = SDL_PIXELFORMAT_XRGB8888,
291 SDL_PIXELFORMAT_BGRX32 = SDL_PIXELFORMAT_BGRX8888,
292 SDL_PIXELFORMAT_XBGR32 = SDL_PIXELFORMAT_XBGR8888,
293#else
294 SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888,
295 SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888,
296 SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888,
297 SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888,
298 SDL_PIXELFORMAT_RGBX32 = SDL_PIXELFORMAT_XBGR8888,
299 SDL_PIXELFORMAT_XRGB32 = SDL_PIXELFORMAT_BGRX8888,
300 SDL_PIXELFORMAT_BGRX32 = SDL_PIXELFORMAT_XRGB8888,
301 SDL_PIXELFORMAT_XBGR32 = SDL_PIXELFORMAT_RGBX8888,
302#endif
303
304 SDL_PIXELFORMAT_YV12 = /**< Planar mode: Y + V + U (3 planes) */
305 SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'),
306 SDL_PIXELFORMAT_IYUV = /**< Planar mode: Y + U + V (3 planes) */
307 SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'),
308 SDL_PIXELFORMAT_YUY2 = /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */
309 SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'),
310 SDL_PIXELFORMAT_UYVY = /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */
311 SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'),
312 SDL_PIXELFORMAT_YVYU = /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */
313 SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'),
314 SDL_PIXELFORMAT_NV12 = /**< Planar mode: Y + U/V interleaved (2 planes) */
315 SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'),
316 SDL_PIXELFORMAT_NV21 = /**< Planar mode: Y + V/U interleaved (2 planes) */
317 SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'),
318 SDL_PIXELFORMAT_EXTERNAL_OES = /**< Android video texture format */
319 SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ')
320} SDL_PixelFormatEnum;
321
322/**
323 * The bits of this structure can be directly reinterpreted as an integer-packed
324 * color which uses the SDL_PIXELFORMAT_RGBA32 format (SDL_PIXELFORMAT_ABGR8888
325 * on little-endian systems and SDL_PIXELFORMAT_RGBA8888 on big-endian systems).
326 */
327typedef struct SDL_Color
328{
329 Uint8 r;
330 Uint8 g;
331 Uint8 b;
332 Uint8 a;
333} SDL_Color;
334#define SDL_Colour SDL_Color
335
336typedef struct SDL_Palette
337{
338 int ncolors;
339 SDL_Color *colors;
340 Uint32 version;
341 int refcount;
342} SDL_Palette;
343
344/**
345 * \note Everything in the pixel format structure is read-only.
346 */
347typedef struct SDL_PixelFormat
348{
349 Uint32 format;
350 SDL_Palette *palette;
351 Uint8 BitsPerPixel;
352 Uint8 BytesPerPixel;
353 Uint8 padding[2];
354 Uint32 Rmask;
355 Uint32 Gmask;
356 Uint32 Bmask;
357 Uint32 Amask;
358 Uint8 Rloss;
359 Uint8 Gloss;
360 Uint8 Bloss;
361 Uint8 Aloss;
362 Uint8 Rshift;
363 Uint8 Gshift;
364 Uint8 Bshift;
365 Uint8 Ashift;
366 int refcount;
367 struct SDL_PixelFormat *next;
368} SDL_PixelFormat;
369
370/**
371 * Get the human readable name of a pixel format.
372 *
373 * \param format the pixel format to query
374 * \returns the human readable name of the specified pixel format or
375 * `SDL_PIXELFORMAT_UNKNOWN` if the format isn't recognized.
376 *
377 * \since This function is available since SDL 2.0.0.
378 */
379extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format);
380
381/**
382 * Convert one of the enumerated pixel formats to a bpp value and RGBA masks.
383 *
384 * \param format one of the SDL_PixelFormatEnum values
385 * \param bpp a bits per pixel value; usually 15, 16, or 32
386 * \param Rmask a pointer filled in with the red mask for the format
387 * \param Gmask a pointer filled in with the green mask for the format
388 * \param Bmask a pointer filled in with the blue mask for the format
389 * \param Amask a pointer filled in with the alpha mask for the format
390 * \returns SDL_TRUE on success or SDL_FALSE if the conversion wasn't
391 * possible; call SDL_GetError() for more information.
392 *
393 * \since This function is available since SDL 2.0.0.
394 *
395 * \sa SDL_MasksToPixelFormatEnum
396 */
397extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format,
398 int *bpp,
399 Uint32 * Rmask,
400 Uint32 * Gmask,
401 Uint32 * Bmask,
402 Uint32 * Amask);
403
404/**
405 * Convert a bpp value and RGBA masks to an enumerated pixel format.
406 *
407 * This will return `SDL_PIXELFORMAT_UNKNOWN` if the conversion wasn't
408 * possible.
409 *
410 * \param bpp a bits per pixel value; usually 15, 16, or 32
411 * \param Rmask the red mask for the format
412 * \param Gmask the green mask for the format
413 * \param Bmask the blue mask for the format
414 * \param Amask the alpha mask for the format
415 * \returns one of the SDL_PixelFormatEnum values
416 *
417 * \since This function is available since SDL 2.0.0.
418 *
419 * \sa SDL_PixelFormatEnumToMasks
420 */
421extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp,
422 Uint32 Rmask,
423 Uint32 Gmask,
424 Uint32 Bmask,
425 Uint32 Amask);
426
427/**
428 * Create an SDL_PixelFormat structure corresponding to a pixel format.
429 *
430 * Returned structure may come from a shared global cache (i.e. not newly
431 * allocated), and hence should not be modified, especially the palette. Weird
432 * errors such as `Blit combination not supported` may occur.
433 *
434 * \param pixel_format one of the SDL_PixelFormatEnum values
435 * \returns the new SDL_PixelFormat structure or NULL 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_FreeFormat
441 */
442extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format);
443
444/**
445 * Free an SDL_PixelFormat structure allocated by SDL_AllocFormat().
446 *
447 * \param format the SDL_PixelFormat structure to free
448 *
449 * \since This function is available since SDL 2.0.0.
450 *
451 * \sa SDL_AllocFormat
452 */
453extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format);
454
455/**
456 * Create a palette structure with the specified number of color entries.
457 *
458 * The palette entries are initialized to white.
459 *
460 * \param ncolors represents the number of color entries in the color palette
461 * \returns a new SDL_Palette structure on success or NULL on failure (e.g. if
462 * there wasn't enough memory); call SDL_GetError() for more
463 * information.
464 *
465 * \since This function is available since SDL 2.0.0.
466 *
467 * \sa SDL_FreePalette
468 */
469extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors);
470
471/**
472 * Set the palette for a pixel format structure.
473 *
474 * \param format the SDL_PixelFormat structure that will use the palette
475 * \param palette the SDL_Palette structure that will be used
476 * \returns 0 on success or a negative error code on failure; call
477 * 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_FreePalette
483 */
484extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format,
485 SDL_Palette *palette);
486
487/**
488 * Set a range of colors in a palette.
489 *
490 * \param palette the SDL_Palette structure to modify
491 * \param colors an array of SDL_Color structures to copy into the palette
492 * \param firstcolor the index of the first palette entry to modify
493 * \param ncolors the number of entries to modify
494 * \returns 0 on success or a negative error code if not all of the colors
495 * could be set; call SDL_GetError() for more information.
496 *
497 * \since This function is available since SDL 2.0.0.
498 *
499 * \sa SDL_AllocPalette
500 * \sa SDL_CreateRGBSurface
501 */
502extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette,
503 const SDL_Color * colors,
504 int firstcolor, int ncolors);
505
506/**
507 * Free a palette created with SDL_AllocPalette().
508 *
509 * \param palette the SDL_Palette structure to be freed
510 *
511 * \since This function is available since SDL 2.0.0.
512 *
513 * \sa SDL_AllocPalette
514 */
515extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette);
516
517/**
518 * Map an RGB triple to an opaque pixel value for a given pixel format.
519 *
520 * This function maps the RGB color value to the specified pixel format and
521 * returns the pixel value best approximating the given RGB color value for
522 * the given pixel format.
523 *
524 * If the format has a palette (8-bit) the index of the closest matching color
525 * in the palette will be returned.
526 *
527 * If the specified pixel format has an alpha component it will be returned as
528 * all 1 bits (fully opaque).
529 *
530 * If the pixel format bpp (color depth) is less than 32-bpp then the unused
531 * upper bits of the return value can safely be ignored (e.g., with a 16-bpp
532 * format the return value can be assigned to a Uint16, and similarly a Uint8
533 * for an 8-bpp format).
534 *
535 * \param format an SDL_PixelFormat structure describing the pixel format
536 * \param r the red component of the pixel in the range 0-255
537 * \param g the green component of the pixel in the range 0-255
538 * \param b the blue component of the pixel in the range 0-255
539 * \returns a pixel value
540 *
541 * \since This function is available since SDL 2.0.0.
542 *
543 * \sa SDL_GetRGB
544 * \sa SDL_GetRGBA
545 * \sa SDL_MapRGBA
546 */
547extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format,
548 Uint8 r, Uint8 g, Uint8 b);
549
550/**
551 * Map an RGBA quadruple to a pixel value for a given pixel format.
552 *
553 * This function maps the RGBA color value to the specified pixel format and
554 * returns the pixel value best approximating the given RGBA color value for
555 * the given pixel format.
556 *
557 * If the specified pixel format has no alpha component the alpha value will
558 * be ignored (as it will be in formats with a palette).
559 *
560 * If the format has a palette (8-bit) the index of the closest matching color
561 * in the palette will be returned.
562 *
563 * If the pixel format bpp (color depth) is less than 32-bpp then the unused
564 * upper bits of the return value can safely be ignored (e.g., with a 16-bpp
565 * format the return value can be assigned to a Uint16, and similarly a Uint8
566 * for an 8-bpp format).
567 *
568 * \param format an SDL_PixelFormat structure describing the format of the
569 * pixel
570 * \param r the red component of the pixel in the range 0-255
571 * \param g the green component of the pixel in the range 0-255
572 * \param b the blue component of the pixel in the range 0-255
573 * \param a the alpha component of the pixel in the range 0-255
574 * \returns a pixel value
575 *
576 * \since This function is available since SDL 2.0.0.
577 *
578 * \sa SDL_GetRGB
579 * \sa SDL_GetRGBA
580 * \sa SDL_MapRGB
581 */
582extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format,
583 Uint8 r, Uint8 g, Uint8 b,
584 Uint8 a);
585
586/**
587 * Get RGB values from a pixel in the specified format.
588 *
589 * This function uses the entire 8-bit [0..255] range when converting color
590 * components from pixel formats with less than 8-bits per RGB component
591 * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff,
592 * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]).
593 *
594 * \param pixel a pixel value
595 * \param format an SDL_PixelFormat structure describing the format of the
596 * pixel
597 * \param r a pointer filled in with the red component
598 * \param g a pointer filled in with the green component
599 * \param b a pointer filled in with the blue component
600 *
601 * \since This function is available since SDL 2.0.0.
602 *
603 * \sa SDL_GetRGBA
604 * \sa SDL_MapRGB
605 * \sa SDL_MapRGBA
606 */
607extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel,
608 const SDL_PixelFormat * format,
609 Uint8 * r, Uint8 * g, Uint8 * b);
610
611/**
612 * Get RGBA values from a pixel in the specified format.
613 *
614 * This function uses the entire 8-bit [0..255] range when converting color
615 * components from pixel formats with less than 8-bits per RGB component
616 * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff,
617 * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]).
618 *
619 * If the surface has no alpha component, the alpha will be returned as 0xff
620 * (100% opaque).
621 *
622 * \param pixel a pixel value
623 * \param format an SDL_PixelFormat structure describing the format of the
624 * pixel
625 * \param r a pointer filled in with the red component
626 * \param g a pointer filled in with the green component
627 * \param b a pointer filled in with the blue component
628 * \param a a pointer filled in with the alpha component
629 *
630 * \since This function is available since SDL 2.0.0.
631 *
632 * \sa SDL_GetRGB
633 * \sa SDL_MapRGB
634 * \sa SDL_MapRGBA
635 */
636extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel,
637 const SDL_PixelFormat * format,
638 Uint8 * r, Uint8 * g, Uint8 * b,
639 Uint8 * a);
640
641/**
642 * Calculate a 256 entry gamma ramp for a gamma value.
643 *
644 * \param gamma a gamma value where 0.0 is black and 1.0 is identity
645 * \param ramp an array of 256 values filled in with the gamma ramp
646 *
647 * \since This function is available since SDL 2.0.0.
648 *
649 * \sa SDL_SetWindowGammaRamp
650 */
651extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp);
652
653
654/* Ends C function definitions when using C++ */
655#ifdef __cplusplus
656}
657#endif
658#include "close_code.h"
659
660#endif /* SDL_pixels_h_ */
661
662/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_platform.h b/src/contrib/SDL-2.30.2/include/SDL_platform.h
new file mode 100644
index 0000000..e8bf11a
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_platform.h
@@ -0,0 +1,269 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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#if defined(__NGAGE__)
69#undef __NGAGE__
70#define __NGAGE__ 1
71#endif
72
73#if defined(__APPLE__)
74/* lets us know what version of Mac OS X we're compiling on */
75#include <AvailabilityMacros.h>
76#include <TargetConditionals.h>
77
78/* Fix building with older SDKs that don't define these
79 See this for more information:
80 https://stackoverflow.com/questions/12132933/preprocessor-macro-for-os-x-targets
81*/
82#ifndef TARGET_OS_MACCATALYST
83#define TARGET_OS_MACCATALYST 0
84#endif
85#ifndef TARGET_OS_IOS
86#define TARGET_OS_IOS 0
87#endif
88#ifndef TARGET_OS_IPHONE
89#define TARGET_OS_IPHONE 0
90#endif
91#ifndef TARGET_OS_TV
92#define TARGET_OS_TV 0
93#endif
94#ifndef TARGET_OS_SIMULATOR
95#define TARGET_OS_SIMULATOR 0
96#endif
97
98#if TARGET_OS_TV
99#undef __TVOS__
100#define __TVOS__ 1
101#endif
102#if TARGET_OS_IPHONE
103/* if compiling for iOS */
104#undef __IPHONEOS__
105#define __IPHONEOS__ 1
106#undef __MACOSX__
107#else
108/* if not compiling for iOS */
109#undef __MACOSX__
110#define __MACOSX__ 1
111#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070
112# error SDL for Mac OS X only supports deploying on 10.7 and above.
113#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1070 */
114#endif /* TARGET_OS_IPHONE */
115#endif /* defined(__APPLE__) */
116
117#if defined(__NetBSD__)
118#undef __NETBSD__
119#define __NETBSD__ 1
120#endif
121#if defined(__OpenBSD__)
122#undef __OPENBSD__
123#define __OPENBSD__ 1
124#endif
125#if defined(__OS2__) || defined(__EMX__)
126#undef __OS2__
127#define __OS2__ 1
128#endif
129#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE)
130#undef __OSF__
131#define __OSF__ 1
132#endif
133#if defined(__QNXNTO__)
134#undef __QNXNTO__
135#define __QNXNTO__ 1
136#endif
137#if defined(riscos) || defined(__riscos) || defined(__riscos__)
138#undef __RISCOS__
139#define __RISCOS__ 1
140#endif
141#if defined(__sun) && defined(__SVR4)
142#undef __SOLARIS__
143#define __SOLARIS__ 1
144#endif
145
146#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
147/* Try to find out if we're compiling for WinRT, GDK or non-WinRT/GDK */
148#if defined(_MSC_VER) && defined(__has_include)
149#if __has_include(<winapifamily.h>)
150#define HAVE_WINAPIFAMILY_H 1
151#else
152#define HAVE_WINAPIFAMILY_H 0
153#endif
154
155/* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */
156#elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_) /* _MSC_VER == 1700 for Visual Studio 2012 */
157#define HAVE_WINAPIFAMILY_H 1
158#else
159#define HAVE_WINAPIFAMILY_H 0
160#endif
161
162#if HAVE_WINAPIFAMILY_H
163#include <winapifamily.h>
164#define WINAPI_FAMILY_WINRT (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP))
165#else
166#define WINAPI_FAMILY_WINRT 0
167#endif /* HAVE_WINAPIFAMILY_H */
168
169#if (HAVE_WINAPIFAMILY_H) && defined(WINAPI_FAMILY_PHONE_APP)
170#define SDL_WINAPI_FAMILY_PHONE (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
171#else
172#define SDL_WINAPI_FAMILY_PHONE 0
173#endif
174
175#if WINAPI_FAMILY_WINRT
176#undef __WINRT__
177#define __WINRT__ 1
178#elif defined(_GAMING_DESKTOP) /* GDK project configuration always defines _GAMING_XXX */
179#undef __WINGDK__
180#define __WINGDK__ 1
181#elif defined(_GAMING_XBOX_XBOXONE)
182#undef __XBOXONE__
183#define __XBOXONE__ 1
184#elif defined(_GAMING_XBOX_SCARLETT)
185#undef __XBOXSERIES__
186#define __XBOXSERIES__ 1
187#else
188#undef __WINDOWS__
189#define __WINDOWS__ 1
190#endif
191#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */
192
193#if defined(__WINDOWS__)
194#undef __WIN32__
195#define __WIN32__ 1
196#endif
197/* This is to support generic "any GDK" separate from a platform-specific GDK */
198#if defined(__WINGDK__) || defined(__XBOXONE__) || defined(__XBOXSERIES__)
199#undef __GDK__
200#define __GDK__ 1
201#endif
202#if defined(__PSP__) || defined(__psp__)
203#ifdef __PSP__
204#undef __PSP__
205#endif
206#define __PSP__ 1
207#endif
208#if defined(PS2)
209#define __PS2__ 1
210#endif
211
212/* The NACL compiler defines __native_client__ and __pnacl__
213 * Ref: http://www.chromium.org/nativeclient/pnacl/stability-of-the-pnacl-bitcode-abi
214 */
215#if defined(__native_client__)
216#undef __LINUX__
217#undef __NACL__
218#define __NACL__ 1
219#endif
220#if defined(__pnacl__)
221#undef __LINUX__
222#undef __PNACL__
223#define __PNACL__ 1
224/* PNACL with newlib supports static linking only */
225#define __SDL_NOGETPROCADDR__
226#endif
227
228#if defined(__vita__)
229#define __VITA__ 1
230#endif
231
232#if defined(__3DS__)
233#undef __3DS__
234#define __3DS__ 1
235#endif
236
237#include "begin_code.h"
238/* Set up for C function definitions, even when using C++ */
239#ifdef __cplusplus
240extern "C" {
241#endif
242
243/**
244 * Get the name of the platform.
245 *
246 * Here are the names returned for some (but not all) supported platforms:
247 *
248 * - "Windows"
249 * - "Mac OS X"
250 * - "Linux"
251 * - "iOS"
252 * - "Android"
253 *
254 * \returns the name of the platform. If the correct platform name is not
255 * available, returns a string beginning with the text "Unknown".
256 *
257 * \since This function is available since SDL 2.0.0.
258 */
259extern DECLSPEC const char * SDLCALL SDL_GetPlatform (void);
260
261/* Ends C function definitions when using C++ */
262#ifdef __cplusplus
263}
264#endif
265#include "close_code.h"
266
267#endif /* SDL_platform_h_ */
268
269/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_power.h b/src/contrib/SDL-2.30.2/include/SDL_power.h
new file mode 100644
index 0000000..0520065
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_power.h
@@ -0,0 +1,87 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 * Get the current power supply details.
53 *
54 * You should never take a battery status as absolute truth. Batteries
55 * (especially failing batteries) are delicate hardware, and the values
56 * reported here are best estimates based on what that hardware reports. It's
57 * not uncommon for older batteries to lose stored power much faster than it
58 * reports, or completely drain when reporting it has 20 percent left, etc.
59 *
60 * Battery status can change at any time; if you are concerned with power
61 * state, you should call this function frequently, and perhaps ignore changes
62 * until they seem to be stable for a few seconds.
63 *
64 * It's possible a platform can only report battery percentage or time left
65 * but not both.
66 *
67 * \param seconds seconds of battery life left, you can pass a NULL here if
68 * you don't care, will return -1 if we can't determine a
69 * value, or we're not running on a battery
70 * \param percent percentage of battery life left, between 0 and 100, you can
71 * pass a NULL here if you don't care, will return -1 if we
72 * can't determine a value, or we're not running on a battery
73 * \returns an SDL_PowerState enum representing the current battery state.
74 *
75 * \since This function is available since SDL 2.0.0.
76 */
77extern DECLSPEC SDL_PowerState SDLCALL SDL_GetPowerInfo(int *seconds, int *percent);
78
79/* Ends C function definitions when using C++ */
80#ifdef __cplusplus
81}
82#endif
83#include "close_code.h"
84
85#endif /* SDL_power_h_ */
86
87/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_quit.h b/src/contrib/SDL-2.30.2/include/SDL_quit.h
new file mode 100644
index 0000000..3f69dc9
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_quit.h
@@ -0,0 +1,58 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_rect.h b/src/contrib/SDL-2.30.2/include/SDL_rect.h
new file mode 100644
index 0000000..5ce1f0b
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_rect.h
@@ -0,0 +1,376 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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_EncloseFPoints
58 * \sa SDL_PointInFRect
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_IntersectRectAndLine
75 * \sa SDL_UnionRect
76 * \sa SDL_EnclosePoints
77 */
78typedef struct SDL_Rect
79{
80 int x, y;
81 int w, h;
82} SDL_Rect;
83
84
85/**
86 * A rectangle, with the origin at the upper left (floating point).
87 *
88 * \sa SDL_FRectEmpty
89 * \sa SDL_FRectEquals
90 * \sa SDL_FRectEqualsEpsilon
91 * \sa SDL_HasIntersectionF
92 * \sa SDL_IntersectFRect
93 * \sa SDL_IntersectFRectAndLine
94 * \sa SDL_UnionFRect
95 * \sa SDL_EncloseFPoints
96 * \sa SDL_PointInFRect
97 */
98typedef struct SDL_FRect
99{
100 float x;
101 float y;
102 float w;
103 float h;
104} SDL_FRect;
105
106
107/**
108 * Returns true if point resides inside a rectangle.
109 */
110SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r)
111{
112 return ( (p->x >= r->x) && (p->x < (r->x + r->w)) &&
113 (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE;
114}
115
116/**
117 * Returns true if the rectangle has no area.
118 */
119SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r)
120{
121 return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE;
122}
123
124/**
125 * Returns true if the two rectangles are equal.
126 */
127SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b)
128{
129 return (a && b && (a->x == b->x) && (a->y == b->y) &&
130 (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE;
131}
132
133/**
134 * Determine whether two rectangles intersect.
135 *
136 * If either pointer is NULL the function will return SDL_FALSE.
137 *
138 * \param A an SDL_Rect structure representing the first rectangle
139 * \param B an SDL_Rect structure representing the second rectangle
140 * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
141 *
142 * \since This function is available since SDL 2.0.0.
143 *
144 * \sa SDL_IntersectRect
145 */
146extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A,
147 const SDL_Rect * B);
148
149/**
150 * Calculate the intersection of two rectangles.
151 *
152 * If `result` is NULL then this function will return SDL_FALSE.
153 *
154 * \param A an SDL_Rect structure representing the first rectangle
155 * \param B an SDL_Rect structure representing the second rectangle
156 * \param result an SDL_Rect structure filled in with the intersection of
157 * rectangles `A` and `B`
158 * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
159 *
160 * \since This function is available since SDL 2.0.0.
161 *
162 * \sa SDL_HasIntersection
163 */
164extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A,
165 const SDL_Rect * B,
166 SDL_Rect * result);
167
168/**
169 * Calculate the union of two rectangles.
170 *
171 * \param A an SDL_Rect structure representing the first rectangle
172 * \param B an SDL_Rect structure representing the second rectangle
173 * \param result an SDL_Rect structure filled in with the union of rectangles
174 * `A` and `B`
175 *
176 * \since This function is available since SDL 2.0.0.
177 */
178extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A,
179 const SDL_Rect * B,
180 SDL_Rect * result);
181
182/**
183 * Calculate a minimal rectangle enclosing a set of points.
184 *
185 * If `clip` is not NULL then only points inside of the clipping rectangle are
186 * considered.
187 *
188 * \param points an array of SDL_Point structures representing points to be
189 * enclosed
190 * \param count the number of structures in the `points` array
191 * \param clip an SDL_Rect used for clipping or NULL to enclose all points
192 * \param result an SDL_Rect structure filled in with the minimal enclosing
193 * rectangle
194 * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the
195 * points were outside of the clipping rectangle.
196 *
197 * \since This function is available since SDL 2.0.0.
198 */
199extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points,
200 int count,
201 const SDL_Rect * clip,
202 SDL_Rect * result);
203
204/**
205 * Calculate the intersection of a rectangle and line segment.
206 *
207 * This function is used to clip a line segment to a rectangle. A line segment
208 * contained entirely within the rectangle or that does not intersect will
209 * remain unchanged. A line segment that crosses the rectangle at either or
210 * both ends will be clipped to the boundary of the rectangle and the new
211 * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary.
212 *
213 * \param rect an SDL_Rect structure representing the rectangle to intersect
214 * \param X1 a pointer to the starting X-coordinate of the line
215 * \param Y1 a pointer to the starting Y-coordinate of the line
216 * \param X2 a pointer to the ending X-coordinate of the line
217 * \param Y2 a pointer to the ending Y-coordinate of the line
218 * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
219 *
220 * \since This function is available since SDL 2.0.0.
221 */
222extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect *
223 rect, int *X1,
224 int *Y1, int *X2,
225 int *Y2);
226
227
228/* SDL_FRect versions... */
229
230/**
231 * Returns true if point resides inside a rectangle.
232 */
233SDL_FORCE_INLINE SDL_bool SDL_PointInFRect(const SDL_FPoint *p, const SDL_FRect *r)
234{
235 return ( (p->x >= r->x) && (p->x < (r->x + r->w)) &&
236 (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE;
237}
238
239/**
240 * Returns true if the rectangle has no area.
241 */
242SDL_FORCE_INLINE SDL_bool SDL_FRectEmpty(const SDL_FRect *r)
243{
244 return ((!r) || (r->w <= 0.0f) || (r->h <= 0.0f)) ? SDL_TRUE : SDL_FALSE;
245}
246
247/**
248 * Returns true if the two rectangles are equal, within some given epsilon.
249 *
250 * \since This function is available since SDL 2.0.22.
251 */
252SDL_FORCE_INLINE SDL_bool SDL_FRectEqualsEpsilon(const SDL_FRect *a, const SDL_FRect *b, const float epsilon)
253{
254 return (a && b && ((a == b) ||
255 ((SDL_fabsf(a->x - b->x) <= epsilon) &&
256 (SDL_fabsf(a->y - b->y) <= epsilon) &&
257 (SDL_fabsf(a->w - b->w) <= epsilon) &&
258 (SDL_fabsf(a->h - b->h) <= epsilon))))
259 ? SDL_TRUE : SDL_FALSE;
260}
261
262/**
263 * Returns true if the two rectangles are equal, using a default epsilon.
264 *
265 * \since This function is available since SDL 2.0.22.
266 */
267SDL_FORCE_INLINE SDL_bool SDL_FRectEquals(const SDL_FRect *a, const SDL_FRect *b)
268{
269 return SDL_FRectEqualsEpsilon(a, b, SDL_FLT_EPSILON);
270}
271
272/**
273 * Determine whether two rectangles intersect with float precision.
274 *
275 * If either pointer is NULL the function will return SDL_FALSE.
276 *
277 * \param A an SDL_FRect structure representing the first rectangle
278 * \param B an SDL_FRect structure representing the second rectangle
279 * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
280 *
281 * \since This function is available since SDL 2.0.22.
282 *
283 * \sa SDL_IntersectRect
284 */
285extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersectionF(const SDL_FRect * A,
286 const SDL_FRect * B);
287
288/**
289 * Calculate the intersection of two rectangles with float precision.
290 *
291 * If `result` is NULL then this function will return SDL_FALSE.
292 *
293 * \param A an SDL_FRect structure representing the first rectangle
294 * \param B an SDL_FRect structure representing the second rectangle
295 * \param result an SDL_FRect structure filled in with the intersection of
296 * rectangles `A` and `B`
297 * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
298 *
299 * \since This function is available since SDL 2.0.22.
300 *
301 * \sa SDL_HasIntersectionF
302 */
303extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRect(const SDL_FRect * A,
304 const SDL_FRect * B,
305 SDL_FRect * result);
306
307/**
308 * Calculate the union of two rectangles with float precision.
309 *
310 * \param A an SDL_FRect structure representing the first rectangle
311 * \param B an SDL_FRect structure representing the second rectangle
312 * \param result an SDL_FRect structure filled in with the union of rectangles
313 * `A` and `B`
314 *
315 * \since This function is available since SDL 2.0.22.
316 */
317extern DECLSPEC void SDLCALL SDL_UnionFRect(const SDL_FRect * A,
318 const SDL_FRect * B,
319 SDL_FRect * result);
320
321/**
322 * Calculate a minimal rectangle enclosing a set of points with float
323 * precision.
324 *
325 * If `clip` is not NULL then only points inside of the clipping rectangle are
326 * considered.
327 *
328 * \param points an array of SDL_FPoint structures representing points to be
329 * enclosed
330 * \param count the number of structures in the `points` array
331 * \param clip an SDL_FRect used for clipping or NULL to enclose all points
332 * \param result an SDL_FRect structure filled in with the minimal enclosing
333 * rectangle
334 * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the
335 * points were outside of the clipping rectangle.
336 *
337 * \since This function is available since SDL 2.0.22.
338 */
339extern DECLSPEC SDL_bool SDLCALL SDL_EncloseFPoints(const SDL_FPoint * points,
340 int count,
341 const SDL_FRect * clip,
342 SDL_FRect * result);
343
344/**
345 * Calculate the intersection of a rectangle and line segment with float
346 * precision.
347 *
348 * This function is used to clip a line segment to a rectangle. A line segment
349 * contained entirely within the rectangle or that does not intersect will
350 * remain unchanged. A line segment that crosses the rectangle at either or
351 * both ends will be clipped to the boundary of the rectangle and the new
352 * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary.
353 *
354 * \param rect an SDL_FRect structure representing the rectangle to intersect
355 * \param X1 a pointer to the starting X-coordinate of the line
356 * \param Y1 a pointer to the starting Y-coordinate of the line
357 * \param X2 a pointer to the ending X-coordinate of the line
358 * \param Y2 a pointer to the ending Y-coordinate of the line
359 * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
360 *
361 * \since This function is available since SDL 2.0.22.
362 */
363extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRectAndLine(const SDL_FRect *
364 rect, float *X1,
365 float *Y1, float *X2,
366 float *Y2);
367
368/* Ends C function definitions when using C++ */
369#ifdef __cplusplus
370}
371#endif
372#include "close_code.h"
373
374#endif /* SDL_rect_h_ */
375
376/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_render.h b/src/contrib/SDL-2.30.2/include/SDL_render.h
new file mode 100644
index 0000000..b7135bb
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_render.h
@@ -0,0 +1,1924 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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: https://github.com/libsdl-org/SDL/issues/986
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 the window associated with a renderer.
266 *
267 * \param renderer the renderer to query
268 * \returns the window on success or NULL on failure; call SDL_GetError() for
269 * more information.
270 *
271 * \since This function is available since SDL 2.0.22.
272 */
273extern DECLSPEC SDL_Window * SDLCALL SDL_RenderGetWindow(SDL_Renderer *renderer);
274
275/**
276 * Get information about a rendering context.
277 *
278 * \param renderer the rendering context
279 * \param info an SDL_RendererInfo structure filled with information about the
280 * current renderer
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 *
286 * \sa SDL_CreateRenderer
287 */
288extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer,
289 SDL_RendererInfo * info);
290
291/**
292 * Get the output size in pixels of a rendering context.
293 *
294 * Due to high-dpi displays, you might end up with a rendering context that
295 * has more pixels than the window that contains it, so use this instead of
296 * SDL_GetWindowSize() to decide how much drawing area you have.
297 *
298 * \param renderer the rendering context
299 * \param w an int filled with the width
300 * \param h an int filled with the height
301 * \returns 0 on success or a negative error code on failure; call
302 * SDL_GetError() for more information.
303 *
304 * \since This function is available since SDL 2.0.0.
305 *
306 * \sa SDL_GetRenderer
307 */
308extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer,
309 int *w, int *h);
310
311/**
312 * Create a texture for a rendering context.
313 *
314 * You can set the texture scaling method by setting
315 * `SDL_HINT_RENDER_SCALE_QUALITY` before creating the texture.
316 *
317 * \param renderer the rendering context
318 * \param format one of the enumerated values in SDL_PixelFormatEnum
319 * \param access one of the enumerated values in SDL_TextureAccess
320 * \param w the width of the texture in pixels
321 * \param h the height of the texture in pixels
322 * \returns a pointer to the created texture or NULL if no rendering context
323 * was active, the format was unsupported, or the width or height
324 * were out of range; call SDL_GetError() for more information.
325 *
326 * \since This function is available since SDL 2.0.0.
327 *
328 * \sa SDL_CreateTextureFromSurface
329 * \sa SDL_DestroyTexture
330 * \sa SDL_QueryTexture
331 * \sa SDL_UpdateTexture
332 */
333extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer,
334 Uint32 format,
335 int access, int w,
336 int h);
337
338/**
339 * Create a texture from an existing surface.
340 *
341 * The surface is not modified or freed by this function.
342 *
343 * The SDL_TextureAccess hint for the created texture is
344 * `SDL_TEXTUREACCESS_STATIC`.
345 *
346 * The pixel format of the created texture may be different from the pixel
347 * format of the surface. Use SDL_QueryTexture() to query the pixel format of
348 * the texture.
349 *
350 * \param renderer the rendering context
351 * \param surface the SDL_Surface structure containing pixel data used to fill
352 * the texture
353 * \returns the created texture or NULL on failure; call SDL_GetError() for
354 * more information.
355 *
356 * \since This function is available since SDL 2.0.0.
357 *
358 * \sa SDL_CreateTexture
359 * \sa SDL_DestroyTexture
360 * \sa SDL_QueryTexture
361 */
362extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface);
363
364/**
365 * Query the attributes of a texture.
366 *
367 * \param texture the texture to query
368 * \param format a pointer filled in with the raw format of the texture; the
369 * actual format may differ, but pixel transfers will use this
370 * format (one of the SDL_PixelFormatEnum values). This argument
371 * can be NULL if you don't need this information.
372 * \param access a pointer filled in with the actual access to the texture
373 * (one of the SDL_TextureAccess values). This argument can be
374 * NULL if you don't need this information.
375 * \param w a pointer filled in with the width of the texture in pixels. This
376 * argument can be NULL if you don't need this information.
377 * \param h a pointer filled in with the height of the texture in pixels. This
378 * argument can be NULL if you don't need this information.
379 * \returns 0 on success or a negative error code on failure; call
380 * SDL_GetError() for more information.
381 *
382 * \since This function is available since SDL 2.0.0.
383 *
384 * \sa SDL_CreateTexture
385 */
386extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture,
387 Uint32 * format, int *access,
388 int *w, int *h);
389
390/**
391 * Set an additional color value multiplied into render copy operations.
392 *
393 * When this texture is rendered, during the copy operation each source color
394 * channel is modulated by the appropriate color value according to the
395 * following formula:
396 *
397 * `srcC = srcC * (color / 255)`
398 *
399 * Color modulation is not always supported by the renderer; it will return -1
400 * if color modulation is not supported.
401 *
402 * \param texture the texture to update
403 * \param r the red color value multiplied into copy operations
404 * \param g the green color value multiplied into copy operations
405 * \param b the blue color value multiplied into copy operations
406 * \returns 0 on success or a negative error code on failure; call
407 * SDL_GetError() for more information.
408 *
409 * \since This function is available since SDL 2.0.0.
410 *
411 * \sa SDL_GetTextureColorMod
412 * \sa SDL_SetTextureAlphaMod
413 */
414extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture,
415 Uint8 r, Uint8 g, Uint8 b);
416
417
418/**
419 * Get the additional color value multiplied into render copy operations.
420 *
421 * \param texture the texture to query
422 * \param r a pointer filled in with the current red color value
423 * \param g a pointer filled in with the current green color value
424 * \param b a pointer filled in with the current blue color value
425 * \returns 0 on success or a negative error code on failure; call
426 * SDL_GetError() for more information.
427 *
428 * \since This function is available since SDL 2.0.0.
429 *
430 * \sa SDL_GetTextureAlphaMod
431 * \sa SDL_SetTextureColorMod
432 */
433extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture,
434 Uint8 * r, Uint8 * g,
435 Uint8 * b);
436
437/**
438 * Set an additional alpha value multiplied into render copy operations.
439 *
440 * When this texture is rendered, during the copy operation the source alpha
441 * value is modulated by this alpha value according to the following formula:
442 *
443 * `srcA = srcA * (alpha / 255)`
444 *
445 * Alpha modulation is not always supported by the renderer; it will return -1
446 * if alpha modulation is not supported.
447 *
448 * \param texture the texture to update
449 * \param alpha the source alpha value multiplied into copy operations
450 * \returns 0 on success or a negative error code on failure; call
451 * SDL_GetError() for more information.
452 *
453 * \since This function is available since SDL 2.0.0.
454 *
455 * \sa SDL_GetTextureAlphaMod
456 * \sa SDL_SetTextureColorMod
457 */
458extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture,
459 Uint8 alpha);
460
461/**
462 * Get the additional alpha value multiplied into render copy operations.
463 *
464 * \param texture the texture to query
465 * \param alpha a pointer filled in with the current alpha value
466 * \returns 0 on success or a negative error code on failure; call
467 * SDL_GetError() for more information.
468 *
469 * \since This function is available since SDL 2.0.0.
470 *
471 * \sa SDL_GetTextureColorMod
472 * \sa SDL_SetTextureAlphaMod
473 */
474extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture,
475 Uint8 * alpha);
476
477/**
478 * Set the blend mode for a texture, used by SDL_RenderCopy().
479 *
480 * If the blend mode is not supported, the closest supported mode is chosen
481 * and this function returns -1.
482 *
483 * \param texture the texture to update
484 * \param blendMode the SDL_BlendMode to use for texture blending
485 * \returns 0 on success or a negative error code on failure; call
486 * SDL_GetError() for more information.
487 *
488 * \since This function is available since SDL 2.0.0.
489 *
490 * \sa SDL_GetTextureBlendMode
491 * \sa SDL_RenderCopy
492 */
493extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture,
494 SDL_BlendMode blendMode);
495
496/**
497 * Get the blend mode used for texture copy operations.
498 *
499 * \param texture the texture to query
500 * \param blendMode a pointer filled in with the current SDL_BlendMode
501 * \returns 0 on success or a negative error code on failure; call
502 * SDL_GetError() for more information.
503 *
504 * \since This function is available since SDL 2.0.0.
505 *
506 * \sa SDL_SetTextureBlendMode
507 */
508extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture,
509 SDL_BlendMode *blendMode);
510
511/**
512 * Set the scale mode used for texture scale operations.
513 *
514 * If the scale mode is not supported, the closest supported mode is chosen.
515 *
516 * \param texture The texture to update.
517 * \param scaleMode the SDL_ScaleMode to use for texture scaling.
518 * \returns 0 on success, or -1 if the texture is not valid.
519 *
520 * \since This function is available since SDL 2.0.12.
521 *
522 * \sa SDL_GetTextureScaleMode
523 */
524extern DECLSPEC int SDLCALL SDL_SetTextureScaleMode(SDL_Texture * texture,
525 SDL_ScaleMode scaleMode);
526
527/**
528 * Get the scale mode used for texture scale operations.
529 *
530 * \param texture the texture to query.
531 * \param scaleMode a pointer filled in with the current scale mode.
532 * \return 0 on success, or -1 if the texture is not valid.
533 *
534 * \since This function is available since SDL 2.0.12.
535 *
536 * \sa SDL_SetTextureScaleMode
537 */
538extern DECLSPEC int SDLCALL SDL_GetTextureScaleMode(SDL_Texture * texture,
539 SDL_ScaleMode *scaleMode);
540
541/**
542 * Associate a user-specified pointer with a texture.
543 *
544 * \param texture the texture to update.
545 * \param userdata the pointer to associate with the texture.
546 * \returns 0 on success, or -1 if the texture is not valid.
547 *
548 * \since This function is available since SDL 2.0.18.
549 *
550 * \sa SDL_GetTextureUserData
551 */
552extern DECLSPEC int SDLCALL SDL_SetTextureUserData(SDL_Texture * texture,
553 void *userdata);
554
555/**
556 * Get the user-specified pointer associated with a texture
557 *
558 * \param texture the texture to query.
559 * \return the pointer associated with the texture, or NULL if the texture is
560 * not valid.
561 *
562 * \since This function is available since SDL 2.0.18.
563 *
564 * \sa SDL_SetTextureUserData
565 */
566extern DECLSPEC void * SDLCALL SDL_GetTextureUserData(SDL_Texture * texture);
567
568/**
569 * Update the given texture rectangle with new pixel data.
570 *
571 * The pixel data must be in the pixel format of the texture. Use
572 * SDL_QueryTexture() to query the pixel format of the texture.
573 *
574 * This is a fairly slow function, intended for use with static textures that
575 * do not change often.
576 *
577 * If the texture is intended to be updated often, it is preferred to create
578 * the texture as streaming and use the locking functions referenced below.
579 * While this function will work with streaming textures, for optimization
580 * reasons you may not get the pixels back if you lock the texture afterward.
581 *
582 * \param texture the texture to update
583 * \param rect an SDL_Rect structure representing the area to update, or NULL
584 * to update the entire texture
585 * \param pixels the raw pixel data in the format of the texture
586 * \param pitch the number of bytes in a row of pixel data, including padding
587 * between lines
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_CreateTexture
594 * \sa SDL_LockTexture
595 * \sa SDL_UnlockTexture
596 */
597extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture,
598 const SDL_Rect * rect,
599 const void *pixels, int pitch);
600
601/**
602 * Update a rectangle within a planar YV12 or IYUV texture with new pixel
603 * data.
604 *
605 * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous
606 * block of Y and U/V planes in the proper order, but this function is
607 * available if your pixel data is not contiguous.
608 *
609 * \param texture the texture to update
610 * \param rect a pointer to the rectangle of pixels to update, or NULL to
611 * update the entire texture
612 * \param Yplane the raw pixel data for the Y plane
613 * \param Ypitch the number of bytes between rows of pixel data for the Y
614 * plane
615 * \param Uplane the raw pixel data for the U plane
616 * \param Upitch the number of bytes between rows of pixel data for the U
617 * plane
618 * \param Vplane the raw pixel data for the V plane
619 * \param Vpitch the number of bytes between rows of pixel data for the V
620 * plane
621 * \returns 0 on success or -1 if the texture is not valid; call
622 * SDL_GetError() for more information.
623 *
624 * \since This function is available since SDL 2.0.1.
625 *
626 * \sa SDL_UpdateTexture
627 */
628extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture,
629 const SDL_Rect * rect,
630 const Uint8 *Yplane, int Ypitch,
631 const Uint8 *Uplane, int Upitch,
632 const Uint8 *Vplane, int Vpitch);
633
634/**
635 * Update a rectangle within a planar NV12 or NV21 texture with new pixels.
636 *
637 * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous
638 * block of NV12/21 planes in the proper order, but this function is available
639 * if your pixel data is not contiguous.
640 *
641 * \param texture the texture to update
642 * \param rect a pointer to the rectangle of pixels to update, or NULL to
643 * update the entire texture.
644 * \param Yplane the raw pixel data for the Y plane.
645 * \param Ypitch the number of bytes between rows of pixel data for the Y
646 * plane.
647 * \param UVplane the raw pixel data for the UV plane.
648 * \param UVpitch the number of bytes between rows of pixel data for the UV
649 * plane.
650 * \return 0 on success, or -1 if the texture is not valid.
651 *
652 * \since This function is available since SDL 2.0.16.
653 */
654extern DECLSPEC int SDLCALL SDL_UpdateNVTexture(SDL_Texture * texture,
655 const SDL_Rect * rect,
656 const Uint8 *Yplane, int Ypitch,
657 const Uint8 *UVplane, int UVpitch);
658
659/**
660 * Lock a portion of the texture for **write-only** pixel access.
661 *
662 * As an optimization, the pixels made available for editing don't necessarily
663 * contain the old texture data. This is a write-only operation, and if you
664 * need to keep a copy of the texture data you should do that at the
665 * application level.
666 *
667 * You must use SDL_UnlockTexture() to unlock the pixels and apply any
668 * changes.
669 *
670 * \param texture the texture to lock for access, which was created with
671 * `SDL_TEXTUREACCESS_STREAMING`
672 * \param rect an SDL_Rect structure representing the area to lock for access;
673 * NULL to lock the entire texture
674 * \param pixels this is filled in with a pointer to the locked pixels,
675 * appropriately offset by the locked area
676 * \param pitch this is filled in with the pitch of the locked pixels; the
677 * pitch is the length of one row in bytes
678 * \returns 0 on success or a negative error code if the texture is not valid
679 * or was not created with `SDL_TEXTUREACCESS_STREAMING`; call
680 * SDL_GetError() for more information.
681 *
682 * \since This function is available since SDL 2.0.0.
683 *
684 * \sa SDL_UnlockTexture
685 */
686extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture,
687 const SDL_Rect * rect,
688 void **pixels, int *pitch);
689
690/**
691 * Lock a portion of the texture for **write-only** pixel access, and expose
692 * it as a SDL surface.
693 *
694 * Besides providing an SDL_Surface instead of raw pixel data, this function
695 * operates like SDL_LockTexture.
696 *
697 * As an optimization, the pixels made available for editing don't necessarily
698 * contain the old texture data. This is a write-only operation, and if you
699 * need to keep a copy of the texture data you should do that at the
700 * application level.
701 *
702 * You must use SDL_UnlockTexture() to unlock the pixels and apply any
703 * changes.
704 *
705 * The returned surface is freed internally after calling SDL_UnlockTexture()
706 * or SDL_DestroyTexture(). The caller should not free it.
707 *
708 * \param texture the texture to lock for access, which was created with
709 * `SDL_TEXTUREACCESS_STREAMING`
710 * \param rect a pointer to the rectangle to lock for access. If the rect is
711 * NULL, the entire texture will be locked
712 * \param surface this is filled in with an SDL surface representing the
713 * locked area
714 * \returns 0 on success, or -1 if the texture is not valid or was not created
715 * with `SDL_TEXTUREACCESS_STREAMING`
716 *
717 * \since This function is available since SDL 2.0.12.
718 *
719 * \sa SDL_LockTexture
720 * \sa SDL_UnlockTexture
721 */
722extern DECLSPEC int SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture,
723 const SDL_Rect *rect,
724 SDL_Surface **surface);
725
726/**
727 * Unlock a texture, uploading the changes to video memory, if needed.
728 *
729 * **Warning**: Please note that SDL_LockTexture() is intended to be
730 * write-only; it will not guarantee the previous contents of the texture will
731 * be provided. You must fully initialize any area of a texture that you lock
732 * before unlocking it, as the pixels might otherwise be uninitialized memory.
733 *
734 * Which is to say: locking and immediately unlocking a texture can result in
735 * corrupted textures, depending on the renderer in use.
736 *
737 * \param texture a texture locked by SDL_LockTexture()
738 *
739 * \since This function is available since SDL 2.0.0.
740 *
741 * \sa SDL_LockTexture
742 */
743extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture);
744
745/**
746 * Determine whether a renderer supports the use of render targets.
747 *
748 * \param renderer the renderer that will be checked
749 * \returns SDL_TRUE if supported or SDL_FALSE if not.
750 *
751 * \since This function is available since SDL 2.0.0.
752 *
753 * \sa SDL_SetRenderTarget
754 */
755extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer);
756
757/**
758 * Set a texture as the current rendering target.
759 *
760 * Before using this function, you should check the
761 * `SDL_RENDERER_TARGETTEXTURE` bit in the flags of SDL_RendererInfo to see if
762 * render targets are supported.
763 *
764 * The default render target is the window for which the renderer was created.
765 * To stop rendering to a texture and render to the window again, call this
766 * function with a NULL `texture`.
767 *
768 * \param renderer the rendering context
769 * \param texture the targeted texture, which must be created with the
770 * `SDL_TEXTUREACCESS_TARGET` flag, or NULL to render to the
771 * window instead of a texture.
772 * \returns 0 on success or a negative error code on failure; call
773 * SDL_GetError() for more information.
774 *
775 * \since This function is available since SDL 2.0.0.
776 *
777 * \sa SDL_GetRenderTarget
778 */
779extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer,
780 SDL_Texture *texture);
781
782/**
783 * Get the current render target.
784 *
785 * The default render target is the window for which the renderer was created,
786 * and is reported a NULL here.
787 *
788 * \param renderer the rendering context
789 * \returns the current render target or NULL for the default render target.
790 *
791 * \since This function is available since SDL 2.0.0.
792 *
793 * \sa SDL_SetRenderTarget
794 */
795extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer);
796
797/**
798 * Set a device independent resolution for rendering.
799 *
800 * This function uses the viewport and scaling functionality to allow a fixed
801 * logical resolution for rendering, regardless of the actual output
802 * resolution. If the actual output resolution doesn't have the same aspect
803 * ratio the output rendering will be centered within the output display.
804 *
805 * If the output display is a window, mouse and touch events in the window
806 * will be filtered and scaled so they seem to arrive within the logical
807 * resolution. The SDL_HINT_MOUSE_RELATIVE_SCALING hint controls whether
808 * relative motion events are also scaled.
809 *
810 * If this function results in scaling or subpixel drawing by the rendering
811 * backend, it will be handled using the appropriate quality hints.
812 *
813 * \param renderer the renderer for which resolution should be set
814 * \param w the width of the logical resolution
815 * \param h the height of the logical resolution
816 * \returns 0 on success or a negative error code on failure; call
817 * SDL_GetError() for more information.
818 *
819 * \since This function is available since SDL 2.0.0.
820 *
821 * \sa SDL_RenderGetLogicalSize
822 */
823extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h);
824
825/**
826 * Get device independent resolution for rendering.
827 *
828 * When using the main rendering target (eg no target texture is set): this
829 * may return 0 for `w` and `h` if the SDL_Renderer has never had its logical
830 * size set by SDL_RenderSetLogicalSize(). Otherwise it returns the logical
831 * width and height.
832 *
833 * When using a target texture: Never return 0 for `w` and `h` at first. Then
834 * it returns the logical width and height that are set.
835 *
836 * \param renderer a rendering context
837 * \param w an int to be filled with the width
838 * \param h an int to be filled with the height
839 *
840 * \since This function is available since SDL 2.0.0.
841 *
842 * \sa SDL_RenderSetLogicalSize
843 */
844extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h);
845
846/**
847 * Set whether to force integer scales for resolution-independent rendering.
848 *
849 * This function restricts the logical viewport to integer values - that is,
850 * when a resolution is between two multiples of a logical size, the viewport
851 * size is rounded down to the lower multiple.
852 *
853 * \param renderer the renderer for which integer scaling should be set
854 * \param enable enable or disable the integer scaling for rendering
855 * \returns 0 on success or a negative error code on failure; call
856 * SDL_GetError() for more information.
857 *
858 * \since This function is available since SDL 2.0.5.
859 *
860 * \sa SDL_RenderGetIntegerScale
861 * \sa SDL_RenderSetLogicalSize
862 */
863extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer,
864 SDL_bool enable);
865
866/**
867 * Get whether integer scales are forced for resolution-independent rendering.
868 *
869 * \param renderer the renderer from which integer scaling should be queried
870 * \returns SDL_TRUE if integer scales are forced or SDL_FALSE if not and on
871 * failure; call SDL_GetError() for more information.
872 *
873 * \since This function is available since SDL 2.0.5.
874 *
875 * \sa SDL_RenderSetIntegerScale
876 */
877extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer);
878
879/**
880 * Set the drawing area for rendering on the current target.
881 *
882 * When the window is resized, the viewport is reset to fill the entire new
883 * window size.
884 *
885 * \param renderer the rendering context
886 * \param rect the SDL_Rect structure representing the drawing area, or NULL
887 * to set the viewport to the entire target
888 * \returns 0 on success or a negative error code on failure; call
889 * SDL_GetError() for more information.
890 *
891 * \since This function is available since SDL 2.0.0.
892 *
893 * \sa SDL_RenderGetViewport
894 */
895extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer,
896 const SDL_Rect * rect);
897
898/**
899 * Get the drawing area for the current target.
900 *
901 * \param renderer the rendering context
902 * \param rect an SDL_Rect structure filled in with the current drawing area
903 *
904 * \since This function is available since SDL 2.0.0.
905 *
906 * \sa SDL_RenderSetViewport
907 */
908extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer,
909 SDL_Rect * rect);
910
911/**
912 * Set the clip rectangle for rendering on the specified target.
913 *
914 * \param renderer the rendering context for which clip rectangle should be
915 * set
916 * \param rect an SDL_Rect structure representing the clip area, relative to
917 * the viewport, or NULL to disable clipping
918 * \returns 0 on success or a negative error code on failure; call
919 * SDL_GetError() for more information.
920 *
921 * \since This function is available since SDL 2.0.0.
922 *
923 * \sa SDL_RenderGetClipRect
924 * \sa SDL_RenderIsClipEnabled
925 */
926extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer,
927 const SDL_Rect * rect);
928
929/**
930 * Get the clip rectangle for the current target.
931 *
932 * \param renderer the rendering context from which clip rectangle should be
933 * queried
934 * \param rect an SDL_Rect structure filled in with the current clipping area
935 * or an empty rectangle if clipping is disabled
936 *
937 * \since This function is available since SDL 2.0.0.
938 *
939 * \sa SDL_RenderIsClipEnabled
940 * \sa SDL_RenderSetClipRect
941 */
942extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer,
943 SDL_Rect * rect);
944
945/**
946 * Get whether clipping is enabled on the given renderer.
947 *
948 * \param renderer the renderer from which clip state should be queried
949 * \returns SDL_TRUE if clipping is enabled or SDL_FALSE if not; call
950 * SDL_GetError() for more information.
951 *
952 * \since This function is available since SDL 2.0.4.
953 *
954 * \sa SDL_RenderGetClipRect
955 * \sa SDL_RenderSetClipRect
956 */
957extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer);
958
959
960/**
961 * Set the drawing scale for rendering on the current target.
962 *
963 * The drawing coordinates are scaled by the x/y scaling factors before they
964 * are used by the renderer. This allows resolution independent drawing with a
965 * single coordinate system.
966 *
967 * If this results in scaling or subpixel drawing by the rendering backend, it
968 * will be handled using the appropriate quality hints. For best results use
969 * integer scaling factors.
970 *
971 * \param renderer a rendering context
972 * \param scaleX the horizontal scaling factor
973 * \param scaleY the vertical scaling factor
974 * \returns 0 on success or a negative error code on failure; call
975 * SDL_GetError() for more information.
976 *
977 * \since This function is available since SDL 2.0.0.
978 *
979 * \sa SDL_RenderGetScale
980 * \sa SDL_RenderSetLogicalSize
981 */
982extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer,
983 float scaleX, float scaleY);
984
985/**
986 * Get the drawing scale for the current target.
987 *
988 * \param renderer the renderer from which drawing scale should be queried
989 * \param scaleX a pointer filled in with the horizontal scaling factor
990 * \param scaleY a pointer filled in with the vertical scaling factor
991 *
992 * \since This function is available since SDL 2.0.0.
993 *
994 * \sa SDL_RenderSetScale
995 */
996extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer,
997 float *scaleX, float *scaleY);
998
999/**
1000 * Get logical coordinates of point in renderer when given real coordinates of
1001 * point in window.
1002 *
1003 * Logical coordinates will differ from real coordinates when render is scaled
1004 * and logical renderer size set
1005 *
1006 * \param renderer the renderer from which the logical coordinates should be
1007 * calculated
1008 * \param windowX the real X coordinate in the window
1009 * \param windowY the real Y coordinate in the window
1010 * \param logicalX the pointer filled with the logical x coordinate
1011 * \param logicalY the pointer filled with the logical y coordinate
1012 *
1013 * \since This function is available since SDL 2.0.18.
1014 *
1015 * \sa SDL_RenderGetScale
1016 * \sa SDL_RenderSetScale
1017 * \sa SDL_RenderGetLogicalSize
1018 * \sa SDL_RenderSetLogicalSize
1019 */
1020extern DECLSPEC void SDLCALL SDL_RenderWindowToLogical(SDL_Renderer * renderer,
1021 int windowX, int windowY,
1022 float *logicalX, float *logicalY);
1023
1024
1025/**
1026 * Get real coordinates of point in window when given logical coordinates of
1027 * point in renderer.
1028 *
1029 * Logical coordinates will differ from real coordinates when render is scaled
1030 * and logical renderer size set
1031 *
1032 * \param renderer the renderer from which the window coordinates should be
1033 * calculated
1034 * \param logicalX the logical x coordinate
1035 * \param logicalY the logical y coordinate
1036 * \param windowX the pointer filled with the real X coordinate in the window
1037 * \param windowY the pointer filled with the real Y coordinate in the window
1038 *
1039 * \since This function is available since SDL 2.0.18.
1040 *
1041 * \sa SDL_RenderGetScale
1042 * \sa SDL_RenderSetScale
1043 * \sa SDL_RenderGetLogicalSize
1044 * \sa SDL_RenderSetLogicalSize
1045 */
1046extern DECLSPEC void SDLCALL SDL_RenderLogicalToWindow(SDL_Renderer * renderer,
1047 float logicalX, float logicalY,
1048 int *windowX, int *windowY);
1049
1050/**
1051 * Set the color used for drawing operations (Rect, Line and Clear).
1052 *
1053 * Set the color for drawing or filling rectangles, lines, and points, and for
1054 * SDL_RenderClear().
1055 *
1056 * \param renderer the rendering context
1057 * \param r the red value used to draw on the rendering target
1058 * \param g the green value used to draw on the rendering target
1059 * \param b the blue value used to draw on the rendering target
1060 * \param a the alpha value used to draw on the rendering target; usually
1061 * `SDL_ALPHA_OPAQUE` (255). Use SDL_SetRenderDrawBlendMode to
1062 * specify how the alpha channel is used
1063 * \returns 0 on success or a negative error code on failure; call
1064 * SDL_GetError() for more information.
1065 *
1066 * \since This function is available since SDL 2.0.0.
1067 *
1068 * \sa SDL_GetRenderDrawColor
1069 * \sa SDL_RenderClear
1070 * \sa SDL_RenderDrawLine
1071 * \sa SDL_RenderDrawLines
1072 * \sa SDL_RenderDrawPoint
1073 * \sa SDL_RenderDrawPoints
1074 * \sa SDL_RenderDrawRect
1075 * \sa SDL_RenderDrawRects
1076 * \sa SDL_RenderFillRect
1077 * \sa SDL_RenderFillRects
1078 */
1079extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer,
1080 Uint8 r, Uint8 g, Uint8 b,
1081 Uint8 a);
1082
1083/**
1084 * Get the color used for drawing operations (Rect, Line and Clear).
1085 *
1086 * \param renderer the rendering context
1087 * \param r a pointer filled in with the red value used to draw on the
1088 * rendering target
1089 * \param g a pointer filled in with the green value used to draw on the
1090 * rendering target
1091 * \param b a pointer filled in with the blue value used to draw on the
1092 * rendering target
1093 * \param a a pointer filled in with the alpha value used to draw on the
1094 * rendering target; usually `SDL_ALPHA_OPAQUE` (255)
1095 * \returns 0 on success or a negative error code on failure; call
1096 * SDL_GetError() for more information.
1097 *
1098 * \since This function is available since SDL 2.0.0.
1099 *
1100 * \sa SDL_SetRenderDrawColor
1101 */
1102extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer,
1103 Uint8 * r, Uint8 * g, Uint8 * b,
1104 Uint8 * a);
1105
1106/**
1107 * Set the blend mode used for drawing operations (Fill and Line).
1108 *
1109 * If the blend mode is not supported, the closest supported mode is chosen.
1110 *
1111 * \param renderer the rendering context
1112 * \param blendMode the SDL_BlendMode to use for blending
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_GetRenderDrawBlendMode
1119 * \sa SDL_RenderDrawLine
1120 * \sa SDL_RenderDrawLines
1121 * \sa SDL_RenderDrawPoint
1122 * \sa SDL_RenderDrawPoints
1123 * \sa SDL_RenderDrawRect
1124 * \sa SDL_RenderDrawRects
1125 * \sa SDL_RenderFillRect
1126 * \sa SDL_RenderFillRects
1127 */
1128extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer,
1129 SDL_BlendMode blendMode);
1130
1131/**
1132 * Get the blend mode used for drawing operations.
1133 *
1134 * \param renderer the rendering context
1135 * \param blendMode a pointer filled in with the current SDL_BlendMode
1136 * \returns 0 on success or a negative error code on failure; call
1137 * SDL_GetError() for more information.
1138 *
1139 * \since This function is available since SDL 2.0.0.
1140 *
1141 * \sa SDL_SetRenderDrawBlendMode
1142 */
1143extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer,
1144 SDL_BlendMode *blendMode);
1145
1146/**
1147 * Clear the current rendering target with the drawing color.
1148 *
1149 * This function clears the entire rendering target, ignoring the viewport and
1150 * the clip rectangle.
1151 *
1152 * \param renderer the rendering context
1153 * \returns 0 on success or a negative error code on failure; call
1154 * SDL_GetError() for more information.
1155 *
1156 * \since This function is available since SDL 2.0.0.
1157 *
1158 * \sa SDL_SetRenderDrawColor
1159 */
1160extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer);
1161
1162/**
1163 * Draw a point on the current rendering target.
1164 *
1165 * SDL_RenderDrawPoint() draws a single point. If you want to draw multiple,
1166 * use SDL_RenderDrawPoints() instead.
1167 *
1168 * \param renderer the rendering context
1169 * \param x the x coordinate of the point
1170 * \param y the y coordinate of the point
1171 * \returns 0 on success or a negative error code on failure; call
1172 * SDL_GetError() for more information.
1173 *
1174 * \since This function is available since SDL 2.0.0.
1175 *
1176 * \sa SDL_RenderDrawLine
1177 * \sa SDL_RenderDrawLines
1178 * \sa SDL_RenderDrawPoints
1179 * \sa SDL_RenderDrawRect
1180 * \sa SDL_RenderDrawRects
1181 * \sa SDL_RenderFillRect
1182 * \sa SDL_RenderFillRects
1183 * \sa SDL_RenderPresent
1184 * \sa SDL_SetRenderDrawBlendMode
1185 * \sa SDL_SetRenderDrawColor
1186 */
1187extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer,
1188 int x, int y);
1189
1190/**
1191 * Draw multiple points on the current rendering target.
1192 *
1193 * \param renderer the rendering context
1194 * \param points an array of SDL_Point structures that represent the points to
1195 * draw
1196 * \param count the number of points to draw
1197 * \returns 0 on success or a negative error code on failure; call
1198 * SDL_GetError() for more information.
1199 *
1200 * \since This function is available since SDL 2.0.0.
1201 *
1202 * \sa SDL_RenderDrawLine
1203 * \sa SDL_RenderDrawLines
1204 * \sa SDL_RenderDrawPoint
1205 * \sa SDL_RenderDrawRect
1206 * \sa SDL_RenderDrawRects
1207 * \sa SDL_RenderFillRect
1208 * \sa SDL_RenderFillRects
1209 * \sa SDL_RenderPresent
1210 * \sa SDL_SetRenderDrawBlendMode
1211 * \sa SDL_SetRenderDrawColor
1212 */
1213extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer,
1214 const SDL_Point * points,
1215 int count);
1216
1217/**
1218 * Draw a line on the current rendering target.
1219 *
1220 * SDL_RenderDrawLine() draws the line to include both end points. If you want
1221 * to draw multiple, connecting lines use SDL_RenderDrawLines() instead.
1222 *
1223 * \param renderer the rendering context
1224 * \param x1 the x coordinate of the start point
1225 * \param y1 the y coordinate of the start point
1226 * \param x2 the x coordinate of the end point
1227 * \param y2 the y coordinate of the end point
1228 * \returns 0 on success or a negative error code on failure; call
1229 * SDL_GetError() for more information.
1230 *
1231 * \since This function is available since SDL 2.0.0.
1232 *
1233 * \sa SDL_RenderDrawLines
1234 * \sa SDL_RenderDrawPoint
1235 * \sa SDL_RenderDrawPoints
1236 * \sa SDL_RenderDrawRect
1237 * \sa SDL_RenderDrawRects
1238 * \sa SDL_RenderFillRect
1239 * \sa SDL_RenderFillRects
1240 * \sa SDL_RenderPresent
1241 * \sa SDL_SetRenderDrawBlendMode
1242 * \sa SDL_SetRenderDrawColor
1243 */
1244extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer,
1245 int x1, int y1, int x2, int y2);
1246
1247/**
1248 * Draw a series of connected lines on the current rendering target.
1249 *
1250 * \param renderer the rendering context
1251 * \param points an array of SDL_Point structures representing points along
1252 * the lines
1253 * \param count the number of points, drawing count-1 lines
1254 * \returns 0 on success or a negative error code on failure; call
1255 * SDL_GetError() for more information.
1256 *
1257 * \since This function is available since SDL 2.0.0.
1258 *
1259 * \sa SDL_RenderDrawLine
1260 * \sa SDL_RenderDrawPoint
1261 * \sa SDL_RenderDrawPoints
1262 * \sa SDL_RenderDrawRect
1263 * \sa SDL_RenderDrawRects
1264 * \sa SDL_RenderFillRect
1265 * \sa SDL_RenderFillRects
1266 * \sa SDL_RenderPresent
1267 * \sa SDL_SetRenderDrawBlendMode
1268 * \sa SDL_SetRenderDrawColor
1269 */
1270extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer,
1271 const SDL_Point * points,
1272 int count);
1273
1274/**
1275 * Draw a rectangle on the current rendering target.
1276 *
1277 * \param renderer the rendering context
1278 * \param rect an SDL_Rect structure representing the rectangle to draw, or
1279 * NULL to outline the entire rendering target
1280 * \returns 0 on success or a negative error code on failure; call
1281 * SDL_GetError() for more information.
1282 *
1283 * \since This function is available since SDL 2.0.0.
1284 *
1285 * \sa SDL_RenderDrawLine
1286 * \sa SDL_RenderDrawLines
1287 * \sa SDL_RenderDrawPoint
1288 * \sa SDL_RenderDrawPoints
1289 * \sa SDL_RenderDrawRects
1290 * \sa SDL_RenderFillRect
1291 * \sa SDL_RenderFillRects
1292 * \sa SDL_RenderPresent
1293 * \sa SDL_SetRenderDrawBlendMode
1294 * \sa SDL_SetRenderDrawColor
1295 */
1296extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer,
1297 const SDL_Rect * rect);
1298
1299/**
1300 * Draw some number of rectangles on the current rendering target.
1301 *
1302 * \param renderer the rendering context
1303 * \param rects an array of SDL_Rect structures representing the rectangles to
1304 * be drawn
1305 * \param count the number of rectangles
1306 * \returns 0 on success or a negative error code on failure; call
1307 * SDL_GetError() for more information.
1308 *
1309 * \since This function is available since SDL 2.0.0.
1310 *
1311 * \sa SDL_RenderDrawLine
1312 * \sa SDL_RenderDrawLines
1313 * \sa SDL_RenderDrawPoint
1314 * \sa SDL_RenderDrawPoints
1315 * \sa SDL_RenderDrawRect
1316 * \sa SDL_RenderFillRect
1317 * \sa SDL_RenderFillRects
1318 * \sa SDL_RenderPresent
1319 * \sa SDL_SetRenderDrawBlendMode
1320 * \sa SDL_SetRenderDrawColor
1321 */
1322extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer,
1323 const SDL_Rect * rects,
1324 int count);
1325
1326/**
1327 * Fill a rectangle on the current rendering target with the drawing color.
1328 *
1329 * The current drawing color is set by SDL_SetRenderDrawColor(), and the
1330 * color's alpha value is ignored unless blending is enabled with the
1331 * appropriate call to SDL_SetRenderDrawBlendMode().
1332 *
1333 * \param renderer the rendering context
1334 * \param rect the SDL_Rect structure representing the rectangle to fill, or
1335 * NULL for the entire rendering target
1336 * \returns 0 on success or a negative error code on failure; call
1337 * SDL_GetError() for more information.
1338 *
1339 * \since This function is available since SDL 2.0.0.
1340 *
1341 * \sa SDL_RenderDrawLine
1342 * \sa SDL_RenderDrawLines
1343 * \sa SDL_RenderDrawPoint
1344 * \sa SDL_RenderDrawPoints
1345 * \sa SDL_RenderDrawRect
1346 * \sa SDL_RenderDrawRects
1347 * \sa SDL_RenderFillRects
1348 * \sa SDL_RenderPresent
1349 * \sa SDL_SetRenderDrawBlendMode
1350 * \sa SDL_SetRenderDrawColor
1351 */
1352extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer,
1353 const SDL_Rect * rect);
1354
1355/**
1356 * Fill some number of rectangles on the current rendering target with the
1357 * drawing color.
1358 *
1359 * \param renderer the rendering context
1360 * \param rects an array of SDL_Rect structures representing the rectangles to
1361 * be filled
1362 * \param count the number of rectangles
1363 * \returns 0 on success or a negative error code on failure; call
1364 * SDL_GetError() for more information.
1365 *
1366 * \since This function is available since SDL 2.0.0.
1367 *
1368 * \sa SDL_RenderDrawLine
1369 * \sa SDL_RenderDrawLines
1370 * \sa SDL_RenderDrawPoint
1371 * \sa SDL_RenderDrawPoints
1372 * \sa SDL_RenderDrawRect
1373 * \sa SDL_RenderDrawRects
1374 * \sa SDL_RenderFillRect
1375 * \sa SDL_RenderPresent
1376 */
1377extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer,
1378 const SDL_Rect * rects,
1379 int count);
1380
1381/**
1382 * Copy a portion of the texture to the current rendering target.
1383 *
1384 * The texture is blended with the destination based on its blend mode set
1385 * with SDL_SetTextureBlendMode().
1386 *
1387 * The texture color is affected based on its color modulation set by
1388 * SDL_SetTextureColorMod().
1389 *
1390 * The texture alpha is affected based on its alpha modulation set by
1391 * SDL_SetTextureAlphaMod().
1392 *
1393 * \param renderer the rendering context
1394 * \param texture the source texture
1395 * \param srcrect the source SDL_Rect structure or NULL for the entire texture
1396 * \param dstrect the destination SDL_Rect structure or NULL for the entire
1397 * rendering target; the texture will be stretched to fill the
1398 * given rectangle
1399 * \returns 0 on success or a negative error code on failure; call
1400 * SDL_GetError() for more information.
1401 *
1402 * \since This function is available since SDL 2.0.0.
1403 *
1404 * \sa SDL_RenderCopyEx
1405 * \sa SDL_SetTextureAlphaMod
1406 * \sa SDL_SetTextureBlendMode
1407 * \sa SDL_SetTextureColorMod
1408 */
1409extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer,
1410 SDL_Texture * texture,
1411 const SDL_Rect * srcrect,
1412 const SDL_Rect * dstrect);
1413
1414/**
1415 * Copy a portion of the texture to the current rendering, with optional
1416 * rotation and flipping.
1417 *
1418 * Copy a portion of the texture to the current rendering target, optionally
1419 * rotating it by angle around the given center and also flipping it
1420 * top-bottom and/or left-right.
1421 *
1422 * The texture is blended with the destination based on its blend mode set
1423 * with SDL_SetTextureBlendMode().
1424 *
1425 * The texture color is affected based on its color modulation set by
1426 * SDL_SetTextureColorMod().
1427 *
1428 * The texture alpha is affected based on its alpha modulation set by
1429 * SDL_SetTextureAlphaMod().
1430 *
1431 * \param renderer the rendering context
1432 * \param texture the source texture
1433 * \param srcrect the source SDL_Rect structure or NULL for the entire texture
1434 * \param dstrect the destination SDL_Rect structure or NULL for the entire
1435 * rendering target
1436 * \param angle an angle in degrees that indicates the rotation that will be
1437 * applied to dstrect, rotating it in a clockwise direction
1438 * \param center a pointer to a point indicating the point around which
1439 * dstrect will be rotated (if NULL, rotation will be done
1440 * around `dstrect.w / 2`, `dstrect.h / 2`)
1441 * \param flip a SDL_RendererFlip value stating which flipping actions should
1442 * be performed on the texture
1443 * \returns 0 on success or a negative error code on failure; call
1444 * SDL_GetError() for more information.
1445 *
1446 * \since This function is available since SDL 2.0.0.
1447 *
1448 * \sa SDL_RenderCopy
1449 * \sa SDL_SetTextureAlphaMod
1450 * \sa SDL_SetTextureBlendMode
1451 * \sa SDL_SetTextureColorMod
1452 */
1453extern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer,
1454 SDL_Texture * texture,
1455 const SDL_Rect * srcrect,
1456 const SDL_Rect * dstrect,
1457 const double angle,
1458 const SDL_Point *center,
1459 const SDL_RendererFlip flip);
1460
1461
1462/**
1463 * Draw a point on the current rendering target at subpixel precision.
1464 *
1465 * \param renderer The renderer which should draw a point.
1466 * \param x The x coordinate of the point.
1467 * \param y The y coordinate of the point.
1468 * \return 0 on success, or -1 on error
1469 *
1470 * \since This function is available since SDL 2.0.10.
1471 */
1472extern DECLSPEC int SDLCALL SDL_RenderDrawPointF(SDL_Renderer * renderer,
1473 float x, float y);
1474
1475/**
1476 * Draw multiple points on the current rendering target at subpixel precision.
1477 *
1478 * \param renderer The renderer which should draw multiple points.
1479 * \param points The points to draw
1480 * \param count The number of points to draw
1481 * \return 0 on success, or -1 on error
1482 *
1483 * \since This function is available since SDL 2.0.10.
1484 */
1485extern DECLSPEC int SDLCALL SDL_RenderDrawPointsF(SDL_Renderer * renderer,
1486 const SDL_FPoint * points,
1487 int count);
1488
1489/**
1490 * Draw a line on the current rendering target at subpixel precision.
1491 *
1492 * \param renderer The renderer which should draw a line.
1493 * \param x1 The x coordinate of the start point.
1494 * \param y1 The y coordinate of the start point.
1495 * \param x2 The x coordinate of the end point.
1496 * \param y2 The y coordinate of the end point.
1497 * \return 0 on success, or -1 on error
1498 *
1499 * \since This function is available since SDL 2.0.10.
1500 */
1501extern DECLSPEC int SDLCALL SDL_RenderDrawLineF(SDL_Renderer * renderer,
1502 float x1, float y1, float x2, float y2);
1503
1504/**
1505 * Draw a series of connected lines on the current rendering target at
1506 * subpixel precision.
1507 *
1508 * \param renderer The renderer which should draw multiple lines.
1509 * \param points The points along the lines
1510 * \param count The number of points, drawing count-1 lines
1511 * \return 0 on success, or -1 on error
1512 *
1513 * \since This function is available since SDL 2.0.10.
1514 */
1515extern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer,
1516 const SDL_FPoint * points,
1517 int count);
1518
1519/**
1520 * Draw a rectangle on the current rendering target at subpixel precision.
1521 *
1522 * \param renderer The renderer which should draw a rectangle.
1523 * \param rect A pointer to the destination rectangle, or NULL to outline the
1524 * entire rendering target.
1525 * \return 0 on success, or -1 on error
1526 *
1527 * \since This function is available since SDL 2.0.10.
1528 */
1529extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer,
1530 const SDL_FRect * rect);
1531
1532/**
1533 * Draw some number of rectangles on the current rendering target at subpixel
1534 * precision.
1535 *
1536 * \param renderer The renderer which should draw multiple rectangles.
1537 * \param rects A pointer to an array of destination rectangles.
1538 * \param count The number of rectangles.
1539 * \return 0 on success, or -1 on error
1540 *
1541 * \since This function is available since SDL 2.0.10.
1542 */
1543extern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer,
1544 const SDL_FRect * rects,
1545 int count);
1546
1547/**
1548 * Fill a rectangle on the current rendering target with the drawing color at
1549 * subpixel precision.
1550 *
1551 * \param renderer The renderer which should fill a rectangle.
1552 * \param rect A pointer to the destination rectangle, or NULL for the entire
1553 * rendering target.
1554 * \return 0 on success, or -1 on error
1555 *
1556 * \since This function is available since SDL 2.0.10.
1557 */
1558extern DECLSPEC int SDLCALL SDL_RenderFillRectF(SDL_Renderer * renderer,
1559 const SDL_FRect * rect);
1560
1561/**
1562 * Fill some number of rectangles on the current rendering target with the
1563 * drawing color at subpixel precision.
1564 *
1565 * \param renderer The renderer which should fill multiple rectangles.
1566 * \param rects A pointer to an array of destination rectangles.
1567 * \param count The number of rectangles.
1568 * \return 0 on success, or -1 on error
1569 *
1570 * \since This function is available since SDL 2.0.10.
1571 */
1572extern DECLSPEC int SDLCALL SDL_RenderFillRectsF(SDL_Renderer * renderer,
1573 const SDL_FRect * rects,
1574 int count);
1575
1576/**
1577 * Copy a portion of the texture to the current rendering target at subpixel
1578 * precision.
1579 *
1580 * \param renderer The renderer which should copy parts of a texture.
1581 * \param texture The source texture.
1582 * \param srcrect A pointer to the source rectangle, or NULL for the entire
1583 * texture.
1584 * \param dstrect A pointer to the destination rectangle, or NULL for the
1585 * entire rendering target.
1586 * \return 0 on success, or -1 on error
1587 *
1588 * \since This function is available since SDL 2.0.10.
1589 */
1590extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer,
1591 SDL_Texture * texture,
1592 const SDL_Rect * srcrect,
1593 const SDL_FRect * dstrect);
1594
1595/**
1596 * Copy a portion of the source texture to the current rendering target, with
1597 * rotation and flipping, at subpixel precision.
1598 *
1599 * \param renderer The renderer which should copy parts of a texture.
1600 * \param texture The source texture.
1601 * \param srcrect A pointer to the source rectangle, or NULL for the entire
1602 * texture.
1603 * \param dstrect A pointer to the destination rectangle, or NULL for the
1604 * entire rendering target.
1605 * \param angle An angle in degrees that indicates the rotation that will be
1606 * applied to dstrect, rotating it in a clockwise direction
1607 * \param center A pointer to a point indicating the point around which
1608 * dstrect will be rotated (if NULL, rotation will be done
1609 * around dstrect.w/2, dstrect.h/2).
1610 * \param flip An SDL_RendererFlip value stating which flipping actions should
1611 * be performed on the texture
1612 * \return 0 on success, or -1 on error
1613 *
1614 * \since This function is available since SDL 2.0.10.
1615 */
1616extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer,
1617 SDL_Texture * texture,
1618 const SDL_Rect * srcrect,
1619 const SDL_FRect * dstrect,
1620 const double angle,
1621 const SDL_FPoint *center,
1622 const SDL_RendererFlip flip);
1623
1624/**
1625 * Render a list of triangles, optionally using a texture and indices into the
1626 * vertex array Color and alpha modulation is done per vertex
1627 * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored).
1628 *
1629 * \param renderer The rendering context.
1630 * \param texture (optional) The SDL texture to use.
1631 * \param vertices Vertices.
1632 * \param num_vertices Number of vertices.
1633 * \param indices (optional) An array of integer indices into the 'vertices'
1634 * array, if NULL all vertices will be rendered in sequential
1635 * order.
1636 * \param num_indices Number of indices.
1637 * \return 0 on success, or -1 if the operation is not supported
1638 *
1639 * \since This function is available since SDL 2.0.18.
1640 *
1641 * \sa SDL_RenderGeometryRaw
1642 * \sa SDL_Vertex
1643 */
1644extern DECLSPEC int SDLCALL SDL_RenderGeometry(SDL_Renderer *renderer,
1645 SDL_Texture *texture,
1646 const SDL_Vertex *vertices, int num_vertices,
1647 const int *indices, int num_indices);
1648
1649/**
1650 * Render a list of triangles, optionally using a texture and indices into the
1651 * vertex arrays Color and alpha modulation is done per vertex
1652 * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored).
1653 *
1654 * \param renderer The rendering context.
1655 * \param texture (optional) The SDL texture to use.
1656 * \param xy Vertex positions
1657 * \param xy_stride Byte size to move from one element to the next element
1658 * \param color Vertex colors (as SDL_Color)
1659 * \param color_stride Byte size to move from one element to the next element
1660 * \param uv Vertex normalized texture coordinates
1661 * \param uv_stride Byte size to move from one element to the next element
1662 * \param num_vertices Number of vertices.
1663 * \param indices (optional) An array of indices into the 'vertices' arrays,
1664 * if NULL all vertices will be rendered in sequential order.
1665 * \param num_indices Number of indices.
1666 * \param size_indices Index size: 1 (byte), 2 (short), 4 (int)
1667 * \return 0 on success, or -1 if the operation is not supported
1668 *
1669 * \since This function is available since SDL 2.0.18.
1670 *
1671 * \sa SDL_RenderGeometry
1672 * \sa SDL_Vertex
1673 */
1674extern DECLSPEC int SDLCALL SDL_RenderGeometryRaw(SDL_Renderer *renderer,
1675 SDL_Texture *texture,
1676 const float *xy, int xy_stride,
1677 const SDL_Color *color, int color_stride,
1678 const float *uv, int uv_stride,
1679 int num_vertices,
1680 const void *indices, int num_indices, int size_indices);
1681
1682/**
1683 * Read pixels from the current rendering target to an array of pixels.
1684 *
1685 * **WARNING**: This is a very slow operation, and should not be used
1686 * frequently. If you're using this on the main rendering target, it should be
1687 * called after rendering and before SDL_RenderPresent().
1688 *
1689 * `pitch` specifies the number of bytes between rows in the destination
1690 * `pixels` data. This allows you to write to a subrectangle or have padded
1691 * rows in the destination. Generally, `pitch` should equal the number of
1692 * pixels per row in the `pixels` data times the number of bytes per pixel,
1693 * but it might contain additional padding (for example, 24bit RGB Windows
1694 * Bitmap data pads all rows to multiples of 4 bytes).
1695 *
1696 * \param renderer the rendering context
1697 * \param rect an SDL_Rect structure representing the area to read, or NULL
1698 * for the entire render target
1699 * \param format an SDL_PixelFormatEnum value of the desired format of the
1700 * pixel data, or 0 to use the format of the rendering target
1701 * \param pixels a pointer to the pixel data to copy into
1702 * \param pitch the pitch of the `pixels` parameter
1703 * \returns 0 on success or a negative error code on failure; call
1704 * SDL_GetError() for more information.
1705 *
1706 * \since This function is available since SDL 2.0.0.
1707 */
1708extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer,
1709 const SDL_Rect * rect,
1710 Uint32 format,
1711 void *pixels, int pitch);
1712
1713/**
1714 * Update the screen with any rendering performed since the previous call.
1715 *
1716 * SDL's rendering functions operate on a backbuffer; that is, calling a
1717 * rendering function such as SDL_RenderDrawLine() does not directly put a
1718 * line on the screen, but rather updates the backbuffer. As such, you compose
1719 * your entire scene and *present* the composed backbuffer to the screen as a
1720 * complete picture.
1721 *
1722 * Therefore, when using SDL's rendering API, one does all drawing intended
1723 * for the frame, and then calls this function once per frame to present the
1724 * final drawing to the user.
1725 *
1726 * The backbuffer should be considered invalidated after each present; do not
1727 * assume that previous contents will exist between frames. You are strongly
1728 * encouraged to call SDL_RenderClear() to initialize the backbuffer before
1729 * starting each new frame's drawing, even if you plan to overwrite every
1730 * pixel.
1731 *
1732 * \param renderer the rendering context
1733 *
1734 * \threadsafety You may only call this function on the main thread. If this
1735 * happens to work on a background thread on any given platform
1736 * or backend, it's purely by luck and you should not rely on it
1737 * to work next time.
1738 *
1739 * \since This function is available since SDL 2.0.0.
1740 *
1741 * \sa SDL_RenderClear
1742 * \sa SDL_RenderDrawLine
1743 * \sa SDL_RenderDrawLines
1744 * \sa SDL_RenderDrawPoint
1745 * \sa SDL_RenderDrawPoints
1746 * \sa SDL_RenderDrawRect
1747 * \sa SDL_RenderDrawRects
1748 * \sa SDL_RenderFillRect
1749 * \sa SDL_RenderFillRects
1750 * \sa SDL_SetRenderDrawBlendMode
1751 * \sa SDL_SetRenderDrawColor
1752 */
1753extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer);
1754
1755/**
1756 * Destroy the specified texture.
1757 *
1758 * Passing NULL or an otherwise invalid texture will set the SDL error message
1759 * to "Invalid texture".
1760 *
1761 * \param texture the texture to destroy
1762 *
1763 * \since This function is available since SDL 2.0.0.
1764 *
1765 * \sa SDL_CreateTexture
1766 * \sa SDL_CreateTextureFromSurface
1767 */
1768extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture);
1769
1770/**
1771 * Destroy the rendering context for a window and free associated textures.
1772 *
1773 * If `renderer` is NULL, this function will return immediately after setting
1774 * the SDL error message to "Invalid renderer". See SDL_GetError().
1775 *
1776 * \param renderer the rendering context
1777 *
1778 * \since This function is available since SDL 2.0.0.
1779 *
1780 * \sa SDL_CreateRenderer
1781 */
1782extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer);
1783
1784/**
1785 * Force the rendering context to flush any pending commands to the underlying
1786 * rendering API.
1787 *
1788 * You do not need to (and in fact, shouldn't) call this function unless you
1789 * are planning to call into OpenGL/Direct3D/Metal/whatever directly in
1790 * addition to using an SDL_Renderer.
1791 *
1792 * This is for a very-specific case: if you are using SDL's render API, you
1793 * asked for a specific renderer backend (OpenGL, Direct3D, etc), you set
1794 * SDL_HINT_RENDER_BATCHING to "1", and you plan to make OpenGL/D3D/whatever
1795 * calls in addition to SDL render API calls. If all of this applies, you
1796 * should call SDL_RenderFlush() between calls to SDL's render API and the
1797 * low-level API you're using in cooperation.
1798 *
1799 * In all other cases, you can ignore this function. This is only here to get
1800 * maximum performance out of a specific situation. In all other cases, SDL
1801 * will do the right thing, perhaps at a performance loss.
1802 *
1803 * This function is first available in SDL 2.0.10, and is not needed in 2.0.9
1804 * and earlier, as earlier versions did not queue rendering commands at all,
1805 * instead flushing them to the OS immediately.
1806 *
1807 * \param renderer the rendering context
1808 * \returns 0 on success or a negative error code on failure; call
1809 * SDL_GetError() for more information.
1810 *
1811 * \since This function is available since SDL 2.0.10.
1812 */
1813extern DECLSPEC int SDLCALL SDL_RenderFlush(SDL_Renderer * renderer);
1814
1815
1816/**
1817 * Bind an OpenGL/ES/ES2 texture to the current context.
1818 *
1819 * This is for use with OpenGL instructions when rendering OpenGL primitives
1820 * directly.
1821 *
1822 * If not NULL, `texw` and `texh` will be filled with the width and height
1823 * values suitable for the provided texture. In most cases, both will be 1.0,
1824 * however, on systems that support the GL_ARB_texture_rectangle extension,
1825 * these values will actually be the pixel width and height used to create the
1826 * texture, so this factor needs to be taken into account when providing
1827 * texture coordinates to OpenGL.
1828 *
1829 * You need a renderer to create an SDL_Texture, therefore you can only use
1830 * this function with an implicit OpenGL context from SDL_CreateRenderer(),
1831 * not with your own OpenGL context. If you need control over your OpenGL
1832 * context, you need to write your own texture-loading methods.
1833 *
1834 * Also note that SDL may upload RGB textures as BGR (or vice-versa), and
1835 * re-order the color channels in the shaders phase, so the uploaded texture
1836 * may have swapped color channels.
1837 *
1838 * \param texture the texture to bind to the current OpenGL/ES/ES2 context
1839 * \param texw a pointer to a float value which will be filled with the
1840 * texture width or NULL if you don't need that value
1841 * \param texh a pointer to a float value which will be filled with the
1842 * texture height or NULL if you don't need that value
1843 * \returns 0 on success, or -1 if the operation is not supported; call
1844 * SDL_GetError() for more information.
1845 *
1846 * \since This function is available since SDL 2.0.0.
1847 *
1848 * \sa SDL_GL_MakeCurrent
1849 * \sa SDL_GL_UnbindTexture
1850 */
1851extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh);
1852
1853/**
1854 * Unbind an OpenGL/ES/ES2 texture from the current context.
1855 *
1856 * See SDL_GL_BindTexture() for examples on how to use these functions
1857 *
1858 * \param texture the texture to unbind from the current OpenGL/ES/ES2 context
1859 * \returns 0 on success, or -1 if the operation is not supported
1860 *
1861 * \since This function is available since SDL 2.0.0.
1862 *
1863 * \sa SDL_GL_BindTexture
1864 * \sa SDL_GL_MakeCurrent
1865 */
1866extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture);
1867
1868/**
1869 * Get the CAMetalLayer associated with the given Metal renderer.
1870 *
1871 * This function returns `void *`, so SDL doesn't have to include Metal's
1872 * headers, but it can be safely cast to a `CAMetalLayer *`.
1873 *
1874 * \param renderer The renderer to query
1875 * \returns a `CAMetalLayer *` on success, or NULL if the renderer isn't a
1876 * Metal renderer
1877 *
1878 * \since This function is available since SDL 2.0.8.
1879 *
1880 * \sa SDL_RenderGetMetalCommandEncoder
1881 */
1882extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer);
1883
1884/**
1885 * Get the Metal command encoder for the current frame
1886 *
1887 * This function returns `void *`, so SDL doesn't have to include Metal's
1888 * headers, but it can be safely cast to an `id<MTLRenderCommandEncoder>`.
1889 *
1890 * Note that as of SDL 2.0.18, this will return NULL if Metal refuses to give
1891 * SDL a drawable to render to, which might happen if the window is
1892 * hidden/minimized/offscreen. This doesn't apply to command encoders for
1893 * render targets, just the window's backbuffer. Check your return values!
1894 *
1895 * \param renderer The renderer to query
1896 * \returns an `id<MTLRenderCommandEncoder>` on success, or NULL if the
1897 * renderer isn't a Metal renderer or there was an error.
1898 *
1899 * \since This function is available since SDL 2.0.8.
1900 *
1901 * \sa SDL_RenderGetMetalLayer
1902 */
1903extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer);
1904
1905/**
1906 * Toggle VSync of the given renderer.
1907 *
1908 * \param renderer The renderer to toggle
1909 * \param vsync 1 for on, 0 for off. All other values are reserved
1910 * \returns a 0 int on success, or non-zero on failure
1911 *
1912 * \since This function is available since SDL 2.0.18.
1913 */
1914extern DECLSPEC int SDLCALL SDL_RenderSetVSync(SDL_Renderer* renderer, int vsync);
1915
1916/* Ends C function definitions when using C++ */
1917#ifdef __cplusplus
1918}
1919#endif
1920#include "close_code.h"
1921
1922#endif /* SDL_render_h_ */
1923
1924/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_revision.h b/src/contrib/SDL-2.30.2/include/SDL_revision.h
new file mode 100644
index 0000000..36691f5
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_revision.h
@@ -0,0 +1,6 @@
1#ifdef SDL_VENDOR_INFO
2#define SDL_REVISION SDL_VENDOR_INFO
3#else
4#define SDL_REVISION ""
5#endif
6#define SDL_REVISION_NUMBER 0
diff --git a/src/contrib/SDL-2.30.2/include/SDL_revision.h.cmake b/src/contrib/SDL-2.30.2/include/SDL_revision.h.cmake
new file mode 100644
index 0000000..84e5f41
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_revision.h.cmake
@@ -0,0 +1,8 @@
1#cmakedefine SDL_VENDOR_INFO "@SDL_VENDOR_INFO@"
2#define SDL_REVISION_NUMBER 0
3
4#ifdef SDL_VENDOR_INFO
5#define SDL_REVISION "@SDL_REVISION@ (" SDL_VENDOR_INFO ")"
6#else
7#define SDL_REVISION "@SDL_REVISION@"
8#endif
diff --git a/src/contrib/SDL-2.30.2/include/SDL_rwops.h b/src/contrib/SDL-2.30.2/include/SDL_rwops.h
new file mode 100644
index 0000000..9dd99f9
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_rwops.h
@@ -0,0 +1,841 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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
49/**
50 * This is the read/write operation structure -- very basic.
51 */
52typedef struct SDL_RWops
53{
54 /**
55 * Return the size of the file in this rwops, or -1 if unknown
56 */
57 Sint64 (SDLCALL * size) (struct SDL_RWops * context);
58
59 /**
60 * Seek to \c offset relative to \c whence, one of stdio's whence values:
61 * RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END
62 *
63 * \return the final offset in the data stream, or -1 on error.
64 */
65 Sint64 (SDLCALL * seek) (struct SDL_RWops * context, Sint64 offset,
66 int whence);
67
68 /**
69 * Read up to \c maxnum objects each of size \c size from the data
70 * stream to the area pointed at by \c ptr.
71 *
72 * \return the number of objects read, or 0 at error or end of file.
73 */
74 size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr,
75 size_t size, size_t maxnum);
76
77 /**
78 * Write exactly \c num objects each of size \c size from the area
79 * pointed at by \c ptr to data stream.
80 *
81 * \return the number of objects written, or 0 at error or end of file.
82 */
83 size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr,
84 size_t size, size_t num);
85
86 /**
87 * Close and free an allocated SDL_RWops structure.
88 *
89 * \return 0 if successful or -1 on write error when flushing data.
90 */
91 int (SDLCALL * close) (struct SDL_RWops * context);
92
93 Uint32 type;
94 union
95 {
96#if defined(__ANDROID__)
97 struct
98 {
99 void *asset;
100 } androidio;
101#elif defined(__WIN32__) || defined(__GDK__)
102 struct
103 {
104 SDL_bool append;
105 void *h;
106 struct
107 {
108 void *data;
109 size_t size;
110 size_t left;
111 } buffer;
112 } windowsio;
113#endif
114
115#ifdef HAVE_STDIO_H
116 struct
117 {
118 SDL_bool autoclose;
119 FILE *fp;
120 } stdio;
121#endif
122 struct
123 {
124 Uint8 *base;
125 Uint8 *here;
126 Uint8 *stop;
127 } mem;
128 struct
129 {
130 void *data1;
131 void *data2;
132 } unknown;
133 } hidden;
134
135} SDL_RWops;
136
137
138/**
139 * \name RWFrom functions
140 *
141 * Functions to create SDL_RWops structures from various data streams.
142 */
143/* @{ */
144
145/**
146 * Use this function to create a new SDL_RWops structure for reading from
147 * and/or writing to a named file.
148 *
149 * The `mode` string is treated roughly the same as in a call to the C
150 * library's fopen(), even if SDL doesn't happen to use fopen() behind the
151 * scenes.
152 *
153 * Available `mode` strings:
154 *
155 * - "r": Open a file for reading. The file must exist.
156 * - "w": Create an empty file for writing. If a file with the same name
157 * already exists its content is erased and the file is treated as a new
158 * empty file.
159 * - "a": Append to a file. Writing operations append data at the end of the
160 * file. The file is created if it does not exist.
161 * - "r+": Open a file for update both reading and writing. The file must
162 * exist.
163 * - "w+": Create an empty file for both reading and writing. If a file with
164 * the same name already exists its content is erased and the file is
165 * treated as a new empty file.
166 * - "a+": Open a file for reading and appending. All writing operations are
167 * performed at the end of the file, protecting the previous content to be
168 * overwritten. You can reposition (fseek, rewind) the internal pointer to
169 * anywhere in the file for reading, but writing operations will move it
170 * back to the end of file. The file is created if it does not exist.
171 *
172 * **NOTE**: In order to open a file as a binary file, a "b" character has to
173 * be included in the `mode` string. This additional "b" character can either
174 * be appended at the end of the string (thus making the following compound
175 * modes: "rb", "wb", "ab", "r+b", "w+b", "a+b") or be inserted between the
176 * letter and the "+" sign for the mixed modes ("rb+", "wb+", "ab+").
177 * Additional characters may follow the sequence, although they should have no
178 * effect. For example, "t" is sometimes appended to make explicit the file is
179 * a text file.
180 *
181 * This function supports Unicode filenames, but they must be encoded in UTF-8
182 * format, regardless of the underlying operating system.
183 *
184 * As a fallback, SDL_RWFromFile() will transparently open a matching filename
185 * in an Android app's `assets`.
186 *
187 * Closing the SDL_RWops will close the file handle SDL is holding internally.
188 *
189 * \param file a UTF-8 string representing the filename to open
190 * \param mode an ASCII string representing the mode to be used for opening
191 * the file.
192 * \returns a pointer to the SDL_RWops structure that is created, or NULL on
193 * failure; call SDL_GetError() for more information.
194 *
195 * \since This function is available since SDL 2.0.0.
196 *
197 * \sa SDL_RWclose
198 * \sa SDL_RWFromConstMem
199 * \sa SDL_RWFromFP
200 * \sa SDL_RWFromMem
201 * \sa SDL_RWread
202 * \sa SDL_RWseek
203 * \sa SDL_RWtell
204 * \sa SDL_RWwrite
205 */
206extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file,
207 const char *mode);
208
209#ifdef HAVE_STDIO_H
210
211extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp, SDL_bool autoclose);
212
213#else
214
215/**
216 * Use this function to create an SDL_RWops structure from a standard I/O file
217 * pointer (stdio.h's `FILE*`).
218 *
219 * This function is not available on Windows, since files opened in an
220 * application on that platform cannot be used by a dynamically linked
221 * library.
222 *
223 * On some platforms, the first parameter is a `void*`, on others, it's a
224 * `FILE*`, depending on what system headers are available to SDL. It is
225 * always intended to be the `FILE*` type from the C runtime's stdio.h.
226 *
227 * \param fp the `FILE*` that feeds the SDL_RWops stream
228 * \param autoclose SDL_TRUE to close the `FILE*` when closing the SDL_RWops,
229 * SDL_FALSE to leave the `FILE*` open when the RWops is
230 * closed
231 * \returns a pointer to the SDL_RWops structure that is created, or NULL on
232 * failure; call SDL_GetError() for more information.
233 *
234 * \since This function is available since SDL 2.0.0.
235 *
236 * \sa SDL_RWclose
237 * \sa SDL_RWFromConstMem
238 * \sa SDL_RWFromFile
239 * \sa SDL_RWFromMem
240 * \sa SDL_RWread
241 * \sa SDL_RWseek
242 * \sa SDL_RWtell
243 * \sa SDL_RWwrite
244 */
245extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp,
246 SDL_bool autoclose);
247#endif
248
249/**
250 * Use this function to prepare a read-write memory buffer for use with
251 * SDL_RWops.
252 *
253 * This function sets up an SDL_RWops struct based on a memory area of a
254 * certain size, for both read and write access.
255 *
256 * This memory buffer is not copied by the RWops; the pointer you provide must
257 * remain valid until you close the stream. Closing the stream will not free
258 * the original buffer.
259 *
260 * If you need to make sure the RWops never writes to the memory buffer, you
261 * should use SDL_RWFromConstMem() with a read-only buffer of memory instead.
262 *
263 * \param mem a pointer to a buffer to feed an SDL_RWops stream
264 * \param size the buffer size, in bytes
265 * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call
266 * SDL_GetError() for more information.
267 *
268 * \since This function is available since SDL 2.0.0.
269 *
270 * \sa SDL_RWclose
271 * \sa SDL_RWFromConstMem
272 * \sa SDL_RWFromFile
273 * \sa SDL_RWFromFP
274 * \sa SDL_RWFromMem
275 * \sa SDL_RWread
276 * \sa SDL_RWseek
277 * \sa SDL_RWtell
278 * \sa SDL_RWwrite
279 */
280extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size);
281
282/**
283 * Use this function to prepare a read-only memory buffer for use with RWops.
284 *
285 * This function sets up an SDL_RWops struct based on a memory area of a
286 * certain size. It assumes the memory area is not writable.
287 *
288 * Attempting to write to this RWops stream will report an error without
289 * writing to the memory buffer.
290 *
291 * This memory buffer is not copied by the RWops; the pointer you provide must
292 * remain valid until you close the stream. Closing the stream will not free
293 * the original buffer.
294 *
295 * If you need to write to a memory buffer, you should use SDL_RWFromMem()
296 * with a writable buffer of memory instead.
297 *
298 * \param mem a pointer to a read-only buffer to feed an SDL_RWops stream
299 * \param size the buffer size, in bytes
300 * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call
301 * SDL_GetError() for more information.
302 *
303 * \since This function is available since SDL 2.0.0.
304 *
305 * \sa SDL_RWclose
306 * \sa SDL_RWFromConstMem
307 * \sa SDL_RWFromFile
308 * \sa SDL_RWFromFP
309 * \sa SDL_RWFromMem
310 * \sa SDL_RWread
311 * \sa SDL_RWseek
312 * \sa SDL_RWtell
313 */
314extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem,
315 int size);
316
317/* @} *//* RWFrom functions */
318
319
320/**
321 * Use this function to allocate an empty, unpopulated SDL_RWops structure.
322 *
323 * Applications do not need to use this function unless they are providing
324 * their own SDL_RWops implementation. If you just need a SDL_RWops to
325 * read/write a common data source, you should use the built-in
326 * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc.
327 *
328 * You must free the returned pointer with SDL_FreeRW(). Depending on your
329 * operating system and compiler, there may be a difference between the
330 * malloc() and free() your program uses and the versions SDL calls
331 * internally. Trying to mix the two can cause crashing such as segmentation
332 * faults. Since all SDL_RWops must free themselves when their **close**
333 * method is called, all SDL_RWops must be allocated through this function, so
334 * they can all be freed correctly with SDL_FreeRW().
335 *
336 * \returns a pointer to the allocated memory on success, or NULL on failure;
337 * call SDL_GetError() for more information.
338 *
339 * \since This function is available since SDL 2.0.0.
340 *
341 * \sa SDL_FreeRW
342 */
343extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void);
344
345/**
346 * Use this function to free an SDL_RWops structure allocated by
347 * SDL_AllocRW().
348 *
349 * Applications do not need to use this function unless they are providing
350 * their own SDL_RWops implementation. If you just need a SDL_RWops to
351 * read/write a common data source, you should use the built-in
352 * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc, and
353 * call the **close** method on those SDL_RWops pointers when you are done
354 * with them.
355 *
356 * Only use SDL_FreeRW() on pointers returned by SDL_AllocRW(). The pointer is
357 * invalid as soon as this function returns. Any extra memory allocated during
358 * creation of the SDL_RWops is not freed by SDL_FreeRW(); the programmer must
359 * be responsible for managing that memory in their **close** method.
360 *
361 * \param area the SDL_RWops structure to be freed
362 *
363 * \since This function is available since SDL 2.0.0.
364 *
365 * \sa SDL_AllocRW
366 */
367extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area);
368
369#define RW_SEEK_SET 0 /**< Seek from the beginning of data */
370#define RW_SEEK_CUR 1 /**< Seek relative to current read point */
371#define RW_SEEK_END 2 /**< Seek relative to the end of data */
372
373/**
374 * Use this function to get the size of the data stream in an SDL_RWops.
375 *
376 * Prior to SDL 2.0.10, this function was a macro.
377 *
378 * \param context the SDL_RWops to get the size of the data stream from
379 * \returns the size of the data stream in the SDL_RWops on success, -1 if
380 * unknown or a negative error code on failure; call SDL_GetError()
381 * for more information.
382 *
383 * \since This function is available since SDL 2.0.10.
384 */
385extern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context);
386
387/**
388 * Seek within an SDL_RWops data stream.
389 *
390 * This function seeks to byte `offset`, relative to `whence`.
391 *
392 * `whence` may be any of the following values:
393 *
394 * - `RW_SEEK_SET`: seek from the beginning of data
395 * - `RW_SEEK_CUR`: seek relative to current read point
396 * - `RW_SEEK_END`: seek relative to the end of data
397 *
398 * If this stream can not seek, it will return -1.
399 *
400 * SDL_RWseek() is actually a wrapper function that calls the SDL_RWops's
401 * `seek` method appropriately, to simplify application development.
402 *
403 * Prior to SDL 2.0.10, this function was a macro.
404 *
405 * \param context a pointer to an SDL_RWops structure
406 * \param offset an offset in bytes, relative to **whence** location; can be
407 * negative
408 * \param whence any of `RW_SEEK_SET`, `RW_SEEK_CUR`, `RW_SEEK_END`
409 * \returns the final offset in the data stream after the seek or -1 on error.
410 *
411 * \since This function is available since SDL 2.0.10.
412 *
413 * \sa SDL_RWclose
414 * \sa SDL_RWFromConstMem
415 * \sa SDL_RWFromFile
416 * \sa SDL_RWFromFP
417 * \sa SDL_RWFromMem
418 * \sa SDL_RWread
419 * \sa SDL_RWtell
420 * \sa SDL_RWwrite
421 */
422extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context,
423 Sint64 offset, int whence);
424
425/**
426 * Determine the current read/write offset in an SDL_RWops data stream.
427 *
428 * SDL_RWtell is actually a wrapper function that calls the SDL_RWops's `seek`
429 * method, with an offset of 0 bytes from `RW_SEEK_CUR`, to simplify
430 * application development.
431 *
432 * Prior to SDL 2.0.10, this function was a macro.
433 *
434 * \param context a SDL_RWops data stream object from which to get the current
435 * offset
436 * \returns the current offset in the stream, or -1 if the information can not
437 * be determined.
438 *
439 * \since This function is available since SDL 2.0.10.
440 *
441 * \sa SDL_RWclose
442 * \sa SDL_RWFromConstMem
443 * \sa SDL_RWFromFile
444 * \sa SDL_RWFromFP
445 * \sa SDL_RWFromMem
446 * \sa SDL_RWread
447 * \sa SDL_RWseek
448 * \sa SDL_RWwrite
449 */
450extern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context);
451
452/**
453 * Read from a data source.
454 *
455 * This function reads up to `maxnum` objects each of size `size` from the
456 * data source to the area pointed at by `ptr`. This function may read less
457 * objects than requested. It will return zero when there has been an error or
458 * the data stream is completely read.
459 *
460 * SDL_RWread() is actually a function wrapper that calls the SDL_RWops's
461 * `read` method appropriately, to simplify application development.
462 *
463 * Prior to SDL 2.0.10, this function was a macro.
464 *
465 * \param context a pointer to an SDL_RWops structure
466 * \param ptr a pointer to a buffer to read data into
467 * \param size the size of each object to read, in bytes
468 * \param maxnum the maximum number of objects to be read
469 * \returns the number of objects read, or 0 at error or end of file; call
470 * SDL_GetError() for more information.
471 *
472 * \since This function is available since SDL 2.0.10.
473 *
474 * \sa SDL_RWclose
475 * \sa SDL_RWFromConstMem
476 * \sa SDL_RWFromFile
477 * \sa SDL_RWFromFP
478 * \sa SDL_RWFromMem
479 * \sa SDL_RWseek
480 * \sa SDL_RWwrite
481 */
482extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context,
483 void *ptr, size_t size,
484 size_t maxnum);
485
486/**
487 * Write to an SDL_RWops data stream.
488 *
489 * This function writes exactly `num` objects each of size `size` from the
490 * area pointed at by `ptr` to the stream. If this fails for any reason, it'll
491 * return less than `num` to demonstrate how far the write progressed. On
492 * success, it returns `num`.
493 *
494 * SDL_RWwrite is actually a function wrapper that calls the SDL_RWops's
495 * `write` method appropriately, to simplify application development.
496 *
497 * Prior to SDL 2.0.10, this function was a macro.
498 *
499 * \param context a pointer to an SDL_RWops structure
500 * \param ptr a pointer to a buffer containing data to write
501 * \param size the size of an object to write, in bytes
502 * \param num the number of objects to write
503 * \returns the number of objects written, which will be less than **num** on
504 * error; call SDL_GetError() for more information.
505 *
506 * \since This function is available since SDL 2.0.10.
507 *
508 * \sa SDL_RWclose
509 * \sa SDL_RWFromConstMem
510 * \sa SDL_RWFromFile
511 * \sa SDL_RWFromFP
512 * \sa SDL_RWFromMem
513 * \sa SDL_RWread
514 * \sa SDL_RWseek
515 */
516extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context,
517 const void *ptr, size_t size,
518 size_t num);
519
520/**
521 * Close and free an allocated SDL_RWops structure.
522 *
523 * SDL_RWclose() closes and cleans up the SDL_RWops stream. It releases any
524 * resources used by the stream and frees the SDL_RWops itself with
525 * SDL_FreeRW(). This returns 0 on success, or -1 if the stream failed to
526 * flush to its output (e.g. to disk).
527 *
528 * Note that if this fails to flush the stream to disk, this function reports
529 * an error, but the SDL_RWops is still invalid once this function returns.
530 *
531 * Prior to SDL 2.0.10, this function was a macro.
532 *
533 * \param context SDL_RWops structure to close
534 * \returns 0 on success or a negative error code on failure; call
535 * SDL_GetError() for more information.
536 *
537 * \since This function is available since SDL 2.0.10.
538 *
539 * \sa SDL_RWFromConstMem
540 * \sa SDL_RWFromFile
541 * \sa SDL_RWFromFP
542 * \sa SDL_RWFromMem
543 * \sa SDL_RWread
544 * \sa SDL_RWseek
545 * \sa SDL_RWwrite
546 */
547extern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context);
548
549/**
550 * Load all the data from an SDL data stream.
551 *
552 * The data is allocated with a zero byte at the end (null terminated) for
553 * convenience. This extra byte is not included in the value reported via
554 * `datasize`.
555 *
556 * The data should be freed with SDL_free().
557 *
558 * \param src the SDL_RWops to read all available data from
559 * \param datasize if not NULL, will store the number of bytes read
560 * \param freesrc if non-zero, calls SDL_RWclose() on `src` before returning
561 * \returns the data, or NULL if there was an error.
562 *
563 * \since This function is available since SDL 2.0.6.
564 */
565extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops *src,
566 size_t *datasize,
567 int freesrc);
568
569/**
570 * Load all the data from a file path.
571 *
572 * The data is allocated with a zero byte at the end (null terminated) for
573 * convenience. This extra byte is not included in the value reported via
574 * `datasize`.
575 *
576 * The data should be freed with SDL_free().
577 *
578 * Prior to SDL 2.0.10, this function was a macro wrapping around
579 * SDL_LoadFile_RW.
580 *
581 * \param file the path to read all available data from
582 * \param datasize if not NULL, will store the number of bytes read
583 * \returns the data, or NULL if there was an error.
584 *
585 * \since This function is available since SDL 2.0.10.
586 */
587extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize);
588
589/**
590 * \name Read endian functions
591 *
592 * Read an item of the specified endianness and return in native format.
593 */
594/* @{ */
595
596/**
597 * Use this function to read a byte from an SDL_RWops.
598 *
599 * \param src the SDL_RWops to read from
600 * \returns the read byte on success or 0 on failure; call SDL_GetError() for
601 * more information.
602 *
603 * \since This function is available since SDL 2.0.0.
604 *
605 * \sa SDL_WriteU8
606 */
607extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src);
608
609/**
610 * Use this function to read 16 bits of little-endian data from an SDL_RWops
611 * and return in native format.
612 *
613 * SDL byteswaps the data only if necessary, so the data returned will be in
614 * the native byte order.
615 *
616 * \param src the stream from which to read data
617 * \returns 16 bits of data in the native byte order of the platform.
618 *
619 * \since This function is available since SDL 2.0.0.
620 *
621 * \sa SDL_ReadBE16
622 */
623extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src);
624
625/**
626 * Use this function to read 16 bits of big-endian data from an SDL_RWops and
627 * return in native format.
628 *
629 * SDL byteswaps the data only if necessary, so the data returned will be in
630 * the native byte order.
631 *
632 * \param src the stream from which to read data
633 * \returns 16 bits of data in the native byte order of the platform.
634 *
635 * \since This function is available since SDL 2.0.0.
636 *
637 * \sa SDL_ReadLE16
638 */
639extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src);
640
641/**
642 * Use this function to read 32 bits of little-endian data from an SDL_RWops
643 * and return in native format.
644 *
645 * SDL byteswaps the data only if necessary, so the data returned will be in
646 * the native byte order.
647 *
648 * \param src the stream from which to read data
649 * \returns 32 bits of data in the native byte order of the platform.
650 *
651 * \since This function is available since SDL 2.0.0.
652 *
653 * \sa SDL_ReadBE32
654 */
655extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src);
656
657/**
658 * Use this function to read 32 bits of big-endian data from an SDL_RWops and
659 * return in native format.
660 *
661 * SDL byteswaps the data only if necessary, so the data returned will be in
662 * the native byte order.
663 *
664 * \param src the stream from which to read data
665 * \returns 32 bits of data in the native byte order of the platform.
666 *
667 * \since This function is available since SDL 2.0.0.
668 *
669 * \sa SDL_ReadLE32
670 */
671extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src);
672
673/**
674 * Use this function to read 64 bits of little-endian data from an SDL_RWops
675 * and return in native format.
676 *
677 * SDL byteswaps the data only if necessary, so the data returned will be in
678 * the native byte order.
679 *
680 * \param src the stream from which to read data
681 * \returns 64 bits of data in the native byte order of the platform.
682 *
683 * \since This function is available since SDL 2.0.0.
684 *
685 * \sa SDL_ReadBE64
686 */
687extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src);
688
689/**
690 * Use this function to read 64 bits of big-endian data from an SDL_RWops and
691 * return in native format.
692 *
693 * SDL byteswaps the data only if necessary, so the data returned will be in
694 * the native byte order.
695 *
696 * \param src the stream from which to read data
697 * \returns 64 bits of data in the native byte order of the platform.
698 *
699 * \since This function is available since SDL 2.0.0.
700 *
701 * \sa SDL_ReadLE64
702 */
703extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src);
704/* @} *//* Read endian functions */
705
706/**
707 * \name Write endian functions
708 *
709 * Write an item of native format to the specified endianness.
710 */
711/* @{ */
712
713/**
714 * Use this function to write a byte to an SDL_RWops.
715 *
716 * \param dst the SDL_RWops to write to
717 * \param value the byte value to write
718 * \returns 1 on success or 0 on failure; call SDL_GetError() for more
719 * information.
720 *
721 * \since This function is available since SDL 2.0.0.
722 *
723 * \sa SDL_ReadU8
724 */
725extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value);
726
727/**
728 * Use this function to write 16 bits in native format to a SDL_RWops as
729 * little-endian data.
730 *
731 * SDL byteswaps the data only if necessary, so the application always
732 * specifies native format, and the data written will be in little-endian
733 * format.
734 *
735 * \param dst the stream to which data will be written
736 * \param value the data to be written, in native format
737 * \returns 1 on successful write, 0 on error.
738 *
739 * \since This function is available since SDL 2.0.0.
740 *
741 * \sa SDL_WriteBE16
742 */
743extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value);
744
745/**
746 * Use this function to write 16 bits in native format to a SDL_RWops as
747 * big-endian data.
748 *
749 * SDL byteswaps the data only if necessary, so the application always
750 * specifies native format, and the data written will be in big-endian format.
751 *
752 * \param dst the stream to which data will be written
753 * \param value the data to be written, in native format
754 * \returns 1 on successful write, 0 on error.
755 *
756 * \since This function is available since SDL 2.0.0.
757 *
758 * \sa SDL_WriteLE16
759 */
760extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value);
761
762/**
763 * Use this function to write 32 bits in native format to a SDL_RWops as
764 * little-endian data.
765 *
766 * SDL byteswaps the data only if necessary, so the application always
767 * specifies native format, and the data written will be in little-endian
768 * format.
769 *
770 * \param dst the stream to which data will be written
771 * \param value the data to be written, in native format
772 * \returns 1 on successful write, 0 on error.
773 *
774 * \since This function is available since SDL 2.0.0.
775 *
776 * \sa SDL_WriteBE32
777 */
778extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value);
779
780/**
781 * Use this function to write 32 bits in native format to a SDL_RWops as
782 * big-endian data.
783 *
784 * SDL byteswaps the data only if necessary, so the application always
785 * specifies native format, and the data written will be in big-endian format.
786 *
787 * \param dst the stream to which data will be written
788 * \param value the data to be written, in native format
789 * \returns 1 on successful write, 0 on error.
790 *
791 * \since This function is available since SDL 2.0.0.
792 *
793 * \sa SDL_WriteLE32
794 */
795extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value);
796
797/**
798 * Use this function to write 64 bits in native format to a SDL_RWops as
799 * little-endian data.
800 *
801 * SDL byteswaps the data only if necessary, so the application always
802 * specifies native format, and the data written will be in little-endian
803 * format.
804 *
805 * \param dst the stream to which data will be written
806 * \param value the data to be written, in native format
807 * \returns 1 on successful write, 0 on error.
808 *
809 * \since This function is available since SDL 2.0.0.
810 *
811 * \sa SDL_WriteBE64
812 */
813extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value);
814
815/**
816 * Use this function to write 64 bits in native format to a SDL_RWops as
817 * big-endian data.
818 *
819 * SDL byteswaps the data only if necessary, so the application always
820 * specifies native format, and the data written will be in big-endian format.
821 *
822 * \param dst the stream to which data will be written
823 * \param value the data to be written, in native format
824 * \returns 1 on successful write, 0 on error.
825 *
826 * \since This function is available since SDL 2.0.0.
827 *
828 * \sa SDL_WriteLE64
829 */
830extern DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops * dst, Uint64 value);
831/* @} *//* Write endian functions */
832
833/* Ends C function definitions when using C++ */
834#ifdef __cplusplus
835}
836#endif
837#include "close_code.h"
838
839#endif /* SDL_rwops_h_ */
840
841/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_scancode.h b/src/contrib/SDL-2.30.2/include/SDL_scancode.h
new file mode 100644
index 0000000..fe13d5b
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_scancode.h
@@ -0,0 +1,438 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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, /**< AL Integrated Help Center */
229 SDL_SCANCODE_MENU = 118, /**< Menu (show menu) */
230 SDL_SCANCODE_SELECT = 119,
231 SDL_SCANCODE_STOP = 120, /**< AC Stop */
232 SDL_SCANCODE_AGAIN = 121, /**< AC Redo/Repeat */
233 SDL_SCANCODE_UNDO = 122, /**< AC Undo */
234 SDL_SCANCODE_CUT = 123, /**< AC Cut */
235 SDL_SCANCODE_COPY = 124, /**< AC Copy */
236 SDL_SCANCODE_PASTE = 125, /**< AC Paste */
237 SDL_SCANCODE_FIND = 126, /**< AC Find */
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, /**< AC Cancel */
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 * See https://usb.org/sites/default/files/hut1_2.pdf
349 *
350 * There are way more keys in the spec than we can represent in the
351 * current scancode range, so pick the ones that commonly come up in
352 * real world usage.
353 */
354 /* @{ */
355
356 SDL_SCANCODE_AUDIONEXT = 258,
357 SDL_SCANCODE_AUDIOPREV = 259,
358 SDL_SCANCODE_AUDIOSTOP = 260,
359 SDL_SCANCODE_AUDIOPLAY = 261,
360 SDL_SCANCODE_AUDIOMUTE = 262,
361 SDL_SCANCODE_MEDIASELECT = 263,
362 SDL_SCANCODE_WWW = 264, /**< AL Internet Browser */
363 SDL_SCANCODE_MAIL = 265,
364 SDL_SCANCODE_CALCULATOR = 266, /**< AL Calculator */
365 SDL_SCANCODE_COMPUTER = 267,
366 SDL_SCANCODE_AC_SEARCH = 268, /**< AC Search */
367 SDL_SCANCODE_AC_HOME = 269, /**< AC Home */
368 SDL_SCANCODE_AC_BACK = 270, /**< AC Back */
369 SDL_SCANCODE_AC_FORWARD = 271, /**< AC Forward */
370 SDL_SCANCODE_AC_STOP = 272, /**< AC Stop */
371 SDL_SCANCODE_AC_REFRESH = 273, /**< AC Refresh */
372 SDL_SCANCODE_AC_BOOKMARKS = 274, /**< AC Bookmarks */
373
374 /* @} *//* Usage page 0x0C */
375
376 /**
377 * \name Walther keys
378 *
379 * These are values that Christian Walther added (for mac keyboard?).
380 */
381 /* @{ */
382
383 SDL_SCANCODE_BRIGHTNESSDOWN = 275,
384 SDL_SCANCODE_BRIGHTNESSUP = 276,
385 SDL_SCANCODE_DISPLAYSWITCH = 277, /**< display mirroring/dual display
386 switch, video mode switch */
387 SDL_SCANCODE_KBDILLUMTOGGLE = 278,
388 SDL_SCANCODE_KBDILLUMDOWN = 279,
389 SDL_SCANCODE_KBDILLUMUP = 280,
390 SDL_SCANCODE_EJECT = 281,
391 SDL_SCANCODE_SLEEP = 282, /**< SC System Sleep */
392
393 SDL_SCANCODE_APP1 = 283,
394 SDL_SCANCODE_APP2 = 284,
395
396 /* @} *//* Walther keys */
397
398 /**
399 * \name Usage page 0x0C (additional media keys)
400 *
401 * These values are mapped from usage page 0x0C (USB consumer page).
402 */
403 /* @{ */
404
405 SDL_SCANCODE_AUDIOREWIND = 285,
406 SDL_SCANCODE_AUDIOFASTFORWARD = 286,
407
408 /* @} *//* Usage page 0x0C (additional media keys) */
409
410 /**
411 * \name Mobile keys
412 *
413 * These are values that are often used on mobile phones.
414 */
415 /* @{ */
416
417 SDL_SCANCODE_SOFTLEFT = 287, /**< Usually situated below the display on phones and
418 used as a multi-function feature key for selecting
419 a software defined function shown on the bottom left
420 of the display. */
421 SDL_SCANCODE_SOFTRIGHT = 288, /**< Usually situated below the display on phones and
422 used as a multi-function feature key for selecting
423 a software defined function shown on the bottom right
424 of the display. */
425 SDL_SCANCODE_CALL = 289, /**< Used for accepting phone calls. */
426 SDL_SCANCODE_ENDCALL = 290, /**< Used for rejecting phone calls. */
427
428 /* @} *//* Mobile keys */
429
430 /* Add any other keys here. */
431
432 SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes
433 for array bounds */
434} SDL_Scancode;
435
436#endif /* SDL_scancode_h_ */
437
438/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_sensor.h b/src/contrib/SDL-2.30.2/include/SDL_sensor.h
new file mode 100644
index 0000000..8b89ef6
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_sensor.h
@@ -0,0 +1,322 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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_SENSOR_ACCEL_L, /**< Accelerometer for left Joy-Con controller and Wii nunchuk */
76 SDL_SENSOR_GYRO_L, /**< Gyroscope for left Joy-Con controller */
77 SDL_SENSOR_ACCEL_R, /**< Accelerometer for right Joy-Con controller */
78 SDL_SENSOR_GYRO_R /**< Gyroscope for right Joy-Con controller */
79} SDL_SensorType;
80
81/**
82 * Accelerometer sensor
83 *
84 * The accelerometer returns the current acceleration in SI meters per
85 * second squared. This measurement includes the force of gravity, so
86 * a device at rest will have an value of SDL_STANDARD_GRAVITY away
87 * from the center of the earth, which is a positive Y value.
88 *
89 * values[0]: Acceleration on the x axis
90 * values[1]: Acceleration on the y axis
91 * values[2]: Acceleration on the z axis
92 *
93 * For phones held in portrait mode and game controllers held in front of you,
94 * the axes are defined as follows:
95 * -X ... +X : left ... right
96 * -Y ... +Y : bottom ... top
97 * -Z ... +Z : farther ... closer
98 *
99 * The axis data is not changed when the phone is rotated.
100 *
101 * \sa SDL_GetDisplayOrientation()
102 */
103#define SDL_STANDARD_GRAVITY 9.80665f
104
105/**
106 * Gyroscope sensor
107 *
108 * The gyroscope returns the current rate of rotation in radians per second.
109 * The rotation is positive in the counter-clockwise direction. That is,
110 * an observer looking from a positive location on one of the axes would
111 * see positive rotation on that axis when it appeared to be rotating
112 * counter-clockwise.
113 *
114 * values[0]: Angular speed around the x axis (pitch)
115 * values[1]: Angular speed around the y axis (yaw)
116 * values[2]: Angular speed around the z axis (roll)
117 *
118 * For phones held in portrait mode and game controllers held in front of you,
119 * the axes are defined as follows:
120 * -X ... +X : left ... right
121 * -Y ... +Y : bottom ... top
122 * -Z ... +Z : farther ... closer
123 *
124 * The axis data is not changed when the phone or controller is rotated.
125 *
126 * \sa SDL_GetDisplayOrientation()
127 */
128
129/* Function prototypes */
130
131/**
132 * Locking for multi-threaded access to the sensor API
133 *
134 * If you are using the sensor API or handling events from multiple threads
135 * you should use these locking functions to protect access to the sensors.
136 *
137 * In particular, you are guaranteed that the sensor list won't change, so the
138 * API functions that take a sensor index will be valid, and sensor events
139 * will not be delivered.
140 *
141 * \since This function is available since SDL 2.0.14.
142 */
143extern DECLSPEC void SDLCALL SDL_LockSensors(void);
144extern DECLSPEC void SDLCALL SDL_UnlockSensors(void);
145
146/**
147 * Count the number of sensors attached to the system right now.
148 *
149 * \returns the number of sensors detected.
150 *
151 * \since This function is available since SDL 2.0.9.
152 */
153extern DECLSPEC int SDLCALL SDL_NumSensors(void);
154
155/**
156 * Get the implementation dependent name of a sensor.
157 *
158 * \param device_index The sensor to obtain name from
159 * \returns the sensor name, or NULL if `device_index` is out of range.
160 *
161 * \since This function is available since SDL 2.0.9.
162 */
163extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index);
164
165/**
166 * Get the type of a sensor.
167 *
168 * \param device_index The sensor to get the type from
169 * \returns the SDL_SensorType, or `SDL_SENSOR_INVALID` if `device_index` is
170 * out of range.
171 *
172 * \since This function is available since SDL 2.0.9.
173 */
174extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index);
175
176/**
177 * Get the platform dependent type of a sensor.
178 *
179 * \param device_index The sensor to check
180 * \returns the sensor platform dependent type, or -1 if `device_index` is out
181 * of range.
182 *
183 * \since This function is available since SDL 2.0.9.
184 */
185extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index);
186
187/**
188 * Get the instance ID of a sensor.
189 *
190 * \param device_index The sensor to get instance id from
191 * \returns the sensor instance ID, or -1 if `device_index` is out of range.
192 *
193 * \since This function is available since SDL 2.0.9.
194 */
195extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index);
196
197/**
198 * Open a sensor for use.
199 *
200 * \param device_index The sensor to open
201 * \returns an SDL_Sensor sensor object, or NULL if an error occurred.
202 *
203 * \since This function is available since SDL 2.0.9.
204 */
205extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index);
206
207/**
208 * Return the SDL_Sensor associated with an instance id.
209 *
210 * \param instance_id The sensor from instance id
211 * \returns an SDL_Sensor object.
212 *
213 * \since This function is available since SDL 2.0.9.
214 */
215extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id);
216
217/**
218 * Get the implementation dependent name of a sensor
219 *
220 * \param sensor The SDL_Sensor object
221 * \returns the sensor name, or NULL if `sensor` is NULL.
222 *
223 * \since This function is available since SDL 2.0.9.
224 */
225extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor);
226
227/**
228 * Get the type of a sensor.
229 *
230 * \param sensor The SDL_Sensor object to inspect
231 * \returns the SDL_SensorType type, or `SDL_SENSOR_INVALID` if `sensor` is
232 * NULL.
233 *
234 * \since This function is available since SDL 2.0.9.
235 */
236extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor);
237
238/**
239 * Get the platform dependent type of a sensor.
240 *
241 * \param sensor The SDL_Sensor object to inspect
242 * \returns the sensor platform dependent type, or -1 if `sensor` is NULL.
243 *
244 * \since This function is available since SDL 2.0.9.
245 */
246extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor);
247
248/**
249 * Get the instance ID of a sensor.
250 *
251 * \param sensor The SDL_Sensor object to inspect
252 * \returns the sensor instance ID, or -1 if `sensor` is NULL.
253 *
254 * \since This function is available since SDL 2.0.9.
255 */
256extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor);
257
258/**
259 * Get the current state of an opened sensor.
260 *
261 * The number of values and interpretation of the data is sensor dependent.
262 *
263 * \param sensor The SDL_Sensor object to query
264 * \param data A pointer filled with the current sensor state
265 * \param num_values The number of values to write to data
266 * \returns 0 or -1 if an error occurred.
267 *
268 * \since This function is available since SDL 2.0.9.
269 */
270extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor *sensor, float *data, int num_values);
271
272/**
273 * Get the current state of an opened sensor with the timestamp of the last
274 * update.
275 *
276 * The number of values and interpretation of the data is sensor dependent.
277 *
278 * \param sensor The SDL_Sensor object to query
279 * \param timestamp A pointer filled with the timestamp in microseconds of the
280 * current sensor reading if available, or 0 if not
281 * \param data A pointer filled with the current sensor state
282 * \param num_values The number of values to write to data
283 * \returns 0 or -1 if an error occurred.
284 *
285 * \since This function is available since SDL 2.26.0.
286 */
287extern DECLSPEC int SDLCALL SDL_SensorGetDataWithTimestamp(SDL_Sensor *sensor, Uint64 *timestamp, float *data, int num_values);
288
289/**
290 * Close a sensor previously opened with SDL_SensorOpen().
291 *
292 * \param sensor The SDL_Sensor object to close
293 *
294 * \since This function is available since SDL 2.0.9.
295 */
296extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor *sensor);
297
298/**
299 * Update the current state of the open sensors.
300 *
301 * This is called automatically by the event loop if sensor events are
302 * enabled.
303 *
304 * This needs to be called from the thread that initialized the sensor
305 * subsystem.
306 *
307 * \since This function is available since SDL 2.0.9.
308 */
309extern DECLSPEC void SDLCALL SDL_SensorUpdate(void);
310
311
312/* Ends C function definitions when using C++ */
313#ifdef __cplusplus
314/* *INDENT-OFF* */
315}
316/* *INDENT-ON* */
317#endif
318#include "close_code.h"
319
320#endif /* SDL_sensor_h_ */
321
322/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_shape.h b/src/contrib/SDL-2.30.2/include/SDL_shape.h
new file mode 100644
index 0000000..4783cf2
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_shape.h
@@ -0,0 +1,155 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_stdinc.h b/src/contrib/SDL-2.30.2/include/SDL_stdinc.h
new file mode 100644
index 0000000..0035a35
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_stdinc.h
@@ -0,0 +1,844 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 HAVE_SYS_TYPES_H
34#include <sys/types.h>
35#endif
36#ifdef HAVE_STDIO_H
37#include <stdio.h>
38#endif
39#if defined(STDC_HEADERS)
40# include <stdlib.h>
41# include <stddef.h>
42# include <stdarg.h>
43#else
44# if defined(HAVE_STDLIB_H)
45# include <stdlib.h>
46# elif defined(HAVE_MALLOC_H)
47# include <malloc.h>
48# endif
49# if defined(HAVE_STDDEF_H)
50# include <stddef.h>
51# endif
52# if defined(HAVE_STDARG_H)
53# include <stdarg.h>
54# endif
55#endif
56#ifdef HAVE_STRING_H
57# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
58# include <memory.h>
59# endif
60# include <string.h>
61#endif
62#ifdef HAVE_STRINGS_H
63# include <strings.h>
64#endif
65#ifdef HAVE_WCHAR_H
66# include <wchar.h>
67#endif
68#if defined(HAVE_INTTYPES_H)
69# include <inttypes.h>
70#elif defined(HAVE_STDINT_H)
71# include <stdint.h>
72#endif
73#ifdef HAVE_CTYPE_H
74# include <ctype.h>
75#endif
76#ifdef HAVE_MATH_H
77# if defined(_MSC_VER)
78/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on
79 Visual Studio. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx
80 for more information.
81*/
82# ifndef _USE_MATH_DEFINES
83# define _USE_MATH_DEFINES
84# endif
85# endif
86# include <math.h>
87#endif
88#ifdef HAVE_FLOAT_H
89# include <float.h>
90#endif
91#if defined(HAVE_ALLOCA) && !defined(alloca)
92# if defined(HAVE_ALLOCA_H)
93# include <alloca.h>
94# elif defined(__GNUC__)
95# define alloca __builtin_alloca
96# elif defined(_MSC_VER)
97# include <malloc.h>
98# define alloca _alloca
99# elif defined(__WATCOMC__)
100# include <malloc.h>
101# elif defined(__BORLANDC__)
102# include <malloc.h>
103# elif defined(__DMC__)
104# include <stdlib.h>
105# elif defined(__AIX__)
106#pragma alloca
107# elif defined(__MRC__)
108void *alloca(unsigned);
109# else
110char *alloca();
111# endif
112#endif
113
114#ifdef SIZE_MAX
115# define SDL_SIZE_MAX SIZE_MAX
116#else
117# define SDL_SIZE_MAX ((size_t) -1)
118#endif
119
120/**
121 * Check if the compiler supports a given builtin.
122 * Supported by virtually all clang versions and recent gcc. Use this
123 * instead of checking the clang version if possible.
124 */
125#ifdef __has_builtin
126#define _SDL_HAS_BUILTIN(x) __has_builtin(x)
127#else
128#define _SDL_HAS_BUILTIN(x) 0
129#endif
130
131/**
132 * The number of elements in an array.
133 */
134#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0]))
135#define SDL_TABLESIZE(table) SDL_arraysize(table)
136
137/**
138 * Macro useful for building other macros with strings in them
139 *
140 * e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n")
141 */
142#define SDL_STRINGIFY_ARG(arg) #arg
143
144/**
145 * \name Cast operators
146 *
147 * Use proper C++ casts when compiled as C++ to be compatible with the option
148 * -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above).
149 */
150/* @{ */
151#ifdef __cplusplus
152#define SDL_reinterpret_cast(type, expression) reinterpret_cast<type>(expression)
153#define SDL_static_cast(type, expression) static_cast<type>(expression)
154#define SDL_const_cast(type, expression) const_cast<type>(expression)
155#else
156#define SDL_reinterpret_cast(type, expression) ((type)(expression))
157#define SDL_static_cast(type, expression) ((type)(expression))
158#define SDL_const_cast(type, expression) ((type)(expression))
159#endif
160/* @} *//* Cast operators */
161
162/* Define a four character code as a Uint32 */
163#define SDL_FOURCC(A, B, C, D) \
164 ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \
165 (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \
166 (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \
167 (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24))
168
169/**
170 * \name Basic data types
171 */
172/* @{ */
173
174#ifdef __CC_ARM
175/* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */
176#define SDL_FALSE 0
177#define SDL_TRUE 1
178typedef int SDL_bool;
179#else
180typedef enum
181{
182 SDL_FALSE = 0,
183 SDL_TRUE = 1
184} SDL_bool;
185#endif
186
187/**
188 * \brief A signed 8-bit integer type.
189 */
190#define SDL_MAX_SINT8 ((Sint8)0x7F) /* 127 */
191#define SDL_MIN_SINT8 ((Sint8)(~0x7F)) /* -128 */
192typedef int8_t Sint8;
193/**
194 * \brief An unsigned 8-bit integer type.
195 */
196#define SDL_MAX_UINT8 ((Uint8)0xFF) /* 255 */
197#define SDL_MIN_UINT8 ((Uint8)0x00) /* 0 */
198typedef uint8_t Uint8;
199/**
200 * \brief A signed 16-bit integer type.
201 */
202#define SDL_MAX_SINT16 ((Sint16)0x7FFF) /* 32767 */
203#define SDL_MIN_SINT16 ((Sint16)(~0x7FFF)) /* -32768 */
204typedef int16_t Sint16;
205/**
206 * \brief An unsigned 16-bit integer type.
207 */
208#define SDL_MAX_UINT16 ((Uint16)0xFFFF) /* 65535 */
209#define SDL_MIN_UINT16 ((Uint16)0x0000) /* 0 */
210typedef uint16_t Uint16;
211/**
212 * \brief A signed 32-bit integer type.
213 */
214#define SDL_MAX_SINT32 ((Sint32)0x7FFFFFFF) /* 2147483647 */
215#define SDL_MIN_SINT32 ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */
216typedef int32_t Sint32;
217/**
218 * \brief An unsigned 32-bit integer type.
219 */
220#define SDL_MAX_UINT32 ((Uint32)0xFFFFFFFFu) /* 4294967295 */
221#define SDL_MIN_UINT32 ((Uint32)0x00000000) /* 0 */
222typedef uint32_t Uint32;
223
224/**
225 * \brief A signed 64-bit integer type.
226 */
227#define SDL_MAX_SINT64 ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */
228#define SDL_MIN_SINT64 ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */
229typedef int64_t Sint64;
230/**
231 * \brief An unsigned 64-bit integer type.
232 */
233#define SDL_MAX_UINT64 ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */
234#define SDL_MIN_UINT64 ((Uint64)(0x0000000000000000ull)) /* 0 */
235typedef uint64_t Uint64;
236
237/* @} *//* Basic data types */
238
239/**
240 * \name Floating-point constants
241 */
242/* @{ */
243
244#ifdef FLT_EPSILON
245#define SDL_FLT_EPSILON FLT_EPSILON
246#else
247#define SDL_FLT_EPSILON 1.1920928955078125e-07F /* 0x0.000002p0 */
248#endif
249
250/* @} *//* Floating-point constants */
251
252/* Make sure we have macros for printing width-based integers.
253 * <stdint.h> should define these but this is not true all platforms.
254 * (for example win32) */
255#ifndef SDL_PRIs64
256#ifdef PRIs64
257#define SDL_PRIs64 PRIs64
258#elif defined(__WIN32__) || defined(__GDK__)
259#define SDL_PRIs64 "I64d"
260#elif defined(__LP64__) && !defined(__APPLE__)
261#define SDL_PRIs64 "ld"
262#else
263#define SDL_PRIs64 "lld"
264#endif
265#endif
266#ifndef SDL_PRIu64
267#ifdef PRIu64
268#define SDL_PRIu64 PRIu64
269#elif defined(__WIN32__) || defined(__GDK__)
270#define SDL_PRIu64 "I64u"
271#elif defined(__LP64__) && !defined(__APPLE__)
272#define SDL_PRIu64 "lu"
273#else
274#define SDL_PRIu64 "llu"
275#endif
276#endif
277#ifndef SDL_PRIx64
278#ifdef PRIx64
279#define SDL_PRIx64 PRIx64
280#elif defined(__WIN32__) || defined(__GDK__)
281#define SDL_PRIx64 "I64x"
282#elif defined(__LP64__) && !defined(__APPLE__)
283#define SDL_PRIx64 "lx"
284#else
285#define SDL_PRIx64 "llx"
286#endif
287#endif
288#ifndef SDL_PRIX64
289#ifdef PRIX64
290#define SDL_PRIX64 PRIX64
291#elif defined(__WIN32__) || defined(__GDK__)
292#define SDL_PRIX64 "I64X"
293#elif defined(__LP64__) && !defined(__APPLE__)
294#define SDL_PRIX64 "lX"
295#else
296#define SDL_PRIX64 "llX"
297#endif
298#endif
299#ifndef SDL_PRIs32
300#ifdef PRId32
301#define SDL_PRIs32 PRId32
302#else
303#define SDL_PRIs32 "d"
304#endif
305#endif
306#ifndef SDL_PRIu32
307#ifdef PRIu32
308#define SDL_PRIu32 PRIu32
309#else
310#define SDL_PRIu32 "u"
311#endif
312#endif
313#ifndef SDL_PRIx32
314#ifdef PRIx32
315#define SDL_PRIx32 PRIx32
316#else
317#define SDL_PRIx32 "x"
318#endif
319#endif
320#ifndef SDL_PRIX32
321#ifdef PRIX32
322#define SDL_PRIX32 PRIX32
323#else
324#define SDL_PRIX32 "X"
325#endif
326#endif
327
328/* Annotations to help code analysis tools */
329#ifdef SDL_DISABLE_ANALYZE_MACROS
330#define SDL_IN_BYTECAP(x)
331#define SDL_INOUT_Z_CAP(x)
332#define SDL_OUT_Z_CAP(x)
333#define SDL_OUT_CAP(x)
334#define SDL_OUT_BYTECAP(x)
335#define SDL_OUT_Z_BYTECAP(x)
336#define SDL_PRINTF_FORMAT_STRING
337#define SDL_SCANF_FORMAT_STRING
338#define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
339#define SDL_PRINTF_VARARG_FUNCV( fmtargnumber )
340#define SDL_SCANF_VARARG_FUNC( fmtargnumber )
341#define SDL_SCANF_VARARG_FUNCV( fmtargnumber )
342#else
343#if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */
344#include <sal.h>
345
346#define SDL_IN_BYTECAP(x) _In_bytecount_(x)
347#define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x)
348#define SDL_OUT_Z_CAP(x) _Out_z_cap_(x)
349#define SDL_OUT_CAP(x) _Out_cap_(x)
350#define SDL_OUT_BYTECAP(x) _Out_bytecap_(x)
351#define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x)
352
353#define SDL_PRINTF_FORMAT_STRING _Printf_format_string_
354#define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_
355#else
356#define SDL_IN_BYTECAP(x)
357#define SDL_INOUT_Z_CAP(x)
358#define SDL_OUT_Z_CAP(x)
359#define SDL_OUT_CAP(x)
360#define SDL_OUT_BYTECAP(x)
361#define SDL_OUT_Z_BYTECAP(x)
362#define SDL_PRINTF_FORMAT_STRING
363#define SDL_SCANF_FORMAT_STRING
364#endif
365#if defined(__GNUC__)
366#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 )))
367#define SDL_PRINTF_VARARG_FUNCV( fmtargnumber ) __attribute__(( format( __printf__, fmtargnumber, 0 )))
368#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 )))
369#define SDL_SCANF_VARARG_FUNCV( fmtargnumber ) __attribute__(( format( __scanf__, fmtargnumber, 0 )))
370#else
371#define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
372#define SDL_PRINTF_VARARG_FUNCV( fmtargnumber )
373#define SDL_SCANF_VARARG_FUNC( fmtargnumber )
374#define SDL_SCANF_VARARG_FUNCV( fmtargnumber )
375#endif
376#endif /* SDL_DISABLE_ANALYZE_MACROS */
377
378#ifndef SDL_COMPILE_TIME_ASSERT
379#if defined(__cplusplus)
380#if (__cplusplus >= 201103L)
381#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x)
382#endif
383#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
384#define SDL_COMPILE_TIME_ASSERT(name, x) _Static_assert(x, #x)
385#endif
386#endif /* !SDL_COMPILE_TIME_ASSERT */
387
388#ifndef SDL_COMPILE_TIME_ASSERT
389/* universal, but may trigger -Wunused-local-typedefs */
390#define SDL_COMPILE_TIME_ASSERT(name, x) \
391 typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1]
392#endif
393
394/** \cond */
395#ifndef DOXYGEN_SHOULD_IGNORE_THIS
396SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1);
397SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1);
398SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2);
399SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2);
400SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4);
401SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4);
402SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8);
403SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
404#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
405/** \endcond */
406
407/* Check to make sure enums are the size of ints, for structure packing.
408 For both Watcom C/C++ and Borland C/C++ the compiler option that makes
409 enums having the size of an int must be enabled.
410 This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11).
411*/
412
413/** \cond */
414#ifndef DOXYGEN_SHOULD_IGNORE_THIS
415#if !defined(__ANDROID__) && !defined(__VITA__) && !defined(__3DS__)
416 /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */
417typedef enum
418{
419 DUMMY_ENUM_VALUE
420} SDL_DUMMY_ENUM;
421
422SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int));
423#endif
424#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
425/** \endcond */
426
427#include "begin_code.h"
428/* Set up for C function definitions, even when using C++ */
429#ifdef __cplusplus
430extern "C" {
431#endif
432
433#ifdef HAVE_ALLOCA
434#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count))
435#define SDL_stack_free(data)
436#else
437#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count))
438#define SDL_stack_free(data) SDL_free(data)
439#endif
440
441extern DECLSPEC void *SDLCALL SDL_malloc(size_t size);
442extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size);
443extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size);
444extern DECLSPEC void SDLCALL SDL_free(void *mem);
445
446typedef void *(SDLCALL *SDL_malloc_func)(size_t size);
447typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size);
448typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size);
449typedef void (SDLCALL *SDL_free_func)(void *mem);
450
451/**
452 * Get the original set of SDL memory functions
453 *
454 * \since This function is available since SDL 2.24.0.
455 */
456extern DECLSPEC void SDLCALL SDL_GetOriginalMemoryFunctions(SDL_malloc_func *malloc_func,
457 SDL_calloc_func *calloc_func,
458 SDL_realloc_func *realloc_func,
459 SDL_free_func *free_func);
460
461/**
462 * Get the current set of SDL memory functions
463 *
464 * \since This function is available since SDL 2.0.7.
465 */
466extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func,
467 SDL_calloc_func *calloc_func,
468 SDL_realloc_func *realloc_func,
469 SDL_free_func *free_func);
470
471/**
472 * Replace SDL's memory allocation functions with a custom set
473 *
474 * \since This function is available since SDL 2.0.7.
475 */
476extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func,
477 SDL_calloc_func calloc_func,
478 SDL_realloc_func realloc_func,
479 SDL_free_func free_func);
480
481/**
482 * Get the number of outstanding (unfreed) allocations
483 *
484 * \since This function is available since SDL 2.0.7.
485 */
486extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void);
487
488extern DECLSPEC char *SDLCALL SDL_getenv(const char *name);
489extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite);
490
491extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *));
492extern DECLSPEC void * SDLCALL SDL_bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *));
493
494extern DECLSPEC int SDLCALL SDL_abs(int x);
495
496/* NOTE: these double-evaluate their arguments, so you should never have side effects in the parameters */
497#define SDL_min(x, y) (((x) < (y)) ? (x) : (y))
498#define SDL_max(x, y) (((x) > (y)) ? (x) : (y))
499#define SDL_clamp(x, a, b) (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x)))
500
501extern DECLSPEC int SDLCALL SDL_isalpha(int x);
502extern DECLSPEC int SDLCALL SDL_isalnum(int x);
503extern DECLSPEC int SDLCALL SDL_isblank(int x);
504extern DECLSPEC int SDLCALL SDL_iscntrl(int x);
505extern DECLSPEC int SDLCALL SDL_isdigit(int x);
506extern DECLSPEC int SDLCALL SDL_isxdigit(int x);
507extern DECLSPEC int SDLCALL SDL_ispunct(int x);
508extern DECLSPEC int SDLCALL SDL_isspace(int x);
509extern DECLSPEC int SDLCALL SDL_isupper(int x);
510extern DECLSPEC int SDLCALL SDL_islower(int x);
511extern DECLSPEC int SDLCALL SDL_isprint(int x);
512extern DECLSPEC int SDLCALL SDL_isgraph(int x);
513extern DECLSPEC int SDLCALL SDL_toupper(int x);
514extern DECLSPEC int SDLCALL SDL_tolower(int x);
515
516extern DECLSPEC Uint16 SDLCALL SDL_crc16(Uint16 crc, const void *data, size_t len);
517extern DECLSPEC Uint32 SDLCALL SDL_crc32(Uint32 crc, const void *data, size_t len);
518
519extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len);
520
521#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x)))
522#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x)))
523#define SDL_zeroa(x) SDL_memset((x), 0, sizeof((x)))
524
525#define SDL_copyp(dst, src) \
526 { SDL_COMPILE_TIME_ASSERT(SDL_copyp, sizeof (*(dst)) == sizeof (*(src))); } \
527 SDL_memcpy((dst), (src), sizeof (*(src)))
528
529
530/* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */
531SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords)
532{
533#if defined(__GNUC__) && defined(__i386__)
534 int u0, u1, u2;
535 __asm__ __volatile__ (
536 "cld \n\t"
537 "rep ; stosl \n\t"
538 : "=&D" (u0), "=&a" (u1), "=&c" (u2)
539 : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, dwords))
540 : "memory"
541 );
542#else
543 size_t _n = (dwords + 3) / 4;
544 Uint32 *_p = SDL_static_cast(Uint32 *, dst);
545 Uint32 _val = (val);
546 if (dwords == 0) {
547 return;
548 }
549 switch (dwords % 4) {
550 case 0: do { *_p++ = _val; SDL_FALLTHROUGH;
551 case 3: *_p++ = _val; SDL_FALLTHROUGH;
552 case 2: *_p++ = _val; SDL_FALLTHROUGH;
553 case 1: *_p++ = _val;
554 } while ( --_n );
555 }
556#endif
557}
558
559extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
560
561extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
562extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len);
563
564extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr);
565extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
566extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
567extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr);
568extern DECLSPEC wchar_t *SDLCALL SDL_wcsstr(const wchar_t *haystack, const wchar_t *needle);
569
570extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2);
571extern DECLSPEC int SDLCALL SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen);
572extern DECLSPEC int SDLCALL SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2);
573extern DECLSPEC int SDLCALL SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t len);
574
575extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str);
576extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
577extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes);
578extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
579extern DECLSPEC char *SDLCALL SDL_strdup(const char *str);
580extern DECLSPEC char *SDLCALL SDL_strrev(char *str);
581extern DECLSPEC char *SDLCALL SDL_strupr(char *str);
582extern DECLSPEC char *SDLCALL SDL_strlwr(char *str);
583extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c);
584extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c);
585extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle);
586extern DECLSPEC char *SDLCALL SDL_strcasestr(const char *haystack, const char *needle);
587extern DECLSPEC char *SDLCALL SDL_strtokr(char *s1, const char *s2, char **saveptr);
588extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str);
589extern DECLSPEC size_t SDLCALL SDL_utf8strnlen(const char *str, size_t bytes);
590
591extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix);
592extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix);
593extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix);
594extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix);
595extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix);
596extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix);
597
598extern DECLSPEC int SDLCALL SDL_atoi(const char *str);
599extern DECLSPEC double SDLCALL SDL_atof(const char *str);
600extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base);
601extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base);
602extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base);
603extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base);
604extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp);
605
606extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2);
607extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen);
608extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2);
609extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len);
610
611extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2);
612extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, va_list ap) SDL_SCANF_VARARG_FUNCV(2);
613extern 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);
614extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(3);
615extern DECLSPEC int SDLCALL SDL_asprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
616extern DECLSPEC int SDLCALL SDL_vasprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(2);
617
618#ifndef HAVE_M_PI
619#ifndef M_PI
620#define M_PI 3.14159265358979323846264338327950288 /**< pi */
621#endif
622#endif
623
624/**
625 * Use this function to compute arc cosine of `x`.
626 *
627 * The definition of `y = acos(x)` is `x = cos(y)`.
628 *
629 * Domain: `-1 <= x <= 1`
630 *
631 * Range: `0 <= y <= Pi`
632 *
633 * \param x floating point value, in radians.
634 * \returns arc cosine of `x`.
635 *
636 * \since This function is available since SDL 2.0.2.
637 */
638extern DECLSPEC double SDLCALL SDL_acos(double x);
639extern DECLSPEC float SDLCALL SDL_acosf(float x);
640extern DECLSPEC double SDLCALL SDL_asin(double x);
641extern DECLSPEC float SDLCALL SDL_asinf(float x);
642extern DECLSPEC double SDLCALL SDL_atan(double x);
643extern DECLSPEC float SDLCALL SDL_atanf(float x);
644extern DECLSPEC double SDLCALL SDL_atan2(double y, double x);
645extern DECLSPEC float SDLCALL SDL_atan2f(float y, float x);
646extern DECLSPEC double SDLCALL SDL_ceil(double x);
647extern DECLSPEC float SDLCALL SDL_ceilf(float x);
648extern DECLSPEC double SDLCALL SDL_copysign(double x, double y);
649extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y);
650extern DECLSPEC double SDLCALL SDL_cos(double x);
651extern DECLSPEC float SDLCALL SDL_cosf(float x);
652extern DECLSPEC double SDLCALL SDL_exp(double x);
653extern DECLSPEC float SDLCALL SDL_expf(float x);
654extern DECLSPEC double SDLCALL SDL_fabs(double x);
655extern DECLSPEC float SDLCALL SDL_fabsf(float x);
656extern DECLSPEC double SDLCALL SDL_floor(double x);
657extern DECLSPEC float SDLCALL SDL_floorf(float x);
658extern DECLSPEC double SDLCALL SDL_trunc(double x);
659extern DECLSPEC float SDLCALL SDL_truncf(float x);
660extern DECLSPEC double SDLCALL SDL_fmod(double x, double y);
661extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y);
662extern DECLSPEC double SDLCALL SDL_log(double x);
663extern DECLSPEC float SDLCALL SDL_logf(float x);
664extern DECLSPEC double SDLCALL SDL_log10(double x);
665extern DECLSPEC float SDLCALL SDL_log10f(float x);
666extern DECLSPEC double SDLCALL SDL_pow(double x, double y);
667extern DECLSPEC float SDLCALL SDL_powf(float x, float y);
668extern DECLSPEC double SDLCALL SDL_round(double x);
669extern DECLSPEC float SDLCALL SDL_roundf(float x);
670extern DECLSPEC long SDLCALL SDL_lround(double x);
671extern DECLSPEC long SDLCALL SDL_lroundf(float x);
672extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n);
673extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n);
674extern DECLSPEC double SDLCALL SDL_sin(double x);
675extern DECLSPEC float SDLCALL SDL_sinf(float x);
676extern DECLSPEC double SDLCALL SDL_sqrt(double x);
677extern DECLSPEC float SDLCALL SDL_sqrtf(float x);
678extern DECLSPEC double SDLCALL SDL_tan(double x);
679extern DECLSPEC float SDLCALL SDL_tanf(float x);
680
681/* The SDL implementation of iconv() returns these error codes */
682#define SDL_ICONV_ERROR (size_t)-1
683#define SDL_ICONV_E2BIG (size_t)-2
684#define SDL_ICONV_EILSEQ (size_t)-3
685#define SDL_ICONV_EINVAL (size_t)-4
686
687/* SDL_iconv_* are now always real symbols/types, not macros or inlined. */
688typedef struct _SDL_iconv_t *SDL_iconv_t;
689extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode,
690 const char *fromcode);
691extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd);
692extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf,
693 size_t * inbytesleft, char **outbuf,
694 size_t * outbytesleft);
695
696/**
697 * This function converts a buffer or string between encodings in one pass,
698 * returning a string that must be freed with SDL_free() or NULL on error.
699 *
700 * \since This function is available since SDL 2.0.0.
701 */
702extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode,
703 const char *fromcode,
704 const char *inbuf,
705 size_t inbytesleft);
706#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1)
707#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2", "UTF-8", S, SDL_strlen(S)+1)
708#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4", "UTF-8", S, SDL_strlen(S)+1)
709#define SDL_iconv_wchar_utf8(S) SDL_iconv_string("UTF-8", "WCHAR_T", (char *)S, (SDL_wcslen(S)+1)*sizeof(wchar_t))
710
711/* force builds using Clang's static analysis tools to use literal C runtime
712 here, since there are possibly tests that are ineffective otherwise. */
713#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
714
715/* The analyzer knows about strlcpy even when the system doesn't provide it */
716#ifndef HAVE_STRLCPY
717size_t strlcpy(char* dst, const char* src, size_t size);
718#endif
719
720/* The analyzer knows about strlcat even when the system doesn't provide it */
721#ifndef HAVE_STRLCAT
722size_t strlcat(char* dst, const char* src, size_t size);
723#endif
724
725#ifndef HAVE_WCSLCPY
726size_t wcslcpy(wchar_t *dst, const wchar_t *src, size_t size);
727#endif
728
729#ifndef HAVE_WCSLCAT
730size_t wcslcat(wchar_t *dst, const wchar_t *src, size_t size);
731#endif
732
733/* Starting LLVM 16, the analyser errors out if these functions do not have
734 their prototype defined (clang-diagnostic-implicit-function-declaration) */
735#include <stdlib.h>
736#include <string.h>
737#include <stdio.h>
738
739#define SDL_malloc malloc
740#define SDL_calloc calloc
741#define SDL_realloc realloc
742#define SDL_free free
743#define SDL_memset memset
744#define SDL_memcpy memcpy
745#define SDL_memmove memmove
746#define SDL_memcmp memcmp
747#define SDL_strlcpy strlcpy
748#define SDL_strlcat strlcat
749#define SDL_strlen strlen
750#define SDL_wcslen wcslen
751#define SDL_wcslcpy wcslcpy
752#define SDL_wcslcat wcslcat
753#define SDL_strdup strdup
754#define SDL_wcsdup wcsdup
755#define SDL_strchr strchr
756#define SDL_strrchr strrchr
757#define SDL_strstr strstr
758#define SDL_wcsstr wcsstr
759#define SDL_strtokr strtok_r
760#define SDL_strcmp strcmp
761#define SDL_wcscmp wcscmp
762#define SDL_strncmp strncmp
763#define SDL_wcsncmp wcsncmp
764#define SDL_strcasecmp strcasecmp
765#define SDL_strncasecmp strncasecmp
766#define SDL_sscanf sscanf
767#define SDL_vsscanf vsscanf
768#define SDL_snprintf snprintf
769#define SDL_vsnprintf vsnprintf
770#endif
771
772SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords)
773{
774 return SDL_memcpy(dst, src, dwords * 4);
775}
776
777/**
778 * If a * b would overflow, return -1. Otherwise store a * b via ret
779 * and return 0.
780 *
781 * \since This function is available since SDL 2.24.0.
782 */
783SDL_FORCE_INLINE int SDL_size_mul_overflow (size_t a,
784 size_t b,
785 size_t *ret)
786{
787 if (a != 0 && b > SDL_SIZE_MAX / a) {
788 return -1;
789 }
790 *ret = a * b;
791 return 0;
792}
793
794#if _SDL_HAS_BUILTIN(__builtin_mul_overflow)
795/* This needs to be wrapped in an inline rather than being a direct #define,
796 * because __builtin_mul_overflow() is type-generic, but we want to be
797 * consistent about interpreting a and b as size_t. */
798SDL_FORCE_INLINE int _SDL_size_mul_overflow_builtin (size_t a,
799 size_t b,
800 size_t *ret)
801{
802 return __builtin_mul_overflow(a, b, ret) == 0 ? 0 : -1;
803}
804#define SDL_size_mul_overflow(a, b, ret) (_SDL_size_mul_overflow_builtin(a, b, ret))
805#endif
806
807/**
808 * If a + b would overflow, return -1. Otherwise store a + b via ret
809 * and return 0.
810 *
811 * \since This function is available since SDL 2.24.0.
812 */
813SDL_FORCE_INLINE int SDL_size_add_overflow (size_t a,
814 size_t b,
815 size_t *ret)
816{
817 if (b > SDL_SIZE_MAX - a) {
818 return -1;
819 }
820 *ret = a + b;
821 return 0;
822}
823
824#if _SDL_HAS_BUILTIN(__builtin_add_overflow)
825/* This needs to be wrapped in an inline rather than being a direct #define,
826 * the same as the call to __builtin_mul_overflow() above. */
827SDL_FORCE_INLINE int _SDL_size_add_overflow_builtin (size_t a,
828 size_t b,
829 size_t *ret)
830{
831 return __builtin_add_overflow(a, b, ret) == 0 ? 0 : -1;
832}
833#define SDL_size_add_overflow(a, b, ret) (_SDL_size_add_overflow_builtin(a, b, ret))
834#endif
835
836/* Ends C function definitions when using C++ */
837#ifdef __cplusplus
838}
839#endif
840#include "close_code.h"
841
842#endif /* SDL_stdinc_h_ */
843
844/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_surface.h b/src/contrib/SDL-2.30.2/include/SDL_surface.h
new file mode 100644
index 0000000..ceeb86b
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_surface.h
@@ -0,0 +1,997 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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
64typedef struct SDL_BlitMap SDL_BlitMap; /* this is an opaque type. */
65
66/**
67 * \brief A collection of pixels used in software blitting.
68 *
69 * \note This structure should be treated as read-only, except for \c pixels,
70 * which, if not NULL, contains the raw pixel data for the surface.
71 */
72typedef struct SDL_Surface
73{
74 Uint32 flags; /**< Read-only */
75 SDL_PixelFormat *format; /**< Read-only */
76 int w, h; /**< Read-only */
77 int pitch; /**< Read-only */
78 void *pixels; /**< Read-write */
79
80 /** Application data associated with the surface */
81 void *userdata; /**< Read-write */
82
83 /** information needed for surfaces requiring locks */
84 int locked; /**< Read-only */
85
86 /** list of BlitMap that hold a reference to this surface */
87 void *list_blitmap; /**< Private */
88
89 /** clipping information */
90 SDL_Rect clip_rect; /**< Read-only */
91
92 /** info for fast blit mapping to other surfaces */
93 SDL_BlitMap *map; /**< Private */
94
95 /** Reference count -- used when freeing surface */
96 int refcount; /**< Read-mostly */
97} SDL_Surface;
98
99/**
100 * \brief The type of function used for surface blitting functions.
101 */
102typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect,
103 struct SDL_Surface * dst, SDL_Rect * dstrect);
104
105/**
106 * \brief The formula used for converting between YUV and RGB
107 */
108typedef enum
109{
110 SDL_YUV_CONVERSION_JPEG, /**< Full range JPEG */
111 SDL_YUV_CONVERSION_BT601, /**< BT.601 (the default) */
112 SDL_YUV_CONVERSION_BT709, /**< BT.709 */
113 SDL_YUV_CONVERSION_AUTOMATIC /**< BT.601 for SD content, BT.709 for HD content */
114} SDL_YUV_CONVERSION_MODE;
115
116/**
117 * Allocate a new RGB surface.
118 *
119 * If `depth` is 4 or 8 bits, an empty palette is allocated for the surface.
120 * If `depth` is greater than 8 bits, the pixel format is set using the
121 * [RGBA]mask parameters.
122 *
123 * The [RGBA]mask parameters are the bitmasks used to extract that color from
124 * a pixel. For instance, `Rmask` being 0xFF000000 means the red data is
125 * stored in the most significant byte. Using zeros for the RGB masks sets a
126 * default value, based on the depth. For example:
127 *
128 * ```c++
129 * SDL_CreateRGBSurface(0,w,h,32,0,0,0,0);
130 * ```
131 *
132 * However, using zero for the Amask results in an Amask of 0.
133 *
134 * By default surfaces with an alpha mask are set up for blending as with:
135 *
136 * ```c++
137 * SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND)
138 * ```
139 *
140 * You can change this by calling SDL_SetSurfaceBlendMode() and selecting a
141 * different `blendMode`.
142 *
143 * \param flags the flags are unused and should be set to 0
144 * \param width the width of the surface
145 * \param height the height of the surface
146 * \param depth the depth of the surface in bits
147 * \param Rmask the red mask for the pixels
148 * \param Gmask the green mask for the pixels
149 * \param Bmask the blue mask for the pixels
150 * \param Amask the alpha mask for the pixels
151 * \returns the new SDL_Surface structure that is created or NULL if it fails;
152 * call SDL_GetError() for more information.
153 *
154 * \since This function is available since SDL 2.0.0.
155 *
156 * \sa SDL_CreateRGBSurfaceFrom
157 * \sa SDL_CreateRGBSurfaceWithFormat
158 * \sa SDL_FreeSurface
159 */
160extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface
161 (Uint32 flags, int width, int height, int depth,
162 Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);
163
164
165/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */
166
167/**
168 * Allocate a new RGB surface with a specific pixel format.
169 *
170 * This function operates mostly like SDL_CreateRGBSurface(), except instead
171 * of providing pixel color masks, you provide it with a predefined format
172 * from SDL_PixelFormatEnum.
173 *
174 * \param flags the flags are unused and should be set to 0
175 * \param width the width of the surface
176 * \param height the height of the surface
177 * \param depth the depth of the surface in bits
178 * \param format the SDL_PixelFormatEnum for the new surface's pixel format.
179 * \returns the new SDL_Surface structure that is created or NULL if it fails;
180 * call SDL_GetError() for more information.
181 *
182 * \since This function is available since SDL 2.0.5.
183 *
184 * \sa SDL_CreateRGBSurface
185 * \sa SDL_CreateRGBSurfaceFrom
186 * \sa SDL_FreeSurface
187 */
188extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat
189 (Uint32 flags, int width, int height, int depth, Uint32 format);
190
191/**
192 * Allocate a new RGB surface with existing pixel data.
193 *
194 * This function operates mostly like SDL_CreateRGBSurface(), except it does
195 * not allocate memory for the pixel data, instead the caller provides an
196 * existing buffer of data for the surface to use.
197 *
198 * No copy is made of the pixel data. Pixel data is not managed automatically;
199 * you must free the surface before you free the pixel data.
200 *
201 * \param pixels a pointer to existing pixel data
202 * \param width the width of the surface
203 * \param height the height of the surface
204 * \param depth the depth of the surface in bits
205 * \param pitch the pitch of the surface in bytes
206 * \param Rmask the red mask for the pixels
207 * \param Gmask the green mask for the pixels
208 * \param Bmask the blue mask for the pixels
209 * \param Amask the alpha mask for the pixels
210 * \returns the new SDL_Surface structure that is created or NULL if it fails;
211 * call SDL_GetError() for more information.
212 *
213 * \since This function is available since SDL 2.0.0.
214 *
215 * \sa SDL_CreateRGBSurface
216 * \sa SDL_CreateRGBSurfaceWithFormat
217 * \sa SDL_FreeSurface
218 */
219extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels,
220 int width,
221 int height,
222 int depth,
223 int pitch,
224 Uint32 Rmask,
225 Uint32 Gmask,
226 Uint32 Bmask,
227 Uint32 Amask);
228
229/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */
230
231/**
232 * Allocate a new RGB surface with with a specific pixel format and existing
233 * pixel data.
234 *
235 * This function operates mostly like SDL_CreateRGBSurfaceFrom(), except
236 * instead of providing pixel color masks, you provide it with a predefined
237 * format from SDL_PixelFormatEnum.
238 *
239 * No copy is made of the pixel data. Pixel data is not managed automatically;
240 * you must free the surface before you free the pixel data.
241 *
242 * \param pixels a pointer to existing pixel data
243 * \param width the width of the surface
244 * \param height the height of the surface
245 * \param depth the depth of the surface in bits
246 * \param pitch the pitch of the surface in bytes
247 * \param format the SDL_PixelFormatEnum for the new surface's pixel format.
248 * \returns the new SDL_Surface structure that is created or NULL if it fails;
249 * call SDL_GetError() for more information.
250 *
251 * \since This function is available since SDL 2.0.5.
252 *
253 * \sa SDL_CreateRGBSurfaceFrom
254 * \sa SDL_CreateRGBSurfaceWithFormat
255 * \sa SDL_FreeSurface
256 */
257extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom
258 (void *pixels, int width, int height, int depth, int pitch, Uint32 format);
259
260/**
261 * Free an RGB surface.
262 *
263 * It is safe to pass NULL to this function.
264 *
265 * \param surface the SDL_Surface to free.
266 *
267 * \since This function is available since SDL 2.0.0.
268 *
269 * \sa SDL_CreateRGBSurface
270 * \sa SDL_CreateRGBSurfaceFrom
271 * \sa SDL_LoadBMP
272 * \sa SDL_LoadBMP_RW
273 */
274extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface);
275
276/**
277 * Set the palette used by a surface.
278 *
279 * A single palette can be shared with many surfaces.
280 *
281 * \param surface the SDL_Surface structure to update
282 * \param palette the SDL_Palette structure to use
283 * \returns 0 on success or a negative error code on failure; call
284 * SDL_GetError() for more information.
285 *
286 * \since This function is available since SDL 2.0.0.
287 */
288extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface,
289 SDL_Palette * palette);
290
291/**
292 * Set up a surface for directly accessing the pixels.
293 *
294 * Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write to
295 * and read from `surface->pixels`, using the pixel format stored in
296 * `surface->format`. Once you are done accessing the surface, you should use
297 * SDL_UnlockSurface() to release it.
298 *
299 * Not all surfaces require locking. If `SDL_MUSTLOCK(surface)` evaluates to
300 * 0, then you can read and write to the surface at any time, and the pixel
301 * format of the surface will not change.
302 *
303 * \param surface the SDL_Surface structure to be locked
304 * \returns 0 on success or a negative error code on failure; call
305 * SDL_GetError() for more information.
306 *
307 * \since This function is available since SDL 2.0.0.
308 *
309 * \sa SDL_MUSTLOCK
310 * \sa SDL_UnlockSurface
311 */
312extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface);
313
314/**
315 * Release a surface after directly accessing the pixels.
316 *
317 * \param surface the SDL_Surface structure to be unlocked
318 *
319 * \since This function is available since SDL 2.0.0.
320 *
321 * \sa SDL_LockSurface
322 */
323extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface);
324
325/**
326 * Load a BMP image from a seekable SDL data stream.
327 *
328 * The new surface should be freed with SDL_FreeSurface(). Not doing so will
329 * result in a memory leak.
330 *
331 * src is an open SDL_RWops buffer, typically loaded with SDL_RWFromFile.
332 * Alternitavely, you might also use the macro SDL_LoadBMP to load a bitmap
333 * from a file, convert it to an SDL_Surface and then close the file.
334 *
335 * \param src the data stream for the surface
336 * \param freesrc non-zero to close the stream after being read
337 * \returns a pointer to a new SDL_Surface structure or NULL if there was an
338 * error; call SDL_GetError() for more information.
339 *
340 * \since This function is available since SDL 2.0.0.
341 *
342 * \sa SDL_FreeSurface
343 * \sa SDL_RWFromFile
344 * \sa SDL_LoadBMP
345 * \sa SDL_SaveBMP_RW
346 */
347extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src,
348 int freesrc);
349
350/**
351 * Load a surface from a file.
352 *
353 * Convenience macro.
354 */
355#define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1)
356
357/**
358 * Save a surface to a seekable SDL data stream in BMP format.
359 *
360 * Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the
361 * BMP directly. Other RGB formats with 8-bit or higher get converted to a
362 * 24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit
363 * surface before they are saved. YUV and paletted 1-bit and 4-bit formats are
364 * not supported.
365 *
366 * \param surface the SDL_Surface structure containing the image to be saved
367 * \param dst a data stream to save to
368 * \param freedst non-zero to close the stream after being written
369 * \returns 0 on success or a negative error code on failure; call
370 * SDL_GetError() for more information.
371 *
372 * \since This function is available since SDL 2.0.0.
373 *
374 * \sa SDL_LoadBMP_RW
375 * \sa SDL_SaveBMP
376 */
377extern DECLSPEC int SDLCALL SDL_SaveBMP_RW
378 (SDL_Surface * surface, SDL_RWops * dst, int freedst);
379
380/**
381 * Save a surface to a file.
382 *
383 * Convenience macro.
384 */
385#define SDL_SaveBMP(surface, file) \
386 SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1)
387
388/**
389 * Set the RLE acceleration hint for a surface.
390 *
391 * If RLE is enabled, color key and alpha blending blits are much faster, but
392 * the surface must be locked before directly accessing the pixels.
393 *
394 * \param surface the SDL_Surface structure to optimize
395 * \param flag 0 to disable, non-zero to enable RLE acceleration
396 * \returns 0 on success or a negative error code on failure; call
397 * SDL_GetError() for more information.
398 *
399 * \since This function is available since SDL 2.0.0.
400 *
401 * \sa SDL_BlitSurface
402 * \sa SDL_LockSurface
403 * \sa SDL_UnlockSurface
404 */
405extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface,
406 int flag);
407
408/**
409 * Returns whether the surface is RLE enabled
410 *
411 * It is safe to pass a NULL `surface` here; it will return SDL_FALSE.
412 *
413 * \param surface the SDL_Surface structure to query
414 * \returns SDL_TRUE if the surface is RLE enabled, SDL_FALSE otherwise.
415 *
416 * \since This function is available since SDL 2.0.14.
417 *
418 * \sa SDL_SetSurfaceRLE
419 */
420extern DECLSPEC SDL_bool SDLCALL SDL_HasSurfaceRLE(SDL_Surface * surface);
421
422/**
423 * Set the color key (transparent pixel) in a surface.
424 *
425 * The color key defines a pixel value that will be treated as transparent in
426 * a blit. For example, one can use this to specify that cyan pixels should be
427 * considered transparent, and therefore not rendered.
428 *
429 * It is a pixel of the format used by the surface, as generated by
430 * SDL_MapRGB().
431 *
432 * RLE acceleration can substantially speed up blitting of images with large
433 * horizontal runs of transparent pixels. See SDL_SetSurfaceRLE() for details.
434 *
435 * \param surface the SDL_Surface structure to update
436 * \param flag SDL_TRUE to enable color key, SDL_FALSE to disable color key
437 * \param key the transparent pixel
438 * \returns 0 on success or a negative error code on failure; call
439 * SDL_GetError() for more information.
440 *
441 * \since This function is available since SDL 2.0.0.
442 *
443 * \sa SDL_BlitSurface
444 * \sa SDL_GetColorKey
445 */
446extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface,
447 int flag, Uint32 key);
448
449/**
450 * Returns whether the surface has a color key
451 *
452 * It is safe to pass a NULL `surface` here; it will return SDL_FALSE.
453 *
454 * \param surface the SDL_Surface structure to query
455 * \return SDL_TRUE if the surface has a color key, SDL_FALSE otherwise.
456 *
457 * \since This function is available since SDL 2.0.9.
458 *
459 * \sa SDL_SetColorKey
460 * \sa SDL_GetColorKey
461 */
462extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface);
463
464/**
465 * Get the color key (transparent pixel) for a surface.
466 *
467 * The color key is a pixel of the format used by the surface, as generated by
468 * SDL_MapRGB().
469 *
470 * If the surface doesn't have color key enabled this function returns -1.
471 *
472 * \param surface the SDL_Surface structure to query
473 * \param key a pointer filled in with the transparent pixel
474 * \returns 0 on success or a negative error code on failure; call
475 * SDL_GetError() for more information.
476 *
477 * \since This function is available since SDL 2.0.0.
478 *
479 * \sa SDL_BlitSurface
480 * \sa SDL_SetColorKey
481 */
482extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface,
483 Uint32 * key);
484
485/**
486 * Set an additional color value multiplied into blit operations.
487 *
488 * When this surface is blitted, during the blit operation each source color
489 * channel is modulated by the appropriate color value according to the
490 * following formula:
491 *
492 * `srcC = srcC * (color / 255)`
493 *
494 * \param surface the SDL_Surface structure to update
495 * \param r the red color value multiplied into blit operations
496 * \param g the green color value multiplied into blit operations
497 * \param b the blue color value multiplied into blit operations
498 * \returns 0 on success or a negative error code on failure; call
499 * SDL_GetError() for more information.
500 *
501 * \since This function is available since SDL 2.0.0.
502 *
503 * \sa SDL_GetSurfaceColorMod
504 * \sa SDL_SetSurfaceAlphaMod
505 */
506extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface,
507 Uint8 r, Uint8 g, Uint8 b);
508
509
510/**
511 * Get the additional color value multiplied into blit operations.
512 *
513 * \param surface the SDL_Surface structure to query
514 * \param r a pointer filled in with the current red color value
515 * \param g a pointer filled in with the current green color value
516 * \param b a pointer filled in with the current blue color value
517 * \returns 0 on success or a negative error code on failure; call
518 * SDL_GetError() for more information.
519 *
520 * \since This function is available since SDL 2.0.0.
521 *
522 * \sa SDL_GetSurfaceAlphaMod
523 * \sa SDL_SetSurfaceColorMod
524 */
525extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface,
526 Uint8 * r, Uint8 * g,
527 Uint8 * b);
528
529/**
530 * Set an additional alpha value used in blit operations.
531 *
532 * When this surface is blitted, during the blit operation the source alpha
533 * value is modulated by this alpha value according to the following formula:
534 *
535 * `srcA = srcA * (alpha / 255)`
536 *
537 * \param surface the SDL_Surface structure to update
538 * \param alpha the alpha value multiplied into blit operations
539 * \returns 0 on success or a negative error code on failure; call
540 * SDL_GetError() for more information.
541 *
542 * \since This function is available since SDL 2.0.0.
543 *
544 * \sa SDL_GetSurfaceAlphaMod
545 * \sa SDL_SetSurfaceColorMod
546 */
547extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface,
548 Uint8 alpha);
549
550/**
551 * Get the additional alpha value used in blit operations.
552 *
553 * \param surface the SDL_Surface structure to query
554 * \param alpha a pointer filled in with the current alpha value
555 * \returns 0 on success or a negative error code on failure; call
556 * SDL_GetError() for more information.
557 *
558 * \since This function is available since SDL 2.0.0.
559 *
560 * \sa SDL_GetSurfaceColorMod
561 * \sa SDL_SetSurfaceAlphaMod
562 */
563extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface,
564 Uint8 * alpha);
565
566/**
567 * Set the blend mode used for blit operations.
568 *
569 * To copy a surface to another surface (or texture) without blending with the
570 * existing data, the blendmode of the SOURCE surface should be set to
571 * `SDL_BLENDMODE_NONE`.
572 *
573 * \param surface the SDL_Surface structure to update
574 * \param blendMode the SDL_BlendMode to use for blit blending
575 * \returns 0 on success or a negative error code on failure; call
576 * SDL_GetError() for more information.
577 *
578 * \since This function is available since SDL 2.0.0.
579 *
580 * \sa SDL_GetSurfaceBlendMode
581 */
582extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface,
583 SDL_BlendMode blendMode);
584
585/**
586 * Get the blend mode used for blit operations.
587 *
588 * \param surface the SDL_Surface structure to query
589 * \param blendMode a pointer filled in with the current SDL_BlendMode
590 * \returns 0 on success or a negative error code on failure; call
591 * SDL_GetError() for more information.
592 *
593 * \since This function is available since SDL 2.0.0.
594 *
595 * \sa SDL_SetSurfaceBlendMode
596 */
597extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface,
598 SDL_BlendMode *blendMode);
599
600/**
601 * Set the clipping rectangle for a surface.
602 *
603 * When `surface` is the destination of a blit, only the area within the clip
604 * rectangle is drawn into.
605 *
606 * Note that blits are automatically clipped to the edges of the source and
607 * destination surfaces.
608 *
609 * \param surface the SDL_Surface structure to be clipped
610 * \param rect the SDL_Rect structure representing the clipping rectangle, or
611 * NULL to disable clipping
612 * \returns SDL_TRUE if the rectangle intersects the surface, otherwise
613 * SDL_FALSE and blits will be completely clipped.
614 *
615 * \since This function is available since SDL 2.0.0.
616 *
617 * \sa SDL_BlitSurface
618 * \sa SDL_GetClipRect
619 */
620extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface,
621 const SDL_Rect * rect);
622
623/**
624 * Get the clipping rectangle for a surface.
625 *
626 * When `surface` is the destination of a blit, only the area within the clip
627 * rectangle is drawn into.
628 *
629 * \param surface the SDL_Surface structure representing the surface to be
630 * clipped
631 * \param rect an SDL_Rect structure filled in with the clipping rectangle for
632 * the surface
633 *
634 * \since This function is available since SDL 2.0.0.
635 *
636 * \sa SDL_BlitSurface
637 * \sa SDL_SetClipRect
638 */
639extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface,
640 SDL_Rect * rect);
641
642/*
643 * Creates a new surface identical to the existing surface.
644 *
645 * The returned surface should be freed with SDL_FreeSurface().
646 *
647 * \param surface the surface to duplicate.
648 * \returns a copy of the surface, or NULL on failure; call SDL_GetError() for
649 * more information.
650 */
651extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface);
652
653/**
654 * Copy an existing surface to a new surface of the specified format.
655 *
656 * This function is used to optimize images for faster *repeat* blitting. This
657 * is accomplished by converting the original and storing the result as a new
658 * surface. The new, optimized surface can then be used as the source for
659 * future blits, making them faster.
660 *
661 * \param src the existing SDL_Surface structure to convert
662 * \param fmt the SDL_PixelFormat structure that the new surface is optimized
663 * for
664 * \param flags the flags are unused and should be set to 0; this is a
665 * leftover from SDL 1.2's API
666 * \returns the new SDL_Surface structure that is created or NULL if it fails;
667 * call SDL_GetError() for more information.
668 *
669 * \since This function is available since SDL 2.0.0.
670 *
671 * \sa SDL_AllocFormat
672 * \sa SDL_ConvertSurfaceFormat
673 * \sa SDL_CreateRGBSurface
674 */
675extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface
676 (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags);
677
678/**
679 * Copy an existing surface to a new surface of the specified format enum.
680 *
681 * This function operates just like SDL_ConvertSurface(), but accepts an
682 * SDL_PixelFormatEnum value instead of an SDL_PixelFormat structure. As such,
683 * it might be easier to call but it doesn't have access to palette
684 * information for the destination surface, in case that would be important.
685 *
686 * \param src the existing SDL_Surface structure to convert
687 * \param pixel_format the SDL_PixelFormatEnum that the new surface is
688 * optimized for
689 * \param flags the flags are unused and should be set to 0; this is a
690 * leftover from SDL 1.2's API
691 * \returns the new SDL_Surface structure that is created or NULL if it fails;
692 * call SDL_GetError() for more information.
693 *
694 * \since This function is available since SDL 2.0.0.
695 *
696 * \sa SDL_AllocFormat
697 * \sa SDL_ConvertSurface
698 * \sa SDL_CreateRGBSurface
699 */
700extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat
701 (SDL_Surface * src, Uint32 pixel_format, Uint32 flags);
702
703/**
704 * Copy a block of pixels of one format to another format.
705 *
706 * \param width the width of the block to copy, in pixels
707 * \param height the height of the block to copy, in pixels
708 * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format
709 * \param src a pointer to the source pixels
710 * \param src_pitch the pitch of the source pixels, in bytes
711 * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format
712 * \param dst a pointer to be filled in with new pixel data
713 * \param dst_pitch the pitch of the destination pixels, in bytes
714 * \returns 0 on success or a negative error code on failure; call
715 * SDL_GetError() for more information.
716 *
717 * \since This function is available since SDL 2.0.0.
718 */
719extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height,
720 Uint32 src_format,
721 const void * src, int src_pitch,
722 Uint32 dst_format,
723 void * dst, int dst_pitch);
724
725/**
726 * Premultiply the alpha on a block of pixels.
727 *
728 * This is safe to use with src == dst, but not for other overlapping areas.
729 *
730 * This function is currently only implemented for SDL_PIXELFORMAT_ARGB8888.
731 *
732 * \param width the width of the block to convert, in pixels
733 * \param height the height of the block to convert, in pixels
734 * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format
735 * \param src a pointer to the source pixels
736 * \param src_pitch the pitch of the source pixels, in bytes
737 * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format
738 * \param dst a pointer to be filled in with premultiplied pixel data
739 * \param dst_pitch the pitch of the destination pixels, in bytes
740 * \returns 0 on success or a negative error code on failure; call
741 * SDL_GetError() for more information.
742 *
743 * \since This function is available since SDL 2.0.18.
744 */
745extern DECLSPEC int SDLCALL SDL_PremultiplyAlpha(int width, int height,
746 Uint32 src_format,
747 const void * src, int src_pitch,
748 Uint32 dst_format,
749 void * dst, int dst_pitch);
750
751/**
752 * Perform a fast fill of a rectangle with a specific color.
753 *
754 * `color` should be a pixel of the format used by the surface, and can be
755 * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an
756 * alpha component then the destination is simply filled with that alpha
757 * information, no blending takes place.
758 *
759 * If there is a clip rectangle set on the destination (set via
760 * SDL_SetClipRect()), then this function will fill based on the intersection
761 * of the clip rectangle and `rect`.
762 *
763 * \param dst the SDL_Surface structure that is the drawing target
764 * \param rect the SDL_Rect structure representing the rectangle to fill, or
765 * NULL to fill the entire surface
766 * \param color the color to fill with
767 * \returns 0 on success or a negative error code on failure; call
768 * SDL_GetError() for more information.
769 *
770 * \since This function is available since SDL 2.0.0.
771 *
772 * \sa SDL_FillRects
773 */
774extern DECLSPEC int SDLCALL SDL_FillRect
775 (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color);
776
777/**
778 * Perform a fast fill of a set of rectangles with a specific color.
779 *
780 * `color` should be a pixel of the format used by the surface, and can be
781 * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an
782 * alpha component then the destination is simply filled with that alpha
783 * information, no blending takes place.
784 *
785 * If there is a clip rectangle set on the destination (set via
786 * SDL_SetClipRect()), then this function will fill based on the intersection
787 * of the clip rectangle and `rect`.
788 *
789 * \param dst the SDL_Surface structure that is the drawing target
790 * \param rects an array of SDL_Rects representing the rectangles to fill.
791 * \param count the number of rectangles in the array
792 * \param color the color to fill with
793 * \returns 0 on success or a negative error code on failure; call
794 * SDL_GetError() for more information.
795 *
796 * \since This function is available since SDL 2.0.0.
797 *
798 * \sa SDL_FillRect
799 */
800extern DECLSPEC int SDLCALL SDL_FillRects
801 (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color);
802
803/* !!! FIXME: merge this documentation with the wiki */
804/**
805 * Performs a fast blit from the source surface to the destination surface.
806 *
807 * This assumes that the source and destination rectangles are
808 * the same size. If either \c srcrect or \c dstrect are NULL, the entire
809 * surface (\c src or \c dst) is copied. The final blit rectangles are saved
810 * in \c srcrect and \c dstrect after all clipping is performed.
811 *
812 * \returns 0 if the blit is successful, otherwise it returns -1.
813 *
814 * The blit function should not be called on a locked surface.
815 *
816 * The blit semantics for surfaces with and without blending and colorkey
817 * are defined as follows:
818 * \verbatim
819 RGBA->RGB:
820 Source surface blend mode set to SDL_BLENDMODE_BLEND:
821 alpha-blend (using the source alpha-channel and per-surface alpha)
822 SDL_SRCCOLORKEY ignored.
823 Source surface blend mode set to SDL_BLENDMODE_NONE:
824 copy RGB.
825 if SDL_SRCCOLORKEY set, only copy the pixels matching the
826 RGB values of the source color key, ignoring alpha in the
827 comparison.
828
829 RGB->RGBA:
830 Source surface blend mode set to SDL_BLENDMODE_BLEND:
831 alpha-blend (using the source per-surface alpha)
832 Source surface blend mode set to SDL_BLENDMODE_NONE:
833 copy RGB, set destination alpha to source per-surface alpha value.
834 both:
835 if SDL_SRCCOLORKEY set, only copy the pixels matching the
836 source color key.
837
838 RGBA->RGBA:
839 Source surface blend mode set to SDL_BLENDMODE_BLEND:
840 alpha-blend (using the source alpha-channel and per-surface alpha)
841 SDL_SRCCOLORKEY ignored.
842 Source surface blend mode set to SDL_BLENDMODE_NONE:
843 copy all of RGBA to the destination.
844 if SDL_SRCCOLORKEY set, only copy the pixels matching the
845 RGB values of the source color key, ignoring alpha in the
846 comparison.
847
848 RGB->RGB:
849 Source surface blend mode set to SDL_BLENDMODE_BLEND:
850 alpha-blend (using the source per-surface alpha)
851 Source surface blend mode set to SDL_BLENDMODE_NONE:
852 copy RGB.
853 both:
854 if SDL_SRCCOLORKEY set, only copy the pixels matching the
855 source color key.
856 \endverbatim
857 *
858 * You should call SDL_BlitSurface() unless you know exactly how SDL
859 * blitting works internally and how to use the other blit functions.
860 */
861#define SDL_BlitSurface SDL_UpperBlit
862
863/**
864 * Perform a fast blit from the source surface to the destination surface.
865 *
866 * SDL_UpperBlit() has been replaced by SDL_BlitSurface(), which is merely a
867 * macro for this function with a less confusing name.
868 *
869 * \since This function is available since SDL 2.0.0.
870 *
871 * \sa SDL_BlitSurface
872 */
873extern DECLSPEC int SDLCALL SDL_UpperBlit
874 (SDL_Surface * src, const SDL_Rect * srcrect,
875 SDL_Surface * dst, SDL_Rect * dstrect);
876
877/**
878 * Perform low-level surface blitting only.
879 *
880 * This is a semi-private blit function and it performs low-level surface
881 * blitting, assuming the input rectangles have already been clipped.
882 *
883 * Unless you know what you're doing, you should be using SDL_BlitSurface()
884 * instead.
885 *
886 * \param src the SDL_Surface structure to be copied from
887 * \param srcrect the SDL_Rect structure representing the rectangle to be
888 * copied, or NULL to copy the entire surface
889 * \param dst the SDL_Surface structure that is the blit target
890 * \param dstrect the SDL_Rect structure representing the rectangle that is
891 * copied into
892 * \returns 0 on success or a negative error code on failure; call
893 * SDL_GetError() for more information.
894 *
895 * \since This function is available since SDL 2.0.0.
896 *
897 * \sa SDL_BlitSurface
898 */
899extern DECLSPEC int SDLCALL SDL_LowerBlit
900 (SDL_Surface * src, SDL_Rect * srcrect,
901 SDL_Surface * dst, SDL_Rect * dstrect);
902
903
904/**
905 * Perform a fast, low quality, stretch blit between two surfaces of the same
906 * format.
907 *
908 * Please use SDL_BlitScaled() instead.
909 *
910 * \since This function is available since SDL 2.0.0.
911 */
912extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src,
913 const SDL_Rect * srcrect,
914 SDL_Surface * dst,
915 const SDL_Rect * dstrect);
916
917/**
918 * Perform bilinear scaling between two surfaces of the same format, 32BPP.
919 *
920 * \since This function is available since SDL 2.0.16.
921 */
922extern DECLSPEC int SDLCALL SDL_SoftStretchLinear(SDL_Surface * src,
923 const SDL_Rect * srcrect,
924 SDL_Surface * dst,
925 const SDL_Rect * dstrect);
926
927
928#define SDL_BlitScaled SDL_UpperBlitScaled
929
930/**
931 * Perform a scaled surface copy to a destination surface.
932 *
933 * SDL_UpperBlitScaled() has been replaced by SDL_BlitScaled(), which is
934 * merely a macro for this function with a less confusing name.
935 *
936 * \since This function is available since SDL 2.0.0.
937 *
938 * \sa SDL_BlitScaled
939 */
940extern DECLSPEC int SDLCALL SDL_UpperBlitScaled
941 (SDL_Surface * src, const SDL_Rect * srcrect,
942 SDL_Surface * dst, SDL_Rect * dstrect);
943
944/**
945 * Perform low-level surface scaled blitting only.
946 *
947 * This is a semi-private function and it performs low-level surface blitting,
948 * assuming the input rectangles have already been clipped.
949 *
950 * \param src the SDL_Surface structure to be copied from
951 * \param srcrect the SDL_Rect structure representing the rectangle to be
952 * copied
953 * \param dst the SDL_Surface structure that is the blit target
954 * \param dstrect the SDL_Rect structure representing the rectangle that is
955 * copied into
956 * \returns 0 on success or a negative error code on failure; call
957 * SDL_GetError() for more information.
958 *
959 * \since This function is available since SDL 2.0.0.
960 *
961 * \sa SDL_BlitScaled
962 */
963extern DECLSPEC int SDLCALL SDL_LowerBlitScaled
964 (SDL_Surface * src, SDL_Rect * srcrect,
965 SDL_Surface * dst, SDL_Rect * dstrect);
966
967/**
968 * Set the YUV conversion mode
969 *
970 * \since This function is available since SDL 2.0.8.
971 */
972extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode);
973
974/**
975 * Get the YUV conversion mode
976 *
977 * \since This function is available since SDL 2.0.8.
978 */
979extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void);
980
981/**
982 * Get the YUV conversion mode, returning the correct mode for the resolution
983 * when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC
984 *
985 * \since This function is available since SDL 2.0.8.
986 */
987extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height);
988
989/* Ends C function definitions when using C++ */
990#ifdef __cplusplus
991}
992#endif
993#include "close_code.h"
994
995#endif /* SDL_surface_h_ */
996
997/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_system.h b/src/contrib/SDL-2.30.2/include/SDL_system.h
new file mode 100644
index 0000000..ddae4f8
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_system.h
@@ -0,0 +1,638 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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#if defined(__WIN32__) || defined(__GDK__)
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#endif /* defined(__WIN32__) || defined(__GDK__) */
59
60#if defined(__WIN32__) || defined(__WINGDK__)
61
62/**
63 * Get the D3D9 adapter index that matches the specified display index.
64 *
65 * The returned adapter index can be passed to `IDirect3D9::CreateDevice` and
66 * controls on which monitor a full screen application will appear.
67 *
68 * \param displayIndex the display index for which to get the D3D9 adapter
69 * index
70 * \returns the D3D9 adapter index on success or a negative error code on
71 * failure; call SDL_GetError() for more information.
72 *
73 * \since This function is available since SDL 2.0.1.
74 */
75extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex );
76
77typedef struct IDirect3DDevice9 IDirect3DDevice9;
78
79/**
80 * Get the D3D9 device associated with a renderer.
81 *
82 * Once you are done using the device, you should release it to avoid a
83 * resource leak.
84 *
85 * \param renderer the renderer from which to get the associated D3D device
86 * \returns the D3D9 device associated with given renderer or NULL if it is
87 * not a D3D9 renderer; call SDL_GetError() for more information.
88 *
89 * \since This function is available since SDL 2.0.1.
90 */
91extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer);
92
93typedef struct ID3D11Device ID3D11Device;
94
95/**
96 * Get the D3D11 device associated with a renderer.
97 *
98 * Once you are done using the device, you should release it to avoid a
99 * resource leak.
100 *
101 * \param renderer the renderer from which to get the associated D3D11 device
102 * \returns the D3D11 device associated with given renderer or NULL if it is
103 * not a D3D11 renderer; call SDL_GetError() for more information.
104 *
105 * \since This function is available since SDL 2.0.16.
106 */
107extern DECLSPEC ID3D11Device* SDLCALL SDL_RenderGetD3D11Device(SDL_Renderer * renderer);
108
109#endif /* defined(__WIN32__) || defined(__WINGDK__) */
110
111#if defined(__WIN32__) || defined(__GDK__)
112
113typedef struct ID3D12Device ID3D12Device;
114
115/**
116 * Get the D3D12 device associated with a renderer.
117 *
118 * Once you are done using the device, you should release it to avoid a
119 * resource leak.
120 *
121 * \param renderer the renderer from which to get the associated D3D12 device
122 * \returns the D3D12 device associated with given renderer or NULL if it is
123 * not a D3D12 renderer; call SDL_GetError() for more information.
124 *
125 * \since This function is available since SDL 2.24.0.
126 */
127extern DECLSPEC ID3D12Device* SDLCALL SDL_RenderGetD3D12Device(SDL_Renderer* renderer);
128
129#endif /* defined(__WIN32__) || defined(__GDK__) */
130
131#if defined(__WIN32__) || defined(__WINGDK__)
132
133/**
134 * Get the DXGI Adapter and Output indices for the specified display index.
135 *
136 * The DXGI Adapter and Output indices can be passed to `EnumAdapters` and
137 * `EnumOutputs` respectively to get the objects required to create a DX10 or
138 * DX11 device and swap chain.
139 *
140 * Before SDL 2.0.4 this function did not return a value. Since SDL 2.0.4 it
141 * returns an SDL_bool.
142 *
143 * \param displayIndex the display index for which to get both indices
144 * \param adapterIndex a pointer to be filled in with the adapter index
145 * \param outputIndex a pointer to be filled in with the output index
146 * \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError()
147 * for more information.
148 *
149 * \since This function is available since SDL 2.0.2.
150 */
151extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex );
152
153#endif /* defined(__WIN32__) || defined(__WINGDK__) */
154
155/* Platform specific functions for Linux */
156#ifdef __LINUX__
157
158/**
159 * Sets the UNIX nice value for a thread.
160 *
161 * This uses setpriority() if possible, and RealtimeKit if available.
162 *
163 * \param threadID the Unix thread ID to change priority of.
164 * \param priority The new, Unix-specific, priority value.
165 * \returns 0 on success, or -1 on error.
166 *
167 * \since This function is available since SDL 2.0.9.
168 */
169extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority);
170
171/**
172 * Sets the priority (not nice level) and scheduling policy for a thread.
173 *
174 * This uses setpriority() if possible, and RealtimeKit if available.
175 *
176 * \param threadID The Unix thread ID to change priority of.
177 * \param sdlPriority The new SDL_ThreadPriority value.
178 * \param schedPolicy The new scheduling policy (SCHED_FIFO, SCHED_RR,
179 * SCHED_OTHER, etc...)
180 * \returns 0 on success, or -1 on error.
181 *
182 * \since This function is available since SDL 2.0.18.
183 */
184extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID, int sdlPriority, int schedPolicy);
185
186#endif /* __LINUX__ */
187
188/* Platform specific functions for iOS */
189#ifdef __IPHONEOS__
190
191#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam)
192
193/**
194 * Use this function to set the animation callback on Apple iOS.
195 *
196 * The function prototype for `callback` is:
197 *
198 * ```c
199 * void callback(void* callbackParam);
200 * ```
201 *
202 * Where its parameter, `callbackParam`, is what was passed as `callbackParam`
203 * to SDL_iPhoneSetAnimationCallback().
204 *
205 * This function is only available on Apple iOS.
206 *
207 * For more information see:
208 * https://github.com/libsdl-org/SDL/blob/main/docs/README-ios.md
209 *
210 * This functions is also accessible using the macro
211 * SDL_iOSSetAnimationCallback() since SDL 2.0.4.
212 *
213 * \param window the window for which the animation callback should be set
214 * \param interval the number of frames after which **callback** will be
215 * called
216 * \param callback the function to call for every frame.
217 * \param callbackParam a pointer that is passed to `callback`.
218 * \returns 0 on success or a negative error code on failure; call
219 * SDL_GetError() for more information.
220 *
221 * \since This function is available since SDL 2.0.0.
222 *
223 * \sa SDL_iPhoneSetEventPump
224 */
225extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (SDLCALL *callback)(void*), void *callbackParam);
226
227#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled)
228
229/**
230 * Use this function to enable or disable the SDL event pump on Apple iOS.
231 *
232 * This function is only available on Apple iOS.
233 *
234 * This functions is also accessible using the macro SDL_iOSSetEventPump()
235 * since SDL 2.0.4.
236 *
237 * \param enabled SDL_TRUE to enable the event pump, SDL_FALSE to disable it
238 *
239 * \since This function is available since SDL 2.0.0.
240 *
241 * \sa SDL_iPhoneSetAnimationCallback
242 */
243extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled);
244
245#endif /* __IPHONEOS__ */
246
247
248/* Platform specific functions for Android */
249#ifdef __ANDROID__
250
251/**
252 * Get the Android Java Native Interface Environment of the current thread.
253 *
254 * This is the JNIEnv one needs to access the Java virtual machine from native
255 * code, and is needed for many Android APIs to be usable from C.
256 *
257 * The prototype of the function in SDL's code actually declare a void* return
258 * type, even if the implementation returns a pointer to a JNIEnv. The
259 * rationale being that the SDL headers can avoid including jni.h.
260 *
261 * \returns a pointer to Java native interface object (JNIEnv) to which the
262 * current thread is attached, or 0 on error.
263 *
264 * \since This function is available since SDL 2.0.0.
265 *
266 * \sa SDL_AndroidGetActivity
267 */
268extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void);
269
270/**
271 * Retrieve the Java instance of the Android activity class.
272 *
273 * The prototype of the function in SDL's code actually declares a void*
274 * return type, even if the implementation returns a jobject. The rationale
275 * being that the SDL headers can avoid including jni.h.
276 *
277 * The jobject returned by the function is a local reference and must be
278 * released by the caller. See the PushLocalFrame() and PopLocalFrame() or
279 * DeleteLocalRef() functions of the Java native interface:
280 *
281 * https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
282 *
283 * \returns the jobject representing the instance of the Activity class of the
284 * Android application, or NULL on error.
285 *
286 * \since This function is available since SDL 2.0.0.
287 *
288 * \sa SDL_AndroidGetJNIEnv
289 */
290extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void);
291
292/**
293 * Query Android API level of the current device.
294 *
295 * - API level 31: Android 12
296 * - API level 30: Android 11
297 * - API level 29: Android 10
298 * - API level 28: Android 9
299 * - API level 27: Android 8.1
300 * - API level 26: Android 8.0
301 * - API level 25: Android 7.1
302 * - API level 24: Android 7.0
303 * - API level 23: Android 6.0
304 * - API level 22: Android 5.1
305 * - API level 21: Android 5.0
306 * - API level 20: Android 4.4W
307 * - API level 19: Android 4.4
308 * - API level 18: Android 4.3
309 * - API level 17: Android 4.2
310 * - API level 16: Android 4.1
311 * - API level 15: Android 4.0.3
312 * - API level 14: Android 4.0
313 * - API level 13: Android 3.2
314 * - API level 12: Android 3.1
315 * - API level 11: Android 3.0
316 * - API level 10: Android 2.3.3
317 *
318 * \returns the Android API level.
319 *
320 * \since This function is available since SDL 2.0.12.
321 */
322extern DECLSPEC int SDLCALL SDL_GetAndroidSDKVersion(void);
323
324/**
325 * Query if the application is running on Android TV.
326 *
327 * \returns SDL_TRUE if this is Android TV, SDL_FALSE otherwise.
328 *
329 * \since This function is available since SDL 2.0.8.
330 */
331extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void);
332
333/**
334 * Query if the application is running on a Chromebook.
335 *
336 * \returns SDL_TRUE if this is a Chromebook, SDL_FALSE otherwise.
337 *
338 * \since This function is available since SDL 2.0.9.
339 */
340extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void);
341
342/**
343 * Query if the application is running on a Samsung DeX docking station.
344 *
345 * \returns SDL_TRUE if this is a DeX docking station, SDL_FALSE otherwise.
346 *
347 * \since This function is available since SDL 2.0.9.
348 */
349extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void);
350
351/**
352 * Trigger the Android system back button behavior.
353 *
354 * \since This function is available since SDL 2.0.9.
355 */
356extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void);
357
358/**
359 See the official Android developer guide for more information:
360 http://developer.android.com/guide/topics/data/data-storage.html
361*/
362#define SDL_ANDROID_EXTERNAL_STORAGE_READ 0x01
363#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE 0x02
364
365/**
366 * Get the path used for internal storage for this application.
367 *
368 * This path is unique to your application and cannot be written to by other
369 * applications.
370 *
371 * Your internal storage path is typically:
372 * `/data/data/your.app.package/files`.
373 *
374 * \returns the path used for internal storage or NULL on failure; call
375 * SDL_GetError() for more information.
376 *
377 * \since This function is available since SDL 2.0.0.
378 *
379 * \sa SDL_AndroidGetExternalStorageState
380 */
381extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void);
382
383/**
384 * Get the current state of external storage.
385 *
386 * The current state of external storage, a bitmask of these values:
387 * `SDL_ANDROID_EXTERNAL_STORAGE_READ`, `SDL_ANDROID_EXTERNAL_STORAGE_WRITE`.
388 *
389 * If external storage is currently unavailable, this will return 0.
390 *
391 * \returns the current state of external storage on success or 0 on failure;
392 * call SDL_GetError() for more information.
393 *
394 * \since This function is available since SDL 2.0.0.
395 *
396 * \sa SDL_AndroidGetExternalStoragePath
397 */
398extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void);
399
400/**
401 * Get the path used for external storage for this application.
402 *
403 * This path is unique to your application, but is public and can be written
404 * to by other applications.
405 *
406 * Your external storage path is typically:
407 * `/storage/sdcard0/Android/data/your.app.package/files`.
408 *
409 * \returns the path used for external storage for this application on success
410 * or NULL on failure; call SDL_GetError() for more information.
411 *
412 * \since This function is available since SDL 2.0.0.
413 *
414 * \sa SDL_AndroidGetExternalStorageState
415 */
416extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void);
417
418/**
419 * Request permissions at runtime.
420 *
421 * This blocks the calling thread until the permission is granted or denied.
422 *
423 * \param permission The permission to request.
424 * \returns SDL_TRUE if the permission was granted, SDL_FALSE otherwise.
425 *
426 * \since This function is available since SDL 2.0.14.
427 */
428extern DECLSPEC SDL_bool SDLCALL SDL_AndroidRequestPermission(const char *permission);
429
430/**
431 * Shows an Android toast notification.
432 *
433 * Toasts are a sort of lightweight notification that are unique to Android.
434 *
435 * https://developer.android.com/guide/topics/ui/notifiers/toasts
436 *
437 * Shows toast in UI thread.
438 *
439 * For the `gravity` parameter, choose a value from here, or -1 if you don't
440 * have a preference:
441 *
442 * https://developer.android.com/reference/android/view/Gravity
443 *
444 * \param message text message to be shown
445 * \param duration 0=short, 1=long
446 * \param gravity where the notification should appear on the screen.
447 * \param xoffset set this parameter only when gravity >=0
448 * \param yoffset set this parameter only when gravity >=0
449 * \returns 0 if success, -1 if any error occurs.
450 *
451 * \since This function is available since SDL 2.0.16.
452 */
453extern DECLSPEC int SDLCALL SDL_AndroidShowToast(const char* message, int duration, int gravity, int xoffset, int yoffset);
454
455/**
456 * Send a user command to SDLActivity.
457 *
458 * Override "boolean onUnhandledMessage(Message msg)" to handle the message.
459 *
460 * \param command user command that must be greater or equal to 0x8000
461 * \param param user parameter
462 *
463 * \since This function is available since SDL 2.0.22.
464 */
465extern DECLSPEC int SDLCALL SDL_AndroidSendMessage(Uint32 command, int param);
466
467#endif /* __ANDROID__ */
468
469/* Platform specific functions for WinRT */
470#ifdef __WINRT__
471
472/**
473 * \brief WinRT / Windows Phone path types
474 */
475typedef enum
476{
477 /** \brief The installed app's root directory.
478 Files here are likely to be read-only. */
479 SDL_WINRT_PATH_INSTALLED_LOCATION,
480
481 /** \brief The app's local data store. Files may be written here */
482 SDL_WINRT_PATH_LOCAL_FOLDER,
483
484 /** \brief The app's roaming data store. Unsupported on Windows Phone.
485 Files written here may be copied to other machines via a network
486 connection.
487 */
488 SDL_WINRT_PATH_ROAMING_FOLDER,
489
490 /** \brief The app's temporary data store. Unsupported on Windows Phone.
491 Files written here may be deleted at any time. */
492 SDL_WINRT_PATH_TEMP_FOLDER
493} SDL_WinRT_Path;
494
495
496/**
497 * \brief WinRT Device Family
498 */
499typedef enum
500{
501 /** \brief Unknown family */
502 SDL_WINRT_DEVICEFAMILY_UNKNOWN,
503
504 /** \brief Desktop family*/
505 SDL_WINRT_DEVICEFAMILY_DESKTOP,
506
507 /** \brief Mobile family (for example smartphone) */
508 SDL_WINRT_DEVICEFAMILY_MOBILE,
509
510 /** \brief XBox family */
511 SDL_WINRT_DEVICEFAMILY_XBOX,
512} SDL_WinRT_DeviceFamily;
513
514
515/**
516 * Retrieve a WinRT defined path on the local file system.
517 *
518 * Not all paths are available on all versions of Windows. This is especially
519 * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path
520 * for more information on which path types are supported where.
521 *
522 * Documentation on most app-specific path types on WinRT can be found on
523 * MSDN, at the URL:
524 *
525 * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
526 *
527 * \param pathType the type of path to retrieve, one of SDL_WinRT_Path
528 * \returns a UCS-2 string (16-bit, wide-char) containing the path, or NULL if
529 * the path is not available for any reason; call SDL_GetError() for
530 * more information.
531 *
532 * \since This function is available since SDL 2.0.3.
533 *
534 * \sa SDL_WinRTGetFSPathUTF8
535 */
536extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType);
537
538/**
539 * Retrieve a WinRT defined path on the local file system.
540 *
541 * Not all paths are available on all versions of Windows. This is especially
542 * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path
543 * for more information on which path types are supported where.
544 *
545 * Documentation on most app-specific path types on WinRT can be found on
546 * MSDN, at the URL:
547 *
548 * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
549 *
550 * \param pathType the type of path to retrieve, one of SDL_WinRT_Path
551 * \returns a UTF-8 string (8-bit, multi-byte) containing the path, or NULL if
552 * the path is not available for any reason; call SDL_GetError() for
553 * more information.
554 *
555 * \since This function is available since SDL 2.0.3.
556 *
557 * \sa SDL_WinRTGetFSPathUNICODE
558 */
559extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType);
560
561/**
562 * Detects the device family of WinRT platform at runtime.
563 *
564 * \returns a value from the SDL_WinRT_DeviceFamily enum.
565 *
566 * \since This function is available since SDL 2.0.8.
567 */
568extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily();
569
570#endif /* __WINRT__ */
571
572/**
573 * Query if the current device is a tablet.
574 *
575 * If SDL can't determine this, it will return SDL_FALSE.
576 *
577 * \returns SDL_TRUE if the device is a tablet, SDL_FALSE otherwise.
578 *
579 * \since This function is available since SDL 2.0.9.
580 */
581extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void);
582
583/* Functions used by iOS application delegates to notify SDL about state changes */
584extern DECLSPEC void SDLCALL SDL_OnApplicationWillTerminate(void);
585extern DECLSPEC void SDLCALL SDL_OnApplicationDidReceiveMemoryWarning(void);
586extern DECLSPEC void SDLCALL SDL_OnApplicationWillResignActive(void);
587extern DECLSPEC void SDLCALL SDL_OnApplicationDidEnterBackground(void);
588extern DECLSPEC void SDLCALL SDL_OnApplicationWillEnterForeground(void);
589extern DECLSPEC void SDLCALL SDL_OnApplicationDidBecomeActive(void);
590#ifdef __IPHONEOS__
591extern DECLSPEC void SDLCALL SDL_OnApplicationDidChangeStatusBarOrientation(void);
592#endif
593
594/* Functions used only by GDK */
595#if defined(__GDK__)
596typedef struct XTaskQueueObject *XTaskQueueHandle;
597typedef struct XUser *XUserHandle;
598
599/**
600 * Gets a reference to the global async task queue handle for GDK,
601 * initializing if needed.
602 *
603 * Once you are done with the task queue, you should call
604 * XTaskQueueCloseHandle to reduce the reference count to avoid a resource
605 * leak.
606 *
607 * \param outTaskQueue a pointer to be filled in with task queue handle.
608 * \returns 0 if success, -1 if any error occurs.
609 *
610 * \since This function is available since SDL 2.24.0.
611 */
612extern DECLSPEC int SDLCALL SDL_GDKGetTaskQueue(XTaskQueueHandle * outTaskQueue);
613
614/**
615 * Gets a reference to the default user handle for GDK.
616 *
617 * This is effectively a synchronous version of XUserAddAsync, which always
618 * prefers the default user and allows a sign-in UI.
619 *
620 * \param outUserHandle a pointer to be filled in with the default user
621 * handle.
622 * \returns 0 if success, -1 if any error occurs.
623 *
624 * \since This function is available since SDL 2.28.0.
625 */
626extern DECLSPEC int SDLCALL SDL_GDKGetDefaultUser(XUserHandle * outUserHandle);
627
628#endif
629
630/* Ends C function definitions when using C++ */
631#ifdef __cplusplus
632}
633#endif
634#include "close_code.h"
635
636#endif /* SDL_system_h_ */
637
638/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_syswm.h b/src/contrib/SDL-2.30.2/include/SDL_syswm.h
new file mode 100644
index 0000000..7b8bd6e
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_syswm.h
@@ -0,0 +1,386 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 struct xdg_popup *xdg_popup; /**< Wayland xdg popup role */
302 struct xdg_positioner *xdg_positioner; /**< Wayland xdg positioner, for popup */
303 } wl;
304#endif
305#if defined(SDL_VIDEO_DRIVER_MIR) /* no longer available, left for API/ABI compatibility. Remove in 2.1! */
306 struct
307 {
308 void *connection; /**< Mir display server connection */
309 void *surface; /**< Mir surface */
310 } mir;
311#endif
312
313#if defined(SDL_VIDEO_DRIVER_ANDROID)
314 struct
315 {
316 ANativeWindow *window;
317 EGLSurface surface;
318 } android;
319#endif
320
321#if defined(SDL_VIDEO_DRIVER_OS2)
322 struct
323 {
324 HWND hwnd; /**< The window handle */
325 HWND hwndFrame; /**< The frame window handle */
326 } os2;
327#endif
328
329#if defined(SDL_VIDEO_DRIVER_VIVANTE)
330 struct
331 {
332 EGLNativeDisplayType display;
333 EGLNativeWindowType window;
334 } vivante;
335#endif
336
337#if defined(SDL_VIDEO_DRIVER_KMSDRM)
338 struct
339 {
340 int dev_index; /**< Device index (ex: the X in /dev/dri/cardX) */
341 int drm_fd; /**< DRM FD (unavailable on Vulkan windows) */
342 struct gbm_device *gbm_dev; /**< GBM device (unavailable on Vulkan windows) */
343 } kmsdrm;
344#endif
345
346 /* Make sure this union is always 64 bytes (8 64-bit pointers). */
347 /* Be careful not to overflow this if you add a new target! */
348 Uint8 dummy[64];
349 } info;
350};
351
352#endif /* SDL_PROTOTYPES_ONLY */
353
354typedef struct SDL_SysWMinfo SDL_SysWMinfo;
355
356
357/**
358 * Get driver-specific information about a window.
359 *
360 * You must include SDL_syswm.h for the declaration of SDL_SysWMinfo.
361 *
362 * The caller must initialize the `info` structure's version by using
363 * `SDL_VERSION(&info.version)`, and then this function will fill in the rest
364 * of the structure with information about the given window.
365 *
366 * \param window the window about which information is being requested
367 * \param info an SDL_SysWMinfo structure filled in with window information
368 * \returns SDL_TRUE if the function is implemented and the `version` member
369 * of the `info` struct is valid, or SDL_FALSE if the information
370 * could not be retrieved; call SDL_GetError() for more information.
371 *
372 * \since This function is available since SDL 2.0.0.
373 */
374extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window,
375 SDL_SysWMinfo * info);
376
377
378/* Ends C function definitions when using C++ */
379#ifdef __cplusplus
380}
381#endif
382#include "close_code.h"
383
384#endif /* SDL_syswm_h_ */
385
386/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_test.h b/src/contrib/SDL-2.30.2/include/SDL_test.h
new file mode 100644
index 0000000..e5acbee
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_test.h
@@ -0,0 +1,69 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_test_assert.h b/src/contrib/SDL-2.30.2/include/SDL_test_assert.h
new file mode 100644
index 0000000..4f98335
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_test_assert.h
@@ -0,0 +1,105 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_test_common.h b/src/contrib/SDL-2.30.2/include/SDL_test_common.h
new file mode 100644
index 0000000..d977e46
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_test_common.h
@@ -0,0 +1,236 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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#define VERBOSE_MOTION 0x00000020
54
55typedef struct
56{
57 /* SDL init flags */
58 char **argv;
59 Uint32 flags;
60 Uint32 verbose;
61
62 /* Video info */
63 const char *videodriver;
64 int display;
65 const char *window_title;
66 const char *window_icon;
67 Uint32 window_flags;
68 SDL_bool flash_on_focus_loss;
69 int window_x;
70 int window_y;
71 int window_w;
72 int window_h;
73 int window_minW;
74 int window_minH;
75 int window_maxW;
76 int window_maxH;
77 int logical_w;
78 int logical_h;
79 float scale;
80 int depth;
81 int refresh_rate;
82 int num_windows;
83 SDL_Window **windows;
84
85 /* Renderer info */
86 const char *renderdriver;
87 Uint32 render_flags;
88 SDL_bool skip_renderer;
89 SDL_Renderer **renderers;
90 SDL_Texture **targets;
91
92 /* Audio info */
93 const char *audiodriver;
94 SDL_AudioSpec audiospec;
95
96 /* GL settings */
97 int gl_red_size;
98 int gl_green_size;
99 int gl_blue_size;
100 int gl_alpha_size;
101 int gl_buffer_size;
102 int gl_depth_size;
103 int gl_stencil_size;
104 int gl_double_buffer;
105 int gl_accum_red_size;
106 int gl_accum_green_size;
107 int gl_accum_blue_size;
108 int gl_accum_alpha_size;
109 int gl_stereo;
110 int gl_multisamplebuffers;
111 int gl_multisamplesamples;
112 int gl_retained_backing;
113 int gl_accelerated;
114 int gl_major_version;
115 int gl_minor_version;
116 int gl_debug;
117 int gl_profile_mask;
118
119 /* Additional fields added in 2.0.18 */
120 SDL_Rect confine;
121
122} SDLTest_CommonState;
123
124#include "begin_code.h"
125/* Set up for C function definitions, even when using C++ */
126#ifdef __cplusplus
127extern "C" {
128#endif
129
130/* Function prototypes */
131
132/**
133 * \brief Parse command line parameters and create common state.
134 *
135 * \param argv Array of command line parameters
136 * \param flags Flags indicating which subsystem to initialize (i.e. SDL_INIT_VIDEO | SDL_INIT_AUDIO)
137 *
138 * \returns a newly allocated common state object.
139 */
140SDLTest_CommonState *SDLTest_CommonCreateState(char **argv, Uint32 flags);
141
142/**
143 * \brief Process one common argument.
144 *
145 * \param state The common state describing the test window to create.
146 * \param index The index of the argument to process in argv[].
147 *
148 * \returns the number of arguments processed (i.e. 1 for --fullscreen, 2 for --video [videodriver], or -1 on error.
149 */
150int SDLTest_CommonArg(SDLTest_CommonState * state, int index);
151
152
153/**
154 * \brief Logs command line usage info.
155 *
156 * This logs the appropriate command line options for the subsystems in use
157 * plus other common options, and then any application-specific options.
158 * This uses the SDL_Log() function and splits up output to be friendly to
159 * 80-character-wide terminals.
160 *
161 * \param state The common state describing the test window for the app.
162 * \param argv0 argv[0], as passed to main/SDL_main.
163 * \param options an array of strings for application specific options. The last element of the array should be NULL.
164 */
165void SDLTest_CommonLogUsage(SDLTest_CommonState * state, const char *argv0, const char **options);
166
167/**
168 * \brief Returns common usage information
169 *
170 * You should (probably) be using SDLTest_CommonLogUsage() instead, but this
171 * function remains for binary compatibility. Strings returned from this
172 * function are valid until SDLTest_CommonQuit() is called, in which case
173 * those strings' memory is freed and can no longer be used.
174 *
175 * \param state The common state describing the test window to create.
176 * \returns a string with usage information
177 */
178const char *SDLTest_CommonUsage(SDLTest_CommonState * state);
179
180/**
181 * \brief Open test window.
182 *
183 * \param state The common state describing the test window to create.
184 *
185 * \returns SDL_TRUE if initialization succeeded, false otherwise
186 */
187SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state);
188
189/**
190 * \brief Easy argument handling when test app doesn't need any custom args.
191 *
192 * \param state The common state describing the test window to create.
193 * \param argc argc, as supplied to SDL_main
194 * \param argv argv, as supplied to SDL_main
195 *
196 * \returns SDL_FALSE if app should quit, true otherwise.
197 */
198SDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState * state, const int argc, char **argv);
199
200/**
201 * \brief Common event handler for test windows.
202 *
203 * \param state The common state used to create test window.
204 * \param event The event to handle.
205 * \param done Flag indicating we are done.
206 *
207 */
208void SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done);
209
210/**
211 * \brief Close test window.
212 *
213 * \param state The common state used to create test window.
214 *
215 */
216void SDLTest_CommonQuit(SDLTest_CommonState * state);
217
218/**
219 * \brief Draws various window information (position, size, etc.) to the renderer.
220 *
221 * \param renderer The renderer to draw to.
222 * \param window The window whose information should be displayed.
223 * \param usedHeight Returns the height used, so the caller can draw more below.
224 *
225 */
226void SDLTest_CommonDrawWindowInfo(SDL_Renderer * renderer, SDL_Window * window, int * usedHeight);
227
228/* Ends C function definitions when using C++ */
229#ifdef __cplusplus
230}
231#endif
232#include "close_code.h"
233
234#endif /* SDL_test_common_h_ */
235
236/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_test_compare.h b/src/contrib/SDL-2.30.2/include/SDL_test_compare.h
new file mode 100644
index 0000000..61a38d0
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_test_compare.h
@@ -0,0 +1,69 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_test_crc32.h b/src/contrib/SDL-2.30.2/include/SDL_test_crc32.h
new file mode 100644
index 0000000..e347831
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_test_crc32.h
@@ -0,0 +1,124 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_test_font.h b/src/contrib/SDL-2.30.2/include/SDL_test_font.h
new file mode 100644
index 0000000..620c821
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_test_font.h
@@ -0,0 +1,168 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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#define FONT_LINE_HEIGHT (FONT_CHARACTER_SIZE + 2)
43
44/**
45 * \brief Draw a string in the currently set font.
46 *
47 * \param renderer The renderer to draw on.
48 * \param x The X coordinate of the upper left corner of the character.
49 * \param y The Y coordinate of the upper left corner of the character.
50 * \param c The character to draw.
51 *
52 * \returns 0 on success, -1 on failure.
53 */
54int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, Uint32 c);
55
56/**
57 * \brief Draw a UTF-8 string in the currently set font.
58 *
59 * The font currently only supports characters in the Basic Latin and Latin-1 Supplement sets.
60 *
61 * \param renderer The renderer to draw on.
62 * \param x The X coordinate of the upper left corner of the string.
63 * \param y The Y coordinate of the upper left corner of the string.
64 * \param s The string to draw.
65 *
66 * \returns 0 on success, -1 on failure.
67 */
68int SDLTest_DrawString(SDL_Renderer *renderer, int x, int y, const char *s);
69
70/**
71 * \brief Data used for multi-line text output
72 */
73typedef struct SDLTest_TextWindow
74{
75 SDL_Rect rect;
76 int current;
77 int numlines;
78 char **lines;
79} SDLTest_TextWindow;
80
81/**
82 * \brief Create a multi-line text output window
83 *
84 * \param x The X coordinate of the upper left corner of the window.
85 * \param y The Y coordinate of the upper left corner of the window.
86 * \param w The width of the window (currently ignored)
87 * \param h The height of the window (currently ignored)
88 *
89 * \returns the new window, or NULL on failure.
90 *
91 * \since This function is available since SDL 2.24.0
92 */
93SDLTest_TextWindow *SDLTest_TextWindowCreate(int x, int y, int w, int h);
94
95/**
96 * \brief Display a multi-line text output window
97 *
98 * This function should be called every frame to display the text
99 *
100 * \param textwin The text output window
101 * \param renderer The renderer to use for display
102 *
103 * \since This function is available since SDL 2.24.0
104 */
105void SDLTest_TextWindowDisplay(SDLTest_TextWindow *textwin, SDL_Renderer *renderer);
106
107/**
108 * \brief Add text to a multi-line text output window
109 *
110 * Adds UTF-8 text to the end of the current text. The newline character starts a
111 * new line of text. The backspace character deletes the last character or, if the
112 * line is empty, deletes the line and goes to the end of the previous line.
113 *
114 * \param textwin The text output window
115 * \param fmt A printf() style format string
116 * \param ... additional parameters matching % tokens in the `fmt` string, if any
117 *
118 * \since This function is available since SDL 2.24.0
119 */
120void SDLTest_TextWindowAddText(SDLTest_TextWindow *textwin, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
121
122/**
123 * \brief Add text to a multi-line text output window
124 *
125 * Adds UTF-8 text to the end of the current text. The newline character starts a
126 * new line of text. The backspace character deletes the last character or, if the
127 * line is empty, deletes the line and goes to the end of the previous line.
128 *
129 * \param textwin The text output window
130 * \param text The text to add to the window
131 * \param len The length, in bytes, of the text to add to the window
132 *
133 * \since This function is available since SDL 2.24.0
134 */
135void SDLTest_TextWindowAddTextWithLength(SDLTest_TextWindow *textwin, const char *text, size_t len);
136
137/**
138 * \brief Clear the text in a multi-line text output window
139 *
140 * \param textwin The text output window
141 *
142 * \since This function is available since SDL 2.24.0
143 */
144void SDLTest_TextWindowClear(SDLTest_TextWindow *textwin);
145
146/**
147 * \brief Free the storage associated with a multi-line text output window
148 *
149 * \param textwin The text output window
150 *
151 * \since This function is available since SDL 2.24.0
152 */
153void SDLTest_TextWindowDestroy(SDLTest_TextWindow *textwin);
154
155/**
156 * \brief Cleanup textures used by font drawing functions.
157 */
158void SDLTest_CleanupTextDrawing(void);
159
160/* Ends C function definitions when using C++ */
161#ifdef __cplusplus
162}
163#endif
164#include "close_code.h"
165
166#endif /* SDL_test_font_h_ */
167
168/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_test_fuzzer.h b/src/contrib/SDL-2.30.2/include/SDL_test_fuzzer.h
new file mode 100644
index 0000000..a847ccb
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_test_fuzzer.h
@@ -0,0 +1,386 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_test_harness.h b/src/contrib/SDL-2.30.2/include/SDL_test_harness.h
new file mode 100644
index 0000000..bd9e4f8
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_test_harness.h
@@ -0,0 +1,134 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_test_images.h b/src/contrib/SDL-2.30.2/include/SDL_test_images.h
new file mode 100644
index 0000000..b5bcb0a
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_test_images.h
@@ -0,0 +1,78 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_test_log.h b/src/contrib/SDL-2.30.2/include/SDL_test_log.h
new file mode 100644
index 0000000..ea9ae5e
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_test_log.h
@@ -0,0 +1,67 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_test_md5.h b/src/contrib/SDL-2.30.2/include/SDL_test_md5.h
new file mode 100644
index 0000000..3764b04
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_test_md5.h
@@ -0,0 +1,129 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_test_memory.h b/src/contrib/SDL-2.30.2/include/SDL_test_memory.h
new file mode 100644
index 0000000..9bd1432
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_test_memory.h
@@ -0,0 +1,63 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_test_random.h b/src/contrib/SDL-2.30.2/include/SDL_test_random.h
new file mode 100644
index 0000000..344646a
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_test_random.h
@@ -0,0 +1,115 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_thread.h b/src/contrib/SDL-2.30.2/include/SDL_thread.h
new file mode 100644
index 0000000..dc7f536
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_thread.h
@@ -0,0 +1,464 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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__) || defined(__GDK__)) && !defined(__WINRT__)
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__) || defined(__GDK__)) && !defined(__WINRT__)
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(SDL_ThreadFunction fn,
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, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (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, stacksize, 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/src/contrib/SDL-2.30.2/include/SDL_timer.h b/src/contrib/SDL-2.30.2/include/SDL_timer.h
new file mode 100644
index 0000000..8123e43
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_timer.h
@@ -0,0 +1,222 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_touch.h b/src/contrib/SDL-2.30.2/include/SDL_touch.h
new file mode 100644
index 0000000..f6a5db4
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_touch.h
@@ -0,0 +1,150 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 touch device name as reported from the driver or NULL if the index
100 * is invalid.
101 *
102 * \since This function is available since SDL 2.0.22.
103 */
104extern DECLSPEC const char* SDLCALL SDL_GetTouchName(int index);
105
106/**
107 * Get the type of the given touch device.
108 *
109 * \since This function is available since SDL 2.0.10.
110 */
111extern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID touchID);
112
113/**
114 * Get the number of active fingers for a given touch device.
115 *
116 * \param touchID the ID of a touch device
117 * \returns the number of active fingers for a given touch device on success
118 * or 0 on failure; call SDL_GetError() for more information.
119 *
120 * \since This function is available since SDL 2.0.0.
121 *
122 * \sa SDL_GetTouchFinger
123 */
124extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID);
125
126/**
127 * Get the finger object for specified touch device ID and finger index.
128 *
129 * The returned resource is owned by SDL and should not be deallocated.
130 *
131 * \param touchID the ID of the requested touch device
132 * \param index the index of the requested finger
133 * \returns a pointer to the SDL_Finger object or NULL if no object at the
134 * given ID and index could be found.
135 *
136 * \since This function is available since SDL 2.0.0.
137 *
138 * \sa SDL_RecordGesture
139 */
140extern DECLSPEC SDL_Finger * SDLCALL SDL_GetTouchFinger(SDL_TouchID touchID, int index);
141
142/* Ends C function definitions when using C++ */
143#ifdef __cplusplus
144}
145#endif
146#include "close_code.h"
147
148#endif /* SDL_touch_h_ */
149
150/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_types.h b/src/contrib/SDL-2.30.2/include/SDL_types.h
new file mode 100644
index 0000000..e8d33c6
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_types.h
@@ -0,0 +1,29 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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/src/contrib/SDL-2.30.2/include/SDL_version.h b/src/contrib/SDL-2.30.2/include/SDL_version.h
new file mode 100644
index 0000000..c222d77
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_version.h
@@ -0,0 +1,204 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 30
62#define SDL_PATCHLEVEL 2
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/* TODO: Remove this whole block in SDL 3 */
87#if SDL_MAJOR_VERSION < 3
88/**
89 * This macro turns the version numbers into a numeric value:
90 * \verbatim
91 (1,2,3) -> (1203)
92 \endverbatim
93 *
94 * This assumes that there will never be more than 100 patchlevels.
95 *
96 * In versions higher than 2.9.0, the minor version overflows into
97 * the thousands digit: for example, 2.23.0 is encoded as 4300,
98 * and 2.255.99 would be encoded as 25799.
99 * This macro will not be available in SDL 3.x.
100 */
101#define SDL_VERSIONNUM(X, Y, Z) \
102 ((X)*1000 + (Y)*100 + (Z))
103
104/**
105 * This is the version number macro for the current SDL version.
106 *
107 * In versions higher than 2.9.0, the minor version overflows into
108 * the thousands digit: for example, 2.23.0 is encoded as 4300.
109 * This macro will not be available in SDL 3.x.
110 *
111 * Deprecated, use SDL_VERSION_ATLEAST or SDL_VERSION instead.
112 */
113#define SDL_COMPILEDVERSION \
114 SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL)
115#endif /* SDL_MAJOR_VERSION < 3 */
116
117/**
118 * This macro will evaluate to true if compiled with SDL at least X.Y.Z.
119 */
120#define SDL_VERSION_ATLEAST(X, Y, Z) \
121 ((SDL_MAJOR_VERSION >= X) && \
122 (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION >= Y) && \
123 (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION > Y || SDL_PATCHLEVEL >= Z))
124
125/**
126 * Get the version of SDL that is linked against your program.
127 *
128 * If you are linking to SDL dynamically, then it is possible that the current
129 * version will be different than the version you compiled against. This
130 * function returns the current version, while SDL_VERSION() is a macro that
131 * tells you what version you compiled with.
132 *
133 * This function may be called safely at any time, even before SDL_Init().
134 *
135 * \param ver the SDL_version structure that contains the version information
136 *
137 * \since This function is available since SDL 2.0.0.
138 *
139 * \sa SDL_GetRevision
140 */
141extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver);
142
143/**
144 * Get the code revision of SDL that is linked against your program.
145 *
146 * This value is the revision of the code you are linked with and may be
147 * different from the code you are compiling with, which is found in the
148 * constant SDL_REVISION.
149 *
150 * The revision is arbitrary string (a hash value) uniquely identifying the
151 * exact revision of the SDL library in use, and is only useful in comparing
152 * against other revisions. It is NOT an incrementing number.
153 *
154 * If SDL wasn't built from a git repository with the appropriate tools, this
155 * will return an empty string.
156 *
157 * Prior to SDL 2.0.16, before development moved to GitHub, this returned a
158 * hash for a Mercurial repository.
159 *
160 * You shouldn't use this function for anything but logging it for debugging
161 * purposes. The string is not intended to be reliable in any way.
162 *
163 * \returns an arbitrary string, uniquely identifying the exact revision of
164 * the SDL library in use.
165 *
166 * \since This function is available since SDL 2.0.0.
167 *
168 * \sa SDL_GetVersion
169 */
170extern DECLSPEC const char *SDLCALL SDL_GetRevision(void);
171
172/**
173 * Obsolete function, do not use.
174 *
175 * When SDL was hosted in a Mercurial repository, and was built carefully,
176 * this would return the revision number that the build was created from. This
177 * number was not reliable for several reasons, but more importantly, SDL is
178 * now hosted in a git repository, which does not offer numbers at all, only
179 * hashes. This function only ever returns zero now. Don't use it.
180 *
181 * Before SDL 2.0.16, this might have returned an unreliable, but non-zero
182 * number.
183 *
184 * \deprecated Use SDL_GetRevision() instead; if SDL was carefully built, it
185 * will return a git hash.
186 *
187 * \returns zero, always, in modern SDL releases.
188 *
189 * \since This function is available since SDL 2.0.0.
190 *
191 * \sa SDL_GetRevision
192 */
193extern SDL_DEPRECATED DECLSPEC int SDLCALL SDL_GetRevisionNumber(void);
194
195
196/* Ends C function definitions when using C++ */
197#ifdef __cplusplus
198}
199#endif
200#include "close_code.h"
201
202#endif /* SDL_version_h_ */
203
204/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_video.h b/src/contrib/SDL-2.30.2/include/SDL_video.h
new file mode 100644
index 0000000..fa47d30
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/SDL_video.h
@@ -0,0 +1,2184 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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_DISPLAYEVENT_MOVED /**< Display has changed position */
192} SDL_DisplayEventID;
193
194/**
195 * \brief Display orientation
196 */
197typedef enum
198{
199 SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */
200 SDL_ORIENTATION_LANDSCAPE, /**< The display is in landscape mode, with the right side up, relative to portrait mode */
201 SDL_ORIENTATION_LANDSCAPE_FLIPPED, /**< The display is in landscape mode, with the left side up, relative to portrait mode */
202 SDL_ORIENTATION_PORTRAIT, /**< The display is in portrait mode */
203 SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */
204} SDL_DisplayOrientation;
205
206/**
207 * \brief Window flash operation
208 */
209typedef enum
210{
211 SDL_FLASH_CANCEL, /**< Cancel any window flash state */
212 SDL_FLASH_BRIEFLY, /**< Flash the window briefly to get attention */
213 SDL_FLASH_UNTIL_FOCUSED /**< Flash the window until it gets focus */
214} SDL_FlashOperation;
215
216/**
217 * \brief An opaque handle to an OpenGL context.
218 */
219typedef void *SDL_GLContext;
220
221/**
222 * \brief OpenGL configuration attributes
223 */
224typedef enum
225{
226 SDL_GL_RED_SIZE,
227 SDL_GL_GREEN_SIZE,
228 SDL_GL_BLUE_SIZE,
229 SDL_GL_ALPHA_SIZE,
230 SDL_GL_BUFFER_SIZE,
231 SDL_GL_DOUBLEBUFFER,
232 SDL_GL_DEPTH_SIZE,
233 SDL_GL_STENCIL_SIZE,
234 SDL_GL_ACCUM_RED_SIZE,
235 SDL_GL_ACCUM_GREEN_SIZE,
236 SDL_GL_ACCUM_BLUE_SIZE,
237 SDL_GL_ACCUM_ALPHA_SIZE,
238 SDL_GL_STEREO,
239 SDL_GL_MULTISAMPLEBUFFERS,
240 SDL_GL_MULTISAMPLESAMPLES,
241 SDL_GL_ACCELERATED_VISUAL,
242 SDL_GL_RETAINED_BACKING,
243 SDL_GL_CONTEXT_MAJOR_VERSION,
244 SDL_GL_CONTEXT_MINOR_VERSION,
245 SDL_GL_CONTEXT_EGL,
246 SDL_GL_CONTEXT_FLAGS,
247 SDL_GL_CONTEXT_PROFILE_MASK,
248 SDL_GL_SHARE_WITH_CURRENT_CONTEXT,
249 SDL_GL_FRAMEBUFFER_SRGB_CAPABLE,
250 SDL_GL_CONTEXT_RELEASE_BEHAVIOR,
251 SDL_GL_CONTEXT_RESET_NOTIFICATION,
252 SDL_GL_CONTEXT_NO_ERROR,
253 SDL_GL_FLOATBUFFERS
254} SDL_GLattr;
255
256typedef enum
257{
258 SDL_GL_CONTEXT_PROFILE_CORE = 0x0001,
259 SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002,
260 SDL_GL_CONTEXT_PROFILE_ES = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */
261} SDL_GLprofile;
262
263typedef enum
264{
265 SDL_GL_CONTEXT_DEBUG_FLAG = 0x0001,
266 SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002,
267 SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG = 0x0004,
268 SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008
269} SDL_GLcontextFlag;
270
271typedef enum
272{
273 SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE = 0x0000,
274 SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x0001
275} SDL_GLcontextReleaseFlag;
276
277typedef enum
278{
279 SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000,
280 SDL_GL_CONTEXT_RESET_LOSE_CONTEXT = 0x0001
281} SDL_GLContextResetNotification;
282
283/* Function prototypes */
284
285/**
286 * Get the number of video drivers compiled into SDL.
287 *
288 * \returns a number >= 1 on success or a negative error code on failure; call
289 * SDL_GetError() for more information.
290 *
291 * \since This function is available since SDL 2.0.0.
292 *
293 * \sa SDL_GetVideoDriver
294 */
295extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void);
296
297/**
298 * Get the name of a built in video driver.
299 *
300 * The video drivers are presented in the order in which they are normally
301 * checked during initialization.
302 *
303 * \param index the index of a video driver
304 * \returns the name of the video driver with the given **index**.
305 *
306 * \since This function is available since SDL 2.0.0.
307 *
308 * \sa SDL_GetNumVideoDrivers
309 */
310extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index);
311
312/**
313 * Initialize the video subsystem, optionally specifying a video driver.
314 *
315 * This function initializes the video subsystem, setting up a connection to
316 * the window manager, etc, and determines the available display modes and
317 * pixel formats, but does not initialize a window or graphics mode.
318 *
319 * If you use this function and you haven't used the SDL_INIT_VIDEO flag with
320 * either SDL_Init() or SDL_InitSubSystem(), you should call SDL_VideoQuit()
321 * before calling SDL_Quit().
322 *
323 * It is safe to call this function multiple times. SDL_VideoInit() will call
324 * SDL_VideoQuit() itself if the video subsystem has already been initialized.
325 *
326 * You can use SDL_GetNumVideoDrivers() and SDL_GetVideoDriver() to find a
327 * specific `driver_name`.
328 *
329 * \param driver_name the name of a video driver to initialize, or NULL for
330 * the default driver
331 * \returns 0 on success or a negative error code on failure; call
332 * SDL_GetError() for more information.
333 *
334 * \since This function is available since SDL 2.0.0.
335 *
336 * \sa SDL_GetNumVideoDrivers
337 * \sa SDL_GetVideoDriver
338 * \sa SDL_InitSubSystem
339 * \sa SDL_VideoQuit
340 */
341extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name);
342
343/**
344 * Shut down the video subsystem, if initialized with SDL_VideoInit().
345 *
346 * This function closes all windows, and restores the original video mode.
347 *
348 * \since This function is available since SDL 2.0.0.
349 *
350 * \sa SDL_VideoInit
351 */
352extern DECLSPEC void SDLCALL SDL_VideoQuit(void);
353
354/**
355 * Get the name of the currently initialized video driver.
356 *
357 * \returns the name of the current video driver or NULL if no driver has been
358 * initialized.
359 *
360 * \since This function is available since SDL 2.0.0.
361 *
362 * \sa SDL_GetNumVideoDrivers
363 * \sa SDL_GetVideoDriver
364 */
365extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void);
366
367/**
368 * Get the number of available video displays.
369 *
370 * \returns a number >= 1 or a negative error code on failure; call
371 * SDL_GetError() for more information.
372 *
373 * \since This function is available since SDL 2.0.0.
374 *
375 * \sa SDL_GetDisplayBounds
376 */
377extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void);
378
379/**
380 * Get the name of a display in UTF-8 encoding.
381 *
382 * \param displayIndex the index of display from which the name should be
383 * queried
384 * \returns the name of a display or NULL for an invalid display index or
385 * failure; call SDL_GetError() for more information.
386 *
387 * \since This function is available since SDL 2.0.0.
388 *
389 * \sa SDL_GetNumVideoDisplays
390 */
391extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex);
392
393/**
394 * Get the desktop area represented by a display.
395 *
396 * The primary display (`displayIndex` zero) is always located at 0,0.
397 *
398 * \param displayIndex the index of the display to query
399 * \param rect the SDL_Rect structure filled in with the display bounds
400 * \returns 0 on success or a negative error code on failure; call
401 * SDL_GetError() for more information.
402 *
403 * \since This function is available since SDL 2.0.0.
404 *
405 * \sa SDL_GetNumVideoDisplays
406 */
407extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect);
408
409/**
410 * Get the usable desktop area represented by a display.
411 *
412 * The primary display (`displayIndex` zero) is always located at 0,0.
413 *
414 * This is the same area as SDL_GetDisplayBounds() reports, but with portions
415 * reserved by the system removed. For example, on Apple's macOS, this
416 * subtracts the area occupied by the menu bar and dock.
417 *
418 * Setting a window to be fullscreen generally bypasses these unusable areas,
419 * so these are good guidelines for the maximum space available to a
420 * non-fullscreen window.
421 *
422 * The parameter `rect` is ignored if it is NULL.
423 *
424 * This function also returns -1 if the parameter `displayIndex` is out of
425 * range.
426 *
427 * \param displayIndex the index of the display to query the usable bounds
428 * from
429 * \param rect the SDL_Rect structure filled in with the display bounds
430 * \returns 0 on success or a negative error code on failure; call
431 * SDL_GetError() for more information.
432 *
433 * \since This function is available since SDL 2.0.5.
434 *
435 * \sa SDL_GetDisplayBounds
436 * \sa SDL_GetNumVideoDisplays
437 */
438extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect);
439
440/**
441 * Get the dots/pixels-per-inch for a display.
442 *
443 * Diagonal, horizontal and vertical DPI can all be optionally returned if the
444 * appropriate parameter is non-NULL.
445 *
446 * A failure of this function usually means that either no DPI information is
447 * available or the `displayIndex` is out of range.
448 *
449 * **WARNING**: This reports the DPI that the hardware reports, and it is not
450 * always reliable! It is almost always better to use SDL_GetWindowSize() to
451 * find the window size, which might be in logical points instead of pixels,
452 * and then SDL_GL_GetDrawableSize(), SDL_Vulkan_GetDrawableSize(),
453 * SDL_Metal_GetDrawableSize(), or SDL_GetRendererOutputSize(), and compare
454 * the two values to get an actual scaling value between the two. We will be
455 * rethinking how high-dpi details should be managed in SDL3 to make things
456 * more consistent, reliable, and clear.
457 *
458 * \param displayIndex the index of the display from which DPI information
459 * should be queried
460 * \param ddpi a pointer filled in with the diagonal DPI of the display; may
461 * be NULL
462 * \param hdpi a pointer filled in with the horizontal DPI of the display; may
463 * be NULL
464 * \param vdpi a pointer filled in with the vertical DPI of the display; may
465 * be NULL
466 * \returns 0 on success or a negative error code on failure; call
467 * SDL_GetError() for more information.
468 *
469 * \since This function is available since SDL 2.0.4.
470 *
471 * \sa SDL_GetNumVideoDisplays
472 */
473extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi);
474
475/**
476 * Get the orientation of a display.
477 *
478 * \param displayIndex the index of the display to query
479 * \returns The SDL_DisplayOrientation enum value of the display, or
480 * `SDL_ORIENTATION_UNKNOWN` if it isn't available.
481 *
482 * \since This function is available since SDL 2.0.9.
483 *
484 * \sa SDL_GetNumVideoDisplays
485 */
486extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex);
487
488/**
489 * Get the number of available display modes.
490 *
491 * The `displayIndex` needs to be in the range from 0 to
492 * SDL_GetNumVideoDisplays() - 1.
493 *
494 * \param displayIndex the index of the display to query
495 * \returns a number >= 1 on success or a negative error code on failure; call
496 * SDL_GetError() for more information.
497 *
498 * \since This function is available since SDL 2.0.0.
499 *
500 * \sa SDL_GetDisplayMode
501 * \sa SDL_GetNumVideoDisplays
502 */
503extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex);
504
505/**
506 * Get information about a specific display mode.
507 *
508 * The display modes are sorted in this priority:
509 *
510 * - width -> largest to smallest
511 * - height -> largest to smallest
512 * - bits per pixel -> more colors to fewer colors
513 * - packed pixel layout -> largest to smallest
514 * - refresh rate -> highest to lowest
515 *
516 * \param displayIndex the index of the display to query
517 * \param modeIndex the index of the display mode to query
518 * \param mode an SDL_DisplayMode structure filled in with the mode at
519 * `modeIndex`
520 * \returns 0 on success or a negative error code on failure; call
521 * SDL_GetError() for more information.
522 *
523 * \since This function is available since SDL 2.0.0.
524 *
525 * \sa SDL_GetNumDisplayModes
526 */
527extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex,
528 SDL_DisplayMode * mode);
529
530/**
531 * Get information about the desktop's display mode.
532 *
533 * There's a difference between this function and SDL_GetCurrentDisplayMode()
534 * when SDL runs fullscreen and has changed the resolution. In that case this
535 * function will return the previous native display mode, and not the current
536 * display mode.
537 *
538 * \param displayIndex the index of the display to query
539 * \param mode an SDL_DisplayMode structure filled in with the current display
540 * mode
541 * \returns 0 on success or a negative error code on failure; call
542 * SDL_GetError() for more information.
543 *
544 * \since This function is available since SDL 2.0.0.
545 *
546 * \sa SDL_GetCurrentDisplayMode
547 * \sa SDL_GetDisplayMode
548 * \sa SDL_SetWindowDisplayMode
549 */
550extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode);
551
552/**
553 * Get information about the current display mode.
554 *
555 * There's a difference between this function and SDL_GetDesktopDisplayMode()
556 * when SDL runs fullscreen and has changed the resolution. In that case this
557 * function will return the current display mode, and not the previous native
558 * display mode.
559 *
560 * \param displayIndex the index of the display to query
561 * \param mode an SDL_DisplayMode structure filled in with the current display
562 * mode
563 * \returns 0 on success or a negative error code on failure; call
564 * SDL_GetError() for more information.
565 *
566 * \since This function is available since SDL 2.0.0.
567 *
568 * \sa SDL_GetDesktopDisplayMode
569 * \sa SDL_GetDisplayMode
570 * \sa SDL_GetNumVideoDisplays
571 * \sa SDL_SetWindowDisplayMode
572 */
573extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode);
574
575
576/**
577 * Get the closest match to the requested display mode.
578 *
579 * The available display modes are scanned and `closest` is filled in with the
580 * closest mode matching the requested mode and returned. The mode format and
581 * refresh rate default to the desktop mode if they are set to 0. The modes
582 * are scanned with size being first priority, format being second priority,
583 * and finally checking the refresh rate. If all the available modes are too
584 * small, then NULL is returned.
585 *
586 * \param displayIndex the index of the display to query
587 * \param mode an SDL_DisplayMode structure containing the desired display
588 * mode
589 * \param closest an SDL_DisplayMode structure filled in with the closest
590 * match of the available display modes
591 * \returns the passed in value `closest` or NULL if no matching video mode
592 * was available; call SDL_GetError() for more information.
593 *
594 * \since This function is available since SDL 2.0.0.
595 *
596 * \sa SDL_GetDisplayMode
597 * \sa SDL_GetNumDisplayModes
598 */
599extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest);
600
601/**
602 * Get the index of the display containing a point
603 *
604 * \param point the point to query
605 * \returns the index of the display containing the point or a negative error
606 * code on failure; call SDL_GetError() for more information.
607 *
608 * \since This function is available since SDL 2.24.0.
609 *
610 * \sa SDL_GetDisplayBounds
611 * \sa SDL_GetNumVideoDisplays
612 */
613extern DECLSPEC int SDLCALL SDL_GetPointDisplayIndex(const SDL_Point * point);
614
615/**
616 * Get the index of the display primarily containing a rect
617 *
618 * \param rect the rect to query
619 * \returns the index of the display entirely containing the rect or closest
620 * to the center of the rect on success or a negative error code on
621 * failure; call SDL_GetError() for more information.
622 *
623 * \since This function is available since SDL 2.24.0.
624 *
625 * \sa SDL_GetDisplayBounds
626 * \sa SDL_GetNumVideoDisplays
627 */
628extern DECLSPEC int SDLCALL SDL_GetRectDisplayIndex(const SDL_Rect * rect);
629
630/**
631 * Get the index of the display associated with a window.
632 *
633 * \param window the window to query
634 * \returns the index of the display containing the center of the window on
635 * success or a negative error code on failure; call SDL_GetError()
636 * for more information.
637 *
638 * \since This function is available since SDL 2.0.0.
639 *
640 * \sa SDL_GetDisplayBounds
641 * \sa SDL_GetNumVideoDisplays
642 */
643extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window);
644
645/**
646 * Set the display mode to use when a window is visible at fullscreen.
647 *
648 * This only affects the display mode used when the window is fullscreen. To
649 * change the window size when the window is not fullscreen, use
650 * SDL_SetWindowSize().
651 *
652 * \param window the window to affect
653 * \param mode the SDL_DisplayMode structure representing the mode to use, or
654 * NULL to use the window's dimensions and the desktop's format
655 * and refresh rate
656 * \returns 0 on success or a negative error code on failure; call
657 * SDL_GetError() for more information.
658 *
659 * \since This function is available since SDL 2.0.0.
660 *
661 * \sa SDL_GetWindowDisplayMode
662 * \sa SDL_SetWindowFullscreen
663 */
664extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window,
665 const SDL_DisplayMode * mode);
666
667/**
668 * Query the display mode to use when a window is visible at fullscreen.
669 *
670 * \param window the window to query
671 * \param mode an SDL_DisplayMode structure filled in with the fullscreen
672 * display mode
673 * \returns 0 on success or a negative error code on failure; call
674 * SDL_GetError() for more information.
675 *
676 * \since This function is available since SDL 2.0.0.
677 *
678 * \sa SDL_SetWindowDisplayMode
679 * \sa SDL_SetWindowFullscreen
680 */
681extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window,
682 SDL_DisplayMode * mode);
683
684/**
685 * Get the raw ICC profile data for the screen the window is currently on.
686 *
687 * Data returned should be freed with SDL_free.
688 *
689 * \param window the window to query
690 * \param size the size of the ICC profile
691 * \returns the raw ICC profile data on success or NULL on failure; call
692 * SDL_GetError() for more information.
693 *
694 * \since This function is available since SDL 2.0.18.
695 */
696extern DECLSPEC void* SDLCALL SDL_GetWindowICCProfile(SDL_Window * window, size_t* size);
697
698/**
699 * Get the pixel format associated with the window.
700 *
701 * \param window the window to query
702 * \returns the pixel format of the window on success or
703 * SDL_PIXELFORMAT_UNKNOWN on failure; call SDL_GetError() for more
704 * information.
705 *
706 * \since This function is available since SDL 2.0.0.
707 */
708extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window);
709
710/**
711 * Create a window with the specified position, dimensions, and flags.
712 *
713 * `flags` may be any of the following OR'd together:
714 *
715 * - `SDL_WINDOW_FULLSCREEN`: fullscreen window
716 * - `SDL_WINDOW_FULLSCREEN_DESKTOP`: fullscreen window at desktop resolution
717 * - `SDL_WINDOW_OPENGL`: window usable with an OpenGL context
718 * - `SDL_WINDOW_VULKAN`: window usable with a Vulkan instance
719 * - `SDL_WINDOW_METAL`: window usable with a Metal instance
720 * - `SDL_WINDOW_HIDDEN`: window is not visible
721 * - `SDL_WINDOW_BORDERLESS`: no window decoration
722 * - `SDL_WINDOW_RESIZABLE`: window can be resized
723 * - `SDL_WINDOW_MINIMIZED`: window is minimized
724 * - `SDL_WINDOW_MAXIMIZED`: window is maximized
725 * - `SDL_WINDOW_INPUT_GRABBED`: window has grabbed input focus
726 * - `SDL_WINDOW_ALLOW_HIGHDPI`: window should be created in high-DPI mode if
727 * supported (>= SDL 2.0.1)
728 *
729 * `SDL_WINDOW_SHOWN` is ignored by SDL_CreateWindow(). The SDL_Window is
730 * implicitly shown if SDL_WINDOW_HIDDEN is not set. `SDL_WINDOW_SHOWN` may be
731 * queried later using SDL_GetWindowFlags().
732 *
733 * On Apple's macOS, you **must** set the NSHighResolutionCapable Info.plist
734 * property to YES, otherwise you will not receive a High-DPI OpenGL canvas.
735 *
736 * If the window is created with the `SDL_WINDOW_ALLOW_HIGHDPI` flag, its size
737 * in pixels may differ from its size in screen coordinates on platforms with
738 * high-DPI support (e.g. iOS and macOS). Use SDL_GetWindowSize() to query the
739 * client area's size in screen coordinates, and SDL_GL_GetDrawableSize() or
740 * SDL_GetRendererOutputSize() to query the drawable size in pixels. Note that
741 * when this flag is set, the drawable size can vary after the window is
742 * created and should be queried after major window events such as when the
743 * window is resized or moved between displays.
744 *
745 * If the window is set fullscreen, the width and height parameters `w` and
746 * `h` will not be used. However, invalid size parameters (e.g. too large) may
747 * still fail. Window size is actually limited to 16384 x 16384 for all
748 * platforms at window creation.
749 *
750 * If the window is created with any of the SDL_WINDOW_OPENGL or
751 * SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function
752 * (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the
753 * corresponding UnloadLibrary function is called by SDL_DestroyWindow().
754 *
755 * If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver,
756 * SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail.
757 *
758 * If SDL_WINDOW_METAL is specified on an OS that does not support Metal,
759 * SDL_CreateWindow() will fail.
760 *
761 * On non-Apple devices, SDL requires you to either not link to the Vulkan
762 * loader or link to a dynamic library version. This limitation may be removed
763 * in a future version of SDL.
764 *
765 * \param title the title of the window, in UTF-8 encoding
766 * \param x the x position of the window, `SDL_WINDOWPOS_CENTERED`, or
767 * `SDL_WINDOWPOS_UNDEFINED`
768 * \param y the y position of the window, `SDL_WINDOWPOS_CENTERED`, or
769 * `SDL_WINDOWPOS_UNDEFINED`
770 * \param w the width of the window, in screen coordinates
771 * \param h the height of the window, in screen coordinates
772 * \param flags 0, or one or more SDL_WindowFlags OR'd together
773 * \returns the window that was created or NULL on failure; call
774 * SDL_GetError() for more information.
775 *
776 * \since This function is available since SDL 2.0.0.
777 *
778 * \sa SDL_CreateWindowFrom
779 * \sa SDL_DestroyWindow
780 */
781extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title,
782 int x, int y, int w,
783 int h, Uint32 flags);
784
785/**
786 * Create an SDL window from an existing native window.
787 *
788 * In some cases (e.g. OpenGL) and on some platforms (e.g. Microsoft Windows)
789 * the hint `SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT` needs to be configured
790 * before using SDL_CreateWindowFrom().
791 *
792 * \param data a pointer to driver-dependent window creation data, typically
793 * your native window cast to a void*
794 * \returns the window that was created or NULL on failure; call
795 * SDL_GetError() for more information.
796 *
797 * \since This function is available since SDL 2.0.0.
798 *
799 * \sa SDL_CreateWindow
800 * \sa SDL_DestroyWindow
801 */
802extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data);
803
804/**
805 * Get the numeric ID of a window.
806 *
807 * The numeric ID is what SDL_WindowEvent references, and is necessary to map
808 * these events to specific SDL_Window objects.
809 *
810 * \param window the window to query
811 * \returns the ID of the window on success or 0 on failure; call
812 * SDL_GetError() for more information.
813 *
814 * \since This function is available since SDL 2.0.0.
815 *
816 * \sa SDL_GetWindowFromID
817 */
818extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window);
819
820/**
821 * Get a window from a stored ID.
822 *
823 * The numeric ID is what SDL_WindowEvent references, and is necessary to map
824 * these events to specific SDL_Window objects.
825 *
826 * \param id the ID of the window
827 * \returns the window associated with `id` or NULL if it doesn't exist; call
828 * SDL_GetError() for more information.
829 *
830 * \since This function is available since SDL 2.0.0.
831 *
832 * \sa SDL_GetWindowID
833 */
834extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id);
835
836/**
837 * Get the window flags.
838 *
839 * \param window the window to query
840 * \returns a mask of the SDL_WindowFlags associated with `window`
841 *
842 * \since This function is available since SDL 2.0.0.
843 *
844 * \sa SDL_CreateWindow
845 * \sa SDL_HideWindow
846 * \sa SDL_MaximizeWindow
847 * \sa SDL_MinimizeWindow
848 * \sa SDL_SetWindowFullscreen
849 * \sa SDL_SetWindowGrab
850 * \sa SDL_ShowWindow
851 */
852extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window);
853
854/**
855 * Set the title of a window.
856 *
857 * This string is expected to be in UTF-8 encoding.
858 *
859 * \param window the window to change
860 * \param title the desired window title in UTF-8 format
861 *
862 * \since This function is available since SDL 2.0.0.
863 *
864 * \sa SDL_GetWindowTitle
865 */
866extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window,
867 const char *title);
868
869/**
870 * Get the title of a window.
871 *
872 * \param window the window to query
873 * \returns the title of the window in UTF-8 format or "" if there is no
874 * title.
875 *
876 * \since This function is available since SDL 2.0.0.
877 *
878 * \sa SDL_SetWindowTitle
879 */
880extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window);
881
882/**
883 * Set the icon for a window.
884 *
885 * \param window the window to change
886 * \param icon an SDL_Surface structure containing the icon for the window
887 *
888 * \since This function is available since SDL 2.0.0.
889 */
890extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window,
891 SDL_Surface * icon);
892
893/**
894 * Associate an arbitrary named pointer with a window.
895 *
896 * `name` is case-sensitive.
897 *
898 * \param window the window to associate with the pointer
899 * \param name the name of the pointer
900 * \param userdata the associated pointer
901 * \returns the previous value associated with `name`.
902 *
903 * \since This function is available since SDL 2.0.0.
904 *
905 * \sa SDL_GetWindowData
906 */
907extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window,
908 const char *name,
909 void *userdata);
910
911/**
912 * Retrieve the data pointer associated with a window.
913 *
914 * \param window the window to query
915 * \param name the name of the pointer
916 * \returns the value associated with `name`.
917 *
918 * \since This function is available since SDL 2.0.0.
919 *
920 * \sa SDL_SetWindowData
921 */
922extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window,
923 const char *name);
924
925/**
926 * Set the position of a window.
927 *
928 * The window coordinate origin is the upper left of the display.
929 *
930 * \param window the window to reposition
931 * \param x the x coordinate of the window in screen coordinates, or
932 * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED`
933 * \param y the y coordinate of the window in screen coordinates, or
934 * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED`
935 *
936 * \since This function is available since SDL 2.0.0.
937 *
938 * \sa SDL_GetWindowPosition
939 */
940extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window,
941 int x, int y);
942
943/**
944 * Get the position of a window.
945 *
946 * If you do not need the value for one of the positions a NULL may be passed
947 * in the `x` or `y` parameter.
948 *
949 * \param window the window to query
950 * \param x a pointer filled in with the x position of the window, in screen
951 * coordinates, may be NULL
952 * \param y a pointer filled in with the y position of the window, in screen
953 * coordinates, may be NULL
954 *
955 * \since This function is available since SDL 2.0.0.
956 *
957 * \sa SDL_SetWindowPosition
958 */
959extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window,
960 int *x, int *y);
961
962/**
963 * Set the size of a window's client area.
964 *
965 * The window size in screen coordinates may differ from the size in pixels,
966 * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform
967 * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize() or
968 * SDL_GetRendererOutputSize() to get the real client area size in pixels.
969 *
970 * Fullscreen windows automatically match the size of the display mode, and
971 * you should use SDL_SetWindowDisplayMode() to change their size.
972 *
973 * \param window the window to change
974 * \param w the width of the window in pixels, in screen coordinates, must be
975 * > 0
976 * \param h the height of the window in pixels, in screen coordinates, must be
977 * > 0
978 *
979 * \since This function is available since SDL 2.0.0.
980 *
981 * \sa SDL_GetWindowSize
982 * \sa SDL_SetWindowDisplayMode
983 */
984extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w,
985 int h);
986
987/**
988 * Get the size of a window's client area.
989 *
990 * NULL can safely be passed as the `w` or `h` parameter if the width or
991 * height value is not desired.
992 *
993 * The window size in screen coordinates may differ from the size in pixels,
994 * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform
995 * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize(),
996 * SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to get the
997 * real client area size in pixels.
998 *
999 * \param window the window to query the width and height from
1000 * \param w a pointer filled in with the width of the window, in screen
1001 * coordinates, may be NULL
1002 * \param h a pointer filled in with the height of the window, in screen
1003 * coordinates, may be NULL
1004 *
1005 * \since This function is available since SDL 2.0.0.
1006 *
1007 * \sa SDL_GL_GetDrawableSize
1008 * \sa SDL_Vulkan_GetDrawableSize
1009 * \sa SDL_SetWindowSize
1010 */
1011extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w,
1012 int *h);
1013
1014/**
1015 * Get the size of a window's borders (decorations) around the client area.
1016 *
1017 * Note: If this function fails (returns -1), the size values will be
1018 * initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as if the
1019 * window in question was borderless.
1020 *
1021 * Note: This function may fail on systems where the window has not yet been
1022 * decorated by the display server (for example, immediately after calling
1023 * SDL_CreateWindow). It is recommended that you wait at least until the
1024 * window has been presented and composited, so that the window system has a
1025 * chance to decorate the window and provide the border dimensions to SDL.
1026 *
1027 * This function also returns -1 if getting the information is not supported.
1028 *
1029 * \param window the window to query the size values of the border
1030 * (decorations) from
1031 * \param top pointer to variable for storing the size of the top border; NULL
1032 * is permitted
1033 * \param left pointer to variable for storing the size of the left border;
1034 * NULL is permitted
1035 * \param bottom pointer to variable for storing the size of the bottom
1036 * border; NULL is permitted
1037 * \param right pointer to variable for storing the size of the right border;
1038 * NULL is permitted
1039 * \returns 0 on success or a negative error code on failure; call
1040 * SDL_GetError() for more information.
1041 *
1042 * \since This function is available since SDL 2.0.5.
1043 *
1044 * \sa SDL_GetWindowSize
1045 */
1046extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window,
1047 int *top, int *left,
1048 int *bottom, int *right);
1049
1050/**
1051 * Get the size of a window in pixels.
1052 *
1053 * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI
1054 * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a
1055 * platform with high-DPI support (Apple calls this "Retina"), and not
1056 * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint.
1057 *
1058 * \param window the window from which the drawable size should be queried
1059 * \param w a pointer to variable for storing the width in pixels, may be NULL
1060 * \param h a pointer to variable for storing the height in pixels, may be
1061 * NULL
1062 *
1063 * \since This function is available since SDL 2.26.0.
1064 *
1065 * \sa SDL_CreateWindow
1066 * \sa SDL_GetWindowSize
1067 */
1068extern DECLSPEC void SDLCALL SDL_GetWindowSizeInPixels(SDL_Window * window,
1069 int *w, int *h);
1070
1071/**
1072 * Set the minimum size of a window's client area.
1073 *
1074 * \param window the window to change
1075 * \param min_w the minimum width of the window in pixels
1076 * \param min_h the minimum height of the window in pixels
1077 *
1078 * \since This function is available since SDL 2.0.0.
1079 *
1080 * \sa SDL_GetWindowMinimumSize
1081 * \sa SDL_SetWindowMaximumSize
1082 */
1083extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window,
1084 int min_w, int min_h);
1085
1086/**
1087 * Get the minimum size of a window's client area.
1088 *
1089 * \param window the window to query
1090 * \param w a pointer filled in with the minimum width of the window, may be
1091 * NULL
1092 * \param h a pointer filled in with the minimum height of the window, may be
1093 * NULL
1094 *
1095 * \since This function is available since SDL 2.0.0.
1096 *
1097 * \sa SDL_GetWindowMaximumSize
1098 * \sa SDL_SetWindowMinimumSize
1099 */
1100extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window,
1101 int *w, int *h);
1102
1103/**
1104 * Set the maximum size of a window's client area.
1105 *
1106 * \param window the window to change
1107 * \param max_w the maximum width of the window in pixels
1108 * \param max_h the maximum height of the window in pixels
1109 *
1110 * \since This function is available since SDL 2.0.0.
1111 *
1112 * \sa SDL_GetWindowMaximumSize
1113 * \sa SDL_SetWindowMinimumSize
1114 */
1115extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window,
1116 int max_w, int max_h);
1117
1118/**
1119 * Get the maximum size of a window's client area.
1120 *
1121 * \param window the window to query
1122 * \param w a pointer filled in with the maximum width of the window, may be
1123 * NULL
1124 * \param h a pointer filled in with the maximum height of the window, may be
1125 * NULL
1126 *
1127 * \since This function is available since SDL 2.0.0.
1128 *
1129 * \sa SDL_GetWindowMinimumSize
1130 * \sa SDL_SetWindowMaximumSize
1131 */
1132extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window,
1133 int *w, int *h);
1134
1135/**
1136 * Set the border state of a window.
1137 *
1138 * This will add or remove the window's `SDL_WINDOW_BORDERLESS` flag and add
1139 * or remove the border from the actual window. This is a no-op if the
1140 * window's border already matches the requested state.
1141 *
1142 * You can't change the border state of a fullscreen window.
1143 *
1144 * \param window the window of which to change the border state
1145 * \param bordered SDL_FALSE to remove border, SDL_TRUE to add border
1146 *
1147 * \since This function is available since SDL 2.0.0.
1148 *
1149 * \sa SDL_GetWindowFlags
1150 */
1151extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window,
1152 SDL_bool bordered);
1153
1154/**
1155 * Set the user-resizable state of a window.
1156 *
1157 * This will add or remove the window's `SDL_WINDOW_RESIZABLE` flag and
1158 * allow/disallow user resizing of the window. This is a no-op if the window's
1159 * resizable state already matches the requested state.
1160 *
1161 * You can't change the resizable state of a fullscreen window.
1162 *
1163 * \param window the window of which to change the resizable state
1164 * \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow
1165 *
1166 * \since This function is available since SDL 2.0.5.
1167 *
1168 * \sa SDL_GetWindowFlags
1169 */
1170extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window,
1171 SDL_bool resizable);
1172
1173/**
1174 * Set the window to always be above the others.
1175 *
1176 * This will add or remove the window's `SDL_WINDOW_ALWAYS_ON_TOP` flag. This
1177 * will bring the window to the front and keep the window above the rest.
1178 *
1179 * \param window The window of which to change the always on top state
1180 * \param on_top SDL_TRUE to set the window always on top, SDL_FALSE to
1181 * disable
1182 *
1183 * \since This function is available since SDL 2.0.16.
1184 *
1185 * \sa SDL_GetWindowFlags
1186 */
1187extern DECLSPEC void SDLCALL SDL_SetWindowAlwaysOnTop(SDL_Window * window,
1188 SDL_bool on_top);
1189
1190/**
1191 * Show a window.
1192 *
1193 * \param window the window to show
1194 *
1195 * \since This function is available since SDL 2.0.0.
1196 *
1197 * \sa SDL_HideWindow
1198 * \sa SDL_RaiseWindow
1199 */
1200extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window);
1201
1202/**
1203 * Hide a window.
1204 *
1205 * \param window the window to hide
1206 *
1207 * \since This function is available since SDL 2.0.0.
1208 *
1209 * \sa SDL_ShowWindow
1210 */
1211extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window);
1212
1213/**
1214 * Raise a window above other windows and set the input focus.
1215 *
1216 * \param window the window to raise
1217 *
1218 * \since This function is available since SDL 2.0.0.
1219 */
1220extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window);
1221
1222/**
1223 * Make a window as large as possible.
1224 *
1225 * \param window the window to maximize
1226 *
1227 * \since This function is available since SDL 2.0.0.
1228 *
1229 * \sa SDL_MinimizeWindow
1230 * \sa SDL_RestoreWindow
1231 */
1232extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window);
1233
1234/**
1235 * Minimize a window to an iconic representation.
1236 *
1237 * \param window the window to minimize
1238 *
1239 * \since This function is available since SDL 2.0.0.
1240 *
1241 * \sa SDL_MaximizeWindow
1242 * \sa SDL_RestoreWindow
1243 */
1244extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window);
1245
1246/**
1247 * Restore the size and position of a minimized or maximized window.
1248 *
1249 * \param window the window to restore
1250 *
1251 * \since This function is available since SDL 2.0.0.
1252 *
1253 * \sa SDL_MaximizeWindow
1254 * \sa SDL_MinimizeWindow
1255 */
1256extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window);
1257
1258/**
1259 * Set a window's fullscreen state.
1260 *
1261 * `flags` may be `SDL_WINDOW_FULLSCREEN`, for "real" fullscreen with a
1262 * videomode change; `SDL_WINDOW_FULLSCREEN_DESKTOP` for "fake" fullscreen
1263 * that takes the size of the desktop; and 0 for windowed mode.
1264 *
1265 * \param window the window to change
1266 * \param flags `SDL_WINDOW_FULLSCREEN`, `SDL_WINDOW_FULLSCREEN_DESKTOP` or 0
1267 * \returns 0 on success or a negative error code on failure; call
1268 * SDL_GetError() for more information.
1269 *
1270 * \since This function is available since SDL 2.0.0.
1271 *
1272 * \sa SDL_GetWindowDisplayMode
1273 * \sa SDL_SetWindowDisplayMode
1274 */
1275extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window,
1276 Uint32 flags);
1277
1278/**
1279 * Return whether the window has a surface associated with it.
1280 *
1281 * \returns SDL_TRUE if there is a surface associated with the window, or
1282 * SDL_FALSE otherwise.
1283 *
1284 * \since This function is available since SDL 2.28.0.
1285 *
1286 * \sa SDL_GetWindowSurface
1287 */
1288extern DECLSPEC SDL_bool SDLCALL SDL_HasWindowSurface(SDL_Window *window);
1289
1290/**
1291 * Get the SDL surface associated with the window.
1292 *
1293 * A new surface will be created with the optimal format for the window, if
1294 * necessary. This surface will be freed when the window is destroyed. Do not
1295 * free this surface.
1296 *
1297 * This surface will be invalidated if the window is resized. After resizing a
1298 * window this function must be called again to return a valid surface.
1299 *
1300 * You may not combine this with 3D or the rendering API on this window.
1301 *
1302 * This function is affected by `SDL_HINT_FRAMEBUFFER_ACCELERATION`.
1303 *
1304 * \param window the window to query
1305 * \returns the surface associated with the window, or NULL on failure; call
1306 * SDL_GetError() for more information.
1307 *
1308 * \since This function is available since SDL 2.0.0.
1309 *
1310 * \sa SDL_DestroyWindowSurface
1311 * \sa SDL_HasWindowSurface
1312 * \sa SDL_UpdateWindowSurface
1313 * \sa SDL_UpdateWindowSurfaceRects
1314 */
1315extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window);
1316
1317/**
1318 * Copy the window surface to the screen.
1319 *
1320 * This is the function you use to reflect any changes to the surface on the
1321 * screen.
1322 *
1323 * This function is equivalent to the SDL 1.2 API SDL_Flip().
1324 *
1325 * \param window the window to update
1326 * \returns 0 on success or a negative error code on failure; call
1327 * SDL_GetError() for more information.
1328 *
1329 * \since This function is available since SDL 2.0.0.
1330 *
1331 * \sa SDL_GetWindowSurface
1332 * \sa SDL_UpdateWindowSurfaceRects
1333 */
1334extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window);
1335
1336/**
1337 * Copy areas of the window surface to the screen.
1338 *
1339 * This is the function you use to reflect changes to portions of the surface
1340 * on the screen.
1341 *
1342 * This function is equivalent to the SDL 1.2 API SDL_UpdateRects().
1343 *
1344 * Note that this function will update _at least_ the rectangles specified,
1345 * but this is only intended as an optimization; in practice, this might
1346 * update more of the screen (or all of the screen!), depending on what
1347 * method SDL uses to send pixels to the system.
1348 *
1349 * \param window the window to update
1350 * \param rects an array of SDL_Rect structures representing areas of the
1351 * surface to copy, in pixels
1352 * \param numrects the number of rectangles
1353 * \returns 0 on success or a negative error code on failure; call
1354 * SDL_GetError() for more information.
1355 *
1356 * \since This function is available since SDL 2.0.0.
1357 *
1358 * \sa SDL_GetWindowSurface
1359 * \sa SDL_UpdateWindowSurface
1360 */
1361extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window,
1362 const SDL_Rect * rects,
1363 int numrects);
1364
1365/**
1366 * Destroy the surface associated with the window.
1367 *
1368 * \param window the window to update
1369 * \returns 0 on success or a negative error code on failure; call
1370 * SDL_GetError() for more information.
1371 *
1372 * \since This function is available since SDL 2.28.0.
1373 *
1374 * \sa SDL_GetWindowSurface
1375 * \sa SDL_HasWindowSurface
1376 */
1377extern DECLSPEC int SDLCALL SDL_DestroyWindowSurface(SDL_Window *window);
1378
1379/**
1380 * Set a window's input grab mode.
1381 *
1382 * When input is grabbed, the mouse is confined to the window. This function
1383 * will also grab the keyboard if `SDL_HINT_GRAB_KEYBOARD` is set. To grab the
1384 * keyboard without also grabbing the mouse, use SDL_SetWindowKeyboardGrab().
1385 *
1386 * If the caller enables a grab while another window is currently grabbed, the
1387 * other window loses its grab in favor of the caller's window.
1388 *
1389 * \param window the window for which the input grab mode should be set
1390 * \param grabbed SDL_TRUE to grab input or SDL_FALSE to release input
1391 *
1392 * \since This function is available since SDL 2.0.0.
1393 *
1394 * \sa SDL_GetGrabbedWindow
1395 * \sa SDL_GetWindowGrab
1396 */
1397extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window,
1398 SDL_bool grabbed);
1399
1400/**
1401 * Set a window's keyboard grab mode.
1402 *
1403 * Keyboard grab enables capture of system keyboard shortcuts like Alt+Tab or
1404 * the Meta/Super key. Note that not all system keyboard shortcuts can be
1405 * captured by applications (one example is Ctrl+Alt+Del on Windows).
1406 *
1407 * This is primarily intended for specialized applications such as VNC clients
1408 * or VM frontends. Normal games should not use keyboard grab.
1409 *
1410 * When keyboard grab is enabled, SDL will continue to handle Alt+Tab when the
1411 * window is full-screen to ensure the user is not trapped in your
1412 * application. If you have a custom keyboard shortcut to exit fullscreen
1413 * mode, you may suppress this behavior with
1414 * `SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED`.
1415 *
1416 * If the caller enables a grab while another window is currently grabbed, the
1417 * other window loses its grab in favor of the caller's window.
1418 *
1419 * \param window The window for which the keyboard grab mode should be set.
1420 * \param grabbed This is SDL_TRUE to grab keyboard, and SDL_FALSE to release.
1421 *
1422 * \since This function is available since SDL 2.0.16.
1423 *
1424 * \sa SDL_GetWindowKeyboardGrab
1425 * \sa SDL_SetWindowMouseGrab
1426 * \sa SDL_SetWindowGrab
1427 */
1428extern DECLSPEC void SDLCALL SDL_SetWindowKeyboardGrab(SDL_Window * window,
1429 SDL_bool grabbed);
1430
1431/**
1432 * Set a window's mouse grab mode.
1433 *
1434 * Mouse grab confines the mouse cursor to the window.
1435 *
1436 * \param window The window for which the mouse grab mode should be set.
1437 * \param grabbed This is SDL_TRUE to grab mouse, and SDL_FALSE to release.
1438 *
1439 * \since This function is available since SDL 2.0.16.
1440 *
1441 * \sa SDL_GetWindowMouseGrab
1442 * \sa SDL_SetWindowKeyboardGrab
1443 * \sa SDL_SetWindowGrab
1444 */
1445extern DECLSPEC void SDLCALL SDL_SetWindowMouseGrab(SDL_Window * window,
1446 SDL_bool grabbed);
1447
1448/**
1449 * Get a window's input grab mode.
1450 *
1451 * \param window the window to query
1452 * \returns SDL_TRUE if input is grabbed, SDL_FALSE otherwise.
1453 *
1454 * \since This function is available since SDL 2.0.0.
1455 *
1456 * \sa SDL_SetWindowGrab
1457 */
1458extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window);
1459
1460/**
1461 * Get a window's keyboard grab mode.
1462 *
1463 * \param window the window to query
1464 * \returns SDL_TRUE if keyboard is grabbed, and SDL_FALSE otherwise.
1465 *
1466 * \since This function is available since SDL 2.0.16.
1467 *
1468 * \sa SDL_SetWindowKeyboardGrab
1469 * \sa SDL_GetWindowGrab
1470 */
1471extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowKeyboardGrab(SDL_Window * window);
1472
1473/**
1474 * Get a window's mouse grab mode.
1475 *
1476 * \param window the window to query
1477 * \returns SDL_TRUE if mouse is grabbed, and SDL_FALSE otherwise.
1478 *
1479 * \since This function is available since SDL 2.0.16.
1480 *
1481 * \sa SDL_SetWindowKeyboardGrab
1482 * \sa SDL_GetWindowGrab
1483 */
1484extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowMouseGrab(SDL_Window * window);
1485
1486/**
1487 * Get the window that currently has an input grab enabled.
1488 *
1489 * \returns the window if input is grabbed or NULL otherwise.
1490 *
1491 * \since This function is available since SDL 2.0.4.
1492 *
1493 * \sa SDL_GetWindowGrab
1494 * \sa SDL_SetWindowGrab
1495 */
1496extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void);
1497
1498/**
1499 * Confines the cursor to the specified area of a window.
1500 *
1501 * Note that this does NOT grab the cursor, it only defines the area a cursor
1502 * is restricted to when the window has mouse focus.
1503 *
1504 * \param window The window that will be associated with the barrier.
1505 * \param rect A rectangle area in window-relative coordinates. If NULL the
1506 * barrier for the specified window will be destroyed.
1507 * \returns 0 on success or a negative error code on failure; call
1508 * SDL_GetError() for more information.
1509 *
1510 * \since This function is available since SDL 2.0.18.
1511 *
1512 * \sa SDL_GetWindowMouseRect
1513 * \sa SDL_SetWindowMouseGrab
1514 */
1515extern DECLSPEC int SDLCALL SDL_SetWindowMouseRect(SDL_Window * window, const SDL_Rect * rect);
1516
1517/**
1518 * Get the mouse confinement rectangle of a window.
1519 *
1520 * \param window The window to query
1521 * \returns A pointer to the mouse confinement rectangle of a window, or NULL
1522 * if there isn't one.
1523 *
1524 * \since This function is available since SDL 2.0.18.
1525 *
1526 * \sa SDL_SetWindowMouseRect
1527 */
1528extern DECLSPEC const SDL_Rect * SDLCALL SDL_GetWindowMouseRect(SDL_Window * window);
1529
1530/**
1531 * Set the brightness (gamma multiplier) for a given window's display.
1532 *
1533 * Despite the name and signature, this method sets the brightness of the
1534 * entire display, not an individual window. A window is considered to be
1535 * owned by the display that contains the window's center pixel. (The index of
1536 * this display can be retrieved using SDL_GetWindowDisplayIndex().) The
1537 * brightness set will not follow the window if it is moved to another
1538 * display.
1539 *
1540 * Many platforms will refuse to set the display brightness in modern times.
1541 * You are better off using a shader to adjust gamma during rendering, or
1542 * something similar.
1543 *
1544 * \param window the window used to select the display whose brightness will
1545 * be changed
1546 * \param brightness the brightness (gamma multiplier) value to set where 0.0
1547 * is completely dark and 1.0 is normal brightness
1548 * \returns 0 on success or a negative error code on failure; call
1549 * SDL_GetError() for more information.
1550 *
1551 * \since This function is available since SDL 2.0.0.
1552 *
1553 * \sa SDL_GetWindowBrightness
1554 * \sa SDL_SetWindowGammaRamp
1555 */
1556extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness);
1557
1558/**
1559 * Get the brightness (gamma multiplier) for a given window's display.
1560 *
1561 * Despite the name and signature, this method retrieves the brightness of the
1562 * entire display, not an individual window. A window is considered to be
1563 * owned by the display that contains the window's center pixel. (The index of
1564 * this display can be retrieved using SDL_GetWindowDisplayIndex().)
1565 *
1566 * \param window the window used to select the display whose brightness will
1567 * be queried
1568 * \returns the brightness for the display where 0.0 is completely dark and
1569 * 1.0 is normal brightness.
1570 *
1571 * \since This function is available since SDL 2.0.0.
1572 *
1573 * \sa SDL_SetWindowBrightness
1574 */
1575extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window);
1576
1577/**
1578 * Set the opacity for a window.
1579 *
1580 * The parameter `opacity` will be clamped internally between 0.0f
1581 * (transparent) and 1.0f (opaque).
1582 *
1583 * This function also returns -1 if setting the opacity isn't supported.
1584 *
1585 * \param window the window which will be made transparent or opaque
1586 * \param opacity the opacity value (0.0f - transparent, 1.0f - opaque)
1587 * \returns 0 on success or a negative error code on failure; call
1588 * SDL_GetError() for more information.
1589 *
1590 * \since This function is available since SDL 2.0.5.
1591 *
1592 * \sa SDL_GetWindowOpacity
1593 */
1594extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity);
1595
1596/**
1597 * Get the opacity of a window.
1598 *
1599 * If transparency isn't supported on this platform, opacity will be reported
1600 * as 1.0f without error.
1601 *
1602 * The parameter `opacity` is ignored if it is NULL.
1603 *
1604 * This function also returns -1 if an invalid window was provided.
1605 *
1606 * \param window the window to get the current opacity value from
1607 * \param out_opacity the float filled in (0.0f - transparent, 1.0f - opaque)
1608 * \returns 0 on success or a negative error code on failure; call
1609 * SDL_GetError() for more information.
1610 *
1611 * \since This function is available since SDL 2.0.5.
1612 *
1613 * \sa SDL_SetWindowOpacity
1614 */
1615extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity);
1616
1617/**
1618 * Set the window as a modal for another window.
1619 *
1620 * \param modal_window the window that should be set modal
1621 * \param parent_window the parent window for the modal window
1622 * \returns 0 on success or a negative error code on failure; call
1623 * SDL_GetError() for more information.
1624 *
1625 * \since This function is available since SDL 2.0.5.
1626 */
1627extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window);
1628
1629/**
1630 * Explicitly set input focus to the window.
1631 *
1632 * You almost certainly want SDL_RaiseWindow() instead of this function. Use
1633 * this with caution, as you might give focus to a window that is completely
1634 * obscured by other windows.
1635 *
1636 * \param window the window that should get the input focus
1637 * \returns 0 on success or a negative error code on failure; call
1638 * SDL_GetError() for more information.
1639 *
1640 * \since This function is available since SDL 2.0.5.
1641 *
1642 * \sa SDL_RaiseWindow
1643 */
1644extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window);
1645
1646/**
1647 * Set the gamma ramp for the display that owns a given window.
1648 *
1649 * Set the gamma translation table for the red, green, and blue channels of
1650 * the video hardware. Each table is an array of 256 16-bit quantities,
1651 * representing a mapping between the input and output for that channel. The
1652 * input is the index into the array, and the output is the 16-bit gamma value
1653 * at that index, scaled to the output color precision.
1654 *
1655 * Despite the name and signature, this method sets the gamma ramp of the
1656 * entire display, not an individual window. A window is considered to be
1657 * owned by the display that contains the window's center pixel. (The index of
1658 * this display can be retrieved using SDL_GetWindowDisplayIndex().) The gamma
1659 * ramp set will not follow the window if it is moved to another display.
1660 *
1661 * \param window the window used to select the display whose gamma ramp will
1662 * be changed
1663 * \param red a 256 element array of 16-bit quantities representing the
1664 * translation table for the red channel, or NULL
1665 * \param green a 256 element array of 16-bit quantities representing the
1666 * translation table for the green channel, or NULL
1667 * \param blue a 256 element array of 16-bit quantities representing the
1668 * translation table for the blue channel, or NULL
1669 * \returns 0 on success or a negative error code on failure; call
1670 * SDL_GetError() for more information.
1671 *
1672 * \since This function is available since SDL 2.0.0.
1673 *
1674 * \sa SDL_GetWindowGammaRamp
1675 */
1676extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window,
1677 const Uint16 * red,
1678 const Uint16 * green,
1679 const Uint16 * blue);
1680
1681/**
1682 * Get the gamma ramp for a given window's display.
1683 *
1684 * Despite the name and signature, this method retrieves the gamma ramp of the
1685 * entire display, not an individual window. A window is considered to be
1686 * owned by the display that contains the window's center pixel. (The index of
1687 * this display can be retrieved using SDL_GetWindowDisplayIndex().)
1688 *
1689 * \param window the window used to select the display whose gamma ramp will
1690 * be queried
1691 * \param red a 256 element array of 16-bit quantities filled in with the
1692 * translation table for the red channel, or NULL
1693 * \param green a 256 element array of 16-bit quantities filled in with the
1694 * translation table for the green channel, or NULL
1695 * \param blue a 256 element array of 16-bit quantities filled in with the
1696 * translation table for the blue channel, or NULL
1697 * \returns 0 on success or a negative error code on failure; call
1698 * SDL_GetError() for more information.
1699 *
1700 * \since This function is available since SDL 2.0.0.
1701 *
1702 * \sa SDL_SetWindowGammaRamp
1703 */
1704extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window,
1705 Uint16 * red,
1706 Uint16 * green,
1707 Uint16 * blue);
1708
1709/**
1710 * Possible return values from the SDL_HitTest callback.
1711 *
1712 * \sa SDL_HitTest
1713 */
1714typedef enum
1715{
1716 SDL_HITTEST_NORMAL, /**< Region is normal. No special properties. */
1717 SDL_HITTEST_DRAGGABLE, /**< Region can drag entire window. */
1718 SDL_HITTEST_RESIZE_TOPLEFT,
1719 SDL_HITTEST_RESIZE_TOP,
1720 SDL_HITTEST_RESIZE_TOPRIGHT,
1721 SDL_HITTEST_RESIZE_RIGHT,
1722 SDL_HITTEST_RESIZE_BOTTOMRIGHT,
1723 SDL_HITTEST_RESIZE_BOTTOM,
1724 SDL_HITTEST_RESIZE_BOTTOMLEFT,
1725 SDL_HITTEST_RESIZE_LEFT
1726} SDL_HitTestResult;
1727
1728/**
1729 * Callback used for hit-testing.
1730 *
1731 * \param win the SDL_Window where hit-testing was set on
1732 * \param area an SDL_Point which should be hit-tested
1733 * \param data what was passed as `callback_data` to SDL_SetWindowHitTest()
1734 * \return an SDL_HitTestResult value.
1735 *
1736 * \sa SDL_SetWindowHitTest
1737 */
1738typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win,
1739 const SDL_Point *area,
1740 void *data);
1741
1742/**
1743 * Provide a callback that decides if a window region has special properties.
1744 *
1745 * Normally windows are dragged and resized by decorations provided by the
1746 * system window manager (a title bar, borders, etc), but for some apps, it
1747 * makes sense to drag them from somewhere else inside the window itself; for
1748 * example, one might have a borderless window that wants to be draggable from
1749 * any part, or simulate its own title bar, etc.
1750 *
1751 * This function lets the app provide a callback that designates pieces of a
1752 * given window as special. This callback is run during event processing if we
1753 * need to tell the OS to treat a region of the window specially; the use of
1754 * this callback is known as "hit testing."
1755 *
1756 * Mouse input may not be delivered to your application if it is within a
1757 * special area; the OS will often apply that input to moving the window or
1758 * resizing the window and not deliver it to the application.
1759 *
1760 * Specifying NULL for a callback disables hit-testing. Hit-testing is
1761 * disabled by default.
1762 *
1763 * Platforms that don't support this functionality will return -1
1764 * unconditionally, even if you're attempting to disable hit-testing.
1765 *
1766 * Your callback may fire at any time, and its firing does not indicate any
1767 * specific behavior (for example, on Windows, this certainly might fire when
1768 * the OS is deciding whether to drag your window, but it fires for lots of
1769 * other reasons, too, some unrelated to anything you probably care about _and
1770 * when the mouse isn't actually at the location it is testing_). Since this
1771 * can fire at any time, you should try to keep your callback efficient,
1772 * devoid of allocations, etc.
1773 *
1774 * \param window the window to set hit-testing on
1775 * \param callback the function to call when doing a hit-test
1776 * \param callback_data an app-defined void pointer passed to **callback**
1777 * \returns 0 on success or -1 on error (including unsupported); call
1778 * SDL_GetError() for more information.
1779 *
1780 * \since This function is available since SDL 2.0.4.
1781 */
1782extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window,
1783 SDL_HitTest callback,
1784 void *callback_data);
1785
1786/**
1787 * Request a window to demand attention from the user.
1788 *
1789 * \param window the window to be flashed
1790 * \param operation the flash operation
1791 * \returns 0 on success or a negative error code on failure; call
1792 * SDL_GetError() for more information.
1793 *
1794 * \since This function is available since SDL 2.0.16.
1795 */
1796extern DECLSPEC int SDLCALL SDL_FlashWindow(SDL_Window * window, SDL_FlashOperation operation);
1797
1798/**
1799 * Destroy a window.
1800 *
1801 * If `window` is NULL, this function will return immediately after setting
1802 * the SDL error message to "Invalid window". See SDL_GetError().
1803 *
1804 * \param window the window to destroy
1805 *
1806 * \since This function is available since SDL 2.0.0.
1807 *
1808 * \sa SDL_CreateWindow
1809 * \sa SDL_CreateWindowFrom
1810 */
1811extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window);
1812
1813
1814/**
1815 * Check whether the screensaver is currently enabled.
1816 *
1817 * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2
1818 * the screensaver was enabled by default.
1819 *
1820 * The default can also be changed using `SDL_HINT_VIDEO_ALLOW_SCREENSAVER`.
1821 *
1822 * \returns SDL_TRUE if the screensaver is enabled, SDL_FALSE if it is
1823 * disabled.
1824 *
1825 * \since This function is available since SDL 2.0.0.
1826 *
1827 * \sa SDL_DisableScreenSaver
1828 * \sa SDL_EnableScreenSaver
1829 */
1830extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void);
1831
1832/**
1833 * Allow the screen to be blanked by a screen saver.
1834 *
1835 * \since This function is available since SDL 2.0.0.
1836 *
1837 * \sa SDL_DisableScreenSaver
1838 * \sa SDL_IsScreenSaverEnabled
1839 */
1840extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void);
1841
1842/**
1843 * Prevent the screen from being blanked by a screen saver.
1844 *
1845 * If you disable the screensaver, it is automatically re-enabled when SDL
1846 * quits.
1847 *
1848 * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2
1849 * the screensaver was enabled by default.
1850 *
1851 * \since This function is available since SDL 2.0.0.
1852 *
1853 * \sa SDL_EnableScreenSaver
1854 * \sa SDL_IsScreenSaverEnabled
1855 */
1856extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void);
1857
1858
1859/**
1860 * \name OpenGL support functions
1861 */
1862/* @{ */
1863
1864/**
1865 * Dynamically load an OpenGL library.
1866 *
1867 * This should be done after initializing the video driver, but before
1868 * creating any OpenGL windows. If no OpenGL library is loaded, the default
1869 * library will be loaded upon creation of the first OpenGL window.
1870 *
1871 * If you do this, you need to retrieve all of the GL functions used in your
1872 * program from the dynamic library using SDL_GL_GetProcAddress().
1873 *
1874 * \param path the platform dependent OpenGL library name, or NULL to open the
1875 * default OpenGL library
1876 * \returns 0 on success or a negative error code on failure; call
1877 * SDL_GetError() for more information.
1878 *
1879 * \since This function is available since SDL 2.0.0.
1880 *
1881 * \sa SDL_GL_GetProcAddress
1882 * \sa SDL_GL_UnloadLibrary
1883 */
1884extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path);
1885
1886/**
1887 * Get an OpenGL function by name.
1888 *
1889 * If the GL library is loaded at runtime with SDL_GL_LoadLibrary(), then all
1890 * GL functions must be retrieved this way. Usually this is used to retrieve
1891 * function pointers to OpenGL extensions.
1892 *
1893 * There are some quirks to looking up OpenGL functions that require some
1894 * extra care from the application. If you code carefully, you can handle
1895 * these quirks without any platform-specific code, though:
1896 *
1897 * - On Windows, function pointers are specific to the current GL context;
1898 * this means you need to have created a GL context and made it current
1899 * before calling SDL_GL_GetProcAddress(). If you recreate your context or
1900 * create a second context, you should assume that any existing function
1901 * pointers aren't valid to use with it. This is (currently) a
1902 * Windows-specific limitation, and in practice lots of drivers don't suffer
1903 * this limitation, but it is still the way the wgl API is documented to
1904 * work and you should expect crashes if you don't respect it. Store a copy
1905 * of the function pointers that comes and goes with context lifespan.
1906 * - On X11, function pointers returned by this function are valid for any
1907 * context, and can even be looked up before a context is created at all.
1908 * This means that, for at least some common OpenGL implementations, if you
1909 * look up a function that doesn't exist, you'll get a non-NULL result that
1910 * is _NOT_ safe to call. You must always make sure the function is actually
1911 * available for a given GL context before calling it, by checking for the
1912 * existence of the appropriate extension with SDL_GL_ExtensionSupported(),
1913 * or verifying that the version of OpenGL you're using offers the function
1914 * as core functionality.
1915 * - Some OpenGL drivers, on all platforms, *will* return NULL if a function
1916 * isn't supported, but you can't count on this behavior. Check for
1917 * extensions you use, and if you get a NULL anyway, act as if that
1918 * extension wasn't available. This is probably a bug in the driver, but you
1919 * can code defensively for this scenario anyhow.
1920 * - Just because you're on Linux/Unix, don't assume you'll be using X11.
1921 * Next-gen display servers are waiting to replace it, and may or may not
1922 * make the same promises about function pointers.
1923 * - OpenGL function pointers must be declared `APIENTRY` as in the example
1924 * code. This will ensure the proper calling convention is followed on
1925 * platforms where this matters (Win32) thereby avoiding stack corruption.
1926 *
1927 * \param proc the name of an OpenGL function
1928 * \returns a pointer to the named OpenGL function. The returned pointer
1929 * should be cast to the appropriate function signature.
1930 *
1931 * \since This function is available since SDL 2.0.0.
1932 *
1933 * \sa SDL_GL_ExtensionSupported
1934 * \sa SDL_GL_LoadLibrary
1935 * \sa SDL_GL_UnloadLibrary
1936 */
1937extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc);
1938
1939/**
1940 * Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary().
1941 *
1942 * \since This function is available since SDL 2.0.0.
1943 *
1944 * \sa SDL_GL_LoadLibrary
1945 */
1946extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void);
1947
1948/**
1949 * Check if an OpenGL extension is supported for the current context.
1950 *
1951 * This function operates on the current GL context; you must have created a
1952 * context and it must be current before calling this function. Do not assume
1953 * that all contexts you create will have the same set of extensions
1954 * available, or that recreating an existing context will offer the same
1955 * extensions again.
1956 *
1957 * While it's probably not a massive overhead, this function is not an O(1)
1958 * operation. Check the extensions you care about after creating the GL
1959 * context and save that information somewhere instead of calling the function
1960 * every time you need to know.
1961 *
1962 * \param extension the name of the extension to check
1963 * \returns SDL_TRUE if the extension is supported, SDL_FALSE otherwise.
1964 *
1965 * \since This function is available since SDL 2.0.0.
1966 */
1967extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char
1968 *extension);
1969
1970/**
1971 * Reset all previously set OpenGL context attributes to their default values.
1972 *
1973 * \since This function is available since SDL 2.0.2.
1974 *
1975 * \sa SDL_GL_GetAttribute
1976 * \sa SDL_GL_SetAttribute
1977 */
1978extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void);
1979
1980/**
1981 * Set an OpenGL window attribute before window creation.
1982 *
1983 * This function sets the OpenGL attribute `attr` to `value`. The requested
1984 * attributes should be set before creating an OpenGL window. You should use
1985 * SDL_GL_GetAttribute() to check the values after creating the OpenGL
1986 * context, since the values obtained can differ from the requested ones.
1987 *
1988 * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to set
1989 * \param value the desired value for the attribute
1990 * \returns 0 on success or a negative error code on failure; call
1991 * SDL_GetError() for more information.
1992 *
1993 * \since This function is available since SDL 2.0.0.
1994 *
1995 * \sa SDL_GL_GetAttribute
1996 * \sa SDL_GL_ResetAttributes
1997 */
1998extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value);
1999
2000/**
2001 * Get the actual value for an attribute from the current context.
2002 *
2003 * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to get
2004 * \param value a pointer filled in with the current value of `attr`
2005 * \returns 0 on success or a negative error code on failure; call
2006 * SDL_GetError() for more information.
2007 *
2008 * \since This function is available since SDL 2.0.0.
2009 *
2010 * \sa SDL_GL_ResetAttributes
2011 * \sa SDL_GL_SetAttribute
2012 */
2013extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value);
2014
2015/**
2016 * Create an OpenGL context for an OpenGL window, and make it current.
2017 *
2018 * Windows users new to OpenGL should note that, for historical reasons, GL
2019 * functions added after OpenGL version 1.1 are not available by default.
2020 * Those functions must be loaded at run-time, either with an OpenGL
2021 * extension-handling library or with SDL_GL_GetProcAddress() and its related
2022 * functions.
2023 *
2024 * SDL_GLContext is an alias for `void *`. It's opaque to the application.
2025 *
2026 * \param window the window to associate with the context
2027 * \returns the OpenGL context associated with `window` or NULL on error; call
2028 * SDL_GetError() for more details.
2029 *
2030 * \since This function is available since SDL 2.0.0.
2031 *
2032 * \sa SDL_GL_DeleteContext
2033 * \sa SDL_GL_MakeCurrent
2034 */
2035extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window *
2036 window);
2037
2038/**
2039 * Set up an OpenGL context for rendering into an OpenGL window.
2040 *
2041 * The context must have been created with a compatible window.
2042 *
2043 * \param window the window to associate with the context
2044 * \param context the OpenGL context to associate with the window
2045 * \returns 0 on success or a negative error code on failure; call
2046 * SDL_GetError() for more information.
2047 *
2048 * \since This function is available since SDL 2.0.0.
2049 *
2050 * \sa SDL_GL_CreateContext
2051 */
2052extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window,
2053 SDL_GLContext context);
2054
2055/**
2056 * Get the currently active OpenGL window.
2057 *
2058 * \returns the currently active OpenGL window on success or NULL on failure;
2059 * call SDL_GetError() for more information.
2060 *
2061 * \since This function is available since SDL 2.0.0.
2062 */
2063extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void);
2064
2065/**
2066 * Get the currently active OpenGL context.
2067 *
2068 * \returns the currently active OpenGL context or NULL on failure; call
2069 * SDL_GetError() for more information.
2070 *
2071 * \since This function is available since SDL 2.0.0.
2072 *
2073 * \sa SDL_GL_MakeCurrent
2074 */
2075extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void);
2076
2077/**
2078 * Get the size of a window's underlying drawable in pixels.
2079 *
2080 * This returns info useful for calling glViewport().
2081 *
2082 * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI
2083 * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a
2084 * platform with high-DPI support (Apple calls this "Retina"), and not
2085 * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint.
2086 *
2087 * \param window the window from which the drawable size should be queried
2088 * \param w a pointer to variable for storing the width in pixels, may be NULL
2089 * \param h a pointer to variable for storing the height in pixels, may be
2090 * NULL
2091 *
2092 * \since This function is available since SDL 2.0.1.
2093 *
2094 * \sa SDL_CreateWindow
2095 * \sa SDL_GetWindowSize
2096 */
2097extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w,
2098 int *h);
2099
2100/**
2101 * Set the swap interval for the current OpenGL context.
2102 *
2103 * Some systems allow specifying -1 for the interval, to enable adaptive
2104 * vsync. Adaptive vsync works the same as vsync, but if you've already missed
2105 * the vertical retrace for a given frame, it swaps buffers immediately, which
2106 * might be less jarring for the user during occasional framerate drops. If an
2107 * application requests adaptive vsync and the system does not support it,
2108 * this function will fail and return -1. In such a case, you should probably
2109 * retry the call with 1 for the interval.
2110 *
2111 * Adaptive vsync is implemented for some glX drivers with
2112 * GLX_EXT_swap_control_tear, and for some Windows drivers with
2113 * WGL_EXT_swap_control_tear.
2114 *
2115 * Read more on the Khronos wiki:
2116 * https://www.khronos.org/opengl/wiki/Swap_Interval#Adaptive_Vsync
2117 *
2118 * \param interval 0 for immediate updates, 1 for updates synchronized with
2119 * the vertical retrace, -1 for adaptive vsync
2120 * \returns 0 on success or -1 if setting the swap interval is not supported;
2121 * call SDL_GetError() for more information.
2122 *
2123 * \since This function is available since SDL 2.0.0.
2124 *
2125 * \sa SDL_GL_GetSwapInterval
2126 */
2127extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval);
2128
2129/**
2130 * Get the swap interval for the current OpenGL context.
2131 *
2132 * If the system can't determine the swap interval, or there isn't a valid
2133 * current context, this function will return 0 as a safe default.
2134 *
2135 * \returns 0 if there is no vertical retrace synchronization, 1 if the buffer
2136 * swap is synchronized with the vertical retrace, and -1 if late
2137 * swaps happen immediately instead of waiting for the next retrace;
2138 * call SDL_GetError() for more information.
2139 *
2140 * \since This function is available since SDL 2.0.0.
2141 *
2142 * \sa SDL_GL_SetSwapInterval
2143 */
2144extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void);
2145
2146/**
2147 * Update a window with OpenGL rendering.
2148 *
2149 * This is used with double-buffered OpenGL contexts, which are the default.
2150 *
2151 * On macOS, make sure you bind 0 to the draw framebuffer before swapping the
2152 * window, otherwise nothing will happen. If you aren't using
2153 * glBindFramebuffer(), this is the default and you won't have to do anything
2154 * extra.
2155 *
2156 * \param window the window to change
2157 *
2158 * \since This function is available since SDL 2.0.0.
2159 */
2160extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window);
2161
2162/**
2163 * Delete an OpenGL context.
2164 *
2165 * \param context the OpenGL context to be deleted
2166 *
2167 * \since This function is available since SDL 2.0.0.
2168 *
2169 * \sa SDL_GL_CreateContext
2170 */
2171extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context);
2172
2173/* @} *//* OpenGL support functions */
2174
2175
2176/* Ends C function definitions when using C++ */
2177#ifdef __cplusplus
2178}
2179#endif
2180#include "close_code.h"
2181
2182#endif /* SDL_video_h_ */
2183
2184/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/contrib/SDL-2.30.2/include/SDL_vulkan.h b/src/contrib/SDL-2.30.2/include/SDL_vulkan.h
new file mode 100644
index 0000000..ab86a0b
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/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/src/contrib/SDL-2.30.2/include/begin_code.h b/src/contrib/SDL-2.30.2/include/begin_code.h
new file mode 100644
index 0000000..a47a7d2
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/begin_code.h
@@ -0,0 +1,189 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 SDL_begin_code_h
32#error Nested inclusion of begin_code.h
33#endif
34#define SDL_begin_code_h
35
36#ifndef SDL_DEPRECATED
37# if defined(__GNUC__) && (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */
38# define SDL_DEPRECATED __attribute__((deprecated))
39# elif defined(_MSC_VER)
40# define SDL_DEPRECATED __declspec(deprecated)
41# else
42# define SDL_DEPRECATED
43# endif
44#endif
45
46#ifndef SDL_UNUSED
47# ifdef __GNUC__
48# define SDL_UNUSED __attribute__((unused))
49# else
50# define SDL_UNUSED
51# endif
52#endif
53
54/* Some compilers use a special export keyword */
55#ifndef DECLSPEC
56# if defined(__WIN32__) || defined(__WINRT__) || defined(__CYGWIN__) || defined(__GDK__)
57# ifdef DLL_EXPORT
58# define DECLSPEC __declspec(dllexport)
59# else
60# define DECLSPEC
61# endif
62# elif defined(__OS2__)
63# ifdef BUILD_SDL
64# define DECLSPEC __declspec(dllexport)
65# else
66# define DECLSPEC
67# endif
68# else
69# if defined(__GNUC__) && __GNUC__ >= 4
70# define DECLSPEC __attribute__ ((visibility("default")))
71# else
72# define DECLSPEC
73# endif
74# endif
75#endif
76
77/* By default SDL uses the C calling convention */
78#ifndef SDLCALL
79#if (defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__)) && !defined(__GNUC__)
80#define SDLCALL __cdecl
81#elif defined(__OS2__) || defined(__EMX__)
82#define SDLCALL _System
83# if defined (__GNUC__) && !defined(_System)
84# define _System /* for old EMX/GCC compat. */
85# endif
86#else
87#define SDLCALL
88#endif
89#endif /* SDLCALL */
90
91/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */
92#ifdef __SYMBIAN32__
93#undef DECLSPEC
94#define DECLSPEC
95#endif /* __SYMBIAN32__ */
96
97/* Force structure packing at 4 byte alignment.
98 This is necessary if the header is included in code which has structure
99 packing set to an alternate value, say for loading structures from disk.
100 The packing is reset to the previous value in close_code.h
101 */
102#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
103#ifdef _MSC_VER
104#pragma warning(disable: 4103)
105#endif
106#ifdef __clang__
107#pragma clang diagnostic ignored "-Wpragma-pack"
108#endif
109#ifdef __BORLANDC__
110#pragma nopackwarning
111#endif
112#ifdef _WIN64
113/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */
114#pragma pack(push,8)
115#else
116#pragma pack(push,4)
117#endif
118#endif /* Compiler needs structure packing set */
119
120#ifndef SDL_INLINE
121#if defined(__GNUC__)
122#define SDL_INLINE __inline__
123#elif defined(_MSC_VER) || defined(__BORLANDC__) || \
124 defined(__DMC__) || defined(__SC__) || \
125 defined(__WATCOMC__) || defined(__LCC__) || \
126 defined(__DECC) || defined(__CC_ARM)
127#define SDL_INLINE __inline
128#ifndef __inline__
129#define __inline__ __inline
130#endif
131#else
132#define SDL_INLINE inline
133#ifndef __inline__
134#define __inline__ inline
135#endif
136#endif
137#endif /* SDL_INLINE not defined */
138
139#ifndef SDL_FORCE_INLINE
140#if defined(_MSC_VER)
141#define SDL_FORCE_INLINE __forceinline
142#elif ( (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) )
143#define SDL_FORCE_INLINE __attribute__((always_inline)) static __inline__
144#else
145#define SDL_FORCE_INLINE static SDL_INLINE
146#endif
147#endif /* SDL_FORCE_INLINE not defined */
148
149#ifndef SDL_NORETURN
150#if defined(__GNUC__)
151#define SDL_NORETURN __attribute__((noreturn))
152#elif defined(_MSC_VER)
153#define SDL_NORETURN __declspec(noreturn)
154#else
155#define SDL_NORETURN
156#endif
157#endif /* SDL_NORETURN not defined */
158
159/* Apparently this is needed by several Windows compilers */
160#if !defined(__MACH__)
161#ifndef NULL
162#ifdef __cplusplus
163#define NULL 0
164#else
165#define NULL ((void *)0)
166#endif
167#endif /* NULL */
168#endif /* ! Mac OS X - breaks precompiled headers */
169
170#ifndef SDL_FALLTHROUGH
171#if (defined(__cplusplus) && __cplusplus >= 201703L) || \
172 (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L)
173#define SDL_FALLTHROUGH [[fallthrough]]
174#else
175#if defined(__has_attribute)
176#define SDL_HAS_FALLTHROUGH __has_attribute(__fallthrough__)
177#else
178#define SDL_HAS_FALLTHROUGH 0
179#endif /* __has_attribute */
180#if SDL_HAS_FALLTHROUGH && \
181 ((defined(__GNUC__) && __GNUC__ >= 7) || \
182 (defined(__clang_major__) && __clang_major__ >= 10))
183#define SDL_FALLTHROUGH __attribute__((__fallthrough__))
184#else
185#define SDL_FALLTHROUGH do {} while (0) /* fallthrough */
186#endif /* SDL_HAS_FALLTHROUGH */
187#undef SDL_HAS_FALLTHROUGH
188#endif /* C++17 or C2x */
189#endif /* SDL_FALLTHROUGH not defined */
diff --git a/src/contrib/SDL-2.30.2/include/close_code.h b/src/contrib/SDL-2.30.2/include/close_code.h
new file mode 100644
index 0000000..50a0e6f
--- /dev/null
+++ b/src/contrib/SDL-2.30.2/include/close_code.h
@@ -0,0 +1,40 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2024 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 SDL_begin_code_h
30#error close_code.h included without matching begin_code.h
31#endif
32#undef SDL_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 */