Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83431814 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Revert "Load native GLES driver when specified."" into udc-qpr-dev am: 5443413a

parents e850a1ba 5443413a
Loading
Loading
Loading
Loading
+3 −16
Original line number Original line Diff line number Diff line
@@ -512,11 +512,7 @@ bool GraphicsEnv::shouldUseAngle() {
    return mShouldUseAngle;
    return mShouldUseAngle;
}
}


// Set ANGLE information.
void GraphicsEnv::setAngleInfo(const std::string& path, const bool shouldUseSystemAngle,
// 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::string& packageName,
                               const std::vector<std::string> eglFeatures) {
                               const std::vector<std::string> eglFeatures) {
    if (mShouldUseAngle) {
    if (mShouldUseAngle) {
@@ -533,13 +529,8 @@ void GraphicsEnv::setAngleInfo(const std::string& path, const bool shouldUseNati
    mAnglePath = std::move(path);
    mAnglePath = std::move(path);
    ALOGV("setting app package name to '%s'", packageName.c_str());
    ALOGV("setting app package name to '%s'", packageName.c_str());
    mPackageName = std::move(packageName);
    mPackageName = std::move(packageName);
    if (mAnglePath == "system") {
        mShouldUseSystemAngle = true;
    }
    if (!mAnglePath.empty()) {
    mShouldUseAngle = true;
    mShouldUseAngle = true;
    }
    mShouldUseSystemAngle = shouldUseSystemAngle;
    mShouldUseNativeDriver = shouldUseNativeDriver;
}
}


std::string& GraphicsEnv::getPackageName() {
std::string& GraphicsEnv::getPackageName() {
@@ -616,10 +607,6 @@ bool GraphicsEnv::shouldUseSystemAngle() {
    return mShouldUseSystemAngle;
    return mShouldUseSystemAngle;
}
}


bool GraphicsEnv::shouldUseNativeDriver() {
    return mShouldUseNativeDriver;
}

/**
/**
 * APIs for debuggable layers
 * APIs for debuggable layers
 */
 */
+1 −7
Original line number Original line Diff line number Diff line
@@ -108,10 +108,7 @@ public:
    // (libraries must be stored uncompressed and page aligned); such elements
    // (libraries must be stored uncompressed and page aligned); such elements
    // in the search path must have a '!' after the zip filename, e.g.
    // in the search path must have a '!' after the zip filename, e.g.
    //     /system/app/ANGLEPrebuilt/ANGLEPrebuilt.apk!/lib/arm64-v8a
    //     /system/app/ANGLEPrebuilt/ANGLEPrebuilt.apk!/lib/arm64-v8a
    // If the search patch is "system", then it means the system ANGLE should be used.
    void setAngleInfo(const std::string& path, const bool useSystemAngle,
    // 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,
                      const std::string& packageName, const std::vector<std::string> eglFeatures);
                      const std::string& packageName, const std::vector<std::string> eglFeatures);
    // Get the ANGLE driver namespace.
    // Get the ANGLE driver namespace.
    android_namespace_t* getAngleNamespace();
    android_namespace_t* getAngleNamespace();
@@ -121,7 +118,6 @@ public:
    // Set the persist.graphics.egl system property value.
    // Set the persist.graphics.egl system property value.
    void nativeToggleAngleAsSystemDriver(bool enabled);
    void nativeToggleAngleAsSystemDriver(bool enabled);
    bool shouldUseSystemAngle();
    bool shouldUseSystemAngle();
    bool shouldUseNativeDriver();


    /*
    /*
     * Apis for debug layer
     * Apis for debug layer
@@ -179,8 +175,6 @@ private:
    bool mShouldUseAngle = false;
    bool mShouldUseAngle = false;
    // Whether loader should load system ANGLE.
    // Whether loader should load system ANGLE.
    bool mShouldUseSystemAngle = false;
    bool mShouldUseSystemAngle = false;
    // Whether loader should load native GLES driver.
    bool mShouldUseNativeDriver = false;
    // ANGLE namespace.
    // ANGLE namespace.
    android_namespace_t* mAngleNamespace = nullptr;
    android_namespace_t* mAngleNamespace = nullptr;


+6 −23
Original line number Original line Diff line number Diff line
@@ -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.
    // Return true if updated driver namespace is set.
    ns = android::GraphicsEnv::getInstance().getDriverNamespace();
    ns = android::GraphicsEnv::getInstance().getDriverNamespace();
    if (ns) {
    if (ns) {
@@ -245,28 +240,16 @@ void* Loader::open(egl_connection_t* cnx) {
    if (!hnd) {
    if (!hnd) {
        // Secondly, try to load from driver apk.
        // Secondly, try to load from driver apk.
        hnd = attempt_to_load_updated_driver(cnx);
        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;
    bool failToLoadFromDriverSuffixProperty = false;
    if (!hnd) {
    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
        // Start by searching for the library name appended by the system
        // properties of the GLES userspace driver in both locations.
        // properties of the GLES userspace driver in both locations.
        // i.e.:
        // i.e.: