about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-11-02 09:28:34 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-11-02 09:28:34 +0100
commitc8d98f6901b36147b516c76044e2c41dda7452a5 (patch)
tree2f49d6248d7045d6c36ef91e6f19650637a056e6 /src
parent38cfeeb558b38e941c26ad4f91c6cdabadc86795 (diff)
downloadbox64-c8d98f6901b36147b516c76044e2c41dda7452a5.tar.gz
box64-c8d98f6901b36147b516c76044e2c41dda7452a5.zip
[RCFIEL] Add an option to force usage of native EGL/GLESv2 library
Diffstat (limited to 'src')
-rw-r--r--src/core.c8
-rw-r--r--src/librarian/library.c7
-rw-r--r--src/tools/rcfile.c1
3 files changed, 16 insertions, 0 deletions
diff --git a/src/core.c b/src/core.c
index 89f0c78b..a7ca5e32 100644
--- a/src/core.c
+++ b/src/core.c
@@ -159,6 +159,7 @@ int box64_x11glx = 1;
 int allow_missing_libs = 0;
 int box64_prefer_emulated = 0;
 int box64_prefer_wrapped = 0;
+int box64_wrap_egl = 0;
 int box64_sse_flushto0 = 0;
 int box64_x87_no80bits = 0;
 int box64_sync_rounding = 0;
@@ -1517,6 +1518,13 @@ void LoadEnvVars(box64context_t *context)
             printf_log(LOG_INFO, "BOX64: Prefering Emulated libs\n");
         }
     }
+    if(getenv("BOX64_WRAP_EGL")) {
+        char* p = getenv("BOX64_WRAP_EGL");
+        if (*p>='0' && *p<='1') {
+            box64_wrap_egl = *p - '0';
+            if(box64_wrap_egl) printf_log(LOG_INFO, "BOX64: Prefering Native(Wrapped) EGL/GLESv2\n");
+        }
+    }
 
     if(getenv("BOX64_NOSIGSEGV")) {
         if (strcmp(getenv("BOX64_NOSIGSEGV"), "1")==0) {
diff --git a/src/librarian/library.c b/src/librarian/library.c
index b454a3ac..a4d4e97f 100644
--- a/src/librarian/library.c
+++ b/src/librarian/library.c
@@ -429,10 +429,17 @@ static const char* essential_libs[] = {
     "libxkbcommon-x11.so.0", "libpulse-simple.so.0", "libpulse.so.0", "libvulkan.so.1", "libvulkan.so",
     "ld-linux-x86-64.so.2", "crashhandler.so", "libtcmalloc_minimal.so.0", "libtcmalloc_minimal.so.4", "libanl.so.1"
 };
+static const char* essential_libs_egl[] = {
+    "libEGL.so", "libGLESv2.so"
+};
 static int isEssentialLib(const char* name) {
     for (unsigned int i=0; i<sizeof(essential_libs)/sizeof(essential_libs[0]); ++i)
         if(!strcmp(name, essential_libs[i]))
             return 1;
+    if(box64_wrap_egl)
+        for (unsigned int i=0; i<sizeof(essential_libs_egl)/sizeof(essential_libs_egl[0]); ++i)
+            if(!strcmp(name, essential_libs_egl[i]))
+                return 1;
     return 0;
 }
 
diff --git a/src/tools/rcfile.c b/src/tools/rcfile.c
index 5dd14dc4..9eeb5910 100644
--- a/src/tools/rcfile.c
+++ b/src/tools/rcfile.c
@@ -95,6 +95,7 @@ ENTRYSTRING_(BOX64_EMULATED_LIBS, emulated_libs)        \
 ENTRYBOOL(BOX64_ALLOWMISSINGLIBS, allow_missing_libs)   \
 ENTRYBOOL(BOX64_PREFER_WRAPPED, box64_prefer_wrapped)   \
 ENTRYBOOL(BOX64_PREFER_EMULATED, box64_prefer_emulated) \
+ENTRYBOOL(BOX64_WRAP_EGl, box64_wrap_egl)               \
 ENTRYBOOL(BOX64_CRASHHANDLER, box64_dummy_crashhandler) \
 ENTRYBOOL(BOX64_NOPULSE, box64_nopulse)                 \
 ENTRYBOOL(BOX64_NOGTK, box64_nogtk)                     \