From 2661b73e149e99a3202e922d07174cb80b5d6122 Mon Sep 17 00:00:00 2001 From: Peiyong Lin Date: Fri, 30 Jun 2023 00:35:07 +0000 Subject: [Cherry-pick] Load native GLES driver when specified. Since ANGLE and native GLES drivers can coexist, when native is specified, the loader must load the native GLES drivers specified in ro.hardware.egl. This patch adds the support to load native GLES drivers when specified. Bug: b/283858001 Test: atest CtsAngleDeveloperOptionHostTest -c with ANGLE being default Test: atest CtsAngleDeveloperOptionHostTest -c with native being default Change-Id: I85840811d9586bd9f2765b47f3cd1a94c9a8580a Merged-In: I85840811d9586bd9f2765b47f3cd1a94c9a8580a --- libs/graphicsenv/GraphicsEnv.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'libs/graphicsenv/GraphicsEnv.cpp') diff --git a/libs/graphicsenv/GraphicsEnv.cpp b/libs/graphicsenv/GraphicsEnv.cpp index 5bdffe0368..1adf1afaa2 100644 --- a/libs/graphicsenv/GraphicsEnv.cpp +++ b/libs/graphicsenv/GraphicsEnv.cpp @@ -420,7 +420,11 @@ bool GraphicsEnv::shouldUseAngle() { return mShouldUseAngle; } -void GraphicsEnv::setAngleInfo(const std::string& path, const bool shouldUseSystemAngle, +// 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, const std::string& packageName, const std::vector eglFeatures) { if (mShouldUseAngle) { @@ -437,8 +441,13 @@ void GraphicsEnv::setAngleInfo(const std::string& path, const bool shouldUseSyst mAnglePath = std::move(path); ALOGV("setting app package name to '%s'", packageName.c_str()); mPackageName = std::move(packageName); - mShouldUseAngle = true; - mShouldUseSystemAngle = shouldUseSystemAngle; + if (path == "system") { + mShouldUseSystemAngle = true; + } + if (!path.empty()) { + mShouldUseAngle = true; + } + mShouldUseNativeDriver = shouldUseNativeDriver; } void GraphicsEnv::setLayerPaths(NativeLoaderNamespace* appNamespace, @@ -564,7 +573,7 @@ android_namespace_t* GraphicsEnv::getDriverNamespace() { return nullptr; } - mDriverNamespace = android_create_namespace("gfx driver", + mDriverNamespace = android_create_namespace("updatable gfx driver", mDriverPath.c_str(), // ld_library_path mDriverPath.c_str(), // default_library_path ANDROID_NAMESPACE_TYPE_ISOLATED, @@ -648,4 +657,8 @@ bool GraphicsEnv::shouldUseSystemAngle() { return mShouldUseSystemAngle; } +bool GraphicsEnv::shouldUseNativeDriver() { + return mShouldUseNativeDriver; +} + } // namespace android -- cgit v1.2.3-59-g8ed1b