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

Commit 90b25ed5 authored by Jesse Hall's avatar Jesse Hall
Browse files

Add GraphicsEnv to libgui

This singleton class stores information provided by the framework and
makes it available to EGL/GLES/Vulkan loaders. It will eventually
replace vulkan::LoaderData and possibly the egl blob cache directory
storage.

Bug: 33531483
Test: various apps w/ and w/o driver package installed
Change-Id: If8b84fd38428f1cc9fcee8ffc25eb90cd87cedb4
parent 91190781
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
/*
 * Copyright 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef ANDROID_GUI_GRAPHICS_ENV_H
#define ANDROID_GUI_GRAPHICS_ENV_H 1

#include <string>

namespace android {

class GraphicsEnv {
public:
    static GraphicsEnv& getInstance();

    // Set a search path for loading graphics drivers. The path is a list of
    // directories separated by ':'. A directory can be contained in a zip file
    // (drivers must be stored uncompressed and page aligned); such elements
    // in the search path must have a '!' after the zip filename, e.g.
    //     /data/app/com.example.driver/base.apk!/lib/arm64-v8a
    void setDriverPath(const std::string path);

private:
    GraphicsEnv() = default;
    std::string mDriverPath;
};

} // namespace android

#endif // ANDROID_GUI_GRAPHICS_ENV_H
+1 −0
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ cc_library_shared {
        "FrameTimestamps.cpp",
        "GLConsumer.cpp",
        "GraphicBufferAlloc.cpp",
        "GraphicsEnv.cpp",
        "GuiConfig.cpp",
        "IDisplayEventConnection.cpp",
        "IGraphicBufferAlloc.cpp",
+40 −0
Original line number Diff line number Diff line
/*
 * Copyright 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

//#define LOG_NDEBUG 1
#define LOG_TAG "GraphicsEnv"
#include <gui/GraphicsEnv.h>

#include <log/log.h>

namespace android {

/*static*/ GraphicsEnv& GraphicsEnv::getInstance() {
    static GraphicsEnv env;
    return env;
}

void GraphicsEnv::setDriverPath(const std::string path) {
    if (!mDriverPath.empty()) {
        ALOGV("ignoring attempt to change driver path from '%s' to '%s'",
                mDriverPath.c_str(), path.c_str());
        return;
    }
    ALOGV("setting driver path to '%s'", path.c_str());
    mDriverPath = path;
}

} // namespace android