diff options
| author | 2023-10-19 19:05:54 +0000 | |
|---|---|---|
| committer | 2023-10-19 19:05:54 +0000 | |
| commit | 42f5052b92d3408f7098fabd0f23d9dba4b17ff8 (patch) | |
| tree | 444477231b976a1f331a306f85ecfb316bd17be9 | |
| parent | 5bd4fecba94f654b1437c9d8970bf65f087c8a74 (diff) | |
| parent | c7aa7ed75d9894babc0721d97e4c04f0de4e208b (diff) | |
Merge "[Cherry-pick] Revert^2 "Revert "Load native GLES driver when specified.""" into main
| -rw-r--r-- | libs/graphicsenv/GraphicsEnv.cpp | 19 | ||||
| -rw-r--r-- | libs/graphicsenv/include/graphicsenv/GraphicsEnv.h | 8 | ||||
| -rw-r--r-- | opengl/libs/EGL/Loader.cpp | 29 |
3 files changed, 10 insertions, 46 deletions
diff --git a/libs/graphicsenv/GraphicsEnv.cpp b/libs/graphicsenv/GraphicsEnv.cpp index ed5d5c1095..0a5416128e 100644 --- a/libs/graphicsenv/GraphicsEnv.cpp +++ b/libs/graphicsenv/GraphicsEnv.cpp @@ -530,11 +530,7 @@ bool GraphicsEnv::shouldUseAngle() { return mShouldUseAngle; } -// Set ANGLE information. -// If path is "system", it means system ANGLE must be used for the process. -// If shouldUseNativeDriver is true, it means native GLES drivers must be used for the process. -// If path is set to nonempty and shouldUseNativeDriver is true, ANGLE will be used regardless. -void GraphicsEnv::setAngleInfo(const std::string& path, const bool shouldUseNativeDriver, +void GraphicsEnv::setAngleInfo(const std::string& path, const bool shouldUseSystemAngle, const std::string& packageName, const std::vector<std::string> eglFeatures) { if (mShouldUseAngle) { @@ -551,13 +547,8 @@ void GraphicsEnv::setAngleInfo(const std::string& path, const bool shouldUseNati mAnglePath = std::move(path); ALOGV("setting app package name to '%s'", packageName.c_str()); mPackageName = std::move(packageName); - if (mAnglePath == "system") { - mShouldUseSystemAngle = true; - } - if (!mAnglePath.empty()) { - mShouldUseAngle = true; - } - mShouldUseNativeDriver = shouldUseNativeDriver; + mShouldUseAngle = true; + mShouldUseSystemAngle = shouldUseSystemAngle; } std::string& GraphicsEnv::getPackageName() { @@ -634,10 +625,6 @@ bool GraphicsEnv::shouldUseSystemAngle() { return mShouldUseSystemAngle; } -bool GraphicsEnv::shouldUseNativeDriver() { - return mShouldUseNativeDriver; -} - /** * APIs for debuggable layers */ diff --git a/libs/graphicsenv/include/graphicsenv/GraphicsEnv.h b/libs/graphicsenv/include/graphicsenv/GraphicsEnv.h index 6cce3f6998..fbf2902869 100644 --- a/libs/graphicsenv/include/graphicsenv/GraphicsEnv.h +++ b/libs/graphicsenv/include/graphicsenv/GraphicsEnv.h @@ -108,10 +108,7 @@ public: // (libraries must be stored uncompressed and page aligned); such elements // in the search path must have a '!' after the zip filename, e.g. // /system/app/ANGLEPrebuilt/ANGLEPrebuilt.apk!/lib/arm64-v8a - // If the search patch is "system", then it means the system ANGLE should be used. - // If shouldUseNativeDriver is true, it means native GLES drivers must be used for the process. - // If path is set to nonempty and shouldUseNativeDriver is true, ANGLE will be used regardless. - void setAngleInfo(const std::string& path, const bool shouldUseNativeDriver, + void setAngleInfo(const std::string& path, const bool useSystemAngle, const std::string& packageName, const std::vector<std::string> eglFeatures); // Get the ANGLE driver namespace. android_namespace_t* getAngleNamespace(); @@ -121,7 +118,6 @@ public: // Set the persist.graphics.egl system property value. void nativeToggleAngleAsSystemDriver(bool enabled); bool shouldUseSystemAngle(); - bool shouldUseNativeDriver(); /* * Apis for debug layer @@ -179,8 +175,6 @@ private: bool mShouldUseAngle = false; // Whether loader should load system ANGLE. bool mShouldUseSystemAngle = false; - // Whether loader should load native GLES driver. - bool mShouldUseNativeDriver = false; // ANGLE namespace. android_namespace_t* mAngleNamespace = nullptr; diff --git a/opengl/libs/EGL/Loader.cpp b/opengl/libs/EGL/Loader.cpp index 654e5b7c03..8d0eb590bf 100644 --- a/opengl/libs/EGL/Loader.cpp +++ b/opengl/libs/EGL/Loader.cpp @@ -169,11 +169,6 @@ static bool should_unload_system_driver(egl_connection_t* cnx) { } } - // Return true if native GLES drivers should be used and ANGLE is already loaded. - if (android::GraphicsEnv::getInstance().shouldUseNativeDriver() && cnx->angleLoaded) { - return true; - } - // Return true if updated driver namespace is set. ns = android::GraphicsEnv::getInstance().getDriverNamespace(); if (ns) { @@ -245,28 +240,16 @@ void* Loader::open(egl_connection_t* cnx) { if (!hnd) { // Secondly, try to load from driver apk. hnd = attempt_to_load_updated_driver(cnx); - - // If updated driver apk is set but fail to load, abort here. - LOG_ALWAYS_FATAL_IF(android::GraphicsEnv::getInstance().getDriverNamespace(), - "couldn't find an OpenGL ES implementation from %s", - android::GraphicsEnv::getInstance().getDriverPath().c_str()); } - // Attempt to load native GLES drivers specified by ro.hardware.egl if native is selected. - // If native is selected but fail to load, abort. - if (!hnd && android::GraphicsEnv::getInstance().shouldUseNativeDriver()) { - auto driverSuffix = base::GetProperty(RO_DRIVER_SUFFIX_PROPERTY, ""); - LOG_ALWAYS_FATAL_IF(driverSuffix.empty(), - "Native GLES driver is selected but not specified in %s", - RO_DRIVER_SUFFIX_PROPERTY); - hnd = attempt_to_load_system_driver(cnx, driverSuffix.c_str(), true); - LOG_ALWAYS_FATAL_IF(!hnd, "Native GLES driver is selected but failed to load. %s=%s", - RO_DRIVER_SUFFIX_PROPERTY, driverSuffix.c_str()); - } - - // Finally, try to load default driver. bool failToLoadFromDriverSuffixProperty = false; if (!hnd) { + // If updated driver apk is set but fail to load, abort here. + if (android::GraphicsEnv::getInstance().getDriverNamespace()) { + LOG_ALWAYS_FATAL("couldn't find an OpenGL ES implementation from %s", + android::GraphicsEnv::getInstance().getDriverPath().c_str()); + } + // Finally, try to load system driver. // Start by searching for the library name appended by the system // properties of the GLES userspace driver in both locations. // i.e.: |