diff --git a/source/third_party/glad/include/EGL/eglplatform.h b/source/third_party/glad/include/EGL/eglplatform.h index 99362a23de..6786afd90b 100644 --- a/source/third_party/glad/include/EGL/eglplatform.h +++ b/source/third_party/glad/include/EGL/eglplatform.h @@ -64,6 +64,12 @@ typedef HDC EGLNativeDisplayType; typedef HBITMAP EGLNativePixmapType; typedef HWND EGLNativeWindowType; +#elif defined(__QNX__) + +typedef khronos_uintptr_t EGLNativeDisplayType; +typedef struct _screen_pixmap* EGLNativePixmapType; /* screen_pixmap_t */ +typedef struct _screen_window* EGLNativeWindowType; /* screen_window_t */ + #elif defined(__EMSCRIPTEN__) typedef int EGLNativeDisplayType; diff --git a/source/third_party/glad/include/glad/egl.h b/source/third_party/glad/include/glad/egl.h index 3616d6363a..9aa40130f7 100644 --- a/source/third_party/glad/include/glad/egl.h +++ b/source/third_party/glad/include/glad/egl.h @@ -1,5 +1,7 @@ /** - * Loader generated by glad 2.0.0-beta on Mon May 9 20:31:48 2022 + * Loader generated by glad 2.0.7 on Sat Sep 7 20:28:18 2024 + * + * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 * * Generator: C/C++ * Specification: egl @@ -14,7 +16,6 @@ * - HEADER_ONLY = False * - LOADER = False * - MX = False - * - MX_GLOBAL = False * - ON_DEMAND = False * * Commandline: @@ -91,6 +92,8 @@ extern "C" { #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__) @@ -137,7 +140,7 @@ extern "C" { #define GLAD_VERSION_MAJOR(version) (version / 10000) #define GLAD_VERSION_MINOR(version) (version % 10000) -#define GLAD_GENERATOR_VERSION "2.0.0-beta" +#define GLAD_GENERATOR_VERSION "2.0.7" typedef void (*GLADapiproc)(void); diff --git a/source/third_party/glad/include/glad/gl.h b/source/third_party/glad/include/glad/gl.h index c18e58ab88..4c7c3564c3 100644 --- a/source/third_party/glad/include/glad/gl.h +++ b/source/third_party/glad/include/glad/gl.h @@ -1,5 +1,5 @@ /** - * Loader generated by glad 2.0.6 on 06/10/24 21:46:38 + * Loader generated by glad 2.0.7 on Sat Sep 7 20:03:48 2024 * * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 * @@ -11,12 +11,12 @@ * - gl:core=2.1 * * Options: - * - ON_DEMAND = False - * - LOADER = False * - ALIAS = False - * - HEADER_ONLY = False * - DEBUG = False + * - HEADER_ONLY = False + * - LOADER = False * - MX = False + * - ON_DEMAND = False * * Commandline: * --api='gl:core=2.1' --extensions='GL_ARB_compute_shader,GL_ARB_draw_buffers,GL_ARB_draw_instanced,GL_ARB_fragment_program,GL_ARB_fragment_shader,GL_ARB_framebuffer_object,GL_ARB_framebuffer_sRGB,GL_ARB_geometry_shader4,GL_ARB_instanced_arrays,GL_ARB_invalidate_subdata,GL_ARB_map_buffer_range,GL_ARB_multitexture,GL_ARB_occlusion_query,GL_ARB_shader_image_load_store,GL_ARB_shader_objects,GL_ARB_shader_storage_buffer_object,GL_ARB_shading_language_100,GL_ARB_sync,GL_ARB_texture_compression,GL_ARB_texture_compression_bptc,GL_ARB_texture_float,GL_ARB_texture_multisample,GL_ARB_texture_rectangle,GL_ARB_timer_query,GL_ARB_vertex_buffer_object,GL_ARB_vertex_program,GL_ARB_vertex_shader,GL_EXT_bgra,GL_EXT_blend_color,GL_EXT_blend_minmax,GL_EXT_draw_range_elements,GL_EXT_framebuffer_blit,GL_EXT_framebuffer_multisample,GL_EXT_framebuffer_object,GL_EXT_gpu_shader4,GL_EXT_packed_depth_stencil,GL_EXT_texture_array,GL_EXT_texture_compression_s3tc,GL_EXT_texture_filter_anisotropic,GL_EXT_texture_lod_bias,GL_EXT_texture_sRGB,GL_EXT_transform_feedback,GL_KHR_debug' c @@ -163,7 +163,7 @@ extern "C" { #define GLAD_VERSION_MAJOR(version) (version / 10000) #define GLAD_VERSION_MINOR(version) (version % 10000) -#define GLAD_GENERATOR_VERSION "2.0.6" +#define GLAD_GENERATOR_VERSION "2.0.7" typedef void (*GLADapiproc)(void); diff --git a/source/third_party/glad/include/glad/gles2.h b/source/third_party/glad/include/glad/gles2.h index 536ab7f24e..42839f1662 100644 --- a/source/third_party/glad/include/glad/gles2.h +++ b/source/third_party/glad/include/glad/gles2.h @@ -1,5 +1,5 @@ /** - * Loader generated by glad 2.0.2 on 11/21/22 00:23:14 + * Loader generated by glad 2.0.7 on Sat Sep 7 20:28:16 2024 * * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 * @@ -11,12 +11,12 @@ * - gles2=2.0 * * Options: - * - ON_DEMAND = False - * - LOADER = False * - ALIAS = False - * - HEADER_ONLY = False * - DEBUG = False + * - HEADER_ONLY = False + * - LOADER = False * - MX = False + * - ON_DEMAND = False * * Commandline: * --api='gles2=2.0' --extensions='GL_EXT_discard_framebuffer,GL_EXT_texture_compression_s3tc,GL_EXT_texture_filter_anisotropic,GL_EXT_texture_format_BGRA8888,GL_KHR_debug,GL_OES_depth32,GL_OES_mapbuffer,GL_OES_rgb8_rgba8,GL_OES_texture_border_clamp' c @@ -163,7 +163,7 @@ extern "C" { #define GLAD_VERSION_MAJOR(version) (version / 10000) #define GLAD_VERSION_MINOR(version) (version % 10000) -#define GLAD_GENERATOR_VERSION "2.0.2" +#define GLAD_GENERATOR_VERSION "2.0.7" typedef void (*GLADapiproc)(void); diff --git a/source/third_party/glad/include/glad/glx.h b/source/third_party/glad/include/glad/glx.h index 9131945d58..88ee090910 100644 --- a/source/third_party/glad/include/glad/glx.h +++ b/source/third_party/glad/include/glad/glx.h @@ -1,5 +1,5 @@ /** - * Loader generated by glad 2.0.2 on 11/21/22 00:23:14 + * Loader generated by glad 2.0.7 on Sat Sep 7 20:28:17 2024 * * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 * @@ -11,12 +11,12 @@ * - glx=1.4 * * Options: - * - ON_DEMAND = False - * - LOADER = False * - ALIAS = False - * - HEADER_ONLY = False * - DEBUG = False + * - HEADER_ONLY = False + * - LOADER = False * - MX = False + * - ON_DEMAND = False * * Commandline: * --api='glx=1.4' --extensions='GLX_MESA_query_renderer,GLX_SGI_swap_control' c @@ -151,7 +151,7 @@ extern "C" { #define GLAD_VERSION_MAJOR(version) (version / 10000) #define GLAD_VERSION_MINOR(version) (version % 10000) -#define GLAD_GENERATOR_VERSION "2.0.2" +#define GLAD_GENERATOR_VERSION "2.0.7" typedef void (*GLADapiproc)(void); @@ -318,6 +318,7 @@ typedef unsigned __int64 uint64_t; + #if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) #else diff --git a/source/third_party/glad/include/glad/vulkan.h b/source/third_party/glad/include/glad/vulkan.h index add38a063e..a35ddf4867 100644 --- a/source/third_party/glad/include/glad/vulkan.h +++ b/source/third_party/glad/include/glad/vulkan.h @@ -1,5 +1,5 @@ /** - * Loader generated by glad 2.0.3 on Sun Jan 8 13:21:25 2023 + * Loader generated by glad 2.0.7 on Sat Sep 7 20:28:24 2024 * * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 * @@ -150,7 +150,7 @@ extern "C" { #define GLAD_VERSION_MAJOR(version) (version / 10000) #define GLAD_VERSION_MINOR(version) (version % 10000) -#define GLAD_GENERATOR_VERSION "2.0.3" +#define GLAD_GENERATOR_VERSION "2.0.7" typedef void (*GLADapiproc)(void); @@ -172,7 +172,7 @@ typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apipro #define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME "VK_EXT_texture_compression_astc_hdr" #define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION 1 #define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features" -#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 5 +#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 6 #define VK_FALSE 0 #define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure" #define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13 @@ -226,32 +226,30 @@ typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apipro #include "vk_platform.h" /* DEPRECATED: This define is deprecated. VK_MAKE_API_VERSION should be used instead. */ #define VK_MAKE_VERSION(major, minor, patch) \ - ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch))) + ((((uint32_t)(major)) << 22U) | (((uint32_t)(minor)) << 12U) | ((uint32_t)(patch))) /* DEPRECATED: This define is deprecated. VK_API_VERSION_MAJOR should be used instead. */ -#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22) +#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22U) /* DEPRECATED: This define is deprecated. VK_API_VERSION_MINOR should be used instead. */ -#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU) +#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12U) & 0x3FFU) /* DEPRECATED: This define is deprecated. VK_API_VERSION_PATCH should be used instead. */ #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) #define VK_MAKE_API_VERSION(variant, major, minor, patch) \ - ((((uint32_t)(variant)) << 29) | (((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch))) -#define VK_API_VERSION_VARIANT(version) ((uint32_t)(version) >> 29) -#define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22) & 0x7FU) -#define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU) + ((((uint32_t)(variant)) << 29U) | (((uint32_t)(major)) << 22U) | (((uint32_t)(minor)) << 12U) | ((uint32_t)(patch))) +#define VK_API_VERSION_VARIANT(version) ((uint32_t)(version) >> 29U) +#define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22U) & 0x7FU) +#define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12U) & 0x3FFU) #define VK_API_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) /* DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead. */ -/*#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0 */ +/*#define VK_API_VERSION VK_MAKE_API_VERSION(0, 1, 0, 0) // Patch version should always be set to 0 */ /* Vulkan 1.0 version number */ #define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)/* Patch version should always be set to 0 */ /* Vulkan 1.1 version number */ #define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0)/* Patch version should always be set to 0 */ /* Version of this file */ -#define VK_HEADER_VERSION 238 -/* Complete version of this file */ -#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +#define VK_HEADER_VERSION 295 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; #ifndef VK_USE_64_BIT_PTR_DEFINES - #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) + #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) || (defined(__riscv) && __riscv_xlen == 64) #define VK_USE_64_BIT_PTR_DEFINES 1 #else #define VK_USE_64_BIT_PTR_DEFINES 0 @@ -1714,12 +1712,14 @@ typedef enum VkShaderFloatControlsIndependence { typedef enum VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR; typedef enum VkVendorId { + VK_VENDOR_ID_KHRONOS = 0x10000, VK_VENDOR_ID_VIV = 0x10001, VK_VENDOR_ID_VSI = 0x10002, VK_VENDOR_ID_KAZAN = 0x10003, VK_VENDOR_ID_CODEPLAY = 0x10004, VK_VENDOR_ID_MESA = 0x10005, VK_VENDOR_ID_POCL = 0x10006, + VK_VENDOR_ID_MOBILEYE = 0x10007, VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF } VkVendorId; typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)( @@ -1807,15 +1807,15 @@ typedef struct VkComponentMapping { } VkComponentMapping; typedef struct VkExtensionProperties { - char extensionName [ VK_MAX_EXTENSION_NAME_SIZE ]; - uint32_t specVersion; + char extensionName [ VK_MAX_EXTENSION_NAME_SIZE ]; + uint32_t specVersion; } VkExtensionProperties; typedef struct VkLayerProperties { - char layerName [ VK_MAX_EXTENSION_NAME_SIZE ]; - uint32_t specVersion; - uint32_t implementationVersion; - char description [ VK_MAX_DESCRIPTION_SIZE ]; + char layerName [ VK_MAX_EXTENSION_NAME_SIZE ]; + uint32_t specVersion; + uint32_t implementationVersion; + char description [ VK_MAX_DESCRIPTION_SIZE ]; } VkLayerProperties; typedef struct VkApplicationInfo { @@ -2409,6 +2409,8 @@ typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR { #endif +/* Complete version of this file */ +#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) typedef uint32_t VkSampleMask; typedef uint32_t VkBool32; typedef uint32_t VkFlags; @@ -2843,8 +2845,8 @@ typedef struct VkPipelineShaderStageCreateInfo { const void * pNext; VkPipelineShaderStageCreateFlags flags; VkShaderStageFlagBits stage; - VkShaderModule module; - const char * pName; + VkShaderModule module; + const char * pName; const VkSpecializationInfo * pSpecializationInfo; } VkPipelineShaderStageCreateInfo; @@ -2970,7 +2972,7 @@ typedef struct VkGraphicsPipelineCreateInfo { VkStructureType sType; const void * pNext; VkPipelineCreateFlags flags; - uint32_t stageCount; + uint32_t stageCount; const VkPipelineShaderStageCreateInfo * pStages; const VkPipelineVertexInputStateCreateInfo * pVertexInputState; const VkPipelineInputAssemblyStateCreateInfo * pInputAssemblyState; @@ -2992,7 +2994,7 @@ typedef struct VkPipelineCacheCreateInfo { VkStructureType sType; const void * pNext; VkPipelineCacheCreateFlags flags; - size_t initialDataSize; + size_t initialDataSize; const void * pInitialData; } VkPipelineCacheCreateInfo; @@ -3378,7 +3380,7 @@ typedef struct VkSwapchainCreateInfoKHR { VkCompositeAlphaFlagBitsKHR compositeAlpha; VkPresentModeKHR presentMode; VkBool32 clipped; - VkSwapchainKHR oldSwapchain; + VkSwapchainKHR oldSwapchain; } VkSwapchainCreateInfoKHR; typedef struct VkPhysicalDeviceFeatures2 { @@ -3456,7 +3458,7 @@ typedef struct VkPhysicalDeviceExternalBufferInfo { VkStructureType sType; const void * pNext; VkBufferCreateFlags flags; - VkBufferUsageFlags usage; + VkBufferUsageFlags usage; VkExternalMemoryHandleTypeFlagBits handleType; } VkPhysicalDeviceExternalBufferInfo; @@ -3534,7 +3536,7 @@ typedef struct VkPhysicalDeviceGroupProperties { VkStructureType sType; void * pNext; uint32_t physicalDeviceCount; - VkPhysicalDevice physicalDevices [ VK_MAX_DEVICE_GROUP_SIZE ]; + VkPhysicalDevice physicalDevices [ VK_MAX_DEVICE_GROUP_SIZE ]; VkBool32 subsetAllocation; } VkPhysicalDeviceGroupProperties; @@ -3739,7 +3741,7 @@ typedef struct VkDebugUtilsMessengerCallbackDataEXT { VkDebugUtilsMessengerCallbackDataFlagsEXT flags; const char * pMessageIdName; int32_t messageIdNumber; - const char * pMessage; + const char * pMessage; uint32_t queueLabelCount; const VkDebugUtilsLabelEXT * pQueueLabels; uint32_t cmdBufLabelCount; @@ -4129,9 +4131,9 @@ typedef struct VkDeviceCreateInfo { } VkDeviceCreateInfo; typedef struct VkPhysicalDeviceMemoryProperties { - uint32_t memoryTypeCount; + uint32_t memoryTypeCount; VkMemoryType memoryTypes [ VK_MAX_MEMORY_TYPES ]; - uint32_t memoryHeapCount; + uint32_t memoryHeapCount; VkMemoryHeap memoryHeaps [ VK_MAX_MEMORY_HEAPS ]; } VkPhysicalDeviceMemoryProperties; diff --git a/source/third_party/glad/include/glad/wgl.h b/source/third_party/glad/include/glad/wgl.h index 499f48d666..8908ae0f9b 100644 --- a/source/third_party/glad/include/glad/wgl.h +++ b/source/third_party/glad/include/glad/wgl.h @@ -1,5 +1,5 @@ /** - * Loader generated by glad 2.0.2 on 11/21/22 00:23:15 + * Loader generated by glad 2.0.7 on Sat Sep 7 20:28:17 2024 * * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 * @@ -11,12 +11,12 @@ * - wgl=1.0 * * Options: - * - ON_DEMAND = False - * - LOADER = False * - ALIAS = False - * - HEADER_ONLY = False * - DEBUG = False + * - HEADER_ONLY = False + * - LOADER = False * - MX = False + * - ON_DEMAND = False * * Commandline: * --api='wgl=1.0' --extensions='WGL_ARB_extensions_string,WGL_EXT_extensions_string,WGL_EXT_swap_control' c @@ -142,7 +142,7 @@ extern "C" { #define GLAD_VERSION_MAJOR(version) (version / 10000) #define GLAD_VERSION_MINOR(version) (version % 10000) -#define GLAD_GENERATOR_VERSION "2.0.2" +#define GLAD_GENERATOR_VERSION "2.0.7" typedef void (*GLADapiproc)(void); diff --git a/source/third_party/glad/include/vk_platform.h b/source/third_party/glad/include/vk_platform.h index 277e96a06e..c493817811 100644 --- a/source/third_party/glad/include/vk_platform.h +++ b/source/third_party/glad/include/vk_platform.h @@ -2,7 +2,7 @@ /* File: vk_platform.h */ /* */ /* -** Copyright 2014-2022 The Khronos Group Inc. +** Copyright 2014-2024 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ diff --git a/source/third_party/glad/src/egl.cpp b/source/third_party/glad/src/egl.cpp index 851670ad41..9eec640e9f 100644 --- a/source/third_party/glad/src/egl.cpp +++ b/source/third_party/glad/src/egl.cpp @@ -1,3 +1,6 @@ +/** + * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 + */ #include #include #include @@ -171,7 +174,7 @@ static int glad_egl_find_extensions_egl(EGLDisplay display) { const char *extensions; if (!glad_egl_get_extensions(display, &extensions)) return 0; - (void) glad_egl_has_extension; + GLAD_UNUSED(glad_egl_has_extension); return 1; } diff --git a/source/third_party/glad/src/gles2.cpp b/source/third_party/glad/src/gles2.cpp index f9b3ff6f9e..39f3e1d33c 100644 --- a/source/third_party/glad/src/gles2.cpp +++ b/source/third_party/glad/src/gles2.cpp @@ -386,36 +386,24 @@ static void glad_gl_load_GL_OES_texture_border_clamp( GLADuserptrloadfunc load, -#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) -#define GLAD_GL_IS_SOME_NEW_VERSION 1 -#else -#define GLAD_GL_IS_SOME_NEW_VERSION 0 -#endif - -static int glad_gl_get_extensions( int version, const char **out_exts, unsigned int *out_num_exts_i, char ***out_exts_i) { -#if GLAD_GL_IS_SOME_NEW_VERSION - if(GLAD_VERSION_MAJOR(version) < 3) { -#else - GLAD_UNUSED(version); - GLAD_UNUSED(out_num_exts_i); - GLAD_UNUSED(out_exts_i); -#endif - if (glad_glGetString == NULL) { - return 0; +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])); } - *out_exts = (const char *)glad_glGetString(GL_EXTENSIONS); -#if GLAD_GL_IS_SOME_NEW_VERSION - } else { + free((void *)exts_i); + exts_i = NULL; + } +} +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) { unsigned int index = 0; unsigned int num_exts_i = 0; char **exts_i = NULL; - if (glad_glGetStringi == NULL || glad_glGetIntegerv == NULL) { - return 0; - } glad_glGetIntegerv(GL_NUM_EXTENSIONS, (int*) &num_exts_i); - if (num_exts_i > 0) { - exts_i = (char **) malloc(num_exts_i * (sizeof *exts_i)); - } + exts_i = (char **) malloc((num_exts_i + 1) * (sizeof *exts_i)); if (exts_i == NULL) { return 0; } @@ -424,31 +412,40 @@ static int glad_gl_get_extensions( int version, const char **out_exts, unsigned size_t len = strlen(gl_str_tmp) + 1; char *local_str = (char*) malloc(len * sizeof(char)); - if(local_str != NULL) { - memcpy(local_str, gl_str_tmp, len * sizeof(char)); + if(local_str == NULL) { + exts_i[index] = NULL; + glad_gl_free_extensions(exts_i); + return 0; } + memcpy(local_str, gl_str_tmp, len * sizeof(char)); exts_i[index] = local_str; } + exts_i[index] = NULL; - *out_num_exts_i = num_exts_i; *out_exts_i = exts_i; + + return 1; } +#else + GLAD_UNUSED(out_exts_i); #endif + if (glad_glGetString == NULL) { + return 0; + } + *out_exts = (const char *)glad_glGetString(GL_EXTENSIONS); return 1; } -static void glad_gl_free_extensions(char **exts_i, unsigned int num_exts_i) { - if (exts_i != NULL) { +static int glad_gl_has_extension(const char *exts, char **exts_i, const char *ext) { + if(exts_i) { unsigned int index; - for(index = 0; index < num_exts_i; index++) { - free((void *) (exts_i[index])); + for(index = 0; exts_i[index]; index++) { + const char *e = exts_i[index]; + if(strcmp(e, ext) == 0) { + return 1; + } } - free((void *)exts_i); - exts_i = NULL; - } -} -static int glad_gl_has_extension(int version, const char *exts, unsigned int num_exts_i, char **exts_i, const char *ext) { - if(GLAD_VERSION_MAJOR(version) < 3 || !GLAD_GL_IS_SOME_NEW_VERSION) { + } else { const char *extensions; const char *loc; const char *terminator; @@ -468,14 +465,6 @@ static int glad_gl_has_extension(int version, const char *exts, unsigned int num } extensions = terminator; } - } else { - unsigned int index; - for(index = 0; index < num_exts_i; index++) { - const char *e = exts_i[index]; - if(strcmp(e, ext) == 0) { - return 1; - } - } } return 0; } @@ -484,23 +473,22 @@ 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( int version) { +static int glad_gl_find_extensions_gles2(void) { const char *exts = NULL; - unsigned int num_exts_i = 0; char **exts_i = NULL; - if (!glad_gl_get_extensions(version, &exts, &num_exts_i, &exts_i)) return 0; + if (!glad_gl_get_extensions(&exts, &exts_i)) return 0; - GLAD_GL_EXT_discard_framebuffer = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_EXT_discard_framebuffer"); - GLAD_GL_EXT_texture_compression_s3tc = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_EXT_texture_compression_s3tc"); - GLAD_GL_EXT_texture_filter_anisotropic = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_EXT_texture_filter_anisotropic"); - GLAD_GL_EXT_texture_format_BGRA8888 = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_EXT_texture_format_BGRA8888"); - GLAD_GL_KHR_debug = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_KHR_debug"); - GLAD_GL_OES_depth32 = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_OES_depth32"); - GLAD_GL_OES_mapbuffer = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_OES_mapbuffer"); - GLAD_GL_OES_rgb8_rgba8 = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_OES_rgb8_rgba8"); - GLAD_GL_OES_texture_border_clamp = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_OES_texture_border_clamp"); + GLAD_GL_EXT_discard_framebuffer = glad_gl_has_extension(exts, exts_i, "GL_EXT_discard_framebuffer"); + GLAD_GL_EXT_texture_compression_s3tc = glad_gl_has_extension(exts, exts_i, "GL_EXT_texture_compression_s3tc"); + GLAD_GL_EXT_texture_filter_anisotropic = glad_gl_has_extension(exts, exts_i, "GL_EXT_texture_filter_anisotropic"); + GLAD_GL_EXT_texture_format_BGRA8888 = glad_gl_has_extension(exts, exts_i, "GL_EXT_texture_format_BGRA8888"); + GLAD_GL_KHR_debug = glad_gl_has_extension(exts, exts_i, "GL_KHR_debug"); + GLAD_GL_OES_depth32 = glad_gl_has_extension(exts, exts_i, "GL_OES_depth32"); + 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_border_clamp = glad_gl_has_extension(exts, exts_i, "GL_OES_texture_border_clamp"); - glad_gl_free_extensions(exts_i, num_exts_i); + glad_gl_free_extensions(exts_i); return 1; } @@ -539,12 +527,11 @@ int gladLoadGLES2UserPtr( GLADuserptrloadfunc load, void *userptr) { glad_glGetString = (PFNGLGETSTRINGPROC) load(userptr, "glGetString"); if(glad_glGetString == NULL) return 0; - if(glad_glGetString(GL_VERSION) == NULL) return 0; version = glad_gl_find_core_gles2(); glad_gl_load_GL_ES_VERSION_2_0(load, userptr); - if (!glad_gl_find_extensions_gles2(version)) return 0; + if (!glad_gl_find_extensions_gles2()) return 0; glad_gl_load_GL_EXT_discard_framebuffer(load, userptr); glad_gl_load_GL_KHR_debug(load, userptr); glad_gl_load_GL_OES_mapbuffer(load, userptr);