Disable EGL hibernation due to jank
Hibernating EGL takes a long time (>100 ms) and blocks all other
rendering. During window animations, the outgoing activity begins
hibernation before the animation stops, causing visible stutter.
Hibernation is still available by setting 'BOARD_ALLOW_EGL_HIBERNATION
:= true' in the devices BoardConfig.mk
Change-Id: Iab4e00723a1adcd97481e81b2efdc821b3e9712f
diff --git a/opengl/libs/Android.mk b/opengl/libs/Android.mk
index 66bc64d..c5c2618 100644
--- a/opengl/libs/Android.mk
+++ b/opengl/libs/Android.mk
@@ -36,6 +36,10 @@
LOCAL_CFLAGS += -fvisibility=hidden
LOCAL_CFLAGS += -DEGL_TRACE=1
+ifeq ($(BOARD_ALLOW_EGL_HIBERNATION),true)
+ LOCAL_CFLAGS += -DBOARD_ALLOW_EGL_HIBERNATION
+endif
+
ifeq ($(TARGET_BOARD_PLATFORM),msm7k)
LOCAL_CFLAGS += -DADRENO130=1
endif
diff --git a/opengl/libs/EGL/egl_display.cpp b/opengl/libs/EGL/egl_display.cpp
index f2e3897..2cd1a93 100644
--- a/opengl/libs/EGL/egl_display.cpp
+++ b/opengl/libs/EGL/egl_display.cpp
@@ -420,7 +420,7 @@
if (mWakeCount == 0 && CC_UNLIKELY(mAttemptHibernation)) {
egl_connection_t* const cnx = &gEGLImpl;
mAttemptHibernation = false;
- if (mDpyValid &&
+ if (mAllowHibernation && mDpyValid &&
cnx->egl.eglHibernateProcessIMG &&
cnx->egl.eglAwakenProcessIMG) {
ALOGV("Hibernating\n");
diff --git a/opengl/libs/EGL/egl_display.h b/opengl/libs/EGL/egl_display.h
index 412568b..7bb09a3 100644
--- a/opengl/libs/EGL/egl_display.h
+++ b/opengl/libs/EGL/egl_display.h
@@ -155,7 +155,12 @@
};
HibernationMachine(): mWakeCount(0), mHibernating(false),
- mAttemptHibernation(false), mDpyValid(false)
+ mAttemptHibernation(false), mDpyValid(false),
+#if BOARD_ALLOW_EGL_HIBERNATION
+ mAllowHibernation(true)
+#else
+ mAllowHibernation(false)
+#endif
{}
~HibernationMachine() {}
@@ -165,11 +170,12 @@
void setDisplayValid(bool valid);
private:
- Mutex mLock;
- int32_t mWakeCount;
- bool mHibernating;
- bool mAttemptHibernation;
- bool mDpyValid;
+ Mutex mLock;
+ int32_t mWakeCount;
+ bool mHibernating;
+ bool mAttemptHibernation;
+ bool mDpyValid;
+ const bool mAllowHibernation;
};
HibernationMachine mHibernation;
};