diff --git a/demos/gltf/lv_demo_gltf.c b/demos/gltf/lv_demo_gltf.c index a3fd9a39a3..10acef9ca5 100644 --- a/demos/gltf/lv_demo_gltf.c +++ b/demos/gltf/lv_demo_gltf.c @@ -22,6 +22,10 @@ #define PLAY_BTN_COLOR lv_color_hex(0x00C8535) #define PAUSE_BTN_COLOR lv_color_hex(0xF9A825) +#ifndef LV_DEMO_GLTF_CAMERA_NUM + #define LV_DEMO_GLTF_CAMERA_NUM LV_GLTF_DEFAULT_CAMERA +#endif + /********************** * TYPEDEFS **********************/ @@ -132,6 +136,8 @@ lv_obj_t * lv_demo_gltf(const char * path) lv_obj_add_event_cb(viewer, on_mouse_event, LV_EVENT_RELEASED, mouse_state); lv_obj_add_event_cb(viewer, on_mouse_event, LV_EVENT_PRESS_LOST, mouse_state); lv_obj_add_event_cb(viewer, on_mouse_event, LV_EVENT_DELETE, mouse_state); + + lv_gltf_set_camera(viewer, LV_DEMO_GLTF_CAMERA_NUM); return viewer; } diff --git a/src/drivers/opengles/glad/README.md b/src/drivers/opengles/glad/README.md index 67e1cd44cc..a15015ceb5 100644 --- a/src/drivers/opengles/glad/README.md +++ b/src/drivers/opengles/glad/README.md @@ -2,4 +2,4 @@ # glad GLAD source files are generated using GLAD's online generator. -[Permalink](https://gen.glad.sh/#generator=c&api=egl%3D1.5%2Cgles2%3D2.0&profile=gl%3Dcompatibility%2Cgles1%3Dcommon&extensions=EGL_EXT_image_dma_buf_import%2CEGL_EXT_image_dma_buf_import_modifiers%2CEGL_EXT_platform_base%2CEGL_EXT_platform_wayland%2CEGL_KHR_fence_sync%2CEGL_KHR_image_base%2CEGL_KHR_platform_gbm%2CEGL_KHR_platform_wayland%2CGL_APPLE_texture_max_level%2CGL_EXT_texture_format_BGRA8888%2CGL_EXT_unpack_subimage%2CGL_OES_mapbuffer%2CGL_OES_vertex_array_object) +[Permalink](https://gen.glad.sh/#generator=c&api=egl%3D1.5%2Cgles2%3D2.0&profile=gl%3Dcompatibility%2Cgles1%3Dcommon&extensions=EGL_EXT_image_dma_buf_import%2CEGL_EXT_image_dma_buf_import_modifiers%2CEGL_EXT_platform_base%2CEGL_EXT_platform_wayland%2CEGL_KHR_fence_sync%2CEGL_KHR_image_base%2CEGL_KHR_platform_gbm%2CEGL_KHR_platform_wayland%2CGL_APPLE_texture_max_level%2CGL_ARM_rgba8%2CGL_EXT_color_buffer_float%2CGL_EXT_color_buffer_half_float%2CGL_EXT_texture_format_BGRA8888%2CGL_EXT_texture_storage%2CGL_EXT_unpack_subimage%2CGL_OES_depth24%2CGL_OES_mapbuffer%2CGL_OES_rgb8_rgba8%2CGL_OES_texture_float%2CGL_OES_texture_half_float%2CGL_OES_texture_storage_multisample_2d_array%2CGL_OES_vertex_array_object&options=ALIAS) \ No newline at end of file diff --git a/src/drivers/opengles/glad/include/KHR/khrplatform.h b/src/drivers/opengles/glad/include/KHR/khrplatform.h index 11a22b3e7d..af2ae885b9 100644 --- a/src/drivers/opengles/glad/include/KHR/khrplatform.h +++ b/src/drivers/opengles/glad/include/KHR/khrplatform.h @@ -312,6 +312,6 @@ typedef enum { KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM } khronos_boolean_enum_t; -#endif /* __khrplatform_h_ */ +#endif /* LV_USE_EGL */ -#endif /*LV_USE_EGL*/ +#endif /* __khrplatform_h_ */ diff --git a/src/drivers/opengles/glad/include/glad/egl.h b/src/drivers/opengles/glad/include/glad/egl.h index e294f96f69..755bf0382b 100644 --- a/src/drivers/opengles/glad/include/glad/egl.h +++ b/src/drivers/opengles/glad/include/glad/egl.h @@ -1,17 +1,17 @@ /** - * Loader generated by glad 2.0.8 on Sun Sep 28 20:09:30 2025 + * Loader generated by glad 2.0.8 on Tue Sep 30 16:40:42 2025 * * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 * * Generator: C/C++ * Specification: egl - * Extensions: 8 + * Extensions: 11 * * APIs: * - egl=1.5 * * Options: - * - ALIAS = False + * - ALIAS = True * - DEBUG = False * - HEADER_ONLY = False * - LOADER = False @@ -19,10 +19,10 @@ * - ON_DEMAND = False * * Commandline: - * --api='egl=1.5' --extensions='EGL_EXT_image_dma_buf_import,EGL_EXT_image_dma_buf_import_modifiers,EGL_EXT_platform_base,EGL_EXT_platform_wayland,EGL_KHR_fence_sync,EGL_KHR_image_base,EGL_KHR_platform_gbm,EGL_KHR_platform_wayland' c + * --api='egl=1.5' --extensions='EGL_EXT_image_dma_buf_import,EGL_EXT_image_dma_buf_import_modifiers,EGL_EXT_platform_base,EGL_EXT_platform_wayland,EGL_KHR_cl_event2,EGL_KHR_fence_sync,EGL_KHR_image,EGL_KHR_image_base,EGL_KHR_platform_gbm,EGL_KHR_platform_wayland,EGL_KHR_reusable_sync' c --alias * * Online: - * http://glad.sh/#api=egl%3D1.5&extensions=EGL_EXT_image_dma_buf_import%2CEGL_EXT_image_dma_buf_import_modifiers%2CEGL_EXT_platform_base%2CEGL_EXT_platform_wayland%2CEGL_KHR_fence_sync%2CEGL_KHR_image_base%2CEGL_KHR_platform_gbm%2CEGL_KHR_platform_wayland&generator=c&options= + * http://glad.sh/#api=egl%3D1.5&extensions=EGL_EXT_image_dma_buf_import%2CEGL_EXT_image_dma_buf_import_modifiers%2CEGL_EXT_platform_base%2CEGL_EXT_platform_wayland%2CEGL_KHR_cl_event2%2CEGL_KHR_fence_sync%2CEGL_KHR_image%2CEGL_KHR_image_base%2CEGL_KHR_platform_gbm%2CEGL_KHR_platform_wayland%2CEGL_KHR_reusable_sync&generator=c&options=ALIAS * */ @@ -34,6 +34,7 @@ #if LV_USE_EGL #define GLAD_EGL +#define GLAD_OPTION_EGL_ALIAS #ifdef __cplusplus extern "C" { @@ -181,11 +182,13 @@ typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apipro #define EGL_BUFFER_SIZE 0x3020 #define EGL_CLIENT_APIS 0x308D #define EGL_CL_EVENT_HANDLE 0x309C +#define EGL_CL_EVENT_HANDLE_KHR 0x309C #define EGL_COLORSPACE 0x3087 #define EGL_COLORSPACE_LINEAR 0x308A #define EGL_COLORSPACE_sRGB 0x3089 #define EGL_COLOR_BUFFER_TYPE 0x303F #define EGL_CONDITION_SATISFIED 0x30F6 +#define EGL_CONDITION_SATISFIED_KHR 0x30F6 #define EGL_CONFIG_CAVEAT 0x3027 #define EGL_CONFIG_ID 0x3028 #define EGL_CONFORMANT 0x3042 @@ -230,6 +233,7 @@ typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apipro #define EGL_EXTENSIONS 0x3055 #define EGL_FALSE 0 #define EGL_FOREVER 0xFFFFFFFFFFFFFFFF +#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFF #define EGL_GL_COLORSPACE 0x309D #define EGL_GL_COLORSPACE_LINEAR 0x308A #define EGL_GL_COLORSPACE_SRGB 0x3089 @@ -271,6 +275,7 @@ typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apipro #define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B #define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200 #define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A +#define EGL_NATIVE_PIXMAP_KHR 0x30B0 #define EGL_NATIVE_RENDERABLE 0x302D #define EGL_NATIVE_VISUAL_ID 0x302E #define EGL_NATIVE_VISUAL_TYPE 0x302F @@ -284,6 +289,7 @@ typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apipro #define EGL_NO_RESET_NOTIFICATION 0x31BE #define EGL_NO_SURFACE EGL_CAST(EGLSurface,0) #define EGL_NO_SYNC EGL_CAST(EGLSync,0) +#define EGL_NO_SYNC_KHR EGL_CAST(EGLSync,0) #define EGL_NO_TEXTURE 0x305C #define EGL_OPENGL_API 0x30A2 #define EGL_OPENGL_BIT 0x0008 @@ -309,6 +315,7 @@ typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apipro #define EGL_SAMPLE_BUFFERS 0x3032 #define EGL_SAMPLE_RANGE_HINT_EXT 0x327C #define EGL_SIGNALED 0x30F2 +#define EGL_SIGNALED_KHR 0x30F2 #define EGL_SINGLE_BUFFER 0x3085 #define EGL_SLOW_CONFIG 0x3050 #define EGL_STENCIL_SIZE 0x3026 @@ -318,21 +325,28 @@ typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apipro #define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400 #define EGL_SYNC_CL_EVENT 0x30FE #define EGL_SYNC_CL_EVENT_COMPLETE 0x30FF +#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF +#define EGL_SYNC_CL_EVENT_KHR 0x30FE #define EGL_SYNC_CONDITION 0x30F8 #define EGL_SYNC_CONDITION_KHR 0x30F8 #define EGL_SYNC_FENCE 0x30F9 #define EGL_SYNC_FENCE_KHR 0x30F9 #define EGL_SYNC_FLUSH_COMMANDS_BIT 0x0001 +#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001 #define EGL_SYNC_PRIOR_COMMANDS_COMPLETE 0x30F0 #define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0 +#define EGL_SYNC_REUSABLE_KHR 0x30FA #define EGL_SYNC_STATUS 0x30F1 +#define EGL_SYNC_STATUS_KHR 0x30F1 #define EGL_SYNC_TYPE 0x30F7 +#define EGL_SYNC_TYPE_KHR 0x30F7 #define EGL_TEXTURE_2D 0x305F #define EGL_TEXTURE_FORMAT 0x3080 #define EGL_TEXTURE_RGB 0x305D #define EGL_TEXTURE_RGBA 0x305E #define EGL_TEXTURE_TARGET 0x3081 #define EGL_TIMEOUT_EXPIRED 0x30F5 +#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5 #define EGL_TRANSPARENT_BLUE_VALUE 0x3035 #define EGL_TRANSPARENT_GREEN_VALUE 0x3036 #define EGL_TRANSPARENT_RED_VALUE 0x3037 @@ -341,6 +355,7 @@ typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apipro #define EGL_TRUE 1 #define EGL_UNKNOWN EGL_CAST(EGLint,-1) #define EGL_UNSIGNALED 0x30F3 +#define EGL_UNSIGNALED_KHR 0x30F3 #define EGL_VENDOR 0x3053 #define EGL_VERSION 0x3054 #define EGL_VERTICAL_RESOLUTION 0x3091 @@ -445,14 +460,20 @@ GLAD_API_CALL int GLAD_EGL_EXT_image_dma_buf_import_modifiers; GLAD_API_CALL int GLAD_EGL_EXT_platform_base; #define EGL_EXT_platform_wayland 1 GLAD_API_CALL int GLAD_EGL_EXT_platform_wayland; +#define EGL_KHR_cl_event2 1 +GLAD_API_CALL int GLAD_EGL_KHR_cl_event2; #define EGL_KHR_fence_sync 1 GLAD_API_CALL int GLAD_EGL_KHR_fence_sync; +#define EGL_KHR_image 1 +GLAD_API_CALL int GLAD_EGL_KHR_image; #define EGL_KHR_image_base 1 GLAD_API_CALL int GLAD_EGL_KHR_image_base; #define EGL_KHR_platform_gbm 1 GLAD_API_CALL int GLAD_EGL_KHR_platform_gbm; #define EGL_KHR_platform_wayland 1 GLAD_API_CALL int GLAD_EGL_KHR_platform_wayland; +#define EGL_KHR_reusable_sync 1 +GLAD_API_CALL int GLAD_EGL_KHR_reusable_sync; typedef EGLBoolean (GLAD_API_PTR *PFNEGLBINDAPIPROC)(EGLenum api); @@ -472,6 +493,7 @@ typedef EGLSurface (GLAD_API_PTR *PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC)(EGLD typedef EGLSurface (GLAD_API_PTR *PFNEGLCREATEPLATFORMWINDOWSURFACEPROC)(EGLDisplay dpy, EGLConfig config, void * native_window, const EGLAttrib * attrib_list); typedef EGLSurface (GLAD_API_PTR *PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC)(EGLDisplay dpy, EGLConfig config, void * native_window, const EGLint * attrib_list); typedef EGLSync (GLAD_API_PTR *PFNEGLCREATESYNCPROC)(EGLDisplay dpy, EGLenum type, const EGLAttrib * attrib_list); +typedef EGLSyncKHR (GLAD_API_PTR *PFNEGLCREATESYNC64KHRPROC)(EGLDisplay dpy, EGLenum type, const EGLAttribKHR * attrib_list); typedef EGLSyncKHR (GLAD_API_PTR *PFNEGLCREATESYNCKHRPROC)(EGLDisplay dpy, EGLenum type, const EGLint * attrib_list); typedef EGLSurface (GLAD_API_PTR *PFNEGLCREATEWINDOWSURFACEPROC)(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint * attrib_list); typedef EGLBoolean (GLAD_API_PTR *PFNEGLDESTROYCONTEXTPROC)(EGLDisplay dpy, EGLContext ctx); @@ -502,6 +524,7 @@ typedef const char * (GLAD_API_PTR *PFNEGLQUERYSTRINGPROC)(EGLDisplay dpy, EGLin typedef EGLBoolean (GLAD_API_PTR *PFNEGLQUERYSURFACEPROC)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint * value); typedef EGLBoolean (GLAD_API_PTR *PFNEGLRELEASETEXIMAGEPROC)(EGLDisplay dpy, EGLSurface surface, EGLint buffer); typedef EGLBoolean (GLAD_API_PTR *PFNEGLRELEASETHREADPROC)(void); +typedef EGLBoolean (GLAD_API_PTR *PFNEGLSIGNALSYNCKHRPROC)(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); typedef EGLBoolean (GLAD_API_PTR *PFNEGLSURFACEATTRIBPROC)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value); typedef EGLBoolean (GLAD_API_PTR *PFNEGLSWAPBUFFERSPROC)(EGLDisplay dpy, EGLSurface surface); typedef EGLBoolean (GLAD_API_PTR *PFNEGLSWAPINTERVALPROC)(EGLDisplay dpy, EGLint interval); @@ -545,6 +568,8 @@ GLAD_API_CALL PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC glad_eglCreatePlatformWin #define eglCreatePlatformWindowSurfaceEXT glad_eglCreatePlatformWindowSurfaceEXT GLAD_API_CALL PFNEGLCREATESYNCPROC glad_eglCreateSync; #define eglCreateSync glad_eglCreateSync +GLAD_API_CALL PFNEGLCREATESYNC64KHRPROC glad_eglCreateSync64KHR; +#define eglCreateSync64KHR glad_eglCreateSync64KHR GLAD_API_CALL PFNEGLCREATESYNCKHRPROC glad_eglCreateSyncKHR; #define eglCreateSyncKHR glad_eglCreateSyncKHR GLAD_API_CALL PFNEGLCREATEWINDOWSURFACEPROC glad_eglCreateWindowSurface; @@ -605,6 +630,8 @@ GLAD_API_CALL PFNEGLRELEASETEXIMAGEPROC glad_eglReleaseTexImage; #define eglReleaseTexImage glad_eglReleaseTexImage GLAD_API_CALL PFNEGLRELEASETHREADPROC glad_eglReleaseThread; #define eglReleaseThread glad_eglReleaseThread +GLAD_API_CALL PFNEGLSIGNALSYNCKHRPROC glad_eglSignalSyncKHR; +#define eglSignalSyncKHR glad_eglSignalSyncKHR GLAD_API_CALL PFNEGLSURFACEATTRIBPROC glad_eglSurfaceAttrib; #define eglSurfaceAttrib glad_eglSurfaceAttrib GLAD_API_CALL PFNEGLSWAPBUFFERSPROC glad_eglSwapBuffers; @@ -635,4 +662,4 @@ GLAD_API_CALL int gladLoadEGL(EGLDisplay display, GLADloadfunc load); #endif #endif /*LV_USE_EGL*/ -#endif +#endif diff --git a/src/drivers/opengles/glad/include/glad/gles2.h b/src/drivers/opengles/glad/include/glad/gles2.h index 18e90b17d6..8738be8b47 100644 --- a/src/drivers/opengles/glad/include/glad/gles2.h +++ b/src/drivers/opengles/glad/include/glad/gles2.h @@ -1,17 +1,17 @@ /** - * Loader generated by glad 2.0.8 on Sun Sep 28 20:09:31 2025 + * Loader generated by glad 2.0.8 on Tue Sep 30 16:40:43 2025 * * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 * * Generator: C/C++ * Specification: gl - * Extensions: 5 + * Extensions: 14 * * APIs: * - gles2=2.0 * * Options: - * - ALIAS = False + * - ALIAS = True * - DEBUG = False * - HEADER_ONLY = False * - LOADER = False @@ -19,10 +19,10 @@ * - ON_DEMAND = False * * Commandline: - * --api='gles2=2.0' --extensions='GL_APPLE_texture_max_level,GL_EXT_texture_format_BGRA8888,GL_EXT_unpack_subimage,GL_OES_mapbuffer,GL_OES_vertex_array_object' c + * --api='gles2=2.0' --extensions='GL_APPLE_texture_max_level,GL_ARM_rgba8,GL_EXT_color_buffer_float,GL_EXT_color_buffer_half_float,GL_EXT_texture_format_BGRA8888,GL_EXT_texture_storage,GL_EXT_unpack_subimage,GL_OES_depth24,GL_OES_mapbuffer,GL_OES_rgb8_rgba8,GL_OES_texture_float,GL_OES_texture_half_float,GL_OES_texture_storage_multisample_2d_array,GL_OES_vertex_array_object' c --alias * * Online: - * http://glad.sh/#api=gles2%3D2.0&extensions=GL_APPLE_texture_max_level%2CGL_EXT_texture_format_BGRA8888%2CGL_EXT_unpack_subimage%2CGL_OES_mapbuffer%2CGL_OES_vertex_array_object&generator=c&options= + * http://glad.sh/#api=gles2%3D2.0&extensions=GL_APPLE_texture_max_level%2CGL_ARM_rgba8%2CGL_EXT_color_buffer_float%2CGL_EXT_color_buffer_half_float%2CGL_EXT_texture_format_BGRA8888%2CGL_EXT_texture_storage%2CGL_EXT_unpack_subimage%2CGL_OES_depth24%2CGL_OES_mapbuffer%2CGL_OES_rgb8_rgba8%2CGL_OES_texture_float%2CGL_OES_texture_half_float%2CGL_OES_texture_storage_multisample_2d_array%2CGL_OES_vertex_array_object&generator=c&options=ALIAS * */ @@ -34,30 +34,31 @@ #if LV_USE_EGL #ifdef __clang__ - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wreserved-id-macro" +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-id-macro" #endif #ifdef __gl2_h_ - #error OpenGL ES 2 header already included (API: gles2), remove previous include! + #error OpenGL ES 2 header already included (API: gles2), remove previous include! #endif #define __gl2_h_ 1 #ifdef __gles2_gl2_h_ - #error OpenGL ES 2 header already included (API: gles2), remove previous include! + #error OpenGL ES 2 header already included (API: gles2), remove previous include! #endif #define __gles2_gl2_h_ 1 #ifdef __gl3_h_ - #error OpenGL ES 3 header already included (API: gles2), remove previous include! + #error OpenGL ES 3 header already included (API: gles2), remove previous include! #endif #define __gl3_h_ 1 #ifdef __gles2_gl3_h_ - #error OpenGL ES 3 header already included (API: gles2), remove previous include! + #error OpenGL ES 3 header already included (API: gles2), remove previous include! #endif #define __gles2_gl3_h_ 1 #ifdef __clang__ - #pragma clang diagnostic pop +#pragma clang diagnostic pop #endif #define GLAD_GLES2 +#define GLAD_OPTION_GLES2_ALIAS #ifdef __cplusplus extern "C" { @@ -67,92 +68,92 @@ extern "C" { #define GLAD_PLATFORM_H_ #ifndef GLAD_PLATFORM_WIN32 -#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__) -#define GLAD_PLATFORM_WIN32 1 -#else -#define GLAD_PLATFORM_WIN32 0 -#endif + #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__) + #define GLAD_PLATFORM_WIN32 1 + #else + #define GLAD_PLATFORM_WIN32 0 + #endif #endif #ifndef GLAD_PLATFORM_APPLE -#ifdef __APPLE__ -#define GLAD_PLATFORM_APPLE 1 -#else -#define GLAD_PLATFORM_APPLE 0 -#endif + #ifdef __APPLE__ + #define GLAD_PLATFORM_APPLE 1 + #else + #define GLAD_PLATFORM_APPLE 0 + #endif #endif #ifndef GLAD_PLATFORM_EMSCRIPTEN -#ifdef __EMSCRIPTEN__ -#define GLAD_PLATFORM_EMSCRIPTEN 1 -#else -#define GLAD_PLATFORM_EMSCRIPTEN 0 -#endif + #ifdef __EMSCRIPTEN__ + #define GLAD_PLATFORM_EMSCRIPTEN 1 + #else + #define GLAD_PLATFORM_EMSCRIPTEN 0 + #endif #endif #ifndef GLAD_PLATFORM_UWP -#if defined(_MSC_VER) && !defined(GLAD_INTERNAL_HAVE_WINAPIFAMILY) -#ifdef __has_include -#if __has_include() -#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 -#endif -#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ -#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 -#endif -#endif + #if defined(_MSC_VER) && !defined(GLAD_INTERNAL_HAVE_WINAPIFAMILY) + #ifdef __has_include + #if __has_include() + #define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 + #endif + #elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ + #define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 + #endif + #endif -#ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY -#include -#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) -#define GLAD_PLATFORM_UWP 1 -#endif -#endif + #ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY + #include + #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) + #define GLAD_PLATFORM_UWP 1 + #endif + #endif -#ifndef GLAD_PLATFORM_UWP -#define GLAD_PLATFORM_UWP 0 -#endif + #ifndef GLAD_PLATFORM_UWP + #define GLAD_PLATFORM_UWP 0 + #endif #endif #ifdef __GNUC__ -#define GLAD_GNUC_EXTENSION __extension__ + #define GLAD_GNUC_EXTENSION __extension__ #else -#define GLAD_GNUC_EXTENSION + #define GLAD_GNUC_EXTENSION #endif #define GLAD_UNUSED(x) (void)(x) #ifndef GLAD_API_CALL -#if defined(GLAD_API_CALL_EXPORT) -#if GLAD_PLATFORM_WIN32 || defined(__CYGWIN__) -#if defined(GLAD_API_CALL_EXPORT_BUILD) -#if defined(__GNUC__) -#define GLAD_API_CALL __attribute__ ((dllexport)) extern -#else -#define GLAD_API_CALL __declspec(dllexport) extern -#endif -#else -#if defined(__GNUC__) -#define GLAD_API_CALL __attribute__ ((dllimport)) extern -#else -#define GLAD_API_CALL __declspec(dllimport) extern -#endif -#endif -#elif defined(__GNUC__) && defined(GLAD_API_CALL_EXPORT_BUILD) -#define GLAD_API_CALL __attribute__ ((visibility ("default"))) extern -#else -#define GLAD_API_CALL extern -#endif -#else -#define GLAD_API_CALL extern -#endif + #if defined(GLAD_API_CALL_EXPORT) + #if GLAD_PLATFORM_WIN32 || defined(__CYGWIN__) + #if defined(GLAD_API_CALL_EXPORT_BUILD) + #if defined(__GNUC__) + #define GLAD_API_CALL __attribute__ ((dllexport)) extern + #else + #define GLAD_API_CALL __declspec(dllexport) extern + #endif + #else + #if defined(__GNUC__) + #define GLAD_API_CALL __attribute__ ((dllimport)) extern + #else + #define GLAD_API_CALL __declspec(dllimport) extern + #endif + #endif + #elif defined(__GNUC__) && defined(GLAD_API_CALL_EXPORT_BUILD) + #define GLAD_API_CALL __attribute__ ((visibility ("default"))) extern + #else + #define GLAD_API_CALL extern + #endif + #else + #define GLAD_API_CALL extern + #endif #endif #ifdef APIENTRY -#define GLAD_API_PTR APIENTRY + #define GLAD_API_PTR APIENTRY #elif GLAD_PLATFORM_WIN32 -#define GLAD_API_PTR __stdcall + #define GLAD_API_PTR __stdcall #else -#define GLAD_API_PTR + #define GLAD_API_PTR #endif #ifndef GLAPI @@ -171,11 +172,11 @@ extern "C" { typedef void (*GLADapiproc)(void); -typedef GLADapiproc(*GLADloadfunc)(const char * name); -typedef GLADapiproc(*GLADuserptrloadfunc)(void * userptr, const char * name); +typedef GLADapiproc (*GLADloadfunc)(const char *name); +typedef GLADapiproc (*GLADuserptrloadfunc)(void *userptr, const char *name); -typedef void (*GLADprecallback)(const char * name, GLADapiproc apiproc, int len_args, ...); -typedef void (*GLADpostcallback)(void * ret, const char * name, GLADapiproc apiproc, int len_args, ...); +typedef void (*GLADprecallback)(const char *name, GLADapiproc apiproc, int len_args, ...); +typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apiproc, int len_args, ...); #endif /* GLAD_PLATFORM_H_ */ @@ -187,12 +188,16 @@ typedef void (*GLADpostcallback)(void * ret, const char * name, GLADapiproc apip #define GL_ALIASED_LINE_WIDTH_RANGE 0x846E #define GL_ALIASED_POINT_SIZE_RANGE 0x846D #define GL_ALPHA 0x1906 +#define GL_ALPHA16F_EXT 0x881C +#define GL_ALPHA32F_EXT 0x8816 +#define GL_ALPHA8_EXT 0x803C #define GL_ALPHA_BITS 0x0D55 #define GL_ALWAYS 0x0207 #define GL_ARRAY_BUFFER 0x8892 #define GL_ARRAY_BUFFER_BINDING 0x8894 #define GL_ATTACHED_SHADERS 0x8B85 #define GL_BACK 0x0405 +#define GL_BGRA8_EXT 0x93A1 #define GL_BGRA_EXT 0x80E1 #define GL_BLEND 0x0BE2 #define GL_BLEND_COLOR 0x8005 @@ -238,6 +243,7 @@ typedef void (*GLADpostcallback)(void * ret, const char * name, GLADapiproc apip #define GL_DEPTH_CLEAR_VALUE 0x0B73 #define GL_DEPTH_COMPONENT 0x1902 #define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 #define GL_DEPTH_FUNC 0x0B74 #define GL_DEPTH_RANGE 0x0B70 #define GL_DEPTH_TEST 0x0B71 @@ -263,6 +269,7 @@ typedef void (*GLADpostcallback)(void * ret, const char * name, GLADapiproc apip #define GL_FLOAT_VEC4 0x8B52 #define GL_FRAGMENT_SHADER 0x8B30 #define GL_FRAMEBUFFER 0x8D40 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 @@ -283,6 +290,7 @@ typedef void (*GLADpostcallback)(void * ret, const char * name, GLADapiproc apip #define GL_GEQUAL 0x0206 #define GL_GREATER 0x0204 #define GL_GREEN_BITS 0x0D53 +#define GL_HALF_FLOAT_OES 0x8D61 #define GL_HIGH_FLOAT 0x8DF2 #define GL_HIGH_INT 0x8DF5 #define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B @@ -291,6 +299,7 @@ typedef void (*GLADpostcallback)(void * ret, const char * name, GLADapiproc apip #define GL_INCR_WRAP 0x8507 #define GL_INFO_LOG_LENGTH 0x8B84 #define GL_INT 0x1404 +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C #define GL_INT_VEC2 0x8B53 #define GL_INT_VEC3 0x8B54 #define GL_INT_VEC4 0x8B55 @@ -313,7 +322,13 @@ typedef void (*GLADpostcallback)(void * ret, const char * name, GLADapiproc apip #define GL_LOW_FLOAT 0x8DF0 #define GL_LOW_INT 0x8DF3 #define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_LUMINANCE8_EXT 0x8040 #define GL_LUMINANCE_ALPHA 0x190A +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 #define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D #define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C #define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD @@ -351,6 +366,9 @@ typedef void (*GLADpostcallback)(void * ret, const char * name, GLADapiproc apip #define GL_POLYGON_OFFSET_FACTOR 0x8038 #define GL_POLYGON_OFFSET_FILL 0x8037 #define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_R16F_EXT 0x822D +#define GL_R32F_EXT 0x822E +#define GL_R8_EXT 0x8229 #define GL_RED_BITS 0x0D52 #define GL_RENDERBUFFER 0x8D41 #define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 @@ -366,12 +384,24 @@ typedef void (*GLADpostcallback)(void * ret, const char * name, GLADapiproc apip #define GL_RENDERER 0x1F01 #define GL_REPEAT 0x2901 #define GL_REPLACE 0x1E01 +#define GL_RG16F_EXT 0x822F +#define GL_RG32F_EXT 0x8230 +#define GL_RG8_EXT 0x822B #define GL_RGB 0x1907 +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB16F_EXT 0x881B +#define GL_RGB32F_EXT 0x8815 #define GL_RGB565 0x8D62 #define GL_RGB5_A1 0x8057 +#define GL_RGB8_OES 0x8051 #define GL_RGBA 0x1908 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGBA32F_EXT 0x8814 #define GL_RGBA4 0x8056 +#define GL_RGBA8_OES 0x8058 #define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B #define GL_SAMPLER_CUBE 0x8B60 #define GL_SAMPLES 0x80A9 #define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E @@ -447,7 +477,9 @@ typedef void (*GLADpostcallback)(void * ret, const char * name, GLADapiproc apip #define GL_TEXTURE8 0x84C8 #define GL_TEXTURE9 0x84C9 #define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102 #define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105 #define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 #define GL_TEXTURE_CUBE_MAP 0x8513 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 @@ -456,6 +488,7 @@ typedef void (*GLADpostcallback)(void * ret, const char * name, GLADapiproc apip #define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F #define GL_TEXTURE_MAG_FILTER 0x2800 #define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D #define GL_TEXTURE_MIN_FILTER 0x2801 @@ -471,6 +504,8 @@ typedef void (*GLADpostcallback)(void * ret, const char * name, GLADapiproc apip #define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 #define GL_UNSIGNED_BYTE 0x1401 #define GL_UNSIGNED_INT 0x1405 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D +#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 #define GL_UNSIGNED_SHORT 0x1403 #define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 #define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 @@ -509,12 +544,12 @@ typedef khronos_float_t GLfloat; typedef khronos_float_t GLclampf; typedef double GLdouble; typedef double GLclampd; -typedef void * GLeglClientBufferEXT; -typedef void * GLeglImageOES; +typedef void *GLeglClientBufferEXT; +typedef void *GLeglImageOES; typedef char GLchar; typedef char GLcharARB; #ifdef __APPLE__ -typedef void * GLhandleARB; +typedef void *GLhandleARB; #else typedef unsigned int GLhandleARB; #endif @@ -545,211 +580,206 @@ typedef khronos_int64_t GLint64; typedef khronos_int64_t GLint64EXT; typedef khronos_uint64_t GLuint64; typedef khronos_uint64_t GLuint64EXT; -typedef struct __GLsync * GLsync; +typedef struct __GLsync *GLsync; struct _cl_context; struct _cl_event; -typedef void (GLAD_API_PTR * GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, - const GLchar * message, const void * userParam); -typedef void (GLAD_API_PTR * GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, - const GLchar * message, const void * userParam); -typedef void (GLAD_API_PTR * GLDEBUGPROCKHR)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, - const GLchar * message, const void * userParam); -typedef void (GLAD_API_PTR * GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, - const GLchar * message, void * userParam); +typedef void (GLAD_API_PTR *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (GLAD_API_PTR *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (GLAD_API_PTR *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (GLAD_API_PTR *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); typedef unsigned short GLhalfNV; typedef GLintptr GLvdpauSurfaceNV; -typedef void (GLAD_API_PTR * GLVULKANPROCNV)(void); +typedef void (GLAD_API_PTR *GLVULKANPROCNV)(void); #define GL_ES_VERSION_2_0 1 GLAD_API_CALL int GLAD_GL_ES_VERSION_2_0; #define GL_APPLE_texture_max_level 1 GLAD_API_CALL int GLAD_GL_APPLE_texture_max_level; +#define GL_ARM_rgba8 1 +GLAD_API_CALL int GLAD_GL_ARM_rgba8; +#define GL_EXT_color_buffer_float 1 +GLAD_API_CALL int GLAD_GL_EXT_color_buffer_float; +#define GL_EXT_color_buffer_half_float 1 +GLAD_API_CALL int GLAD_GL_EXT_color_buffer_half_float; #define GL_EXT_texture_format_BGRA8888 1 GLAD_API_CALL int GLAD_GL_EXT_texture_format_BGRA8888; +#define GL_EXT_texture_storage 1 +GLAD_API_CALL int GLAD_GL_EXT_texture_storage; #define GL_EXT_unpack_subimage 1 GLAD_API_CALL int GLAD_GL_EXT_unpack_subimage; +#define GL_OES_depth24 1 +GLAD_API_CALL int GLAD_GL_OES_depth24; #define GL_OES_mapbuffer 1 GLAD_API_CALL int GLAD_GL_OES_mapbuffer; +#define GL_OES_rgb8_rgba8 1 +GLAD_API_CALL int GLAD_GL_OES_rgb8_rgba8; +#define GL_OES_texture_float 1 +GLAD_API_CALL int GLAD_GL_OES_texture_float; +#define GL_OES_texture_half_float 1 +GLAD_API_CALL int GLAD_GL_OES_texture_half_float; +#define GL_OES_texture_storage_multisample_2d_array 1 +GLAD_API_CALL int GLAD_GL_OES_texture_storage_multisample_2d_array; #define GL_OES_vertex_array_object 1 GLAD_API_CALL int GLAD_GL_OES_vertex_array_object; -typedef void (GLAD_API_PTR * PFNGLACTIVETEXTUREPROC)(GLenum texture); -typedef void (GLAD_API_PTR * PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); -typedef void (GLAD_API_PTR * PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar * name); -typedef void (GLAD_API_PTR * PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); -typedef void (GLAD_API_PTR * PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); -typedef void (GLAD_API_PTR * PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); -typedef void (GLAD_API_PTR * PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); -typedef void (GLAD_API_PTR * PFNGLBINDVERTEXARRAYOESPROC)(GLuint array); -typedef void (GLAD_API_PTR * PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -typedef void (GLAD_API_PTR * PFNGLBLENDEQUATIONPROC)(GLenum mode); -typedef void (GLAD_API_PTR * PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); -typedef void (GLAD_API_PTR * PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); -typedef void (GLAD_API_PTR * PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, - GLenum dfactorAlpha); -typedef void (GLAD_API_PTR * PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void * data, GLenum usage); -typedef void (GLAD_API_PTR * PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, - const void * data); -typedef GLenum(GLAD_API_PTR * PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); -typedef void (GLAD_API_PTR * PFNGLCLEARPROC)(GLbitfield mask); -typedef void (GLAD_API_PTR * PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -typedef void (GLAD_API_PTR * PFNGLCLEARDEPTHFPROC)(GLfloat d); -typedef void (GLAD_API_PTR * PFNGLCLEARSTENCILPROC)(GLint s); -typedef void (GLAD_API_PTR * PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -typedef void (GLAD_API_PTR * PFNGLCOMPILESHADERPROC)(GLuint shader); -typedef void (GLAD_API_PTR * PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, - GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data); -typedef void (GLAD_API_PTR * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, - GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data); -typedef void (GLAD_API_PTR * PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, - GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (GLAD_API_PTR * PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, - GLint x, GLint y, GLsizei width, GLsizei height); -typedef GLuint(GLAD_API_PTR * PFNGLCREATEPROGRAMPROC)(void); -typedef GLuint(GLAD_API_PTR * PFNGLCREATESHADERPROC)(GLenum type); -typedef void (GLAD_API_PTR * PFNGLCULLFACEPROC)(GLenum mode); -typedef void (GLAD_API_PTR * PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint * buffers); -typedef void (GLAD_API_PTR * PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint * framebuffers); -typedef void (GLAD_API_PTR * PFNGLDELETEPROGRAMPROC)(GLuint program); -typedef void (GLAD_API_PTR * PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint * renderbuffers); -typedef void (GLAD_API_PTR * PFNGLDELETESHADERPROC)(GLuint shader); -typedef void (GLAD_API_PTR * PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint * textures); -typedef void (GLAD_API_PTR * PFNGLDELETEVERTEXARRAYSOESPROC)(GLsizei n, const GLuint * arrays); -typedef void (GLAD_API_PTR * PFNGLDEPTHFUNCPROC)(GLenum func); -typedef void (GLAD_API_PTR * PFNGLDEPTHMASKPROC)(GLboolean flag); -typedef void (GLAD_API_PTR * PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); -typedef void (GLAD_API_PTR * PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); -typedef void (GLAD_API_PTR * PFNGLDISABLEPROC)(GLenum cap); -typedef void (GLAD_API_PTR * PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); -typedef void (GLAD_API_PTR * PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); -typedef void (GLAD_API_PTR * PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices); -typedef void (GLAD_API_PTR * PFNGLENABLEPROC)(GLenum cap); -typedef void (GLAD_API_PTR * PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); -typedef void (GLAD_API_PTR * PFNGLFINISHPROC)(void); -typedef void (GLAD_API_PTR * PFNGLFLUSHPROC)(void); -typedef void (GLAD_API_PTR * PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, - GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (GLAD_API_PTR * PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, - GLuint texture, GLint level); -typedef void (GLAD_API_PTR * PFNGLFRONTFACEPROC)(GLenum mode); -typedef void (GLAD_API_PTR * PFNGLGENBUFFERSPROC)(GLsizei n, GLuint * buffers); -typedef void (GLAD_API_PTR * PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint * framebuffers); -typedef void (GLAD_API_PTR * PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint * renderbuffers); -typedef void (GLAD_API_PTR * PFNGLGENTEXTURESPROC)(GLsizei n, GLuint * textures); -typedef void (GLAD_API_PTR * PFNGLGENVERTEXARRAYSOESPROC)(GLsizei n, GLuint * arrays); -typedef void (GLAD_API_PTR * PFNGLGENERATEMIPMAPPROC)(GLenum target); -typedef void (GLAD_API_PTR * PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, - GLint * size, GLenum * type, GLchar * name); -typedef void (GLAD_API_PTR * PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, - GLint * size, GLenum * type, GLchar * name); -typedef void (GLAD_API_PTR * PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei * count, - GLuint * shaders); -typedef GLint(GLAD_API_PTR * PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar * name); -typedef void (GLAD_API_PTR * PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean * data); -typedef void (GLAD_API_PTR * PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params); -typedef void (GLAD_API_PTR * PFNGLGETBUFFERPOINTERVOESPROC)(GLenum target, GLenum pname, void ** params); -typedef GLenum(GLAD_API_PTR * PFNGLGETERRORPROC)(void); -typedef void (GLAD_API_PTR * PFNGLGETFLOATVPROC)(GLenum pname, GLfloat * data); -typedef void (GLAD_API_PTR * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, - GLenum pname, GLint * params); -typedef void (GLAD_API_PTR * PFNGLGETINTEGERVPROC)(GLenum pname, GLint * data); -typedef void (GLAD_API_PTR * PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei * length, - GLchar * infoLog); -typedef void (GLAD_API_PTR * PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint * params); -typedef void (GLAD_API_PTR * PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params); -typedef void (GLAD_API_PTR * PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei * length, - GLchar * infoLog); -typedef void (GLAD_API_PTR * PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum shadertype, GLenum precisiontype, GLint * range, - GLint * precision); -typedef void (GLAD_API_PTR * PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei * length, - GLchar * source); -typedef void (GLAD_API_PTR * PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint * params); -typedef const GLubyte * (GLAD_API_PTR * PFNGLGETSTRINGPROC)(GLenum name); -typedef void (GLAD_API_PTR * PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat * params); -typedef void (GLAD_API_PTR * PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params); -typedef GLint(GLAD_API_PTR * PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar * name); -typedef void (GLAD_API_PTR * PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat * params); -typedef void (GLAD_API_PTR * PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint * params); -typedef void (GLAD_API_PTR * PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void ** pointer); -typedef void (GLAD_API_PTR * PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat * params); -typedef void (GLAD_API_PTR * PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint * params); -typedef void (GLAD_API_PTR * PFNGLHINTPROC)(GLenum target, GLenum mode); -typedef GLboolean(GLAD_API_PTR * PFNGLISBUFFERPROC)(GLuint buffer); -typedef GLboolean(GLAD_API_PTR * PFNGLISENABLEDPROC)(GLenum cap); -typedef GLboolean(GLAD_API_PTR * PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); -typedef GLboolean(GLAD_API_PTR * PFNGLISPROGRAMPROC)(GLuint program); -typedef GLboolean(GLAD_API_PTR * PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); -typedef GLboolean(GLAD_API_PTR * PFNGLISSHADERPROC)(GLuint shader); -typedef GLboolean(GLAD_API_PTR * PFNGLISTEXTUREPROC)(GLuint texture); -typedef GLboolean(GLAD_API_PTR * PFNGLISVERTEXARRAYOESPROC)(GLuint array); -typedef void (GLAD_API_PTR * PFNGLLINEWIDTHPROC)(GLfloat width); -typedef void (GLAD_API_PTR * PFNGLLINKPROGRAMPROC)(GLuint program); -typedef void * (GLAD_API_PTR * PFNGLMAPBUFFEROESPROC)(GLenum target, GLenum access); -typedef void (GLAD_API_PTR * PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); -typedef void (GLAD_API_PTR * PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); -typedef void (GLAD_API_PTR * PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, - GLenum type, void * pixels); -typedef void (GLAD_API_PTR * PFNGLRELEASESHADERCOMPILERPROC)(void); -typedef void (GLAD_API_PTR * PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, - GLsizei height); -typedef void (GLAD_API_PTR * PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); -typedef void (GLAD_API_PTR * PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAD_API_PTR * PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint * shaders, GLenum binaryFormat, - const void * binary, GLsizei length); -typedef void (GLAD_API_PTR * PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar * const * string, - const GLint * length); -typedef void (GLAD_API_PTR * PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); -typedef void (GLAD_API_PTR * PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask); -typedef void (GLAD_API_PTR * PFNGLSTENCILMASKPROC)(GLuint mask); -typedef void (GLAD_API_PTR * PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); -typedef void (GLAD_API_PTR * PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); -typedef void (GLAD_API_PTR * PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -typedef void (GLAD_API_PTR * PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, - GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels); -typedef void (GLAD_API_PTR * PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); -typedef void (GLAD_API_PTR * PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat * params); -typedef void (GLAD_API_PTR * PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); -typedef void (GLAD_API_PTR * PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint * params); -typedef void (GLAD_API_PTR * PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, - GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels); -typedef void (GLAD_API_PTR * PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); -typedef void (GLAD_API_PTR * PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat * value); -typedef void (GLAD_API_PTR * PFNGLUNIFORM1IPROC)(GLint location, GLint v0); -typedef void (GLAD_API_PTR * PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint * value); -typedef void (GLAD_API_PTR * PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); -typedef void (GLAD_API_PTR * PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat * value); -typedef void (GLAD_API_PTR * PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); -typedef void (GLAD_API_PTR * PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint * value); -typedef void (GLAD_API_PTR * PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (GLAD_API_PTR * PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat * value); -typedef void (GLAD_API_PTR * PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); -typedef void (GLAD_API_PTR * PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint * value); -typedef void (GLAD_API_PTR * PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (GLAD_API_PTR * PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat * value); -typedef void (GLAD_API_PTR * PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (GLAD_API_PTR * PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint * value); -typedef void (GLAD_API_PTR * PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, - const GLfloat * value); -typedef void (GLAD_API_PTR * PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, - const GLfloat * value); -typedef void (GLAD_API_PTR * PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, - const GLfloat * value); -typedef GLboolean(GLAD_API_PTR * PFNGLUNMAPBUFFEROESPROC)(GLenum target); -typedef void (GLAD_API_PTR * PFNGLUSEPROGRAMPROC)(GLuint program); -typedef void (GLAD_API_PTR * PFNGLVALIDATEPROGRAMPROC)(GLuint program); -typedef void (GLAD_API_PTR * PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); -typedef void (GLAD_API_PTR * PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat * v); -typedef void (GLAD_API_PTR * PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); -typedef void (GLAD_API_PTR * PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat * v); -typedef void (GLAD_API_PTR * PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAD_API_PTR * PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat * v); -typedef void (GLAD_API_PTR * PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAD_API_PTR * PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat * v); -typedef void (GLAD_API_PTR * PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, - GLsizei stride, const void * pointer); -typedef void (GLAD_API_PTR * PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAD_API_PTR *PFNGLACTIVETEXTUREPROC)(GLenum texture); +typedef void (GLAD_API_PTR *PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); +typedef void (GLAD_API_PTR *PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar * name); +typedef void (GLAD_API_PTR *PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); +typedef void (GLAD_API_PTR *PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); +typedef void (GLAD_API_PTR *PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); +typedef void (GLAD_API_PTR *PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); +typedef void (GLAD_API_PTR *PFNGLBINDVERTEXARRAYOESPROC)(GLuint array); +typedef void (GLAD_API_PTR *PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GLAD_API_PTR *PFNGLBLENDEQUATIONPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAD_API_PTR *PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); +typedef void (GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (GLAD_API_PTR *PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void * data, GLenum usage); +typedef void (GLAD_API_PTR *PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void * data); +typedef GLenum (GLAD_API_PTR *PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); +typedef void (GLAD_API_PTR *PFNGLCLEARPROC)(GLbitfield mask); +typedef void (GLAD_API_PTR *PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GLAD_API_PTR *PFNGLCLEARDEPTHFPROC)(GLfloat d); +typedef void (GLAD_API_PTR *PFNGLCLEARSTENCILPROC)(GLint s); +typedef void (GLAD_API_PTR *PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +typedef void (GLAD_API_PTR *PFNGLCOMPILESHADERPROC)(GLuint shader); +typedef void (GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data); +typedef void (GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data); +typedef void (GLAD_API_PTR *PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef GLuint (GLAD_API_PTR *PFNGLCREATEPROGRAMPROC)(void); +typedef GLuint (GLAD_API_PTR *PFNGLCREATESHADERPROC)(GLenum type); +typedef void (GLAD_API_PTR *PFNGLCULLFACEPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint * buffers); +typedef void (GLAD_API_PTR *PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint * framebuffers); +typedef void (GLAD_API_PTR *PFNGLDELETEPROGRAMPROC)(GLuint program); +typedef void (GLAD_API_PTR *PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint * renderbuffers); +typedef void (GLAD_API_PTR *PFNGLDELETESHADERPROC)(GLuint shader); +typedef void (GLAD_API_PTR *PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint * textures); +typedef void (GLAD_API_PTR *PFNGLDELETEVERTEXARRAYSOESPROC)(GLsizei n, const GLuint * arrays); +typedef void (GLAD_API_PTR *PFNGLDEPTHFUNCPROC)(GLenum func); +typedef void (GLAD_API_PTR *PFNGLDEPTHMASKPROC)(GLboolean flag); +typedef void (GLAD_API_PTR *PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); +typedef void (GLAD_API_PTR *PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); +typedef void (GLAD_API_PTR *PFNGLDISABLEPROC)(GLenum cap); +typedef void (GLAD_API_PTR *PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); +typedef void (GLAD_API_PTR *PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); +typedef void (GLAD_API_PTR *PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices); +typedef void (GLAD_API_PTR *PFNGLENABLEPROC)(GLenum cap); +typedef void (GLAD_API_PTR *PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); +typedef void (GLAD_API_PTR *PFNGLFINISHPROC)(void); +typedef void (GLAD_API_PTR *PFNGLFLUSHPROC)(void); +typedef void (GLAD_API_PTR *PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAD_API_PTR *PFNGLFRONTFACEPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLGENBUFFERSPROC)(GLsizei n, GLuint * buffers); +typedef void (GLAD_API_PTR *PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint * framebuffers); +typedef void (GLAD_API_PTR *PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint * renderbuffers); +typedef void (GLAD_API_PTR *PFNGLGENTEXTURESPROC)(GLsizei n, GLuint * textures); +typedef void (GLAD_API_PTR *PFNGLGENVERTEXARRAYSOESPROC)(GLsizei n, GLuint * arrays); +typedef void (GLAD_API_PTR *PFNGLGENERATEMIPMAPPROC)(GLenum target); +typedef void (GLAD_API_PTR *PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name); +typedef void (GLAD_API_PTR *PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name); +typedef void (GLAD_API_PTR *PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * shaders); +typedef GLint (GLAD_API_PTR *PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar * name); +typedef void (GLAD_API_PTR *PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean * data); +typedef void (GLAD_API_PTR *PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETBUFFERPOINTERVOESPROC)(GLenum target, GLenum pname, void ** params); +typedef GLenum (GLAD_API_PTR *PFNGLGETERRORPROC)(void); +typedef void (GLAD_API_PTR *PFNGLGETFLOATVPROC)(GLenum pname, GLfloat * data); +typedef void (GLAD_API_PTR *PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETINTEGERVPROC)(GLenum pname, GLint * data); +typedef void (GLAD_API_PTR *PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog); +typedef void (GLAD_API_PTR *PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog); +typedef void (GLAD_API_PTR *PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum shadertype, GLenum precisiontype, GLint * range, GLint * precision); +typedef void (GLAD_API_PTR *PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source); +typedef void (GLAD_API_PTR *PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint * params); +typedef const GLubyte * (GLAD_API_PTR *PFNGLGETSTRINGPROC)(GLenum name); +typedef void (GLAD_API_PTR *PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params); +typedef GLint (GLAD_API_PTR *PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar * name); +typedef void (GLAD_API_PTR *PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void ** pointer); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLHINTPROC)(GLenum target, GLenum mode); +typedef GLboolean (GLAD_API_PTR *PFNGLISBUFFERPROC)(GLuint buffer); +typedef GLboolean (GLAD_API_PTR *PFNGLISENABLEDPROC)(GLenum cap); +typedef GLboolean (GLAD_API_PTR *PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); +typedef GLboolean (GLAD_API_PTR *PFNGLISPROGRAMPROC)(GLuint program); +typedef GLboolean (GLAD_API_PTR *PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); +typedef GLboolean (GLAD_API_PTR *PFNGLISSHADERPROC)(GLuint shader); +typedef GLboolean (GLAD_API_PTR *PFNGLISTEXTUREPROC)(GLuint texture); +typedef GLboolean (GLAD_API_PTR *PFNGLISVERTEXARRAYOESPROC)(GLuint array); +typedef void (GLAD_API_PTR *PFNGLLINEWIDTHPROC)(GLfloat width); +typedef void (GLAD_API_PTR *PFNGLLINKPROGRAMPROC)(GLuint program); +typedef void * (GLAD_API_PTR *PFNGLMAPBUFFEROESPROC)(GLenum target, GLenum access); +typedef void (GLAD_API_PTR *PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); +typedef void (GLAD_API_PTR *PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void * pixels); +typedef void (GLAD_API_PTR *PFNGLRELEASESHADERCOMPILERPROC)(void); +typedef void (GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAD_API_PTR *PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); +typedef void (GLAD_API_PTR *PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAD_API_PTR *PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint * shaders, GLenum binaryFormat, const void * binary, GLsizei length); +typedef void (GLAD_API_PTR *PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length); +typedef void (GLAD_API_PTR *PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); +typedef void (GLAD_API_PTR *PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask); +typedef void (GLAD_API_PTR *PFNGLSTENCILMASKPROC)(GLuint mask); +typedef void (GLAD_API_PTR *PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); +typedef void (GLAD_API_PTR *PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); +typedef void (GLAD_API_PTR *PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (GLAD_API_PTR *PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels); +typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); +typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint * params); +typedef void (GLAD_API_PTR *PFNGLTEXSTORAGE1DEXTPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GLAD_API_PTR *PFNGLTEXSTORAGE2DEXTPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAD_API_PTR *PFNGLTEXSTORAGE3DEXTPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GLAD_API_PTR *PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (GLAD_API_PTR *PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels); +typedef void (GLAD_API_PTR *PFNGLTEXTURESTORAGE1DEXTPROC)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GLAD_API_PTR *PFNGLTEXTURESTORAGE2DEXTPROC)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAD_API_PTR *PFNGLTEXTURESTORAGE3DEXTPROC)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1IPROC)(GLint location, GLint v0); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GLAD_API_PTR *PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GLAD_API_PTR *PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GLAD_API_PTR *PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAD_API_PTR *PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); +typedef GLboolean (GLAD_API_PTR *PFNGLUNMAPBUFFEROESPROC)(GLenum target); +typedef void (GLAD_API_PTR *PFNGLUSEPROGRAMPROC)(GLuint program); +typedef void (GLAD_API_PTR *PFNGLVALIDATEPROGRAMPROC)(GLuint program); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer); +typedef void (GLAD_API_PTR *PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); GLAD_API_CALL PFNGLACTIVETEXTUREPROC glad_glActiveTexture; #define glActiveTexture glad_glActiveTexture @@ -983,8 +1013,22 @@ GLAD_API_CALL PFNGLTEXPARAMETERIPROC glad_glTexParameteri; #define glTexParameteri glad_glTexParameteri GLAD_API_CALL PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; #define glTexParameteriv glad_glTexParameteriv +GLAD_API_CALL PFNGLTEXSTORAGE1DEXTPROC glad_glTexStorage1DEXT; +#define glTexStorage1DEXT glad_glTexStorage1DEXT +GLAD_API_CALL PFNGLTEXSTORAGE2DEXTPROC glad_glTexStorage2DEXT; +#define glTexStorage2DEXT glad_glTexStorage2DEXT +GLAD_API_CALL PFNGLTEXSTORAGE3DEXTPROC glad_glTexStorage3DEXT; +#define glTexStorage3DEXT glad_glTexStorage3DEXT +GLAD_API_CALL PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC glad_glTexStorage3DMultisampleOES; +#define glTexStorage3DMultisampleOES glad_glTexStorage3DMultisampleOES GLAD_API_CALL PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; #define glTexSubImage2D glad_glTexSubImage2D +GLAD_API_CALL PFNGLTEXTURESTORAGE1DEXTPROC glad_glTextureStorage1DEXT; +#define glTextureStorage1DEXT glad_glTextureStorage1DEXT +GLAD_API_CALL PFNGLTEXTURESTORAGE2DEXTPROC glad_glTextureStorage2DEXT; +#define glTextureStorage2DEXT glad_glTextureStorage2DEXT +GLAD_API_CALL PFNGLTEXTURESTORAGE3DEXTPROC glad_glTextureStorage3DEXT; +#define glTextureStorage3DEXT glad_glTextureStorage3DEXT GLAD_API_CALL PFNGLUNIFORM1FPROC glad_glUniform1f; #define glUniform1f glad_glUniform1f GLAD_API_CALL PFNGLUNIFORM1FVPROC glad_glUniform1fv; @@ -1054,8 +1098,8 @@ GLAD_API_CALL PFNGLVIEWPORTPROC glad_glViewport; -GLAD_API_CALL int gladLoadGLES2UserPtr(GLADuserptrloadfunc load, void * userptr); -GLAD_API_CALL int gladLoadGLES2(GLADloadfunc load); +GLAD_API_CALL int gladLoadGLES2UserPtr( GLADuserptrloadfunc load, void *userptr); +GLAD_API_CALL int gladLoadGLES2( GLADloadfunc load); diff --git a/src/drivers/opengles/glad/src/egl.c b/src/drivers/opengles/glad/src/egl.c index 13ec667b7a..21bce5d2fc 100644 --- a/src/drivers/opengles/glad/src/egl.c +++ b/src/drivers/opengles/glad/src/egl.c @@ -1,7 +1,8 @@ /** * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 */ -#include "../../lv_opengles_egl.h" + + #include "../../lv_opengles_egl.h" #if LV_USE_EGL @@ -11,13 +12,13 @@ #include "../include/glad/egl.h" #ifndef GLAD_IMPL_UTIL_C_ - #define GLAD_IMPL_UTIL_C_ +#define GLAD_IMPL_UTIL_C_ - #ifdef _MSC_VER - #define GLAD_IMPL_UTIL_SSCANF sscanf_s - #else - #define GLAD_IMPL_UTIL_SSCANF sscanf - #endif +#ifdef _MSC_VER +#define GLAD_IMPL_UTIL_SSCANF sscanf_s +#else +#define GLAD_IMPL_UTIL_SSCANF sscanf +#endif #endif /* GLAD_IMPL_UTIL_C_ */ @@ -37,10 +38,13 @@ int GLAD_EGL_EXT_image_dma_buf_import = 0; int GLAD_EGL_EXT_image_dma_buf_import_modifiers = 0; int GLAD_EGL_EXT_platform_base = 0; int GLAD_EGL_EXT_platform_wayland = 0; +int GLAD_EGL_KHR_cl_event2 = 0; int GLAD_EGL_KHR_fence_sync = 0; +int GLAD_EGL_KHR_image = 0; int GLAD_EGL_KHR_image_base = 0; int GLAD_EGL_KHR_platform_gbm = 0; int GLAD_EGL_KHR_platform_wayland = 0; +int GLAD_EGL_KHR_reusable_sync = 0; @@ -61,6 +65,7 @@ PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC glad_eglCreatePlatformPixmapSurfaceEXT PFNEGLCREATEPLATFORMWINDOWSURFACEPROC glad_eglCreatePlatformWindowSurface = NULL; PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC glad_eglCreatePlatformWindowSurfaceEXT = NULL; PFNEGLCREATESYNCPROC glad_eglCreateSync = NULL; +PFNEGLCREATESYNC64KHRPROC glad_eglCreateSync64KHR = NULL; PFNEGLCREATESYNCKHRPROC glad_eglCreateSyncKHR = NULL; PFNEGLCREATEWINDOWSURFACEPROC glad_eglCreateWindowSurface = NULL; PFNEGLDESTROYCONTEXTPROC glad_eglDestroyContext = NULL; @@ -91,6 +96,7 @@ PFNEGLQUERYSTRINGPROC glad_eglQueryString = NULL; PFNEGLQUERYSURFACEPROC glad_eglQuerySurface = NULL; PFNEGLRELEASETEXIMAGEPROC glad_eglReleaseTexImage = NULL; PFNEGLRELEASETHREADPROC glad_eglReleaseThread = NULL; +PFNEGLSIGNALSYNCKHRPROC glad_eglSignalSyncKHR = NULL; PFNEGLSURFACEATTRIBPROC glad_eglSurfaceAttrib = NULL; PFNEGLSWAPBUFFERSPROC glad_eglSwapBuffers = NULL; PFNEGLSWAPINTERVALPROC glad_eglSwapInterval = NULL; @@ -101,8 +107,7 @@ PFNEGLWAITNATIVEPROC glad_eglWaitNative = NULL; PFNEGLWAITSYNCPROC glad_eglWaitSync = NULL; -static void glad_egl_load_EGL_VERSION_1_0(GLADuserptrloadfunc load, void * userptr) -{ +static void glad_egl_load_EGL_VERSION_1_0( GLADuserptrloadfunc load, void* userptr) { if(!GLAD_EGL_VERSION_1_0) return; glad_eglChooseConfig = (PFNEGLCHOOSECONFIGPROC) load(userptr, "eglChooseConfig"); glad_eglCopyBuffers = (PFNEGLCOPYBUFFERSPROC) load(userptr, "eglCopyBuffers"); @@ -129,38 +134,31 @@ static void glad_egl_load_EGL_VERSION_1_0(GLADuserptrloadfunc load, void * userp glad_eglWaitGL = (PFNEGLWAITGLPROC) load(userptr, "eglWaitGL"); glad_eglWaitNative = (PFNEGLWAITNATIVEPROC) load(userptr, "eglWaitNative"); } -static void glad_egl_load_EGL_VERSION_1_1(GLADuserptrloadfunc load, void * userptr) -{ +static void glad_egl_load_EGL_VERSION_1_1( GLADuserptrloadfunc load, void* userptr) { if(!GLAD_EGL_VERSION_1_1) return; glad_eglBindTexImage = (PFNEGLBINDTEXIMAGEPROC) load(userptr, "eglBindTexImage"); glad_eglReleaseTexImage = (PFNEGLRELEASETEXIMAGEPROC) load(userptr, "eglReleaseTexImage"); glad_eglSurfaceAttrib = (PFNEGLSURFACEATTRIBPROC) load(userptr, "eglSurfaceAttrib"); glad_eglSwapInterval = (PFNEGLSWAPINTERVALPROC) load(userptr, "eglSwapInterval"); } -static void glad_egl_load_EGL_VERSION_1_2(GLADuserptrloadfunc load, void * userptr) -{ +static void glad_egl_load_EGL_VERSION_1_2( GLADuserptrloadfunc load, void* userptr) { if(!GLAD_EGL_VERSION_1_2) return; glad_eglBindAPI = (PFNEGLBINDAPIPROC) load(userptr, "eglBindAPI"); - glad_eglCreatePbufferFromClientBuffer = (PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC) load(userptr, - "eglCreatePbufferFromClientBuffer"); + glad_eglCreatePbufferFromClientBuffer = (PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC) load(userptr, "eglCreatePbufferFromClientBuffer"); glad_eglQueryAPI = (PFNEGLQUERYAPIPROC) load(userptr, "eglQueryAPI"); glad_eglReleaseThread = (PFNEGLRELEASETHREADPROC) load(userptr, "eglReleaseThread"); glad_eglWaitClient = (PFNEGLWAITCLIENTPROC) load(userptr, "eglWaitClient"); } -static void glad_egl_load_EGL_VERSION_1_4(GLADuserptrloadfunc load, void * userptr) -{ +static void glad_egl_load_EGL_VERSION_1_4( GLADuserptrloadfunc load, void* userptr) { if(!GLAD_EGL_VERSION_1_4) return; glad_eglGetCurrentContext = (PFNEGLGETCURRENTCONTEXTPROC) load(userptr, "eglGetCurrentContext"); } -static void glad_egl_load_EGL_VERSION_1_5(GLADuserptrloadfunc load, void * userptr) -{ +static void glad_egl_load_EGL_VERSION_1_5( GLADuserptrloadfunc load, void* userptr) { if(!GLAD_EGL_VERSION_1_5) return; glad_eglClientWaitSync = (PFNEGLCLIENTWAITSYNCPROC) load(userptr, "eglClientWaitSync"); glad_eglCreateImage = (PFNEGLCREATEIMAGEPROC) load(userptr, "eglCreateImage"); - glad_eglCreatePlatformPixmapSurface = (PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC) load(userptr, - "eglCreatePlatformPixmapSurface"); - glad_eglCreatePlatformWindowSurface = (PFNEGLCREATEPLATFORMWINDOWSURFACEPROC) load(userptr, - "eglCreatePlatformWindowSurface"); + glad_eglCreatePlatformPixmapSurface = (PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC) load(userptr, "eglCreatePlatformPixmapSurface"); + glad_eglCreatePlatformWindowSurface = (PFNEGLCREATEPLATFORMWINDOWSURFACEPROC) load(userptr, "eglCreatePlatformWindowSurface"); glad_eglCreateSync = (PFNEGLCREATESYNCPROC) load(userptr, "eglCreateSync"); glad_eglDestroyImage = (PFNEGLDESTROYIMAGEPROC) load(userptr, "eglDestroyImage"); glad_eglDestroySync = (PFNEGLDESTROYSYNCPROC) load(userptr, "eglDestroySync"); @@ -168,49 +166,68 @@ static void glad_egl_load_EGL_VERSION_1_5(GLADuserptrloadfunc load, void * userp glad_eglGetSyncAttrib = (PFNEGLGETSYNCATTRIBPROC) load(userptr, "eglGetSyncAttrib"); glad_eglWaitSync = (PFNEGLWAITSYNCPROC) load(userptr, "eglWaitSync"); } -static void glad_egl_load_EGL_EXT_image_dma_buf_import_modifiers(GLADuserptrloadfunc load, void * userptr) -{ +static void glad_egl_load_EGL_EXT_image_dma_buf_import_modifiers( GLADuserptrloadfunc load, void* userptr) { if(!GLAD_EGL_EXT_image_dma_buf_import_modifiers) return; glad_eglQueryDmaBufFormatsEXT = (PFNEGLQUERYDMABUFFORMATSEXTPROC) load(userptr, "eglQueryDmaBufFormatsEXT"); glad_eglQueryDmaBufModifiersEXT = (PFNEGLQUERYDMABUFMODIFIERSEXTPROC) load(userptr, "eglQueryDmaBufModifiersEXT"); } -static void glad_egl_load_EGL_EXT_platform_base(GLADuserptrloadfunc load, void * userptr) -{ +static void glad_egl_load_EGL_EXT_platform_base( GLADuserptrloadfunc load, void* userptr) { if(!GLAD_EGL_EXT_platform_base) return; - glad_eglCreatePlatformPixmapSurfaceEXT = (PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) load(userptr, - "eglCreatePlatformPixmapSurfaceEXT"); - glad_eglCreatePlatformWindowSurfaceEXT = (PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) load(userptr, - "eglCreatePlatformWindowSurfaceEXT"); + glad_eglCreatePlatformPixmapSurfaceEXT = (PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) load(userptr, "eglCreatePlatformPixmapSurfaceEXT"); + glad_eglCreatePlatformWindowSurfaceEXT = (PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) load(userptr, "eglCreatePlatformWindowSurfaceEXT"); glad_eglGetPlatformDisplayEXT = (PFNEGLGETPLATFORMDISPLAYEXTPROC) load(userptr, "eglGetPlatformDisplayEXT"); } -static void glad_egl_load_EGL_KHR_fence_sync(GLADuserptrloadfunc load, void * userptr) -{ +static void glad_egl_load_EGL_KHR_cl_event2( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_EGL_KHR_cl_event2) return; + glad_eglCreateSync64KHR = (PFNEGLCREATESYNC64KHRPROC) load(userptr, "eglCreateSync64KHR"); +} +static void glad_egl_load_EGL_KHR_fence_sync( GLADuserptrloadfunc load, void* userptr) { if(!GLAD_EGL_KHR_fence_sync) return; glad_eglClientWaitSyncKHR = (PFNEGLCLIENTWAITSYNCKHRPROC) load(userptr, "eglClientWaitSyncKHR"); glad_eglCreateSyncKHR = (PFNEGLCREATESYNCKHRPROC) load(userptr, "eglCreateSyncKHR"); glad_eglDestroySyncKHR = (PFNEGLDESTROYSYNCKHRPROC) load(userptr, "eglDestroySyncKHR"); glad_eglGetSyncAttribKHR = (PFNEGLGETSYNCATTRIBKHRPROC) load(userptr, "eglGetSyncAttribKHR"); } -static void glad_egl_load_EGL_KHR_image_base(GLADuserptrloadfunc load, void * userptr) -{ +static void glad_egl_load_EGL_KHR_image( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_EGL_KHR_image) return; + glad_eglCreateImageKHR = (PFNEGLCREATEIMAGEKHRPROC) load(userptr, "eglCreateImageKHR"); + glad_eglDestroyImageKHR = (PFNEGLDESTROYIMAGEKHRPROC) load(userptr, "eglDestroyImageKHR"); +} +static void glad_egl_load_EGL_KHR_image_base( GLADuserptrloadfunc load, void* userptr) { if(!GLAD_EGL_KHR_image_base) return; glad_eglCreateImageKHR = (PFNEGLCREATEIMAGEKHRPROC) load(userptr, "eglCreateImageKHR"); glad_eglDestroyImageKHR = (PFNEGLDESTROYIMAGEKHRPROC) load(userptr, "eglDestroyImageKHR"); } +static void glad_egl_load_EGL_KHR_reusable_sync( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_EGL_KHR_reusable_sync) return; + glad_eglClientWaitSyncKHR = (PFNEGLCLIENTWAITSYNCKHRPROC) load(userptr, "eglClientWaitSyncKHR"); + glad_eglCreateSyncKHR = (PFNEGLCREATESYNCKHRPROC) load(userptr, "eglCreateSyncKHR"); + glad_eglDestroySyncKHR = (PFNEGLDESTROYSYNCKHRPROC) load(userptr, "eglDestroySyncKHR"); + glad_eglGetSyncAttribKHR = (PFNEGLGETSYNCATTRIBKHRPROC) load(userptr, "eglGetSyncAttribKHR"); + glad_eglSignalSyncKHR = (PFNEGLSIGNALSYNCKHRPROC) load(userptr, "eglSignalSyncKHR"); +} +static void glad_egl_resolve_aliases(void) { + if (glad_eglClientWaitSync == NULL && glad_eglClientWaitSyncKHR != NULL) glad_eglClientWaitSync = (PFNEGLCLIENTWAITSYNCPROC)glad_eglClientWaitSyncKHR; + if (glad_eglClientWaitSyncKHR == NULL && glad_eglClientWaitSync != NULL) glad_eglClientWaitSyncKHR = (PFNEGLCLIENTWAITSYNCKHRPROC)glad_eglClientWaitSync; + if (glad_eglCreateSync == NULL && glad_eglCreateSync64KHR != NULL) glad_eglCreateSync = (PFNEGLCREATESYNCPROC)glad_eglCreateSync64KHR; + if (glad_eglCreateSync64KHR == NULL && glad_eglCreateSync != NULL) glad_eglCreateSync64KHR = (PFNEGLCREATESYNC64KHRPROC)glad_eglCreateSync; + if (glad_eglDestroyImage == NULL && glad_eglDestroyImageKHR != NULL) glad_eglDestroyImage = (PFNEGLDESTROYIMAGEPROC)glad_eglDestroyImageKHR; + if (glad_eglDestroyImageKHR == NULL && glad_eglDestroyImage != NULL) glad_eglDestroyImageKHR = (PFNEGLDESTROYIMAGEKHRPROC)glad_eglDestroyImage; + if (glad_eglDestroySync == NULL && glad_eglDestroySyncKHR != NULL) glad_eglDestroySync = (PFNEGLDESTROYSYNCPROC)glad_eglDestroySyncKHR; + if (glad_eglDestroySyncKHR == NULL && glad_eglDestroySync != NULL) glad_eglDestroySyncKHR = (PFNEGLDESTROYSYNCKHRPROC)glad_eglDestroySync; +} -static int glad_egl_get_extensions(EGLDisplay display, const char ** extensions) -{ +static int glad_egl_get_extensions(EGLDisplay display, const char **extensions) { *extensions = eglQueryString(display, EGL_EXTENSIONS); return extensions != NULL; } -static int glad_egl_has_extension(const char * extensions, const char * ext) -{ - const char * loc; - const char * terminator; +static int glad_egl_has_extension(const char *extensions, const char *ext) { + const char *loc; + const char *terminator; if(extensions == NULL) { return 0; } @@ -221,54 +238,53 @@ static int glad_egl_has_extension(const char * extensions, const char * ext) } terminator = loc + strlen(ext); if((loc == extensions || *(loc - 1) == ' ') && - (*terminator == ' ' || *terminator == '\0')) { + (*terminator == ' ' || *terminator == '\0')) { return 1; } extensions = terminator; } } -static GLADapiproc glad_egl_get_proc_from_userptr(void * userptr, const char * name) -{ - return (GLAD_GNUC_EXTENSION(GLADapiproc(*)(const char * name)) userptr)(name); +static GLADapiproc glad_egl_get_proc_from_userptr(void *userptr, const char *name) { + return (GLAD_GNUC_EXTENSION (GLADapiproc (*)(const char *name)) userptr)(name); } -static int glad_egl_find_extensions_egl(EGLDisplay display) -{ - const char * extensions; - if(!glad_egl_get_extensions(display, &extensions)) return 0; +static int glad_egl_find_extensions_egl(EGLDisplay display) { + const char *extensions; + if (!glad_egl_get_extensions(display, &extensions)) return 0; GLAD_EGL_EXT_image_dma_buf_import = glad_egl_has_extension(extensions, "EGL_EXT_image_dma_buf_import"); - GLAD_EGL_EXT_image_dma_buf_import_modifiers = glad_egl_has_extension(extensions, - "EGL_EXT_image_dma_buf_import_modifiers"); + GLAD_EGL_EXT_image_dma_buf_import_modifiers = glad_egl_has_extension(extensions, "EGL_EXT_image_dma_buf_import_modifiers"); GLAD_EGL_EXT_platform_base = glad_egl_has_extension(extensions, "EGL_EXT_platform_base"); GLAD_EGL_EXT_platform_wayland = glad_egl_has_extension(extensions, "EGL_EXT_platform_wayland"); + GLAD_EGL_KHR_cl_event2 = glad_egl_has_extension(extensions, "EGL_KHR_cl_event2"); GLAD_EGL_KHR_fence_sync = glad_egl_has_extension(extensions, "EGL_KHR_fence_sync"); + GLAD_EGL_KHR_image = glad_egl_has_extension(extensions, "EGL_KHR_image"); GLAD_EGL_KHR_image_base = glad_egl_has_extension(extensions, "EGL_KHR_image_base"); GLAD_EGL_KHR_platform_gbm = glad_egl_has_extension(extensions, "EGL_KHR_platform_gbm"); GLAD_EGL_KHR_platform_wayland = glad_egl_has_extension(extensions, "EGL_KHR_platform_wayland"); + GLAD_EGL_KHR_reusable_sync = glad_egl_has_extension(extensions, "EGL_KHR_reusable_sync"); return 1; } -static int glad_egl_find_core_egl(EGLDisplay display) -{ +static int glad_egl_find_core_egl(EGLDisplay display) { int major, minor; - const char * version; + const char *version; - if(display == NULL) { + if (display == NULL) { display = EGL_NO_DISPLAY; /* this is usually NULL, better safe than sorry */ } - if(display == EGL_NO_DISPLAY) { + if (display == EGL_NO_DISPLAY) { display = eglGetCurrentDisplay(); } #ifdef EGL_VERSION_1_4 - if(display == EGL_NO_DISPLAY) { + if (display == EGL_NO_DISPLAY) { display = eglGetDisplay(EGL_DEFAULT_DISPLAY); } #endif #ifndef EGL_VERSION_1_5 - if(display == EGL_NO_DISPLAY) { + if (display == EGL_NO_DISPLAY) { return 0; } #endif @@ -276,11 +292,10 @@ static int glad_egl_find_core_egl(EGLDisplay display) version = eglQueryString(display, EGL_VERSION); (void) eglGetError(); - if(version == NULL) { + if (version == NULL) { major = 1; minor = 0; - } - else { + } else { GLAD_IMPL_UTIL_SSCANF(version, "%d.%d", &major, &minor); } @@ -294,40 +309,45 @@ static int glad_egl_find_core_egl(EGLDisplay display) return GLAD_MAKE_VERSION(major, minor); } -int gladLoadEGLUserPtr(EGLDisplay display, GLADuserptrloadfunc load, void * userptr) -{ +int gladLoadEGLUserPtr(EGLDisplay display, GLADuserptrloadfunc load, void* userptr) { int version; eglGetDisplay = (PFNEGLGETDISPLAYPROC) load(userptr, "eglGetDisplay"); eglGetCurrentDisplay = (PFNEGLGETCURRENTDISPLAYPROC) load(userptr, "eglGetCurrentDisplay"); eglQueryString = (PFNEGLQUERYSTRINGPROC) load(userptr, "eglQueryString"); eglGetError = (PFNEGLGETERRORPROC) load(userptr, "eglGetError"); - if(eglGetDisplay == NULL || eglGetCurrentDisplay == NULL || eglQueryString == NULL || eglGetError == NULL) return 0; + if (eglGetDisplay == NULL || eglGetCurrentDisplay == NULL || eglQueryString == NULL || eglGetError == NULL) return 0; version = glad_egl_find_core_egl(display); - if(!version) return 0; + if (!version) return 0; glad_egl_load_EGL_VERSION_1_0(load, userptr); glad_egl_load_EGL_VERSION_1_1(load, userptr); glad_egl_load_EGL_VERSION_1_2(load, userptr); glad_egl_load_EGL_VERSION_1_4(load, userptr); glad_egl_load_EGL_VERSION_1_5(load, userptr); - if(!glad_egl_find_extensions_egl(display)) return 0; + if (!glad_egl_find_extensions_egl(display)) return 0; glad_egl_load_EGL_EXT_image_dma_buf_import_modifiers(load, userptr); glad_egl_load_EGL_EXT_platform_base(load, userptr); + glad_egl_load_EGL_KHR_cl_event2(load, userptr); glad_egl_load_EGL_KHR_fence_sync(load, userptr); + glad_egl_load_EGL_KHR_image(load, userptr); glad_egl_load_EGL_KHR_image_base(load, userptr); + glad_egl_load_EGL_KHR_reusable_sync(load, userptr); + glad_egl_resolve_aliases(); return version; } -int gladLoadEGL(EGLDisplay display, GLADloadfunc load) -{ - return gladLoadEGLUserPtr(display, glad_egl_get_proc_from_userptr, GLAD_GNUC_EXTENSION(void *) load); +int gladLoadEGL(EGLDisplay display, GLADloadfunc load) { + return gladLoadEGLUserPtr(display, glad_egl_get_proc_from_userptr, GLAD_GNUC_EXTENSION (void*) load); } + + + #ifdef __cplusplus } #endif -#endif /*LV_USE_EGL*/ +#endif /*LV_USE_EGL*/ \ No newline at end of file diff --git a/src/drivers/opengles/glad/src/gles2.c b/src/drivers/opengles/glad/src/gles2.c index 10809582b9..9bf6190e43 100644 --- a/src/drivers/opengles/glad/src/gles2.c +++ b/src/drivers/opengles/glad/src/gles2.c @@ -1,7 +1,6 @@ /** * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 */ - #include "../../lv_opengles_egl.h" #if LV_USE_EGL @@ -12,13 +11,13 @@ #include "../include/glad/gles2.h" #ifndef GLAD_IMPL_UTIL_C_ - #define GLAD_IMPL_UTIL_C_ +#define GLAD_IMPL_UTIL_C_ - #ifdef _MSC_VER - #define GLAD_IMPL_UTIL_SSCANF sscanf_s - #else - #define GLAD_IMPL_UTIL_SSCANF sscanf - #endif +#ifdef _MSC_VER +#define GLAD_IMPL_UTIL_SSCANF sscanf_s +#else +#define GLAD_IMPL_UTIL_SSCANF sscanf +#endif #endif /* GLAD_IMPL_UTIL_C_ */ @@ -30,9 +29,18 @@ extern "C" { int GLAD_GL_ES_VERSION_2_0 = 0; int GLAD_GL_APPLE_texture_max_level = 0; +int GLAD_GL_ARM_rgba8 = 0; +int GLAD_GL_EXT_color_buffer_float = 0; +int GLAD_GL_EXT_color_buffer_half_float = 0; int GLAD_GL_EXT_texture_format_BGRA8888 = 0; +int GLAD_GL_EXT_texture_storage = 0; int GLAD_GL_EXT_unpack_subimage = 0; +int GLAD_GL_OES_depth24 = 0; int GLAD_GL_OES_mapbuffer = 0; +int GLAD_GL_OES_rgb8_rgba8 = 0; +int GLAD_GL_OES_texture_float = 0; +int GLAD_GL_OES_texture_half_float = 0; +int GLAD_GL_OES_texture_storage_multisample_2d_array = 0; int GLAD_GL_OES_vertex_array_object = 0; @@ -153,7 +161,14 @@ PFNGLTEXPARAMETERFPROC glad_glTexParameterf = NULL; PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv = NULL; PFNGLTEXPARAMETERIPROC glad_glTexParameteri = NULL; PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv = NULL; +PFNGLTEXSTORAGE1DEXTPROC glad_glTexStorage1DEXT = NULL; +PFNGLTEXSTORAGE2DEXTPROC glad_glTexStorage2DEXT = NULL; +PFNGLTEXSTORAGE3DEXTPROC glad_glTexStorage3DEXT = NULL; +PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC glad_glTexStorage3DMultisampleOES = NULL; PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D = NULL; +PFNGLTEXTURESTORAGE1DEXTPROC glad_glTextureStorage1DEXT = NULL; +PFNGLTEXTURESTORAGE2DEXTPROC glad_glTextureStorage2DEXT = NULL; +PFNGLTEXTURESTORAGE3DEXTPROC glad_glTextureStorage3DEXT = NULL; PFNGLUNIFORM1FPROC glad_glUniform1f = NULL; PFNGLUNIFORM1FVPROC glad_glUniform1fv = NULL; PFNGLUNIFORM1IPROC glad_glUniform1i = NULL; @@ -188,8 +203,7 @@ PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer = NULL; PFNGLVIEWPORTPROC glad_glViewport = NULL; -static void glad_gl_load_GL_ES_VERSION_2_0(GLADuserptrloadfunc load, void * userptr) -{ +static void glad_gl_load_GL_ES_VERSION_2_0( GLADuserptrloadfunc load, void* userptr) { if(!GLAD_GL_ES_VERSION_2_0) return; glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC) load(userptr, "glActiveTexture"); glad_glAttachShader = (PFNGLATTACHSHADERPROC) load(userptr, "glAttachShader"); @@ -253,8 +267,7 @@ static void glad_gl_load_GL_ES_VERSION_2_0(GLADuserptrloadfunc load, void * user glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC) load(userptr, "glGetBufferParameteriv"); glad_glGetError = (PFNGLGETERRORPROC) load(userptr, "glGetError"); glad_glGetFloatv = (PFNGLGETFLOATVPROC) load(userptr, "glGetFloatv"); - glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) load(userptr, - "glGetFramebufferAttachmentParameteriv"); + glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) load(userptr, "glGetFramebufferAttachmentParameteriv"); glad_glGetIntegerv = (PFNGLGETINTEGERVPROC) load(userptr, "glGetIntegerv"); glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) load(userptr, "glGetProgramInfoLog"); glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC) load(userptr, "glGetProgramiv"); @@ -335,15 +348,26 @@ static void glad_gl_load_GL_ES_VERSION_2_0(GLADuserptrloadfunc load, void * user glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC) load(userptr, "glVertexAttribPointer"); glad_glViewport = (PFNGLVIEWPORTPROC) load(userptr, "glViewport"); } -static void glad_gl_load_GL_OES_mapbuffer(GLADuserptrloadfunc load, void * userptr) -{ +static void glad_gl_load_GL_EXT_texture_storage( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_EXT_texture_storage) return; + glad_glTexStorage1DEXT = (PFNGLTEXSTORAGE1DEXTPROC) load(userptr, "glTexStorage1DEXT"); + glad_glTexStorage2DEXT = (PFNGLTEXSTORAGE2DEXTPROC) load(userptr, "glTexStorage2DEXT"); + glad_glTexStorage3DEXT = (PFNGLTEXSTORAGE3DEXTPROC) load(userptr, "glTexStorage3DEXT"); + glad_glTextureStorage1DEXT = (PFNGLTEXTURESTORAGE1DEXTPROC) load(userptr, "glTextureStorage1DEXT"); + glad_glTextureStorage2DEXT = (PFNGLTEXTURESTORAGE2DEXTPROC) load(userptr, "glTextureStorage2DEXT"); + glad_glTextureStorage3DEXT = (PFNGLTEXTURESTORAGE3DEXTPROC) load(userptr, "glTextureStorage3DEXT"); +} +static void glad_gl_load_GL_OES_mapbuffer( GLADuserptrloadfunc load, void* userptr) { if(!GLAD_GL_OES_mapbuffer) return; glad_glGetBufferPointervOES = (PFNGLGETBUFFERPOINTERVOESPROC) load(userptr, "glGetBufferPointervOES"); glad_glMapBufferOES = (PFNGLMAPBUFFEROESPROC) load(userptr, "glMapBufferOES"); glad_glUnmapBufferOES = (PFNGLUNMAPBUFFEROESPROC) load(userptr, "glUnmapBufferOES"); } -static void glad_gl_load_GL_OES_vertex_array_object(GLADuserptrloadfunc load, void * userptr) -{ +static void glad_gl_load_GL_OES_texture_storage_multisample_2d_array( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_OES_texture_storage_multisample_2d_array) return; + glad_glTexStorage3DMultisampleOES = (PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC) load(userptr, "glTexStorage3DMultisampleOES"); +} +static void glad_gl_load_GL_OES_vertex_array_object( GLADuserptrloadfunc load, void* userptr) { if(!GLAD_GL_OES_vertex_array_object) return; glad_glBindVertexArrayOES = (PFNGLBINDVERTEXARRAYOESPROC) load(userptr, "glBindVertexArrayOES"); glad_glDeleteVertexArraysOES = (PFNGLDELETEVERTEXARRAYSOESPROC) load(userptr, "glDeleteVertexArraysOES"); @@ -352,35 +376,35 @@ static void glad_gl_load_GL_OES_vertex_array_object(GLADuserptrloadfunc load, vo } +static void glad_gl_resolve_aliases(void) { +} -static void glad_gl_free_extensions(char ** exts_i) -{ - if(exts_i != NULL) { +static void glad_gl_free_extensions(char **exts_i) { + if (exts_i != NULL) { unsigned int index; for(index = 0; exts_i[index]; index++) { - free((void *)(exts_i[index])); + free((void *) (exts_i[index])); } free((void *)exts_i); exts_i = NULL; } } -static int glad_gl_get_extensions(const char ** out_exts, char *** out_exts_i) -{ +static int glad_gl_get_extensions( const char **out_exts, char ***out_exts_i) { #if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) - if(glad_glGetStringi != NULL && glad_glGetIntegerv != NULL) { + if (glad_glGetStringi != NULL && glad_glGetIntegerv != NULL) { unsigned int index = 0; unsigned int num_exts_i = 0; - char ** exts_i = NULL; - glad_glGetIntegerv(GL_NUM_EXTENSIONS, (int *) &num_exts_i); - exts_i = (char **) malloc((num_exts_i + 1) * (sizeof * exts_i)); - if(exts_i == NULL) { + char **exts_i = NULL; + glad_glGetIntegerv(GL_NUM_EXTENSIONS, (int*) &num_exts_i); + exts_i = (char **) malloc((num_exts_i + 1) * (sizeof *exts_i)); + if (exts_i == NULL) { return 0; } for(index = 0; index < num_exts_i; index++) { - const char * gl_str_tmp = (const char *) glad_glGetStringi(GL_EXTENSIONS, index); + const char *gl_str_tmp = (const char*) glad_glGetStringi(GL_EXTENSIONS, index); size_t len = strlen(gl_str_tmp) + 1; - char * local_str = (char *) malloc(len * sizeof(char)); + char *local_str = (char*) malloc(len * sizeof(char)); if(local_str == NULL) { exts_i[index] = NULL; glad_gl_free_extensions(exts_i); @@ -399,27 +423,25 @@ static int glad_gl_get_extensions(const char ** out_exts, char *** out_exts_i) #else GLAD_UNUSED(out_exts_i); #endif - if(glad_glGetString == NULL) { + if (glad_glGetString == NULL) { return 0; } *out_exts = (const char *)glad_glGetString(GL_EXTENSIONS); return 1; } -static int glad_gl_has_extension(const char * exts, char ** exts_i, const char * ext) -{ +static int glad_gl_has_extension(const char *exts, char **exts_i, const char *ext) { if(exts_i) { unsigned int index; for(index = 0; exts_i[index]; index++) { - const char * e = exts_i[index]; + const char *e = exts_i[index]; if(strcmp(e, ext) == 0) { return 1; } } - } - else { - const char * extensions; - const char * loc; - const char * terminator; + } else { + const char *extensions; + const char *loc; + const char *terminator; extensions = exts; if(extensions == NULL || ext == NULL) { return 0; @@ -431,7 +453,7 @@ static int glad_gl_has_extension(const char * exts, char ** exts_i, const char * } terminator = loc + strlen(ext); if((loc == extensions || *(loc - 1) == ' ') && - (*terminator == ' ' || *terminator == '\0')) { + (*terminator == ' ' || *terminator == '\0')) { return 1; } extensions = terminator; @@ -440,21 +462,28 @@ static int glad_gl_has_extension(const char * exts, char ** exts_i, const char * return 0; } -static GLADapiproc glad_gl_get_proc_from_userptr(void * userptr, const char * name) -{ - return (GLAD_GNUC_EXTENSION(GLADapiproc(*)(const char * name)) userptr)(name); +static GLADapiproc glad_gl_get_proc_from_userptr(void *userptr, const char* name) { + return (GLAD_GNUC_EXTENSION (GLADapiproc (*)(const char *name)) userptr)(name); } -static int glad_gl_find_extensions_gles2(void) -{ - const char * exts = NULL; - char ** exts_i = NULL; - if(!glad_gl_get_extensions(&exts, &exts_i)) return 0; +static int glad_gl_find_extensions_gles2(void) { + const char *exts = NULL; + char **exts_i = NULL; + if (!glad_gl_get_extensions(&exts, &exts_i)) return 0; GLAD_GL_APPLE_texture_max_level = glad_gl_has_extension(exts, exts_i, "GL_APPLE_texture_max_level"); + GLAD_GL_ARM_rgba8 = glad_gl_has_extension(exts, exts_i, "GL_ARM_rgba8"); + GLAD_GL_EXT_color_buffer_float = glad_gl_has_extension(exts, exts_i, "GL_EXT_color_buffer_float"); + GLAD_GL_EXT_color_buffer_half_float = glad_gl_has_extension(exts, exts_i, "GL_EXT_color_buffer_half_float"); GLAD_GL_EXT_texture_format_BGRA8888 = glad_gl_has_extension(exts, exts_i, "GL_EXT_texture_format_BGRA8888"); + GLAD_GL_EXT_texture_storage = glad_gl_has_extension(exts, exts_i, "GL_EXT_texture_storage"); GLAD_GL_EXT_unpack_subimage = glad_gl_has_extension(exts, exts_i, "GL_EXT_unpack_subimage"); + GLAD_GL_OES_depth24 = glad_gl_has_extension(exts, exts_i, "GL_OES_depth24"); GLAD_GL_OES_mapbuffer = glad_gl_has_extension(exts, exts_i, "GL_OES_mapbuffer"); + GLAD_GL_OES_rgb8_rgba8 = glad_gl_has_extension(exts, exts_i, "GL_OES_rgb8_rgba8"); + GLAD_GL_OES_texture_float = glad_gl_has_extension(exts, exts_i, "GL_OES_texture_float"); + GLAD_GL_OES_texture_half_float = glad_gl_has_extension(exts, exts_i, "GL_OES_texture_half_float"); + GLAD_GL_OES_texture_storage_multisample_2d_array = glad_gl_has_extension(exts, exts_i, "GL_OES_texture_storage_multisample_2d_array"); GLAD_GL_OES_vertex_array_object = glad_gl_has_extension(exts, exts_i, "GL_OES_vertex_array_object"); glad_gl_free_extensions(exts_i); @@ -462,11 +491,10 @@ static int glad_gl_find_extensions_gles2(void) return 1; } -static int glad_gl_find_core_gles2(void) -{ +static int glad_gl_find_core_gles2(void) { int i; - const char * version; - const char * prefixes[] = { + const char* version; + const char* prefixes[] = { "OpenGL ES-CM ", "OpenGL ES-CL ", "OpenGL ES ", @@ -475,11 +503,11 @@ static int glad_gl_find_core_gles2(void) }; int major = 0; int minor = 0; - version = (const char *) glad_glGetString(GL_VERSION); - if(!version) return 0; - for(i = 0; prefixes[i]; i++) { + version = (const char*) glad_glGetString(GL_VERSION); + if (!version) return 0; + for (i = 0; prefixes[i]; i++) { const size_t length = strlen(prefixes[i]); - if(strncmp(version, prefixes[i], length) == 0) { + if (strncmp(version, prefixes[i], length) == 0) { version += length; break; } @@ -492,8 +520,7 @@ static int glad_gl_find_core_gles2(void) return GLAD_MAKE_VERSION(major, minor); } -int gladLoadGLES2UserPtr(GLADuserptrloadfunc load, void * userptr) -{ +int gladLoadGLES2UserPtr( GLADuserptrloadfunc load, void *userptr) { int version; glad_glGetString = (PFNGLGETSTRINGPROC) load(userptr, "glGetString"); @@ -502,24 +529,26 @@ int gladLoadGLES2UserPtr(GLADuserptrloadfunc load, void * userptr) glad_gl_load_GL_ES_VERSION_2_0(load, userptr); - if(!glad_gl_find_extensions_gles2()) return 0; + if (!glad_gl_find_extensions_gles2()) return 0; + glad_gl_load_GL_EXT_texture_storage(load, userptr); glad_gl_load_GL_OES_mapbuffer(load, userptr); + glad_gl_load_GL_OES_texture_storage_multisample_2d_array(load, userptr); glad_gl_load_GL_OES_vertex_array_object(load, userptr); + glad_gl_resolve_aliases(); return version; } -int gladLoadGLES2(GLADloadfunc load) -{ - return gladLoadGLES2UserPtr(glad_gl_get_proc_from_userptr, GLAD_GNUC_EXTENSION(void *) load); +int gladLoadGLES2( GLADloadfunc load) { + return gladLoadGLES2UserPtr( glad_gl_get_proc_from_userptr, GLAD_GNUC_EXTENSION (void*) load); } - + #ifdef __cplusplus diff --git a/src/drivers/opengles/lv_opengles_private.h b/src/drivers/opengles/lv_opengles_private.h index fc7c53cd6d..6e98997dbf 100644 --- a/src/drivers/opengles/lv_opengles_private.h +++ b/src/drivers/opengles/lv_opengles_private.h @@ -57,6 +57,41 @@ extern "C" { #define glDeleteVertexArrays glDeleteVertexArraysOES #endif +#ifndef glTexStorage2D +#define glTexStorage2D glTexStorage2DEXT +#endif + +#ifndef GL_RGBA32F +#define GL_RGBA32F 0x8814 +#endif +#ifndef GL_NUM_EXTENSIONS +#define GL_NUM_EXTENSIONS 0x821D +#endif + +#ifndef GL_RGB8 +#define GL_RGB8 0x8051 +#endif + +#ifndef GL_RGBA8 +#define GL_RGBA8 0x8058 +#endif + +#ifndef LV_GL_PREFERRED_DEPTH +#ifdef GL_DEPTH_COMPONENT24 +#define LV_GL_PREFERRED_DEPTH GL_DEPTH_COMPONENT24 +#else +/* + * This will not run correctly yet, it compiles fine but fails to render on RPi3B. Work in progress. + * +#ifdef GL_DEPTH_COMPONENT24_OES +#define LV_GL_PREFERRED_DEPTH GL_DEPTH_COMPONENT24_OES +#else +#define LV_GL_PREFERRED_DEPTH GL_DEPTH_COMPONENT16 +#endif +*/ +#define LV_GL_PREFERRED_DEPTH GL_DEPTH_COMPONENT16 +#endif +#endif /********************** * TYPEDEFS **********************/ diff --git a/src/libs/gltf/gltf_view/assets/lv_gltf_view_shader.c b/src/libs/gltf/gltf_view/assets/lv_gltf_view_shader.c index 9e1df4e7e6..11ec7d96d2 100644 --- a/src/libs/gltf/gltf_view/assets/lv_gltf_view_shader.c +++ b/src/libs/gltf/gltf_view/assets/lv_gltf_view_shader.c @@ -2769,15 +2769,15 @@ static const lv_opengl_shader_t env_src_includes[] = { "fullscreen.vert", R"( precision highp float; + in vec2 aPosition; + in vec2 aTexCoord; + out vec2 texCoord; - + void main(void) { - float x = float((gl_VertexID & 1) << 2); - float y = float((gl_VertexID & 2) << 1); - texCoord.x = x * 0.5; - texCoord.y = y * 0.5; - gl_Position = vec4(x - 1.0, y - 1.0, 0, 1); + texCoord = aTexCoord; + gl_Position = vec4(aPosition, 0.0, 1.0); } )" }, diff --git a/src/libs/gltf/gltf_view/ibl/lv_gltf_ibl_sampler.c b/src/libs/gltf/gltf_view/ibl/lv_gltf_ibl_sampler.c index 7380aed0e7..522307706f 100644 --- a/src/libs/gltf/gltf_view/ibl/lv_gltf_ibl_sampler.c +++ b/src/libs/gltf/gltf_view/ibl/lv_gltf_ibl_sampler.c @@ -61,6 +61,9 @@ static void ibl_sample_ggx_lut(lv_gltf_ibl_sampler_t * sampler); static void ibl_sample_charlie_lut(lv_gltf_ibl_sampler_t * sampler); static int ibl_count_bits(int value); +static void init_fullscreen_quad(lv_gltf_ibl_sampler_t * sampler); +static void draw_fullscreen_quad(lv_gltf_ibl_sampler_t * sampler, GLuint program_id); + /********************** * STATIC VARIABLES **********************/ @@ -112,6 +115,7 @@ static void ibl_sampler_init(lv_gltf_ibl_sampler_t * sampler) lv_gltf_view_shader_get_env(&env_shader_portions); lv_opengl_shader_manager_init(&sampler->shader_manager, env_shader_portions.all, env_shader_portions.count, NULL, NULL); + init_fullscreen_quad(sampler); } static void ibl_sampler_load(lv_gltf_ibl_sampler_t * sampler, const char * path) @@ -192,6 +196,8 @@ static void ibl_sampler_filter(lv_gltf_ibl_sampler_t * sampler) } static void ibl_sampler_destroy(lv_gltf_ibl_sampler_t * sampler) { + GL_CALL(glDeleteBuffers(1, &sampler->fullscreen_vertex_buffer)); + GL_CALL(glDeleteBuffers(1, &sampler->fullscreen_tex_coord_buffer)); lv_opengl_shader_manager_deinit(&sampler->shader_manager); } @@ -334,7 +340,7 @@ static void ibl_panorama_to_cubemap(lv_gltf_ibl_sampler_t * sampler) GL_CALL(glUniform1i(location, 0)); program->update_uniform_1i(program, "u_currentFace", i); //fullscreen triangle - GL_CALL(glDrawArrays(GL_TRIANGLES, 0, 3)); + draw_fullscreen_quad(sampler, program_id); } GL_CALL(glBindTexture(GL_TEXTURE_CUBE_MAP, sampler->cubemap_texture_id)); @@ -380,7 +386,7 @@ static void ibl_apply_filter(lv_gltf_ibl_sampler_t * sampler, uint32_t distribut program->update_uniform_1i(program, "u_floatTexture", 0); program->update_uniform_1f(program, "u_intensityScale", sampler->scale_value); //fullscreen triangle - GL_CALL(glDrawArrays(GL_TRIANGLES, 0, 3)); + draw_fullscreen_quad(sampler, program_id); } } static void ibl_cubemap_to_lambertian(lv_gltf_ibl_sampler_t * sampler) @@ -438,7 +444,7 @@ static void ibl_sample_lut(lv_gltf_ibl_sampler_t * sampler, uint32_t distributio program->update_uniform_1i(program, "u_currentFace", 0); program->update_uniform_1i(program, "u_isGeneratingLUT", 1); //fullscreen triangle - GL_CALL(glDrawArrays(GL_TRIANGLES, 0, 3)); + draw_fullscreen_quad(sampler, program_id); } static void ibl_sample_ggx_lut(lv_gltf_ibl_sampler_t * sampler) { @@ -453,12 +459,31 @@ static void ibl_sample_charlie_lut(lv_gltf_ibl_sampler_t * sampler) static bool ibl_gl_has_extension(const char * extension) { - int32_t extension_count; - glGetIntegerv(GL_NUM_EXTENSIONS, &extension_count); - for(uint32_t i = 0; i < (uint32_t)extension_count; i++) { - const GLubyte * curr_extension = glGetStringi(GL_EXTENSIONS, i); - if(lv_streq((const char *)curr_extension, extension)) { - return true; + const GLubyte * extensions = glGetString(GL_EXTENSIONS); + if(!extensions) { + return false; + } + + const char * ext_str = (const char *)extensions; + const char * current = ext_str; + const char * next; + + while(*current) { + /* Find the next space or end of string */ + next = strchr(current, ' '); + if(next) { + size_t length = next - current; + if(length == strlen(extension) && strncmp(current, extension, length) == 0) { + return true; + } + current = next + 1; + } + else { + /* Last extension (no space found) */ + if(strcmp(current, extension) == 0) { + return true; + } + break; } } return false; @@ -473,4 +498,50 @@ static int ibl_count_bits(int value) } return count; } + +static void init_fullscreen_quad(lv_gltf_ibl_sampler_t * sampler) +{ + /* Vertices go from -1 -1 (left bottom) to 1 1 (right top)*/ + GLfloat vertices[] = { + -1.0f, -1.0f, + 1.0f, -1.0f, + -1.0f, 1.0f, + 1.0f, 1.0f + }; + + /* Texture coords go from 0 0 (left botton) to 1 1 (right top)*/ + GLfloat texCoords[] = { + 0.0f, 0.0f, + 1.0f, 0.0f, + 0.0f, 1.0f, + 1.0f, 1.0f + }; + + GL_CALL(glGenBuffers(1, &sampler->fullscreen_vertex_buffer)); + GL_CALL(glBindBuffer(GL_ARRAY_BUFFER, sampler->fullscreen_vertex_buffer)); + GL_CALL(glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW)); + + GL_CALL(glGenBuffers(1, &sampler->fullscreen_tex_coord_buffer)); + GL_CALL(glBindBuffer(GL_ARRAY_BUFFER, sampler->fullscreen_tex_coord_buffer)); + GL_CALL(glBufferData(GL_ARRAY_BUFFER, sizeof(texCoords), texCoords, GL_STATIC_DRAW)); +} + +void draw_fullscreen_quad(lv_gltf_ibl_sampler_t * sampler, GLuint program_id) +{ + GLuint positionAttrib = glGetAttribLocation(program_id, "aPosition"); + GL_CALL(glEnableVertexAttribArray(positionAttrib)); + GL_CALL(glBindBuffer(GL_ARRAY_BUFFER, sampler->fullscreen_vertex_buffer)); + GL_CALL(glVertexAttribPointer(positionAttrib, 2, GL_FLOAT, GL_FALSE, 0, (void *)0)); + + GLuint texCoordAttrib = glGetAttribLocation(program_id, "aTexCoord"); + GL_CALL(glEnableVertexAttribArray(texCoordAttrib)); + GL_CALL(glBindBuffer(GL_ARRAY_BUFFER, sampler->fullscreen_tex_coord_buffer)); + GL_CALL(glVertexAttribPointer(texCoordAttrib, 2, GL_FLOAT, GL_FALSE, 0, (void *)0)); + + GL_CALL(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)); + + GL_CALL(glDisableVertexAttribArray(positionAttrib)); + GL_CALL(glDisableVertexAttribArray(texCoordAttrib)); +} + #endif /*LV_USE_GLTF*/ diff --git a/src/libs/gltf/gltf_view/ibl/lv_gltf_ibl_sampler.h b/src/libs/gltf/gltf_view/ibl/lv_gltf_ibl_sampler.h index 3a6ef759fe..6645e3203d 100644 --- a/src/libs/gltf/gltf_view/ibl/lv_gltf_ibl_sampler.h +++ b/src/libs/gltf/gltf_view/ibl/lv_gltf_ibl_sampler.h @@ -57,6 +57,10 @@ typedef struct { uint32_t mipmap_levels; lv_opengl_shader_manager_t shader_manager; + + uint32_t fullscreen_vertex_buffer; + uint32_t fullscreen_tex_coord_buffer; + } lv_gltf_ibl_sampler_t; typedef struct { diff --git a/src/libs/gltf/gltf_view/lv_gltf.h b/src/libs/gltf/gltf_view/lv_gltf.h index cba363d048..c5a02aa188 100644 --- a/src/libs/gltf/gltf_view/lv_gltf.h +++ b/src/libs/gltf/gltf_view/lv_gltf.h @@ -26,6 +26,8 @@ extern "C" { * DEFINES *********************/ +#define LV_GLTF_DEFAULT_CAMERA 0 + /********************** * TYPEDEFS **********************/ diff --git a/src/libs/gltf/gltf_view/lv_gltf_view_render.cpp b/src/libs/gltf/gltf_view/lv_gltf_view_render.cpp index c300f59e0b..e55900d01f 100644 --- a/src/libs/gltf/gltf_view/lv_gltf_view_render.cpp +++ b/src/libs/gltf/gltf_view/lv_gltf_view_render.cpp @@ -106,7 +106,9 @@ GLuint lv_gltf_view_render(lv_gltf_t * viewer) return GL_NONE; } lv_gltf_model_t * model = *(lv_gltf_model_t **)lv_array_at(&viewer->models, 0); - GLuint texture_id = lv_gltf_view_render_model(viewer, model, true); + + GLuint texture_id = GL_NONE; + texture_id = lv_gltf_view_render_model(viewer, model, true); for(size_t i = 1; i < n; ++i) { lv_gltf_model_t * model = *(lv_gltf_model_t **)lv_array_at(&viewer->models, i); lv_gltf_view_render_model(viewer, model, false); @@ -628,6 +630,7 @@ static void draw_material(lv_gltf_t * viewer, const lv_gltf_uniform_locations_t } } +#if FASTGLTF_ENABLE_DEPRECATED_EXT if(gltfMaterial.specularGlossiness) { LV_LOG_WARN( "Model uses outdated legacy mode pbr_speculargloss. Please update this model to a new shading model "); @@ -649,6 +652,7 @@ static void draw_material(lv_gltf_t * viewer, const lv_gltf_uniform_locations_t uniforms->specular_glossiness_uv_transform); } } +#endif if(gltfMaterial.diffuseTransmission) { render_uniform_color(uniforms->diffuse_transmission_color_factor, @@ -853,10 +857,10 @@ static lv_gltf_renwin_state_t setup_opaque_output(uint32_t texture_width, uint32 GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); #ifdef __EMSCRIPTEN__ - GL_CALL(glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, texture_width, texture_height, 0, GL_DEPTH_COMPONENT, + GL_CALL(glTexImage2D(GL_TEXTURE_2D, 0, LV_GL_PREFERRED_DEPTH, texture_width, texture_height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL)); #else - GL_CALL(glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, texture_width, texture_height, 0, GL_DEPTH_COMPONENT, + GL_CALL(glTexImage2D(GL_TEXTURE_2D, 0, LV_GL_PREFERRED_DEPTH, texture_width, texture_height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, NULL)); #endif GL_CALL(glBindTexture(GL_TEXTURE_2D, GL_NONE)); @@ -898,11 +902,11 @@ static lv_gltf_renwin_state_t setup_primary_output(int32_t texture_width, int32_ GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 1)); #ifdef __EMSCRIPTEN__ // Check if compiling for Emscripten (WebGL) // For WebGL2 - GL_CALL(glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, texture_width, texture_height, 0, GL_DEPTH_COMPONENT, + GL_CALL(glTexImage2D(GL_TEXTURE_2D, 0, LV_GL_PREFERRED_DEPTH, texture_width, texture_height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL)); #else // For Desktop OpenGL - GL_CALL(glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, texture_width, texture_height, 0, GL_DEPTH_COMPONENT, + GL_CALL(glTexImage2D(GL_TEXTURE_2D, 0, LV_GL_PREFERRED_DEPTH, texture_width, texture_height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, NULL)); #endif GL_CALL(glBindTexture(GL_TEXTURE_2D, GL_NONE));