Do not use default namespace to load ANGLE when in vendor partition.
Previously the loader was changed to always assume ANGLE is in system
partition, but this is not true until the flag is enabled.
Bug: b/309001559
Test: avd boot
Change-Id: Ia973bd2cc9e3aff3693e28784c61fb8bf61adaf5
diff --git a/opengl/libs/EGL/Loader.cpp b/opengl/libs/EGL/Loader.cpp
index e0ad6d9..0e685bc 100644
--- a/opengl/libs/EGL/Loader.cpp
+++ b/opengl/libs/EGL/Loader.cpp
@@ -67,6 +67,7 @@
static const char* RO_DRIVER_SUFFIX_PROPERTY = "ro.hardware.egl";
static const char* RO_BOARD_PLATFORM_PROPERTY = "ro.board.platform";
static const char* ANGLE_SUFFIX_VALUE = "angle";
+static const char* VENDOR_ANGLE_BUILD = "ro.gfx.angle.supported";
static const char* HAL_SUBNAME_KEY_PROPERTIES[3] = {
PERSIST_DRIVER_SUFFIX_PROPERTY,
@@ -493,8 +494,10 @@
void* dso = nullptr;
+ const bool AngleInVendor = property_get_bool(VENDOR_ANGLE_BUILD, false);
+ const bool isSuffixAngle = suffix != nullptr && strcmp(suffix, ANGLE_SUFFIX_VALUE) == 0;
// Only use sphal namespace when system ANGLE binaries are not the default drivers.
- const bool useSphalNamespace = suffix != nullptr && strcmp(suffix, ANGLE_SUFFIX_VALUE) != 0;
+ const bool useSphalNamespace = !isSuffixAngle || AngleInVendor;
const std::string absolutePath =
findLibrary(libraryName, useSphalNamespace ? VENDOR_LIB_EGL_DIR : SYSTEM_LIB_PATH,