80 lines
2.6 KiB
Diff
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
|
|
|