mcst-linux-kernel/patches-2024.06.26/gl4es-1.1.4/0226-Added-LIBGL_DEEPBIND-e...

80 lines
2.6 KiB
Diff

From 3e1a355713d82978c9bcf467aab2e3b273b77384 Mon Sep 17 00:00:00 2001
From: ptitSeb <sebastien.chev@gmail.com>
Date: Fri, 16 Dec 2022 22:39:30 +0100
Subject: [PATCH 226/233] Added LIBGL_DEEPBIND env. var. to control
RTLD_DEEPBIND use when loading ELG/GLES libs
---
USAGE.md | 5 +++++
src/gl/init.c | 5 +++++
src/gl/init.h | 1 +
src/gl/loader.c | 4 ++--
4 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/USAGE.md b/USAGE.md
index 54797e76..03865369 100644
--- a/USAGE.md
+++ b/USAGE.md
@@ -380,3 +380,8 @@ Force normals to be normliazed in FPE
Blit to FB 0 force a SwapBuffer
* 0 : Default, don't force a SwapBuffer when glBlitFramebuffer to draw fb0 is used (unless the full FB0 if blitted)
* 1 : Force a SwapBuffer each time glBlitFramebuffer on FB0 is used (can help some windowed Wine games)
+
+###### LIBGL_DEEPBIND
+Use RTLD_DEEPBIND when loading EGL and GLES library
+* 0 : Default except on PYRA, use RTLD_DEEPBIND when loading EGL/GLES libraries
+* 1 : Default only on PYRA, don't use RTLD_DEEPBIND when loading EGL/GLES libraries
diff --git a/src/gl/init.c b/src/gl/init.c
index 6ed2eb10..0398a1b5 100644
--- a/src/gl/init.c
+++ b/src/gl/init.c
@@ -96,6 +96,11 @@ void initialize_gl4es() {
globals4es.mergelist = 1;
globals4es.queries = 1;
globals4es.beginend = 1;
+ #ifdef PYRA
+ GetEnvVarInt("LIBGL_DEEPBIND", &globals4es.deepbind, 0);
+ #else
+ GetEnvVarInt("LIBGL_DEEPBIND", &globals4es.deepbind, 1);
+ #endif
// overrides by env. variables
#ifdef GL4ES_COMPILE_FOR_USE_IN_SHARED_LIB
GetEnvVarInt("LIBGL_NOBANNER",&globals4es.nobanner,1);
diff --git a/src/gl/init.h b/src/gl/init.h
index e8850ddb..feffa5df 100644
--- a/src/gl/init.h
+++ b/src/gl/init.h
@@ -76,6 +76,7 @@ typedef struct _globals4es {
int blitfb0;
int skiptexcopies;
int shaderblend;
+ int deepbind;
float fbtexscale;
#ifndef NO_GBM
char drmcard[50];
diff --git a/src/gl/loader.c b/src/gl/loader.c
index 43dbce80..52b4eca8 100644
--- a/src/gl/loader.c
+++ b/src/gl/loader.c
@@ -106,7 +106,7 @@ void *open_lib(const char **names, const char *override) {
char path_name[PATH_MAX + 1];
int flags = RTLD_LOCAL | RTLD_NOW;
-#if defined(RTLD_DEEPBIND) && !defined(PYRA)
+#if defined(RTLD_DEEPBIND)
static int totest = 1;
static int sanitizer = 0;
if(totest) {
@@ -116,7 +116,7 @@ void *open_lib(const char **names, const char *override) {
sanitizer = 1;
}
// note: breaks address sanitizer
- if(!sanitizer)
+ if(!sanitizer && globals4es.deepbind)
flags |= RTLD_DEEPBIND;
#endif
if (override) {
--
2.11.0