hwc: Set GPU Hint from idlefallback state to GPU
Set the GPU hint to high from idlefallback to GPU state transition.
Change-Id: Ia8c2e44788e7131c4faf5fda32acf0c5b6000cdd
diff --git a/libhwcomposer/hwc_utils.cpp b/libhwcomposer/hwc_utils.cpp
index 972f12f..058606b 100644
--- a/libhwcomposer/hwc_utils.cpp
+++ b/libhwcomposer/hwc_utils.cpp
@@ -281,7 +281,7 @@
ctx->mGPUHintInfo.mEGLDisplay = NULL;
ctx->mGPUHintInfo.mEGLContext = NULL;
- ctx->mGPUHintInfo.mPrevCompositionGLES = false;
+ ctx->mGPUHintInfo.mCompositionState = COMPOSITION_STATE_MDP;
ctx->mGPUHintInfo.mCurrGPUPerfMode = EGL_GPU_LEVEL_0;
#endif
ALOGI("Initializing Qualcomm Hardware Composer");
@@ -2077,7 +2077,8 @@
}
}
if(isGLESComp(ctx, list)) {
- if(!gpuHint->mPrevCompositionGLES && !MDPComp::isIdleFallback()) {
+ if(gpuHint->mCompositionState != COMPOSITION_STATE_GPU
+ && !MDPComp::isIdleFallback()) {
EGLint attr_list[] = {EGL_GPU_HINT_1,
EGL_GPU_LEVEL_3,
EGL_NONE };
@@ -2087,7 +2088,7 @@
ALOGW("eglGpuPerfHintQCOM failed for Built in display");
} else {
gpuHint->mCurrGPUPerfMode = EGL_GPU_LEVEL_3;
- gpuHint->mPrevCompositionGLES = true;
+ gpuHint->mCompositionState = COMPOSITION_STATE_GPU;
}
} else {
EGLint attr_list[] = {EGL_GPU_HINT_1,
@@ -2100,6 +2101,9 @@
} else {
gpuHint->mCurrGPUPerfMode = EGL_GPU_LEVEL_0;
}
+ if(MDPComp::isIdleFallback()) {
+ gpuHint->mCompositionState = COMPOSITION_STATE_IDLE_FALLBACK;
+ }
}
} else {
/* set the GPU hint flag to default for MDP composition */
@@ -2113,7 +2117,7 @@
} else {
gpuHint->mCurrGPUPerfMode = EGL_GPU_LEVEL_0;
}
- gpuHint->mPrevCompositionGLES = false;
+ gpuHint->mCompositionState = COMPOSITION_STATE_MDP;
}
#endif
}
diff --git a/libhwcomposer/hwc_utils.h b/libhwcomposer/hwc_utils.h
index 4cfed2a..bf4fd44 100644
--- a/libhwcomposer/hwc_utils.h
+++ b/libhwcomposer/hwc_utils.h
@@ -471,14 +471,20 @@
ANIMATION_STARTED,
};
+enum eCompositionState {
+ COMPOSITION_STATE_MDP = 0, // Set if composition type is MDP
+ COMPOSITION_STATE_GPU, // Set if composition type is GPU or MIXED
+ COMPOSITION_STATE_IDLE_FALLBACK, // Set if it is idlefallback
+};
+
// Structure holds the information about the GPU hint.
struct gpu_hint_info {
// system level flag to enable gpu_perf_mode
bool mGpuPerfModeEnable;
// Stores the current GPU performance mode DEFAULT/HIGH
bool mCurrGPUPerfMode;
- // true if previous composition used GPU
- bool mPrevCompositionGLES;
+ // Stores the compositon state GPU, MDP or IDLE_FALLBACK
+ bool mCompositionState;
// Stores the EGLContext of current process
EGLContext mEGLContext;
// Stores the EGLDisplay of current process