Merge 92e50efac06b7128c6490e4fcffd475da3988ad4 on remote branch
Change-Id: Ifbd0d097f784dd999706e62f03ee2fdb0cb555c5
diff --git a/Power.cpp b/Power.cpp
index eadcef4..e451990 100644
--- a/Power.cpp
+++ b/Power.cpp
@@ -63,7 +63,6 @@
case Mode::DOUBLE_TAP_TO_WAKE:
case Mode::LOW_POWER:
case Mode::LAUNCH:
- case Mode::EXPENSIVE_RENDERING:
case Mode::DEVICE_IDLE:
case Mode::DISPLAY_INACTIVE:
case Mode::AUDIO_STREAMING_LOW_LATENCY:
@@ -74,6 +73,9 @@
case Mode::VR:
LOG(INFO) << "Mode " << static_cast<int32_t>(type) << "Not Supported";
break;
+ case Mode::EXPENSIVE_RENDERING:
+ set_expensive_rendering(enabled);
+ break;
case Mode::INTERACTIVE:
setInteractive(enabled);
power_hint(POWER_HINT_INTERACTION, NULL);
@@ -93,6 +95,7 @@
LOG(INFO) << "Power isModeSupported: " << static_cast<int32_t>(type);
switch(type){
+ case Mode::EXPENSIVE_RENDERING:
case Mode::INTERACTIVE:
case Mode::SUSTAINED_PERFORMANCE:
case Mode::FIXED_PERFORMANCE:
diff --git a/power-common.c b/power-common.c
index eb92998..a7a32e5 100644
--- a/power-common.c
+++ b/power-common.c
@@ -49,6 +49,7 @@
#include "power-common.h"
static struct hint_handles handles[NUM_HINTS];
+static int handleER = 0;
void power_init()
{
@@ -115,6 +116,15 @@
}
}
+void set_expensive_rendering(bool enabled)
+{
+ if (enabled) {
+ handleER = perf_hint_enable(PERF_HINT_EXPENSIVE_RENDERING, 0);
+ } else if (handleER > 0) {
+ release_request(handleER);
+ }
+}
+
int __attribute__ ((weak)) set_interactive_override(int on)
{
return HINT_NONE;
diff --git a/power-common.h b/power-common.h
index 697302a..b95ea22 100644
--- a/power-common.h
+++ b/power-common.h
@@ -49,6 +49,8 @@
#define HINT_HANDLED (0)
#define HINT_NONE (-1)
+#define PERF_HINT_EXPENSIVE_RENDERING 0x000010A5
+
#include <hardware/power.h>
enum CPU_GOV_CHECK {
@@ -60,6 +62,7 @@
void power_init(void);
void power_hint(power_hint_t hint, void *data);
+void set_expensive_rendering(bool enabled);
void set_interactive(int on);
#ifdef __cplusplus