AtlatestRepositorysigil-graphics

sigil-graphics / tree / src / cgl_native_loader.h

1/*
2 * gl_native_loader.h - GL types, constants and entry points for sokol_gfx
3 * without a system GL header or a libGL link.
4 *
5 * GENERATED by scripts/gen-gl-loader.sh from vendor/sokol/sokol_gfx.h
6 * (sokol's own Win32 loader block); do not edit, regenerate after a sokol
7 * bump. Included once, by sokol-graphics.c, ahead of sokol_gfx.h with
8 * SOKOL_EXTERNAL_GL_LOADER defined. Every gl* sokol_gfx calls is a static
9 * function pointer here, filled by sigil_gl_load() through a proc loader
10 * (sigil_desktop_gl_get_proc_address, GLFW's glfwGetProcAddress) once the
11 * window's GL context is current. 122 functions, 249 lines of definitions.
12 */
13#ifndef SIGIL_GL_NATIVE_LOADER_H
14#define SIGIL_GL_NATIVE_LOADER_H
16#include <stddef.h>
17#include <stdint.h>
19/* sokol_gfx picks its Apple feature set from TargetConditionals.h, which it
20 * includes itself only when it also includes the system GL headers; with
21 * an external loader that is this header's job, or macOS would be read as
22 * iOS (no base-vertex draws). */
23#if defined(__APPLE__)
24#include <TargetConditionals.h>
25#endif
27#if defined(_WIN32) && !defined(_WIN64)
28#define GL_APIENTRY __stdcall
29#else
30#define GL_APIENTRY
31#endif
33/* The guards the system GL headers use, so a later include of any of them
34 * (glfw3.h without GLFW_INCLUDE_NONE, say) defines nothing twice. */
35#define __gl_h_ 1
36#define __gl32_h_ 1
37#define __gl31_h_ 1
38#define __GL_H__ 1
39#define __glext_h_ 1
40#define __GLEXT_H_ 1
41#define __gltypes_h_ 1
42#define __glcorearb_h_ 1
43#define __gl_glcorearb_h_ 1
45/* sokol_gfx enables its 3.2 / 4.2 / 4.3 code paths on these, as the system
46 * headers (Mesa's glext.h) defined them before; the runtime check on the
47 * context's reported version still gates their use. */
48#define GL_VERSION_3_2 1
49#define GL_VERSION_4_2 1
50#define GL_VERSION_4_3 1
52/* ---- types and constants (from sokol_gfx.h) ---- */
53typedef unsigned int GLenum;
54typedef unsigned int GLuint;
55typedef int GLsizei;
56typedef char GLchar;
57typedef ptrdiff_t GLintptr;
58typedef ptrdiff_t GLsizeiptr;
59typedef double GLclampd;
60typedef unsigned short GLushort;
61typedef unsigned char GLubyte;
62typedef unsigned char GLboolean;
63typedef uint64_t GLuint64;
64typedef double GLdouble;
65typedef unsigned short GLhalf;
66typedef float GLclampf;
67typedef unsigned int GLbitfield;
68typedef signed char GLbyte;
69typedef short GLshort;
70typedef void GLvoid;
71typedef int64_t GLint64;
72typedef float GLfloat;
73typedef int GLint;
74#define GL_INT_2_10_10_10_REV 0x8D9F
75#define GL_R32F 0x822E
76#define GL_PROGRAM_POINT_SIZE 0x8642
77#define GL_DEPTH_ATTACHMENT 0x8D00
78#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A
79#define GL_COLOR_ATTACHMENT0 0x8CE0
80#define GL_R16F 0x822D
81#define GL_DRAW_FRAMEBUFFER 0x8CA9
82#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
83#define GL_NUM_EXTENSIONS 0x821D
84#define GL_INFO_LOG_LENGTH 0x8B84
85#define GL_VERTEX_SHADER 0x8B31
86#define GL_INCR 0x1E02
87#define GL_DYNAMIC_DRAW 0x88E8
88#define GL_STATIC_DRAW 0x88E4
89#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
90#define GL_TEXTURE_CUBE_MAP 0x8513
91#define GL_FUNC_SUBTRACT 0x800A
92#define GL_FUNC_REVERSE_SUBTRACT 0x800B
93#define GL_CONSTANT_COLOR 0x8001
94#define GL_DECR_WRAP 0x8508
95#define GL_R8 0x8229
96#define GL_LINEAR_MIPMAP_LINEAR 0x2703
97#define GL_ELEMENT_ARRAY_BUFFER 0x8893
98#define GL_SHORT 0x1402
99#define GL_DEPTH_TEST 0x0B71
100#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
101#define GL_LINK_STATUS 0x8B82
102#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
103#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
104#define GL_RGBA16F 0x881A
105#define GL_CONSTANT_ALPHA 0x8003
106#define GL_READ_FRAMEBUFFER 0x8CA8
107#define GL_TEXTURE0 0x84C0
108#define GL_TEXTURE_MIN_LOD 0x813A
109#define GL_CLAMP_TO_EDGE 0x812F
110#define GL_UNSIGNED_SHORT_5_6_5 0x8363
111#define GL_TEXTURE_WRAP_R 0x8072
112#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
113#define GL_NEAREST_MIPMAP_NEAREST 0x2700
114#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
115#define GL_SRC_ALPHA_SATURATE 0x0308
116#define GL_STREAM_DRAW 0x88E0
117#define GL_ONE 1
118#define GL_NEAREST_MIPMAP_LINEAR 0x2702
119#define GL_RGB10_A2 0x8059
120#define GL_RGBA8 0x8058
121#define GL_SRGB8_ALPHA8 0x8C43
122#define GL_RGBA4 0x8056
123#define GL_RGB8 0x8051
124#define GL_ARRAY_BUFFER 0x8892
125#define GL_STENCIL 0x1802
126#define GL_TEXTURE_2D 0x0DE1
127#define GL_DEPTH 0x1801
128#define GL_FRONT 0x0404
129#define GL_STENCIL_BUFFER_BIT 0x00000400
130#define GL_REPEAT 0x2901
131#define GL_RGBA 0x1908
132#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
133#define GL_DECR 0x1E03
134#define GL_FRAGMENT_SHADER 0x8B30
135#define GL_COMPUTE_SHADER 0x91B9
136#define GL_FLOAT 0x1406
137#define GL_TEXTURE_MAX_LOD 0x813B
138#define GL_DEPTH_COMPONENT 0x1902
139#define GL_ONE_MINUS_DST_ALPHA 0x0305
140#define GL_COLOR 0x1800
141#define GL_TEXTURE_2D_ARRAY 0x8C1A
142#define GL_TRIANGLES 0x0004
143#define GL_UNSIGNED_BYTE 0x1401
144#define GL_TEXTURE_MAG_FILTER 0x2800
145#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
146#define GL_NONE 0
147#define GL_SRC_COLOR 0x0300
148#define GL_BYTE 0x1400
149#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
150#define GL_LINE_STRIP 0x0003
151#define GL_TEXTURE_3D 0x806F
152#define GL_CW 0x0900
153#define GL_LINEAR 0x2601
154#define GL_RENDERBUFFER 0x8D41
155#define GL_GEQUAL 0x0206
156#define GL_COLOR_BUFFER_BIT 0x00004000
157#define GL_RGBA32F 0x8814
158#define GL_BLEND 0x0BE2
159#define GL_ONE_MINUS_SRC_ALPHA 0x0303
160#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
161#define GL_TEXTURE_WRAP_T 0x2803
162#define GL_TEXTURE_WRAP_S 0x2802
163#define GL_TEXTURE_MIN_FILTER 0x2801
164#define GL_LINEAR_MIPMAP_NEAREST 0x2701
165#define GL_EXTENSIONS 0x1F03
166#define GL_NO_ERROR 0
167#define GL_REPLACE 0x1E01
168#define GL_KEEP 0x1E00
169#define GL_CCW 0x0901
170#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
171#define GL_RGB 0x1907
172#define GL_TRIANGLE_STRIP 0x0005
173#define GL_FALSE 0
174#define GL_ZERO 0
175#define GL_CULL_FACE 0x0B44
176#define GL_INVERT 0x150A
177#define GL_INT 0x1404
178#define GL_UNSIGNED_INT 0x1405
179#define GL_UNSIGNED_SHORT 0x1403
180#define GL_NEAREST 0x2600
181#define GL_SCISSOR_TEST 0x0C11
182#define GL_LEQUAL 0x0203
183#define GL_STENCIL_TEST 0x0B90
184#define GL_DITHER 0x0BD0
185#define GL_DEPTH_COMPONENT32F 0x8CAC
186#define GL_EQUAL 0x0202
187#define GL_FRAMEBUFFER 0x8D40
188#define GL_RGB5 0x8050
189#define GL_LINES 0x0001
190#define GL_DEPTH_BUFFER_BIT 0x00000100
191#define GL_SRC_ALPHA 0x0302
192#define GL_INCR_WRAP 0x8507
193#define GL_LESS 0x0201
194#define GL_MULTISAMPLE 0x809D
195#define GL_FRAMEBUFFER_BINDING 0x8CA6
196#define GL_BACK 0x0405
197#define GL_ALWAYS 0x0207
198#define GL_FUNC_ADD 0x8006
199#define GL_ONE_MINUS_DST_COLOR 0x0307
200#define GL_NOTEQUAL 0x0205
201#define GL_DST_COLOR 0x0306
202#define GL_COMPILE_STATUS 0x8B81
203#define GL_RED 0x1903
204#define GL_DST_ALPHA 0x0304
205#define GL_RGB5_A1 0x8057
206#define GL_GREATER 0x0204
207#define GL_POLYGON_OFFSET_FILL 0x8037
208#define GL_TRUE 1
209#define GL_NEVER 0x0200
210#define GL_POINTS 0x0000
211#define GL_ONE_MINUS_SRC_COLOR 0x0301
212#define GL_MIRRORED_REPEAT 0x8370
213#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
214#define GL_R11F_G11F_B10F 0x8C3A
215#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B
216#define GL_RGB9_E5 0x8C3D
217#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E
218#define GL_RGBA32UI 0x8D70
219#define GL_RGB32UI 0x8D71
220#define GL_RGBA16UI 0x8D76
221#define GL_RGB16UI 0x8D77
222#define GL_RGBA8UI 0x8D7C
223#define GL_RGB8UI 0x8D7D
224#define GL_RGBA32I 0x8D82
225#define GL_RGB32I 0x8D83
226#define GL_RGBA16I 0x8D88
227#define GL_RGB16I 0x8D89
228#define GL_RGBA8I 0x8D8E
229#define GL_RGB8I 0x8D8F
230#define GL_RED_INTEGER 0x8D94
231#define GL_RG 0x8227
232#define GL_RG_INTEGER 0x8228
233#define GL_R8 0x8229
234#define GL_R16 0x822A
235#define GL_RG8 0x822B
236#define GL_RG16 0x822C
237#define GL_R16F 0x822D
238#define GL_R32F 0x822E
239#define GL_RG16F 0x822F
240#define GL_RG32F 0x8230
241#define GL_R8I 0x8231
242#define GL_R8UI 0x8232
243#define GL_R16I 0x8233
244#define GL_R16UI 0x8234
245#define GL_R32I 0x8235
246#define GL_R32UI 0x8236
247#define GL_RG8I 0x8237
248#define GL_RG8UI 0x8238
249#define GL_RG16I 0x8239
250#define GL_RG16UI 0x823A
251#define GL_RG32I 0x823B
252#define GL_RG32UI 0x823C
253#define GL_RGBA_INTEGER 0x8D99
254#define GL_R8_SNORM 0x8F94
255#define GL_RG8_SNORM 0x8F95
256#define GL_RGB8_SNORM 0x8F96
257#define GL_RGBA8_SNORM 0x8F97
258#define GL_R16_SNORM 0x8F98
259#define GL_RG16_SNORM 0x8F99
260#define GL_RGB16_SNORM 0x8F9A
261#define GL_RGBA16_SNORM 0x8F9B
262#define GL_RGBA16 0x805B
263#define GL_MAX_TEXTURE_SIZE 0x0D33
264#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
265#define GL_MAX_3D_TEXTURE_SIZE 0x8073
266#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF
267#define GL_MAX_VERTEX_ATTRIBS 0x8869
268#define GL_CLAMP_TO_BORDER 0x812D
269#define GL_TEXTURE_BORDER_COLOR 0x1004
270#define GL_CURRENT_PROGRAM 0x8B8D
271#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A
272#define GL_UNPACK_ALIGNMENT 0x0CF5
273#define GL_FRAMEBUFFER_SRGB 0x8DB9
274#define GL_TEXTURE_COMPARE_MODE 0x884C
275#define GL_TEXTURE_COMPARE_FUNC 0x884D
276#define GL_COMPARE_REF_TO_TEXTURE 0x884E
277#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
278#define GL_TEXTURE_MAX_LEVEL 0x813D
279#define GL_FRAMEBUFFER_UNDEFINED 0x8219
280#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
281#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
282#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
283#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
284#define GL_MAJOR_VERSION 0x821B
285#define GL_MINOR_VERSION 0x821C
286#define GL_TEXTURE_2D_MULTISAMPLE 0x9100
287#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
288#define GL_SHADER_STORAGE_BARRIER_BIT 0x2000
289#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001
290#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002
291#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008
292#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020
293#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400
294#define GL_MIN 0x8007
295#define GL_MAX 0x8008
296#define GL_WRITE_ONLY 0x88B9
297#define GL_READ_WRITE 0x88BA
298#define GL_MAX_DRAW_BUFFERS 0x8824
299#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
300#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
301#define GL_MAX_IMAGE_UNITS 0x8F38
303/* ---- the entry points sokol_gfx calls (from sokol_gfx.h) ---- */
304#define SIGIL_GL_FUNCS \
305 SIGIL_GL_XMACRO(glBindVertexArray, void, (GLuint array)) \
306 SIGIL_GL_XMACRO(glFramebufferTextureLayer, void, (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) \
307 SIGIL_GL_XMACRO(glGenFramebuffers, void, (GLsizei n, GLuint * framebuffers)) \
308 SIGIL_GL_XMACRO(glBindFramebuffer, void, (GLenum target, GLuint framebuffer)) \
309 SIGIL_GL_XMACRO(glBindRenderbuffer, void, (GLenum target, GLuint renderbuffer)) \
310 SIGIL_GL_XMACRO(glGetStringi, const GLubyte *, (GLenum name, GLuint index)) \
311 SIGIL_GL_XMACRO(glClearBufferfi, void, (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)) \
312 SIGIL_GL_XMACRO(glClearBufferfv, void, (GLenum buffer, GLint drawbuffer, const GLfloat * value)) \
313 SIGIL_GL_XMACRO(glClearBufferuiv, void, (GLenum buffer, GLint drawbuffer, const GLuint * value)) \
314 SIGIL_GL_XMACRO(glClearBufferiv, void, (GLenum buffer, GLint drawbuffer, const GLint * value)) \
315 SIGIL_GL_XMACRO(glDeleteRenderbuffers, void, (GLsizei n, const GLuint * renderbuffers)) \
316 SIGIL_GL_XMACRO(glUniform1fv, void, (GLint location, GLsizei count, const GLfloat * value)) \
317 SIGIL_GL_XMACRO(glUniform2fv, void, (GLint location, GLsizei count, const GLfloat * value)) \
318 SIGIL_GL_XMACRO(glUniform3fv, void, (GLint location, GLsizei count, const GLfloat * value)) \
319 SIGIL_GL_XMACRO(glUniform4fv, void, (GLint location, GLsizei count, const GLfloat * value)) \
320 SIGIL_GL_XMACRO(glUniform1iv, void, (GLint location, GLsizei count, const GLint * value)) \
321 SIGIL_GL_XMACRO(glUniform2iv, void, (GLint location, GLsizei count, const GLint * value)) \
322 SIGIL_GL_XMACRO(glUniform3iv, void, (GLint location, GLsizei count, const GLint * value)) \
323 SIGIL_GL_XMACRO(glUniform4iv, void, (GLint location, GLsizei count, const GLint * value)) \
324 SIGIL_GL_XMACRO(glUniformMatrix4fv, void, (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)) \
325 SIGIL_GL_XMACRO(glUseProgram, void, (GLuint program)) \
326 SIGIL_GL_XMACRO(glShaderSource, void, (GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length)) \
327 SIGIL_GL_XMACRO(glLinkProgram, void, (GLuint program)) \
328 SIGIL_GL_XMACRO(glGetUniformLocation, GLint, (GLuint program, const GLchar * name)) \
329 SIGIL_GL_XMACRO(glGetShaderiv, void, (GLuint shader, GLenum pname, GLint * params)) \
330 SIGIL_GL_XMACRO(glGetProgramInfoLog, void, (GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog)) \
331 SIGIL_GL_XMACRO(glGetAttribLocation, GLint, (GLuint program, const GLchar * name)) \
332 SIGIL_GL_XMACRO(glDisableVertexAttribArray, void, (GLuint index)) \
333 SIGIL_GL_XMACRO(glDeleteShader, void, (GLuint shader)) \
334 SIGIL_GL_XMACRO(glDeleteProgram, void, (GLuint program)) \
335 SIGIL_GL_XMACRO(glCompileShader, void, (GLuint shader)) \
336 SIGIL_GL_XMACRO(glStencilFuncSeparate, void, (GLenum face, GLenum func, GLint ref, GLuint mask)) \
337 SIGIL_GL_XMACRO(glStencilOpSeparate, void, (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)) \
338 SIGIL_GL_XMACRO(glRenderbufferStorageMultisample, void, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) \
339 SIGIL_GL_XMACRO(glDrawBuffers, void, (GLsizei n, const GLenum * bufs)) \
340 SIGIL_GL_XMACRO(glVertexAttribDivisor, void, (GLuint index, GLuint divisor)) \
341 SIGIL_GL_XMACRO(glBufferSubData, void, (GLenum target, GLintptr offset, GLsizeiptr size, const void * data)) \
342 SIGIL_GL_XMACRO(glGenBuffers, void, (GLsizei n, GLuint * buffers)) \
343 SIGIL_GL_XMACRO(glCheckFramebufferStatus, GLenum, (GLenum target)) \
344 SIGIL_GL_XMACRO(glFramebufferRenderbuffer, void, (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)) \
345 SIGIL_GL_XMACRO(glCompressedTexImage2D, void, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data)) \
346 SIGIL_GL_XMACRO(glCompressedTexImage3D, void, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data)) \
347 SIGIL_GL_XMACRO(glActiveTexture, void, (GLenum texture)) \
348 SIGIL_GL_XMACRO(glTexSubImage3D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels)) \
349 SIGIL_GL_XMACRO(glRenderbufferStorage, void, (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)) \
350 SIGIL_GL_XMACRO(glGenTextures, void, (GLsizei n, GLuint * textures)) \
351 SIGIL_GL_XMACRO(glPolygonOffset, void, (GLfloat factor, GLfloat units)) \
352 SIGIL_GL_XMACRO(glDrawElements, void, (GLenum mode, GLsizei count, GLenum type, const void * indices)) \
353 SIGIL_GL_XMACRO(glDeleteFramebuffers, void, (GLsizei n, const GLuint * framebuffers)) \
354 SIGIL_GL_XMACRO(glBlendEquationSeparate, void, (GLenum modeRGB, GLenum modeAlpha)) \
355 SIGIL_GL_XMACRO(glDeleteTextures, void, (GLsizei n, const GLuint * textures)) \
356 SIGIL_GL_XMACRO(glGetProgramiv, void, (GLuint program, GLenum pname, GLint * params)) \
357 SIGIL_GL_XMACRO(glBindTexture, void, (GLenum target, GLuint texture)) \
358 SIGIL_GL_XMACRO(glTexImage3D, void, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels)) \
359 SIGIL_GL_XMACRO(glCreateShader, GLuint, (GLenum type)) \
360 SIGIL_GL_XMACRO(glTexSubImage2D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels)) \
361 SIGIL_GL_XMACRO(glFramebufferTexture2D, void, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) \
362 SIGIL_GL_XMACRO(glCreateProgram, GLuint, (void)) \
363 SIGIL_GL_XMACRO(glViewport, void, (GLint x, GLint y, GLsizei width, GLsizei height)) \
364 SIGIL_GL_XMACRO(glDeleteBuffers, void, (GLsizei n, const GLuint * buffers)) \
365 SIGIL_GL_XMACRO(glDrawArrays, void, (GLenum mode, GLint first, GLsizei count)) \
366 SIGIL_GL_XMACRO(glDrawElementsInstanced, void, (GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount)) \
367 SIGIL_GL_XMACRO(glVertexAttribPointer, void, (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer)) \
368 SIGIL_GL_XMACRO(glVertexAttribIPointer, void, (GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer)) \
369 SIGIL_GL_XMACRO(glUniform1i, void, (GLint location, GLint v0)) \
370 SIGIL_GL_XMACRO(glDisable, void, (GLenum cap)) \
371 SIGIL_GL_XMACRO(glColorMask, void, (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)) \
372 SIGIL_GL_XMACRO(glColorMaski, void, (GLuint buf, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)) \
373 SIGIL_GL_XMACRO(glBindBuffer, void, (GLenum target, GLuint buffer)) \
374 SIGIL_GL_XMACRO(glDeleteVertexArrays, void, (GLsizei n, const GLuint * arrays)) \
375 SIGIL_GL_XMACRO(glDepthMask, void, (GLboolean flag)) \
376 SIGIL_GL_XMACRO(glDrawArraysInstanced, void, (GLenum mode, GLint first, GLsizei count, GLsizei instancecount)) \
377 SIGIL_GL_XMACRO(glScissor, void, (GLint x, GLint y, GLsizei width, GLsizei height)) \
378 SIGIL_GL_XMACRO(glGenRenderbuffers, void, (GLsizei n, GLuint * renderbuffers)) \
379 SIGIL_GL_XMACRO(glBufferData, void, (GLenum target, GLsizeiptr size, const void * data, GLenum usage)) \
380 SIGIL_GL_XMACRO(glBlendFuncSeparate, void, (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)) \
381 SIGIL_GL_XMACRO(glTexParameteri, void, (GLenum target, GLenum pname, GLint param)) \
382 SIGIL_GL_XMACRO(glGetIntegerv, void, (GLenum pname, GLint * data)) \
383 SIGIL_GL_XMACRO(glEnable, void, (GLenum cap)) \
384 SIGIL_GL_XMACRO(glBlitFramebuffer, void, (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) \
385 SIGIL_GL_XMACRO(glStencilMask, void, (GLuint mask)) \
386 SIGIL_GL_XMACRO(glAttachShader, void, (GLuint program, GLuint shader)) \
387 SIGIL_GL_XMACRO(glGetError, GLenum, (void)) \
388 SIGIL_GL_XMACRO(glBlendColor, void, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) \
389 SIGIL_GL_XMACRO(glTexParameterf, void, (GLenum target, GLenum pname, GLfloat param)) \
390 SIGIL_GL_XMACRO(glTexParameterfv, void, (GLenum target, GLenum pname, const GLfloat* params)) \
391 SIGIL_GL_XMACRO(glGetShaderInfoLog, void, (GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog)) \
392 SIGIL_GL_XMACRO(glDepthFunc, void, (GLenum func)) \
393 SIGIL_GL_XMACRO(glStencilOp , void, (GLenum fail, GLenum zfail, GLenum zpass)) \
394 SIGIL_GL_XMACRO(glStencilFunc, void, (GLenum func, GLint ref, GLuint mask)) \
395 SIGIL_GL_XMACRO(glEnableVertexAttribArray, void, (GLuint index)) \
396 SIGIL_GL_XMACRO(glBlendFunc, void, (GLenum sfactor, GLenum dfactor)) \
397 SIGIL_GL_XMACRO(glReadBuffer, void, (GLenum src)) \
398 SIGIL_GL_XMACRO(glTexImage2D, void, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels)) \
399 SIGIL_GL_XMACRO(glGenVertexArrays, void, (GLsizei n, GLuint * arrays)) \
400 SIGIL_GL_XMACRO(glFrontFace, void, (GLenum mode)) \
401 SIGIL_GL_XMACRO(glCullFace, void, (GLenum mode)) \
402 SIGIL_GL_XMACRO(glPixelStorei, void, (GLenum pname, GLint param)) \
403 SIGIL_GL_XMACRO(glBindSampler, void, (GLuint unit, GLuint sampler)) \
404 SIGIL_GL_XMACRO(glGenSamplers, void, (GLsizei n, GLuint* samplers)) \
405 SIGIL_GL_XMACRO(glSamplerParameteri, void, (GLuint sampler, GLenum pname, GLint param)) \
406 SIGIL_GL_XMACRO(glSamplerParameterf, void, (GLuint sampler, GLenum pname, GLfloat param)) \
407 SIGIL_GL_XMACRO(glSamplerParameterfv, void, (GLuint sampler, GLenum pname, const GLfloat* params)) \
408 SIGIL_GL_XMACRO(glDeleteSamplers, void, (GLsizei n, const GLuint* samplers)) \
409 SIGIL_GL_XMACRO(glBindBufferBase, void, (GLenum target, GLuint index, GLuint buffer)) \
410 SIGIL_GL_XMACRO(glBindBufferRange, void, (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) \
411 SIGIL_GL_XMACRO(glTexImage2DMultisample, void, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)) \
412 SIGIL_GL_XMACRO(glTexImage3DMultisample, void, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)) \
413 SIGIL_GL_XMACRO(glDispatchCompute, void, (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)) \
414 SIGIL_GL_XMACRO(glMemoryBarrier, void, (GLbitfield barriers)) \
415 SIGIL_GL_XMACRO(glBindImageTexture, void, (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)) \
416 SIGIL_GL_XMACRO(glTexStorage2DMultisample, void, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)) \
417 SIGIL_GL_XMACRO(glTexStorage2D, void, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) \
418 SIGIL_GL_XMACRO(glTexStorage3DMultisample, void, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)) \
419 SIGIL_GL_XMACRO(glTexStorage3D, void, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)) \
420 SIGIL_GL_XMACRO(glCompressedTexSubImage2D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)) \
421 SIGIL_GL_XMACRO(glCompressedTexSubImage3D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)) \
422 SIGIL_GL_XMACRO(glTextureView, void, (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers)) \
423 SIGIL_GL_XMACRO(glDrawElementsBaseVertex, void, (GLenum mode, GLsizei count, GLenum type, const void* indices, GLint basevertex)) \
424 SIGIL_GL_XMACRO(glDrawElementsInstancedBaseVertex, void, (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei instancecount, GLint basevertex)) \
425 SIGIL_GL_XMACRO(glDrawElementsInstancedBaseVertexBaseInstance, void, (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance)) \
426 SIGIL_GL_XMACRO(glDrawArraysInstancedBaseInstance, void, (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance))
428#define SIGIL_GL_XMACRO(name, ret, args) typedef ret (GL_APIENTRY* PFN_ ## name) args;
429SIGIL_GL_FUNCS
430#undef SIGIL_GL_XMACRO
432#define SIGIL_GL_XMACRO(name, ret, args) static PFN_ ## name name;
433SIGIL_GL_FUNCS
434#undef SIGIL_GL_XMACRO
436typedef void *(*sigil_gl_proc_loader)(const char *name);
438/* Fill every pointer through `load`. Returns the number left NULL: entry
439 * points newer than the context (glTextureView on a 4.1 context, the
440 * base-instance draws before 4.2) are expected to be missing and sokol_gfx
441 * only calls them behind its feature checks; glGenBuffers or glGetIntegerv
442 * missing means there is no usable context, and sigil_gl_ready() says so. */
443static int sigil_gl_load(sigil_gl_proc_loader load)
445 int missing = 0;
446#define SIGIL_GL_XMACRO(name, ret, args) \
447 name = (PFN_ ## name)load(#name); if (!name) missing++;
448 SIGIL_GL_FUNCS
449#undef SIGIL_GL_XMACRO
450 return missing;
453static int sigil_gl_ready(void)
455 return glGetIntegerv != NULL && glClearBufferfv != NULL && glGenBuffers != NULL
456 && glCreateShader != NULL && glBindFramebuffer != NULL;
459#endif /* SIGIL_GL_NATIVE_LOADER_H */