diff options
| -rw-r--r-- | libs/graphicsenv/GraphicsEnv.cpp | 37 | ||||
| -rw-r--r-- | libs/graphicsenv/include/graphicsenv/GraphicsEnv.h | 28 | ||||
| -rw-r--r-- | opengl/libs/EGL/Loader.cpp | 19 | ||||
| -rw-r--r-- | opengl/libs/EGL/egl_display.cpp | 2 | ||||
| -rw-r--r-- | opengl/libs/EGL/egl_layers.cpp | 6 |
5 files changed, 19 insertions, 73 deletions
diff --git a/libs/graphicsenv/GraphicsEnv.cpp b/libs/graphicsenv/GraphicsEnv.cpp index 024d72b8d6..8661401021 100644 --- a/libs/graphicsenv/GraphicsEnv.cpp +++ b/libs/graphicsenv/GraphicsEnv.cpp @@ -145,11 +145,11 @@ long GraphicsEnv::getAngleRulesLength() { return mAngleRulesLength; } -const std::string GraphicsEnv::getLayerPaths(){ +const std::string& GraphicsEnv::getLayerPaths() { return mLayerPaths; } -const std::string GraphicsEnv::getDebugLayers() { +const std::string& GraphicsEnv::getDebugLayers() { return mDebugLayers; } @@ -196,36 +196,3 @@ android_namespace_t* GraphicsEnv::getAngleNamespace() { } } // namespace android - -extern "C" { -android_namespace_t* android_getDriverNamespace() { - return android::GraphicsEnv::getInstance().getDriverNamespace(); -} -android_namespace_t* android_getAngleNamespace() { - return android::GraphicsEnv::getInstance().getAngleNamespace(); -} -const char* android_getAngleAppName() { - return android::GraphicsEnv::getInstance().getAngleAppName(); -} -bool android_getAngleDeveloperOptIn() { - return android::GraphicsEnv::getInstance().getAngleDeveloperOptIn(); -} -const char* android_getAngleAppPref() { - return android::GraphicsEnv::getInstance().getAngleAppPref(); -} -int android_getAngleRulesFd() { - return android::GraphicsEnv::getInstance().getAngleRulesFd(); -} -long android_getAngleRulesOffset() { - return android::GraphicsEnv::getInstance().getAngleRulesOffset(); -} -long android_getAngleRulesLength() { - return android::GraphicsEnv::getInstance().getAngleRulesLength(); -} -const char* android_getLayerPaths() { - return android::GraphicsEnv::getInstance().getLayerPaths().c_str(); -} -const char* android_getDebugLayers() { - return android::GraphicsEnv::getInstance().getDebugLayers().c_str(); -} -} diff --git a/libs/graphicsenv/include/graphicsenv/GraphicsEnv.h b/libs/graphicsenv/include/graphicsenv/GraphicsEnv.h index 404823abf0..10c2549227 100644 --- a/libs/graphicsenv/include/graphicsenv/GraphicsEnv.h +++ b/libs/graphicsenv/include/graphicsenv/GraphicsEnv.h @@ -58,10 +58,10 @@ public: void setLayerPaths(NativeLoaderNamespace* appNamespace, const std::string layerPaths); NativeLoaderNamespace* getAppNamespace(); - const std::string getLayerPaths(); + const std::string& getLayerPaths(); void setDebugLayers(const std::string layers); - const std::string getDebugLayers(); + const std::string& getDebugLayers(); private: GraphicsEnv() = default; @@ -82,28 +82,4 @@ private: } // namespace android -/* FIXME - * Export an un-mangled function that just does - * return android::GraphicsEnv::getInstance().getDriverNamespace(); - * This allows libEGL to get the function pointer via dlsym, since it can't - * directly link against libgui. In a future release, we'll fix this so that - * libgui does not depend on graphics API libraries, and libEGL can link - * against it. The current dependencies from libgui -> libEGL are: - * - the GLConsumer class, which should be moved to its own library - * - the EGLsyncKHR synchronization in BufferQueue, which is deprecated and - * will be removed soon. - */ -extern "C" { - android_namespace_t* android_getDriverNamespace(); - android_namespace_t* android_getAngleNamespace(); - const char* android_getAngleAppName(); - const char* android_getAngleAppPref(); - bool android_getAngleDeveloperOptIn(); - int android_getAngleRulesFd(); - long android_getAngleRulesOffset(); - long android_getAngleRulesLength(); - const char* android_getLayerPaths(); - const char* android_getDebugLayers(); -} - #endif // ANDROID_UI_GRAPHICS_ENV_H diff --git a/opengl/libs/EGL/Loader.cpp b/opengl/libs/EGL/Loader.cpp index 6624976c4f..922be02cda 100644 --- a/opengl/libs/EGL/Loader.cpp +++ b/opengl/libs/EGL/Loader.cpp @@ -529,12 +529,12 @@ static void* load_angle(const char* kind, android_namespace_t* ns, egl_connectio std::string name; char prop[PROPERTY_VALUE_MAX]; - const char* app_name = android_getAngleAppName(); - const char* app_pref = android_getAngleAppPref(); - bool developer_opt_in = android_getAngleDeveloperOptIn(); - const int rules_fd = android_getAngleRulesFd(); - const long rules_offset = android_getAngleRulesOffset(); - const long rules_length = android_getAngleRulesLength(); + const char* app_name = android::GraphicsEnv::getInstance().getAngleAppName(); + const char* app_pref = android::GraphicsEnv::getInstance().getAngleAppPref(); + bool developer_opt_in = android::GraphicsEnv::getInstance().getAngleDeveloperOptIn(); + const int rules_fd = android::GraphicsEnv::getInstance().getAngleRulesFd(); + const long rules_offset = android::GraphicsEnv::getInstance().getAngleRulesOffset(); + const long rules_length = android::GraphicsEnv::getInstance().getAngleRulesLength(); // Determine whether or not to use ANGLE: ANGLEPreference developer_option = developer_opt_in ? ANGLE_PREFER_ANGLE : ANGLE_NO_PREFERENCE; @@ -596,7 +596,8 @@ static void* load_angle(const char* kind, android_namespace_t* ns, egl_connectio fpANGLEUseForApplication ANGLEUseForApplication = (fpANGLEUseForApplication)dlsym(so, "ANGLEUseForApplication"); if (ANGLEUseForApplication) { - ANGLEPreference app_preference = getAnglePref(android_getAngleAppPref()); + ANGLEPreference app_preference = + getAnglePref(android::GraphicsEnv::getInstance().getAngleAppPref()); use_angle = (ANGLEUseForApplication)(app_name_str.c_str(), manufacturer, model, developer_option, app_preference); ALOGV("Result of opt-in/out logic is %s", use_angle ? "true" : "false"); @@ -688,13 +689,13 @@ void *Loader::load_driver(const char* kind, ATRACE_CALL(); void* dso = nullptr; - android_namespace_t* ns = android_getAngleNamespace(); + android_namespace_t* ns = android::GraphicsEnv::getInstance().getAngleNamespace(); if (ns) { dso = load_angle(kind, ns, cnx); } #ifndef __ANDROID_VNDK__ if (!dso) { - android_namespace_t* ns = android_getDriverNamespace(); + android_namespace_t* ns = android::GraphicsEnv::getInstance().getDriverNamespace(); if (ns) { dso = load_updated_driver(kind, ns); } diff --git a/opengl/libs/EGL/egl_display.cpp b/opengl/libs/EGL/egl_display.cpp index 113f0a6170..94af2e7bb0 100644 --- a/opengl/libs/EGL/egl_display.cpp +++ b/opengl/libs/EGL/egl_display.cpp @@ -167,7 +167,7 @@ static bool addAnglePlatformAttributes(egl_connection_t* const cnx, // Initialize function ptrs for ANGLE PlatformMethods struct, used for systrace bool initializeAnglePlatform(EGLDisplay dpy) { // Since we're inside libEGL, use dlsym to lookup fptr for ANGLEGetDisplayPlatform - android_namespace_t* ns = android_getAngleNamespace(); + android_namespace_t* ns = android::GraphicsEnv::getInstance().getAngleNamespace(); const android_dlextinfo dlextinfo = { .flags = ANDROID_DLEXT_USE_NAMESPACE, .library_namespace = ns, diff --git a/opengl/libs/EGL/egl_layers.cpp b/opengl/libs/EGL/egl_layers.cpp index 6900b8b464..e4906e08c4 100644 --- a/opengl/libs/EGL/egl_layers.cpp +++ b/opengl/libs/EGL/egl_layers.cpp @@ -145,7 +145,7 @@ const char kSystemLayerLibraryDir[] = "/data/local/debug/gles"; std::string LayerLoader::GetDebugLayers() { // Layers can be specified at the Java level in GraphicsEnvironemnt // gpu_debug_layers = layer1:layer2:layerN - std::string debug_layers = android_getDebugLayers(); + std::string debug_layers = android::GraphicsEnv::getInstance().getDebugLayers(); if (debug_layers.empty()) { // Only check system properties if Java settings are empty @@ -339,7 +339,9 @@ void LayerLoader::LoadLayers() { // Load the layers in reverse order so we start with the driver's entrypoint and work our way up for (int32_t i = layers.size() - 1; i >= 0; i--) { // Check each layer path for the layer - std::vector<std::string> paths = android::base::Split(android_getLayerPaths(), ":"); + std::vector<std::string> paths = + android::base::Split(android::GraphicsEnv::getInstance().getLayerPaths().c_str(), + ":"); if (!system_path.empty()) { // Prepend the system paths so they override other layers |