From dd9b9d451330d2dd11c9e09f90f3fc6f3fa7021b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl=20=C3=85stholm?= Date: Tue, 25 Mar 2025 01:16:20 +0100 Subject: [PATCH] Check if GL_OES_EGL_image_external is supported before trying to use it --- src/render/opengles2/SDL_render_gles2.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index 88ade53624..e415d2a4a9 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -173,6 +173,7 @@ typedef struct GLES2_RenderData bool debug_enabled; + bool GL_OES_EGL_image_external_supported; bool GL_EXT_blend_minmax_supported; #define SDL_PROC(ret, func, params) ret (APIENTRY *func) params; @@ -1623,9 +1624,12 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD #endif #ifdef GL_TEXTURE_EXTERNAL_OES case SDL_PIXELFORMAT_EXTERNAL_OES: - format = GL_NONE; - type = GL_NONE; - break; + if (renderdata->GL_OES_EGL_image_external_supported) { + format = GL_NONE; + type = GL_NONE; + break; + } + SDL_FALLTHROUGH; #endif default: return SDL_SetError("Texture format not supported"); @@ -2249,7 +2253,11 @@ static bool GLES2_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21); #endif #ifdef GL_TEXTURE_EXTERNAL_OES - if (GLES2_CacheShader(data, GLES2_SHADER_FRAGMENT_TEXTURE_EXTERNAL_OES, GL_FRAGMENT_SHADER)) { + if (SDL_GL_ExtensionSupported("GL_OES_EGL_image_external")) { + data->GL_OES_EGL_image_external_supported = true; + if (!GLES2_CacheShader(data, GLES2_SHADER_FRAGMENT_TEXTURE_EXTERNAL_OES, GL_FRAGMENT_SHADER)) { + goto error; + } SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_EXTERNAL_OES); } #endif