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
This commit is contained in:
Jesse Hall 2012-05-04 14:52:40 -07:00
parent 5c8a608497
commit 201f3b2da5
3 changed files with 17 additions and 7 deletions

View File

@ -36,6 +36,10 @@ LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES
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

View File

@ -420,7 +420,7 @@ void egl_display_t::HibernationMachine::decWakeCount(WakeRefStrength strength) {
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");

View File

@ -155,7 +155,12 @@ private:
};
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 @@ private:
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;
};