summaryrefslogtreecommitdiff
path: root/hwc3
diff options
context:
space:
mode:
authorMidas Chien <midaschieh@google.com>2022-02-16 01:59:39 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-02-16 01:59:39 +0000
commit80ee8c258befefd630f3caf4ebeb5bcc6e879ddb (patch)
treec9de0f2184166e7aac5bf2fc55ed3647e70407a9 /hwc3
parentf81f10cb3e6eb0d941bf159c04a634df6cfbb1bf (diff)
parent91700d7c6e6cea728e3d8525745ddbf8a0517c98 (diff)
Merge "libhwc2.1: support setIdleTimerEnabled"
Diffstat (limited to 'hwc3')
-rw-r--r--hwc3/ComposerClient.cpp10
-rw-r--r--hwc3/impl/HalImpl.cpp12
-rw-r--r--hwc3/impl/HalImpl.h1
-rw-r--r--hwc3/include/IComposerHal.h2
4 files changed, 22 insertions, 3 deletions
diff --git a/hwc3/ComposerClient.cpp b/hwc3/ComposerClient.cpp
index 848d1f7..49d0e80 100644
--- a/hwc3/ComposerClient.cpp
+++ b/hwc3/ComposerClient.cpp
@@ -162,6 +162,16 @@ ndk::ScopedAStatus ComposerClient::getDisplayCapabilities(int64_t display,
return TO_BINDER_STATUS(err);
}
+ bool support = false;
+ err = mHal->getDisplayIdleTimerSupport(display, support);
+ if (err != ::android::OK) {
+ LOG(ERROR) << "failed to getDisplayIdleTimerSupport: " << err;
+ }
+
+ if (support) {
+ caps->push_back(DisplayCapability::DISPLAY_IDLE_TIMER);
+ }
+
return TO_BINDER_STATUS(err);
}
diff --git a/hwc3/impl/HalImpl.cpp b/hwc3/impl/HalImpl.cpp
index 240edff..4d50225 100644
--- a/hwc3/impl/HalImpl.cpp
+++ b/hwc3/impl/HalImpl.cpp
@@ -939,12 +939,11 @@ int32_t HalImpl::setVsyncEnabled(int64_t display, bool enabled) {
return halDisplay->setVsyncEnabled(hwcEnable);
}
-int32_t HalImpl::setIdleTimerEnabled(int64_t display, int32_t __unused timeout) {
+int32_t HalImpl::setIdleTimerEnabled(int64_t display, int32_t timeout) {
ExynosDisplay* halDisplay;
RET_IF_ERR(getHalDisplay(display, halDisplay));
- // TODO(b/198808492): implement setIdleTimerEnabled
- return HWC2_ERROR_UNSUPPORTED;
+ return halDisplay->setDisplayIdleTimer(timeout);
}
int32_t HalImpl::validateDisplay(int64_t display, std::vector<int64_t>* outChangedLayers,
@@ -1014,4 +1013,11 @@ int32_t HalImpl::getRCDLayerSupport(int64_t display, bool& outSupport) {
return halDisplay->getRCDLayerSupport(outSupport);
}
+int32_t HalImpl::getDisplayIdleTimerSupport(int64_t display, bool& outSupport) {
+ ExynosDisplay* halDisplay;
+ RET_IF_ERR(getHalDisplay(display, halDisplay));
+
+ return halDisplay->getDisplayIdleTimerSupport(outSupport);
+}
+
} // namespace aidl::android::hardware::graphics::composer3::impl
diff --git a/hwc3/impl/HalImpl.h b/hwc3/impl/HalImpl.h
index 2c6d540..d60d7d0 100644
--- a/hwc3/impl/HalImpl.h
+++ b/hwc3/impl/HalImpl.h
@@ -135,6 +135,7 @@ class HalImpl : public IComposerHal {
int32_t setReadbackBuffer(int64_t display, buffer_handle_t buffer,
const ndk::ScopedFileDescriptor& releaseFence) override;
int32_t setVsyncEnabled(int64_t display, bool enabled) override;
+ int32_t getDisplayIdleTimerSupport(int64_t display, bool& outSupport) override;
int32_t setIdleTimerEnabled(int64_t display, int32_t timeout) override;
int32_t getRCDLayerSupport(int64_t display, bool& outSupport) override;
int32_t validateDisplay(int64_t display, std::vector<int64_t>* outChangedLayers,
diff --git a/hwc3/include/IComposerHal.h b/hwc3/include/IComposerHal.h
index 693c2b1..00bfdee 100644
--- a/hwc3/include/IComposerHal.h
+++ b/hwc3/include/IComposerHal.h
@@ -119,6 +119,8 @@ class IComposerHal {
virtual int32_t getDisplayAttribute(int64_t display, int32_t config,
DisplayAttribute attribute, int32_t* outValue) = 0;
virtual int32_t getDisplayBrightnessSupport(int64_t display, bool& outSupport) = 0;
+ virtual int32_t getDisplayIdleTimerSupport(int64_t display, bool& outSupport) = 0;
+
virtual int32_t getDisplayCapabilities(int64_t display,
std::vector<DisplayCapability>* caps) = 0;
virtual int32_t getDisplayConfigs(int64_t display, std::vector<int32_t>* configs) = 0;