Skip to content

Commit 8f997cb

Browse files
committed
Refactor initial support check to use SupportInfo
This change makes the intial support check when APerformanceHintManager starts pass the SupportInfo object instead of just relying on the preferred rate Bug: 367803904 Test: atest PerformanceHintNativeTestCases Test: atest HintManagerServiceTest Flag: EXEMPT refactor Change-Id: Iba93310c58896a2b1d02c6156b4e67eaa766af5b
1 parent fa8eb01 commit 8f997cb

5 files changed

Lines changed: 23 additions & 0 deletions

File tree

include/powermanager/PowerHalController.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ class PowerHalController : public HalWrapper {
7272
virtual HalResult<aidl::android::hardware::power::ChannelConfig> getSessionChannel(
7373
int tgid, int uid) override;
7474
virtual HalResult<void> closeSessionChannel(int tgid, int uid) override;
75+
virtual HalResult<aidl::android::hardware::power::SupportInfo> getSupportInfo() override;
7576

7677
private:
7778
std::mutex mConnectedHalMutex;

include/powermanager/PowerHalWrapper.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class HalWrapper {
6363
virtual HalResult<aidl::android::hardware::power::ChannelConfig> getSessionChannel(int tgid,
6464
int uid) = 0;
6565
virtual HalResult<void> closeSessionChannel(int tgid, int uid) = 0;
66+
virtual HalResult<aidl::android::hardware::power::SupportInfo> getSupportInfo() = 0;
6667
};
6768

6869
// Empty Power HAL wrapper that ignores all api calls.
@@ -85,6 +86,7 @@ class EmptyHalWrapper : public HalWrapper {
8586
HalResult<aidl::android::hardware::power::ChannelConfig> getSessionChannel(int tgid,
8687
int uid) override;
8788
HalResult<void> closeSessionChannel(int tgid, int uid) override;
89+
HalResult<aidl::android::hardware::power::SupportInfo> getSupportInfo() override;
8890

8991
protected:
9092
virtual const char* getUnsupportedMessage();
@@ -170,6 +172,7 @@ class AidlHalWrapper : public EmptyHalWrapper {
170172
HalResult<aidl::android::hardware::power::ChannelConfig> getSessionChannel(int tgid,
171173
int uid) override;
172174
HalResult<void> closeSessionChannel(int tgid, int uid) override;
175+
HalResult<aidl::android::hardware::power::SupportInfo> getSupportInfo() override;
173176

174177
protected:
175178
const char* getUnsupportedMessage() override;

services/powermanager/PowerHalController.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,11 @@ HalResult<void> PowerHalController::closeSessionChannel(int tgid, int uid) {
168168
"closeSessionChannel"));
169169
}
170170

171+
HalResult<aidl::android::hardware::power::SupportInfo> PowerHalController::getSupportInfo() {
172+
std::shared_ptr<HalWrapper> handle = initHal();
173+
return CACHE_SUPPORT(6, processHalResult(handle->getSupportInfo(), "getSupportInfo"));
174+
}
175+
171176
} // namespace power
172177

173178
} // namespace android

services/powermanager/PowerHalWrapper.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include <aidl/android/hardware/power/Boost.h>
1919
#include <aidl/android/hardware/power/IPowerHintSession.h>
2020
#include <aidl/android/hardware/power/Mode.h>
21+
#include <aidl/android/hardware/power/SupportInfo.h>
2122
#include <powermanager/HalResult.h>
2223
#include <powermanager/PowerHalWrapper.h>
2324
#include <utils/Log.h>
@@ -73,6 +74,11 @@ HalResult<void> EmptyHalWrapper::closeSessionChannel(int, int) {
7374
return HalResult<void>::unsupported();
7475
}
7576

77+
HalResult<Aidl::SupportInfo> EmptyHalWrapper::getSupportInfo() {
78+
ALOGV("Skipped getSupportInfo because %s", getUnsupportedMessage());
79+
return HalResult<Aidl::SupportInfo>::unsupported();
80+
}
81+
7682
const char* EmptyHalWrapper::getUnsupportedMessage() {
7783
return "Power HAL is not supported";
7884
}
@@ -280,6 +286,12 @@ HalResult<void> AidlHalWrapper::closeSessionChannel(int tgid, int uid) {
280286
return HalResult<void>::fromStatus(mHandle->closeSessionChannel(tgid, uid));
281287
}
282288

289+
HalResult<Aidl::SupportInfo> AidlHalWrapper::getSupportInfo() {
290+
Aidl::SupportInfo support;
291+
auto result = mHandle->getSupportInfo(&support);
292+
return HalResult<Aidl::SupportInfo>::fromStatus(result, std::move(support));
293+
}
294+
283295
const char* AidlHalWrapper::getUnsupportedMessage() {
284296
return "Power HAL doesn't support it";
285297
}

services/surfaceflinger/tests/unittests/mock/PowerAdvisor/MockPowerHalController.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ class MockPowerHalController : public power::PowerHalController {
5454
MOCK_METHOD(HalResult<aidl::android::hardware::power::ChannelConfig>, getSessionChannel,
5555
(int tgid, int uid), (override));
5656
MOCK_METHOD(HalResult<void>, closeSessionChannel, (int tgid, int uid), (override));
57+
MOCK_METHOD(HalResult<aidl::android::hardware::power::SupportInfo>, getSupportInfo, (),
58+
(override));
5759
};
5860

5961
} // namespace android::adpf::mock

0 commit comments

Comments
 (0)