From 8d35be14a0eed5e7aed4040d83f21427bbe9071b Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Tue, 9 Jun 2026 19:57:30 +0800 Subject: [PATCH] [Fix] (MG_Backend/DirectGLES, MG_Util/BackendLoader): stop treating partial EGL/GLES symbol load as fatal --- .../DirectGLES/BackendObject_DirectGLES.cpp | 13 +++---------- .../MG_Util/BackendLoaders/OpenGL/Loader.cpp | 16 ++++------------ MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.h | 4 ++-- 3 files changed, 9 insertions(+), 24 deletions(-) diff --git a/MobileGL/MG_Backend/DirectGLES/BackendObject_DirectGLES.cpp b/MobileGL/MG_Backend/DirectGLES/BackendObject_DirectGLES.cpp index 5516c61a..7e792839 100644 --- a/MobileGL/MG_Backend/DirectGLES/BackendObject_DirectGLES.cpp +++ b/MobileGL/MG_Backend/DirectGLES/BackendObject_DirectGLES.cpp @@ -34,18 +34,11 @@ namespace MobileGL::MG_Backend::DirectGLES { } void BackendObject_DirectGLES::Initialize() { - if (!MG_Util::BackendLoader::AcquireEGLFunctions(m_EGLFunctions)) { - MGLOG_E("Failed to acquire EGL functions for DirectGLES backend"); - return; - } - if (!MG_Util::BackendLoader::AcquireGLESFunctions(m_GLESFunctions, m_EGLFunctions.eglGetProcAddress)) { - MGLOG_E("Failed to acquire GLES functions for DirectGLES backend"); - return; - } - m_initialized = true; - + MG_Util::BackendLoader::AcquireEGLFunctions(m_EGLFunctions); + MG_Util::BackendLoader::AcquireGLESFunctions(m_GLESFunctions, m_EGLFunctions.eglGetProcAddress); DirectGLES::SetEGLFuncsTable(m_EGLFunctions); DirectGLES::SetGLESFuncsTable(m_GLESFunctions); + m_initialized = true; } Bool BackendObject_DirectGLES::InitCapabilities() { diff --git a/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.cpp b/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.cpp index f4b8989b..8510b59f 100644 --- a/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.cpp +++ b/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.cpp @@ -41,21 +41,18 @@ namespace MobileGL::MG_Util::BackendLoader { #endif } - Bool AcquireGLESFunctions(MG_External::GLESFunctionsTable& funcs, + void AcquireGLESFunctions(MG_External::GLESFunctionsTable& funcs, MG_External::EGL::eglGetProcAddress_PTR procAddress) { if (!procAddress) { MGLOG_E("eglGetProcAddress is nullptr, cannot load GLES functions"); - return false; + return; } - Bool allRequiredLoaded = true; - #define INIT_GLES_FUNC(name) \ do { \ funcs.name = (MG_External::GLES::name##_PTR)procAddress(#name); \ if (!funcs.name) { \ MGLOG_E("Failed to load GLES function: %s", #name); \ - allRequiredLoaded = false; \ } \ } while (0); @@ -433,25 +430,21 @@ namespace MobileGL::MG_Util::BackendLoader { INIT_GLES_FUNC(glMultiDrawElementsIndirectEXT) INIT_GLES_FUNC(glMultiDrawElementsBaseVertexEXT) } - return allRequiredLoaded; } - Bool AcquireEGLFunctions(MG_External::EGLFunctionsTable& funcs) { + void AcquireEGLFunctions(MG_External::EGLFunctionsTable& funcs) { static const Vector EGLLibNames = {"libEGL.so"}; void* eglLib = OpenLib(EGLLibNames); if (!eglLib) { MGLOG_E("Failed to open libEGL.so"); - return false; + return; } - Bool allRequiredLoaded = true; - #define INIT_EGL_FUNC(name) \ do { \ funcs.name = (MG_External::EGL::name##_PTR)ProcAddress(eglLib, #name); \ if (!funcs.name) { \ MGLOG_E("Failed to load EGL function: %s", #name); \ - allRequiredLoaded = false; \ } \ } while (0); @@ -504,7 +497,6 @@ namespace MobileGL::MG_Util::BackendLoader { INIT_EGL_FUNC(eglGetPlatformDisplay) INIT_EGL_FUNC(eglWaitSync) } - return allRequiredLoaded; } Bool FillInGLESCapabilities(MG_External::GLESCapabilities& caps, const MG_External::GLESFunctionsTable& glesFuncs) { diff --git a/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.h b/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.h index 56986224..93b00bb9 100644 --- a/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.h +++ b/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.h @@ -1070,9 +1070,9 @@ namespace MobileGL { } // namespace MG_External namespace MG_Util::BackendLoader { - Bool AcquireGLESFunctions(MG_External::GLESFunctionsTable& funcs, + void AcquireGLESFunctions(MG_External::GLESFunctionsTable& funcs, MG_External::EGL::eglGetProcAddress_PTR procAddress); - Bool AcquireEGLFunctions(MG_External::EGLFunctionsTable& funcs); + void AcquireEGLFunctions(MG_External::EGLFunctionsTable& funcs); Bool FillInGLESCapabilities(MG_External::GLESCapabilities& caps, const MG_External::GLESFunctionsTable& glesFuncs); } // namespace MG_Util::BackendLoader