Changeset View
Changeset View
Standalone View
Standalone View
libraries/source/glad/src/gles2.cpp
/** | |||||
* SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 | |||||
*/ | |||||
#include <stdio.h> | #include <stdio.h> | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <string.h> | #include <string.h> | ||||
#include <glad/gles2.h> | #include <glad/gles2.h> | ||||
#ifndef GLAD_IMPL_UTIL_C_ | #ifndef GLAD_IMPL_UTIL_C_ | ||||
#define GLAD_IMPL_UTIL_C_ | #define GLAD_IMPL_UTIL_C_ | ||||
#ifdef _MSC_VER | #ifdef _MSC_VER | ||||
#define GLAD_IMPL_UTIL_SSCANF sscanf_s | #define GLAD_IMPL_UTIL_SSCANF sscanf_s | ||||
#else | #else | ||||
#define GLAD_IMPL_UTIL_SSCANF sscanf | #define GLAD_IMPL_UTIL_SSCANF sscanf | ||||
#endif | #endif | ||||
#endif /* GLAD_IMPL_UTIL_C_ */ | #endif /* GLAD_IMPL_UTIL_C_ */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" { | extern "C" { | ||||
#endif | #endif | ||||
int GLAD_GL_ES_VERSION_2_0 = 0; | int GLAD_GL_ES_VERSION_2_0 = 0; | ||||
int GLAD_GL_EXT_discard_framebuffer = 0; | |||||
int GLAD_GL_EXT_texture_compression_s3tc = 0; | int GLAD_GL_EXT_texture_compression_s3tc = 0; | ||||
int GLAD_GL_EXT_texture_filter_anisotropic = 0; | int GLAD_GL_EXT_texture_filter_anisotropic = 0; | ||||
int GLAD_GL_EXT_texture_format_BGRA8888 = 0; | int GLAD_GL_EXT_texture_format_BGRA8888 = 0; | ||||
int GLAD_GL_KHR_debug = 0; | int GLAD_GL_KHR_debug = 0; | ||||
int GLAD_GL_OES_depth32 = 0; | int GLAD_GL_OES_depth32 = 0; | ||||
int GLAD_GL_OES_mapbuffer = 0; | int GLAD_GL_OES_mapbuffer = 0; | ||||
int GLAD_GL_OES_rgb8_rgba8 = 0; | int GLAD_GL_OES_rgb8_rgba8 = 0; | ||||
int GLAD_GL_OES_texture_border_clamp = 0; | int GLAD_GL_OES_texture_border_clamp = 0; | ||||
Show All 38 Lines | |||||
PFNGLDELETESHADERPROC glad_glDeleteShader = NULL; | PFNGLDELETESHADERPROC glad_glDeleteShader = NULL; | ||||
PFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL; | PFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL; | ||||
PFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL; | PFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL; | ||||
PFNGLDEPTHMASKPROC glad_glDepthMask = NULL; | PFNGLDEPTHMASKPROC glad_glDepthMask = NULL; | ||||
PFNGLDEPTHRANGEFPROC glad_glDepthRangef = NULL; | PFNGLDEPTHRANGEFPROC glad_glDepthRangef = NULL; | ||||
PFNGLDETACHSHADERPROC glad_glDetachShader = NULL; | PFNGLDETACHSHADERPROC glad_glDetachShader = NULL; | ||||
PFNGLDISABLEPROC glad_glDisable = NULL; | PFNGLDISABLEPROC glad_glDisable = NULL; | ||||
PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL; | PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL; | ||||
PFNGLDISCARDFRAMEBUFFEREXTPROC glad_glDiscardFramebufferEXT = NULL; | |||||
PFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL; | PFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL; | ||||
PFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL; | PFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL; | ||||
PFNGLENABLEPROC glad_glEnable = NULL; | PFNGLENABLEPROC glad_glEnable = NULL; | ||||
PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL; | PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL; | ||||
PFNGLFINISHPROC glad_glFinish = NULL; | PFNGLFINISHPROC glad_glFinish = NULL; | ||||
PFNGLFLUSHPROC glad_glFlush = NULL; | PFNGLFLUSHPROC glad_glFlush = NULL; | ||||
PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL; | PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL; | ||||
PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL; | PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL; | ||||
▲ Show 20 Lines • Show All 252 Lines • ▼ Show 20 Lines | static void glad_gl_load_GL_ES_VERSION_2_0( GLADuserptrloadfunc load, void* userptr) { | ||||
glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC) load(userptr, "glVertexAttrib2fv"); | glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC) load(userptr, "glVertexAttrib2fv"); | ||||
glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC) load(userptr, "glVertexAttrib3f"); | glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC) load(userptr, "glVertexAttrib3f"); | ||||
glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC) load(userptr, "glVertexAttrib3fv"); | glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC) load(userptr, "glVertexAttrib3fv"); | ||||
glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC) load(userptr, "glVertexAttrib4f"); | glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC) load(userptr, "glVertexAttrib4f"); | ||||
glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC) load(userptr, "glVertexAttrib4fv"); | glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC) load(userptr, "glVertexAttrib4fv"); | ||||
glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC) load(userptr, "glVertexAttribPointer"); | glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC) load(userptr, "glVertexAttribPointer"); | ||||
glad_glViewport = (PFNGLVIEWPORTPROC) load(userptr, "glViewport"); | glad_glViewport = (PFNGLVIEWPORTPROC) load(userptr, "glViewport"); | ||||
} | } | ||||
static void glad_gl_load_GL_EXT_discard_framebuffer( GLADuserptrloadfunc load, void* userptr) { | |||||
if(!GLAD_GL_EXT_discard_framebuffer) return; | |||||
glad_glDiscardFramebufferEXT = (PFNGLDISCARDFRAMEBUFFEREXTPROC) load(userptr, "glDiscardFramebufferEXT"); | |||||
} | |||||
static void glad_gl_load_GL_KHR_debug( GLADuserptrloadfunc load, void* userptr) { | static void glad_gl_load_GL_KHR_debug( GLADuserptrloadfunc load, void* userptr) { | ||||
if(!GLAD_GL_KHR_debug) return; | if(!GLAD_GL_KHR_debug) return; | ||||
glad_glDebugMessageCallbackKHR = (PFNGLDEBUGMESSAGECALLBACKKHRPROC) load(userptr, "glDebugMessageCallbackKHR"); | glad_glDebugMessageCallbackKHR = (PFNGLDEBUGMESSAGECALLBACKKHRPROC) load(userptr, "glDebugMessageCallbackKHR"); | ||||
glad_glDebugMessageControlKHR = (PFNGLDEBUGMESSAGECONTROLKHRPROC) load(userptr, "glDebugMessageControlKHR"); | glad_glDebugMessageControlKHR = (PFNGLDEBUGMESSAGECONTROLKHRPROC) load(userptr, "glDebugMessageControlKHR"); | ||||
glad_glDebugMessageInsertKHR = (PFNGLDEBUGMESSAGEINSERTKHRPROC) load(userptr, "glDebugMessageInsertKHR"); | glad_glDebugMessageInsertKHR = (PFNGLDEBUGMESSAGEINSERTKHRPROC) load(userptr, "glDebugMessageInsertKHR"); | ||||
glad_glGetDebugMessageLogKHR = (PFNGLGETDEBUGMESSAGELOGKHRPROC) load(userptr, "glGetDebugMessageLogKHR"); | glad_glGetDebugMessageLogKHR = (PFNGLGETDEBUGMESSAGELOGKHRPROC) load(userptr, "glGetDebugMessageLogKHR"); | ||||
glad_glGetObjectLabelKHR = (PFNGLGETOBJECTLABELKHRPROC) load(userptr, "glGetObjectLabelKHR"); | glad_glGetObjectLabelKHR = (PFNGLGETOBJECTLABELKHRPROC) load(userptr, "glGetObjectLabelKHR"); | ||||
glad_glGetObjectPtrLabelKHR = (PFNGLGETOBJECTPTRLABELKHRPROC) load(userptr, "glGetObjectPtrLabelKHR"); | glad_glGetObjectPtrLabelKHR = (PFNGLGETOBJECTPTRLABELKHRPROC) load(userptr, "glGetObjectPtrLabelKHR"); | ||||
Show All 28 Lines | |||||
#else | #else | ||||
#define GLAD_GL_IS_SOME_NEW_VERSION 0 | #define GLAD_GL_IS_SOME_NEW_VERSION 0 | ||||
#endif | #endif | ||||
static int glad_gl_get_extensions( int version, const char **out_exts, unsigned int *out_num_exts_i, char ***out_exts_i) { | static int glad_gl_get_extensions( int version, const char **out_exts, unsigned int *out_num_exts_i, char ***out_exts_i) { | ||||
#if GLAD_GL_IS_SOME_NEW_VERSION | #if GLAD_GL_IS_SOME_NEW_VERSION | ||||
if(GLAD_VERSION_MAJOR(version) < 3) { | if(GLAD_VERSION_MAJOR(version) < 3) { | ||||
#else | #else | ||||
(void) version; | GLAD_UNUSED(version); | ||||
(void) out_num_exts_i; | GLAD_UNUSED(out_num_exts_i); | ||||
(void) out_exts_i; | GLAD_UNUSED(out_exts_i); | ||||
#endif | #endif | ||||
if (glad_glGetString == NULL) { | if (glad_glGetString == NULL) { | ||||
return 0; | return 0; | ||||
} | } | ||||
*out_exts = (const char *)glad_glGetString(GL_EXTENSIONS); | *out_exts = (const char *)glad_glGetString(GL_EXTENSIONS); | ||||
#if GLAD_GL_IS_SOME_NEW_VERSION | #if GLAD_GL_IS_SOME_NEW_VERSION | ||||
} else { | } else { | ||||
unsigned int index = 0; | unsigned int index = 0; | ||||
▲ Show 20 Lines • Show All 75 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
static int glad_gl_find_extensions_gles2( int version) { | static int glad_gl_find_extensions_gles2( int version) { | ||||
const char *exts = NULL; | const char *exts = NULL; | ||||
unsigned int num_exts_i = 0; | unsigned int num_exts_i = 0; | ||||
char **exts_i = NULL; | char **exts_i = NULL; | ||||
if (!glad_gl_get_extensions(version, &exts, &num_exts_i, &exts_i)) return 0; | if (!glad_gl_get_extensions(version, &exts, &num_exts_i, &exts_i)) return 0; | ||||
GLAD_GL_EXT_discard_framebuffer = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_EXT_discard_framebuffer"); | |||||
GLAD_GL_EXT_texture_compression_s3tc = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_EXT_texture_compression_s3tc"); | GLAD_GL_EXT_texture_compression_s3tc = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_EXT_texture_compression_s3tc"); | ||||
GLAD_GL_EXT_texture_filter_anisotropic = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_EXT_texture_filter_anisotropic"); | GLAD_GL_EXT_texture_filter_anisotropic = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_EXT_texture_filter_anisotropic"); | ||||
GLAD_GL_EXT_texture_format_BGRA8888 = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_EXT_texture_format_BGRA8888"); | GLAD_GL_EXT_texture_format_BGRA8888 = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_EXT_texture_format_BGRA8888"); | ||||
GLAD_GL_KHR_debug = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_KHR_debug"); | GLAD_GL_KHR_debug = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_KHR_debug"); | ||||
GLAD_GL_OES_depth32 = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_OES_depth32"); | GLAD_GL_OES_depth32 = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_OES_depth32"); | ||||
GLAD_GL_OES_mapbuffer = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_OES_mapbuffer"); | GLAD_GL_OES_mapbuffer = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_OES_mapbuffer"); | ||||
GLAD_GL_OES_rgb8_rgba8 = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_OES_rgb8_rgba8"); | GLAD_GL_OES_rgb8_rgba8 = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_OES_rgb8_rgba8"); | ||||
GLAD_GL_OES_texture_border_clamp = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_OES_texture_border_clamp"); | GLAD_GL_OES_texture_border_clamp = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_OES_texture_border_clamp"); | ||||
Show All 38 Lines | int gladLoadGLES2UserPtr( GLADuserptrloadfunc load, void *userptr) { | ||||
glad_glGetString = (PFNGLGETSTRINGPROC) load(userptr, "glGetString"); | glad_glGetString = (PFNGLGETSTRINGPROC) load(userptr, "glGetString"); | ||||
if(glad_glGetString == NULL) return 0; | if(glad_glGetString == NULL) return 0; | ||||
if(glad_glGetString(GL_VERSION) == NULL) return 0; | if(glad_glGetString(GL_VERSION) == NULL) return 0; | ||||
version = glad_gl_find_core_gles2(); | version = glad_gl_find_core_gles2(); | ||||
glad_gl_load_GL_ES_VERSION_2_0(load, userptr); | glad_gl_load_GL_ES_VERSION_2_0(load, userptr); | ||||
if (!glad_gl_find_extensions_gles2(version)) return 0; | if (!glad_gl_find_extensions_gles2(version)) return 0; | ||||
glad_gl_load_GL_EXT_discard_framebuffer(load, userptr); | |||||
glad_gl_load_GL_KHR_debug(load, userptr); | glad_gl_load_GL_KHR_debug(load, userptr); | ||||
glad_gl_load_GL_OES_mapbuffer(load, userptr); | glad_gl_load_GL_OES_mapbuffer(load, userptr); | ||||
glad_gl_load_GL_OES_texture_border_clamp(load, userptr); | glad_gl_load_GL_OES_texture_border_clamp(load, userptr); | ||||
return version; | return version; | ||||
} | } | ||||
Show All 14 Lines |
Wildfire Games · Phabricator