From 151c46bb8bbbfbab994e643708a8d31c71f5b1c6 Mon Sep 17 00:00:00 2001 From: Un1q32 Date: Wed, 15 Jul 2026 04:23:45 -0400 Subject: [PATCH 1/7] better gl_wrappers --- src/gl/gl_renderer.c | 4 ++ src/gl_common/gl_wrappers.h | 90 ++++++++---------------------- src/gl_legacy/gl_legacy_renderer.c | 4 ++ 3 files changed, 31 insertions(+), 67 deletions(-) diff --git a/src/gl/gl_renderer.c b/src/gl/gl_renderer.c index 60a42ca9f..fafcdc0ae 100644 --- a/src/gl/gl_renderer.c +++ b/src/gl/gl_renderer.c @@ -280,6 +280,10 @@ static void glInit(Renderer* renderer, DataWin* dataWin) { abort(); } +#if !defined(__EMSCRIPTEN__) && !defined(__ANDROID__) + gl_init_wrappers(); +#endif + char vertSrc[1024]; char fragSrc[1024]; const char* vertHeader = ""; diff --git a/src/gl_common/gl_wrappers.h b/src/gl_common/gl_wrappers.h index aad5c9063..981086deb 100644 --- a/src/gl_common/gl_wrappers.h +++ b/src/gl_common/gl_wrappers.h @@ -1,83 +1,39 @@ #if !defined(_BS_GL_WRAPPERS_H_) && !defined(__EMSCRIPTEN__) && !defined(PLATFORM_PS3) && !defined(__ANDROID__) #define _BS_GL_WRAPPERS_H_ -static inline void rt_glBindVertexArray(GLuint vao) { - if (glBindVertexArray) glBindVertexArray(vao); - else glBindVertexArrayOES(vao); -} -#undef glBindVertexArray -#define glBindVertexArray rt_glBindVertexArray +static inline void init_gl_wrappers(void) { + if (!glBindVertexArray) + glBindVertexArray = glBindVertexArrayOES; -static inline void rt_glGenVertexArrays(GLsizei n, GLuint* arrays) { - if (glGenVertexArrays) glGenVertexArrays(n, arrays); - else glGenVertexArraysOES(n, arrays); -} -#undef glGenVertexArrays -#define glGenVertexArrays rt_glGenVertexArrays + if (!glGenVertexArrays) + glGenVertexArrays = glGenVertexArraysOES; -static inline void rt_glDeleteVertexArrays(GLsizei n, const GLuint* arrays) { - if (glDeleteVertexArrays) glDeleteVertexArrays(n, arrays); - else glDeleteVertexArraysOES(n, arrays); -} -#undef glDeleteVertexArrays -#define glDeleteVertexArrays rt_glDeleteVertexArrays + if (!glDeleteVertexArrays) + glDeleteVertexArrays = glDeleteVertexArraysOES; -static inline void rt_glGenFramebuffers(GLsizei n, GLuint* ids) { - if (glGenFramebuffers) glGenFramebuffers(n, ids); - else glGenFramebuffersEXT(n, ids); -} -#undef glGenFramebuffers -#define glGenFramebuffers rt_glGenFramebuffers + if (!glGenFramebuffers) + glGenFramebuffers = glGenFramebuffersEXT; -static inline void rt_glBindFramebuffer(GLenum target, GLuint fb) { - if (glBindFramebuffer) glBindFramebuffer(target, fb); - else glBindFramebufferEXT(target, fb); -} -#undef glBindFramebuffer -#define glBindFramebuffer rt_glBindFramebuffer + if (!glBindFramebuffer) + glBindFramebuffer = glBindFramebufferEXT; -static inline void rt_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { - if (glFramebufferTexture2D) glFramebufferTexture2D(target, attachment, textarget, texture, level); - else glFramebufferTexture2DEXT(target, attachment, textarget, texture, level); -} -#undef glFramebufferTexture2D -#define glFramebufferTexture2D rt_glFramebufferTexture2D + if (!glFramebufferTexture2D) + glFramebufferTexture2D = glFramebufferTexture2DEXT; -static inline void rt_glDeleteFramebuffers(GLsizei n, const GLuint* ids) { - if (glDeleteFramebuffers) glDeleteFramebuffers(n, ids); - else glDeleteFramebuffersEXT(n, ids); -} -#undef glDeleteFramebuffers -#define glDeleteFramebuffers rt_glDeleteFramebuffers + if (!glDeleteFramebuffers) + glDeleteFramebuffers = glDeleteFramebuffersEXT; -static inline GLenum rt_glCheckFramebufferStatus(GLenum target) { - if (glCheckFramebufferStatus) return glCheckFramebufferStatus(target); - else return glCheckFramebufferStatusEXT(target); -} -#undef glCheckFramebufferStatus -#define glCheckFramebufferStatus rt_glCheckFramebufferStatus + if (!glCheckFramebufferStatus) + glCheckFramebufferStatus = glCheckFramebufferStatusEXT; -static inline void rt_glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, - GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, - GLbitfield mask, GLenum filter) { - if (glBlitFramebuffer) glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); - else glBlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); -} -#undef glBlitFramebuffer -#define glBlitFramebuffer rt_glBlitFramebuffer + if (!glBlitFramebuffer) + glBlitFramebuffer = glBlitFramebufferEXT; -static inline void rt_glBlendEquation(GLenum mode) { - if (glBlendEquation) glBlendEquation(mode); - else glBlendEquationEXT(mode); -} -#undef glBlendEquation -#define glBlendEquation rt_glBlendEquation + if (!glBlendEquation) + glBlendEquation = glBlendEquationEXT; -static inline void rt_glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) { - if (glBlendFuncSeparate) glBlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); - else glBlendFuncSeparateEXT(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); + if (!glBlendFuncSeparate) + glBlendFuncSeparate = glBlendFuncSeparateEXT; } -#undef glBlendFuncSeparate -#define glBlendFuncSeparate rt_glBlendFuncSeparate #endif diff --git a/src/gl_legacy/gl_legacy_renderer.c b/src/gl_legacy/gl_legacy_renderer.c index 09999262f..a64a2adec 100644 --- a/src/gl_legacy/gl_legacy_renderer.c +++ b/src/gl_legacy/gl_legacy_renderer.c @@ -144,6 +144,10 @@ static void glInit(Renderer* renderer, DataWin* dataWin) { abort(); } +#ifndef PLATFORM_PS3 + gl_init_wrappers(); +#endif + // GL 2.0+ has NPOT textures as core; older GL (1.x) may or may not have // GL_ARB_texture_non_power_of_two. Only round up to power-of-two on GPUs // that actually need it (Intel 82865G etc.). From 484d3a87838ba62a074d2684f5c1782fe1c580d6 Mon Sep 17 00:00:00 2001 From: Un1q32 Date: Wed, 15 Jul 2026 04:24:12 -0400 Subject: [PATCH 2/7] dont need it --- src/desktop/main.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/desktop/main.c b/src/desktop/main.c index d55cb3bc1..085830abc 100644 --- a/src/desktop/main.c +++ b/src/desktop/main.c @@ -36,7 +36,6 @@ #include "gl_legacy_renderer.h" #endif #include "gl_common.h" -#include "gl_wrappers.h" #endif #ifdef ENABLE_SW_RENDERER #include "sw_renderer.h" From 16c7a405d6832a1296912bee7d259655d444d20f Mon Sep 17 00:00:00 2001 From: Un1q32 Date: Wed, 15 Jul 2026 04:24:48 -0400 Subject: [PATCH 3/7] dont need --- src/gl_common/gl_common.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/gl_common/gl_common.c b/src/gl_common/gl_common.c index a5ae71bca..4819b35bd 100644 --- a/src/gl_common/gl_common.c +++ b/src/gl_common/gl_common.c @@ -8,8 +8,6 @@ #include "utils.h" #include "renderer.h" // for bm_* constants -#include "gl_wrappers.h" - // ===[ Letterbox blit ]=== void GLCommon_computeLetterbox(int32_t gameW, int32_t gameH, int32_t windowW, int32_t windowH, int32_t* outStartX, int32_t* outStartY, int32_t* outEndX, int32_t* outEndY) { From 781b56bf2c5babb353ec9edda5b13b548a157a0b Mon Sep 17 00:00:00 2001 From: Un1q32 Date: Wed, 15 Jul 2026 05:11:40 -0400 Subject: [PATCH 4/7] fix --- src/gl_legacy/gl_legacy_renderer.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gl_legacy/gl_legacy_renderer.c b/src/gl_legacy/gl_legacy_renderer.c index a64a2adec..5c594561c 100644 --- a/src/gl_legacy/gl_legacy_renderer.c +++ b/src/gl_legacy/gl_legacy_renderer.c @@ -1,6 +1,7 @@ #include "gl_legacy_renderer.h" #include "matrix_math.h" #include "text_utils.h" +#include "gl_wrappers.h" #ifdef PLATFORM_PS3 From 00a812522c296b3200d5a2b8f2ef393348afb546 Mon Sep 17 00:00:00 2001 From: Un1q32 Date: Wed, 15 Jul 2026 05:18:09 -0400 Subject: [PATCH 5/7] okok --- src/gl/gl_renderer.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/gl/gl_renderer.c b/src/gl/gl_renderer.c index fafcdc0ae..170aba63c 100644 --- a/src/gl/gl_renderer.c +++ b/src/gl/gl_renderer.c @@ -17,6 +17,7 @@ #include "utils.h" #include "image_decoder.h" #include "gl_common.h" +#include "gl_wrappers.h" // ===[ Constants ]=== #define MAX_QUADS 4096 @@ -52,7 +53,7 @@ static const char* baseFragmentShader = static bool hasFBO() { #if !defined(__EMSCRIPTEN__) && !defined(__ANDROID__) - return (glGenFramebuffers || glGenFramebuffersEXT); + return glGenFramebuffers; #else return true; #endif @@ -60,14 +61,12 @@ static bool hasFBO() { static bool hasVAO() { #if !defined(__EMSCRIPTEN__) && !defined(__ANDROID__) - return (glGenVertexArrays || glGenVertexArraysOES); + return glGenVertexArrays; #else return true; #endif } -#include "gl_wrappers.h" - static inline uint8_t floatToUnormByte(float v) { if (v <= 0.0f) return 0; if (v >= 1.0f) return 255; From 3b367c2554f6ce9ff2d16abad609d49e1325a9c3 Mon Sep 17 00:00:00 2001 From: Un1q32 Date: Wed, 15 Jul 2026 05:20:04 -0400 Subject: [PATCH 6/7] bleh --- src/gl_legacy/gl_legacy_renderer.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/gl_legacy/gl_legacy_renderer.c b/src/gl_legacy/gl_legacy_renderer.c index 5c594561c..baf6f9211 100644 --- a/src/gl_legacy/gl_legacy_renderer.c +++ b/src/gl_legacy/gl_legacy_renderer.c @@ -46,6 +46,15 @@ static inline int32_t nextPow2(int32_t v) { return r; } +#include "stb_image.h" +#include "stb_ds.h" +#include "utils.h" +#include "image_decoder.h" +#include "gl_common.h" +#include "gl_wrappers.h" + +// ===[ Runtime OpenGL extension checks ]=== + // Checks whether an OpenGL extension is available. Uses the modern // (glGetStringi + GL_NUM_EXTENSIONS) path when glGetStringi is non-null // (GL 3.0+), otherwise falls back to the legacy glGetString(GL_EXTENSIONS) @@ -73,24 +82,14 @@ static bool hasGLExtension(const char* name) { } #endif -#include "stb_image.h" -#include "stb_ds.h" -#include "utils.h" -#include "image_decoder.h" -#include "gl_common.h" - -// ===[ Runtime OpenGL extension checks ]=== - static bool hasFBO() { #ifdef PLATFORM_PS3 return true; #else - return (glGenFramebuffers || (glGenFramebuffersEXT && glBlitFramebufferEXT)); + return (glGenFramebuffers && glBlitFramebuffer); #endif } -#include "gl_wrappers.h" - // ===[ Helpers ]=== static void glApplyViewport(GLLegacyRenderer* gl, int32_t x, int32_t y, int32_t w, int32_t h) { From b16d9632a38f260790fd7918d19198cb62ea681e Mon Sep 17 00:00:00 2001 From: Un1q32 Date: Wed, 15 Jul 2026 05:22:35 -0400 Subject: [PATCH 7/7] fuck --- src/gl_common/gl_wrappers.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gl_common/gl_wrappers.h b/src/gl_common/gl_wrappers.h index 981086deb..01ce02abe 100644 --- a/src/gl_common/gl_wrappers.h +++ b/src/gl_common/gl_wrappers.h @@ -1,7 +1,7 @@ #if !defined(_BS_GL_WRAPPERS_H_) && !defined(__EMSCRIPTEN__) && !defined(PLATFORM_PS3) && !defined(__ANDROID__) #define _BS_GL_WRAPPERS_H_ -static inline void init_gl_wrappers(void) { +static inline void gl_init_wrappers(void) { if (!glBindVertexArray) glBindVertexArray = glBindVertexArrayOES;