From 680414e09ec900b54ad4c1757cf538714b92d9c6 Mon Sep 17 00:00:00 2001 From: Alec Mouri Date: Tue, 28 Jan 2020 09:22:33 -0800 Subject: [PATCH] [HWUI] Remove libgui from libhwui's dependency list * Add sync features extensions into EglExtensions * Header cleanup Bug: 136263382 Test: builds Change-Id: Ibd29cfe5201419210c9dc09e82af10524454b6cd --- libs/hwui/Android.bp | 8 +++++++- libs/hwui/hwui/Bitmap.cpp | 1 - libs/hwui/renderthread/EglManager.cpp | 14 +++++++++----- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp index debb38b2c1b08..81dedda5341dc 100644 --- a/libs/hwui/Android.bp +++ b/libs/hwui/Android.bp @@ -84,7 +84,6 @@ cc_defaults { "libGLESv3", "libvulkan", "libui", - "libgui", "libnativedisplay", "libnativewindow", "libprotobuf-cpp-lite", @@ -289,6 +288,13 @@ cc_defaults { name: "hwui_test_defaults", defaults: ["hwui_defaults"], test_suites: ["device-tests"], + target: { + android: { + shared_libs: [ + "libgui", + ], + } + }, srcs: [ "tests/common/scenes/*.cpp", "tests/common/LeakChecker.cpp", diff --git a/libs/hwui/hwui/Bitmap.cpp b/libs/hwui/hwui/Bitmap.cpp index 58cc08bc2d733..914c04645289d 100644 --- a/libs/hwui/hwui/Bitmap.cpp +++ b/libs/hwui/hwui/Bitmap.cpp @@ -32,7 +32,6 @@ #ifndef _WIN32 #include -#include #endif #include diff --git a/libs/hwui/renderthread/EglManager.cpp b/libs/hwui/renderthread/EglManager.cpp index c1fed269de5ba..5e0471c08d670 100644 --- a/libs/hwui/renderthread/EglManager.cpp +++ b/libs/hwui/renderthread/EglManager.cpp @@ -20,7 +20,6 @@ #include #include #include -#include #include #include @@ -79,6 +78,9 @@ static struct { bool displayP3 = false; bool contextPriority = false; bool surfacelessContext = false; + bool nativeFenceSync = false; + bool fenceSync = false; + bool waitSync = false; } EglExtensions; EglManager::EglManager() @@ -226,6 +228,9 @@ void EglManager::initExtensions() { EglExtensions.displayP3 = extensions.has("EGL_EXT_gl_colorspace_display_p3_passthrough"); EglExtensions.contextPriority = extensions.has("EGL_IMG_context_priority"); EglExtensions.surfacelessContext = extensions.has("EGL_KHR_surfaceless_context"); + EglExtensions.nativeFenceSync = extensions.has("EGL_ANDROID_native_fence_sync"); + EglExtensions.fenceSync = extensions.has("EGL_KHR_fence_sync"); + EglExtensions.waitSync = extensions.has("EGL_KHR_wait_sync"); } bool EglManager::hasEglContext() { @@ -527,8 +532,7 @@ status_t EglManager::fenceWait(int fence) { return INVALID_OPERATION; } - if (SyncFeatures::getInstance().useWaitSync() && - SyncFeatures::getInstance().useNativeFenceSync()) { + if (EglExtensions.waitSync && EglExtensions.nativeFenceSync) { // Block GPU on the fence. // Create an EGLSyncKHR from the current fence. int fenceFd = ::dup(fence); @@ -572,7 +576,7 @@ status_t EglManager::createReleaseFence(bool useFenceSync, EGLSyncKHR* eglFence, return INVALID_OPERATION; } - if (SyncFeatures::getInstance().useNativeFenceSync()) { + if (EglExtensions.nativeFenceSync) { EGLSyncKHR sync = eglCreateSyncKHR(mEglDisplay, EGL_SYNC_NATIVE_FENCE_ANDROID, nullptr); if (sync == EGL_NO_SYNC_KHR) { ALOGE("EglManager::createReleaseFence: error creating EGL fence: %#x", eglGetError()); @@ -589,7 +593,7 @@ status_t EglManager::createReleaseFence(bool useFenceSync, EGLSyncKHR* eglFence, } *nativeFence = fenceFd; *eglFence = EGL_NO_SYNC_KHR; - } else if (useFenceSync && SyncFeatures::getInstance().useFenceSync()) { + } else if (useFenceSync && EglExtensions.fenceSync) { if (*eglFence != EGL_NO_SYNC_KHR) { // There is already a fence for the current slot. We need to // wait on that before replacing it with another fence to