From b064ad6ac50dcf96d43e8fb2408c1ba93d291987 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Tue, 8 Mar 2022 18:14:10 -0800
Subject: [PATCH] Allow GL_ARB_texture_non_power_of_two environment variable to
override OpenGL 2.0 check
---
src/render/opengl/SDL_render_gl.c | 33 +++++++++++++++++++------------
1 file changed, 20 insertions(+), 13 deletions(-)
diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c
index aac3893b5fa..9e5f2b5e432 100644
--- a/src/render/opengl/SDL_render_gl.c
+++ b/src/render/opengl/SDL_render_gl.c
@@ -1726,8 +1726,8 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags)
Uint32 window_flags;
int profile_mask = 0, major = 0, minor = 0;
SDL_bool changed_window = SDL_FALSE;
- SDL_bool isGL2 = SDL_FALSE;
- const char *verstr = NULL;
+ const char *hint;
+ SDL_bool non_power_of_two_supported = SDL_FALSE;
SDL_GL_GetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, &profile_mask);
SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &major);
@@ -1847,22 +1847,29 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags)
data->glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB);
}
- verstr = (const char *) data->glGetString(GL_VERSION);
- if (verstr) {
- char verbuf[16];
- char *ptr;
- SDL_strlcpy(verbuf, verstr, sizeof (verbuf));
- ptr = SDL_strchr(verbuf, '.');
- if (ptr) {
- *ptr = '\0';
- if (SDL_atoi(verbuf) >= 2) {
- isGL2 = SDL_TRUE;
+ hint = SDL_getenv("GL_ARB_texture_non_power_of_two");
+ if (!hint || *hint != '0') {
+ SDL_bool isGL2 = SDL_FALSE;
+ const char *verstr = (const char *)data->glGetString(GL_VERSION);
+ if (verstr) {
+ char verbuf[16];
+ char *ptr;
+ SDL_strlcpy(verbuf, verstr, sizeof (verbuf));
+ ptr = SDL_strchr(verbuf, '.');
+ if (ptr) {
+ *ptr = '\0';
+ if (SDL_atoi(verbuf) >= 2) {
+ isGL2 = SDL_TRUE;
+ }
}
}
+ if (isGL2 || SDL_GL_ExtensionSupported("GL_ARB_texture_non_power_of_two")) {
+ non_power_of_two_supported = SDL_TRUE;
+ }
}
data->textype = GL_TEXTURE_2D;
- if (isGL2 || SDL_GL_ExtensionSupported("GL_ARB_texture_non_power_of_two")) {
+ if (non_power_of_two_supported) {
data->GL_ARB_texture_non_power_of_two_supported = SDL_TRUE;
data->glGetIntegerv(GL_MAX_TEXTURE_SIZE, &value);
renderer->info.max_texture_width = value;