summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yuxin Hu <yuxinhu@google.com> 2024-04-23 20:40:36 +0000
committer Yuxin Hu <yuxinhu@google.com> 2024-04-25 23:43:31 +0000
commitafba584c1d61375c6e6e4ef706ede71ef4e91507 (patch)
tree0b9a5a19728722617aa4738c56331a2c643439a1
parent9c01ea307db822c56e6e6eeb58d1eca942fb2325 (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.cpp8
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;