diff options
| author | 2024-04-23 20:40:36 +0000 | |
|---|---|---|
| committer | 2024-04-25 23:43:31 +0000 | |
| commit | afba584c1d61375c6e6e4ef706ede71ef4e91507 (patch) | |
| tree | 0b9a5a19728722617aa4738c56331a2c643439a1 | |
| parent | 9c01ea307db822c56e6e6eeb58d1eca942fb2325 (diff) | |
Fix a missing case in unloading system driver
When app requests to use ANGLE on devices without an
ANGLE apk installed, but the device has preloaded native
GLES driver, the current should_unload_system_driver()
function does not recognize that we should unload the preloaded
GLES driver, and load the ANGLE driver from system parition.
This CL adds this missed check in should_unload_system_driver()
Bug: b/333483712
Test: atest android.angle.cts.CtsAngleDeveloperOptionHostTest
Result: https://android-build.corp.google.com/abtd/run/L47700030003349338/
Change-Id: I4460eed9f05ee0e19ddb6e4d2a3375701414c458
| -rw-r--r-- | opengl/libs/EGL/Loader.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/opengl/libs/EGL/Loader.cpp b/opengl/libs/EGL/Loader.cpp index af0bcffc1f..ec7b190c74 100644 --- a/opengl/libs/EGL/Loader.cpp +++ b/opengl/libs/EGL/Loader.cpp @@ -184,6 +184,14 @@ static bool should_unload_system_driver(egl_connection_t* cnx) { } } + // Return true if app requests to use ANGLE, but ANGLE is not loaded. + // Difference with the case above is on devices that don't have an ANGLE apk installed, + // ANGLE namespace is not set. In that case if ANGLE in system partition is not loaded, + // we should unload the system driver first, and then load ANGLE from system partition. + if (!cnx->angleLoaded && android::GraphicsEnv::getInstance().shouldUseAngle()) { + return true; + } + // Return true if native GLES drivers should be used and ANGLE is already loaded. if (android::GraphicsEnv::getInstance().shouldUseNativeDriver() && cnx->angleLoaded) { return true; |