From 24d6f1788a2a02643d84439908c00d99f07b9108 Mon Sep 17 00:00:00 2001 From: mittorn Date: Sat, 21 Oct 2023 19:17:31 +0300 Subject: [PATCH] platform/sdl: workaround ubuntu SDL2 bug preventing resolving any extensions on EGL --- engine/platform/sdl/vid_sdl.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/engine/platform/sdl/vid_sdl.c b/engine/platform/sdl/vid_sdl.c index 3c633219..0b536e06 100644 --- a/engine/platform/sdl/vid_sdl.c +++ b/engine/platform/sdl/vid_sdl.c @@ -438,6 +438,25 @@ GL_GetProcAddress void *GL_GetProcAddress( const char *name ) { void *func = SDL_GL_GetProcAddress( name ); +#if !SDL_VERSION_ATLEAST( 2, 0, 6 ) && XASH_POSIX + if( !func && Sys_CheckParm( "-egl" )) + { + /* + * SDL2 has broken SDL_GL_GetProcAddress until this commit if using egl: + * https://github.com/libsdl-org/SDL/commit/466ba57d42d244e80357e9ad3011c50af30ed225 + * so call eglGetProcAddress directly + * */ + static void *(*peglGetProcAddress)( const char * ); + if( !peglGetProcAddress ) + { + void *lib = dlopen( "libEGL.so", RTLD_NOW ); + if( lib ) + *(void**)&peglGetProcAddress = dlsym( lib, "eglGetProcAddress" ); + } + if( peglGetProcAddress ) + func = peglGetProcAddress( name ); + } +#endif #if XASH_PSVITA // try to find in main module