power: Add support for EXPENSIVE_RENDERING
When background_blur is enabled, the rendering can be expensive and many janks will occur. So, need to support the mode in power module and pass it to perf-hal to handle. Change-Id: I5bab53e72134d76201d9fc28b9bdae4185790deb CRs-Fixed: 3278491
This commit is contained in:
committed by
Gerrit - the friendly Code Review server
parent
68d610c2d9
commit
92e50efac0
@@ -63,7 +63,6 @@ ndk::ScopedAStatus Power::setMode(Mode type, bool enabled) {
|
|||||||
case Mode::DOUBLE_TAP_TO_WAKE:
|
case Mode::DOUBLE_TAP_TO_WAKE:
|
||||||
case Mode::LOW_POWER:
|
case Mode::LOW_POWER:
|
||||||
case Mode::LAUNCH:
|
case Mode::LAUNCH:
|
||||||
case Mode::EXPENSIVE_RENDERING:
|
|
||||||
case Mode::DEVICE_IDLE:
|
case Mode::DEVICE_IDLE:
|
||||||
case Mode::DISPLAY_INACTIVE:
|
case Mode::DISPLAY_INACTIVE:
|
||||||
case Mode::AUDIO_STREAMING_LOW_LATENCY:
|
case Mode::AUDIO_STREAMING_LOW_LATENCY:
|
||||||
@@ -74,6 +73,9 @@ ndk::ScopedAStatus Power::setMode(Mode type, bool enabled) {
|
|||||||
case Mode::VR:
|
case Mode::VR:
|
||||||
LOG(INFO) << "Mode " << static_cast<int32_t>(type) << "Not Supported";
|
LOG(INFO) << "Mode " << static_cast<int32_t>(type) << "Not Supported";
|
||||||
break;
|
break;
|
||||||
|
case Mode::EXPENSIVE_RENDERING:
|
||||||
|
set_expensive_rendering(enabled);
|
||||||
|
break;
|
||||||
case Mode::INTERACTIVE:
|
case Mode::INTERACTIVE:
|
||||||
setInteractive(enabled);
|
setInteractive(enabled);
|
||||||
power_hint(POWER_HINT_INTERACTION, NULL);
|
power_hint(POWER_HINT_INTERACTION, NULL);
|
||||||
@@ -93,6 +95,7 @@ ndk::ScopedAStatus Power::isModeSupported(Mode type, bool* _aidl_return) {
|
|||||||
LOG(INFO) << "Power isModeSupported: " << static_cast<int32_t>(type);
|
LOG(INFO) << "Power isModeSupported: " << static_cast<int32_t>(type);
|
||||||
|
|
||||||
switch(type){
|
switch(type){
|
||||||
|
case Mode::EXPENSIVE_RENDERING:
|
||||||
case Mode::INTERACTIVE:
|
case Mode::INTERACTIVE:
|
||||||
case Mode::SUSTAINED_PERFORMANCE:
|
case Mode::SUSTAINED_PERFORMANCE:
|
||||||
case Mode::FIXED_PERFORMANCE:
|
case Mode::FIXED_PERFORMANCE:
|
||||||
|
|||||||
@@ -49,6 +49,7 @@
|
|||||||
#include "power-common.h"
|
#include "power-common.h"
|
||||||
|
|
||||||
static struct hint_handles handles[NUM_HINTS];
|
static struct hint_handles handles[NUM_HINTS];
|
||||||
|
static int handleER = 0;
|
||||||
|
|
||||||
void power_init()
|
void power_init()
|
||||||
{
|
{
|
||||||
@@ -115,6 +116,15 @@ void power_hint(power_hint_t hint, void *data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
int __attribute__ ((weak)) set_interactive_override(int on)
|
||||||
{
|
{
|
||||||
return HINT_NONE;
|
return HINT_NONE;
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ extern "C" {
|
|||||||
#define HINT_HANDLED (0)
|
#define HINT_HANDLED (0)
|
||||||
#define HINT_NONE (-1)
|
#define HINT_NONE (-1)
|
||||||
|
|
||||||
|
#define PERF_HINT_EXPENSIVE_RENDERING 0x000010A5
|
||||||
|
|
||||||
#include <hardware/power.h>
|
#include <hardware/power.h>
|
||||||
|
|
||||||
enum CPU_GOV_CHECK {
|
enum CPU_GOV_CHECK {
|
||||||
@@ -60,6 +62,7 @@ enum CPU_GOV_CHECK {
|
|||||||
|
|
||||||
void power_init(void);
|
void power_init(void);
|
||||||
void power_hint(power_hint_t hint, void *data);
|
void power_hint(power_hint_t hint, void *data);
|
||||||
|
void set_expensive_rendering(bool enabled);
|
||||||
void set_interactive(int on);
|
void set_interactive(int on);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
Reference in New Issue
Block a user