summaryrefslogtreecommitdiff
path: root/hwc3
diff options
context:
space:
mode:
authorYichi Chen <yichichen@google.com>2022-03-15 07:21:58 +0800
committerYichi Chen <yichichen@google.com>2022-04-08 05:25:15 +0800
commitd767263ad9fb5c93da0864c4311b0ec8a8ab5a08 (patch)
tree37a0edd8f53962bc73562773d3945aff0f0b772d /hwc3
parent5fb2b2e3057510c14a68d947552adf3bbdcc90cb (diff)
hwc3: implement VsyncIdle callback for HWC3
The patch creates the new method to register the HWC3 callback function. The corresponding VsyncIdle callback function will be called when idle TE vrefresh is changed in the idle. Bug: 194068871 Test: switch refresh rates, enable panel idle at 60hz Change-Id: I4876fdfd341366ca2012a3ce6704a2c8de5866d2
Diffstat (limited to 'hwc3')
-rw-r--r--hwc3/impl/HalImpl.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/hwc3/impl/HalImpl.cpp b/hwc3/impl/HalImpl.cpp
index 1029fe8..38c8b02 100644
--- a/hwc3/impl/HalImpl.cpp
+++ b/hwc3/impl/HalImpl.cpp
@@ -14,15 +14,17 @@
* limitations under the License.
*/
+#include "HalImpl.h"
+
+#include <aidl/android/hardware/graphics/composer3/IComposerCallback.h>
#include <android-base/logging.h>
#include <hardware/hwcomposer2.h>
-#include "ExynosDeviceModule.h"
#include "ExynosDevice.h"
+#include "ExynosDeviceModule.h"
#include "ExynosDisplay.h"
#include "ExynosHWCService.h"
#include "ExynosLayer.h"
-#include "HalImpl.h"
#include "TranslateHwcAidl.h"
#include "Util.h"
@@ -185,6 +187,10 @@ void HalImpl::registerEventCallback(EventCallback* callback) {
reinterpret_cast<hwc2_function_pointer_t>(hook::vsyncPeriodTimingChanged));
mDevice->registerCallback(HWC2_CALLBACK_SEAMLESS_POSSIBLE, this,
reinterpret_cast<hwc2_function_pointer_t>(hook::seamlessPossible));
+
+ // register HWC3 Callback
+ mDevice->registerHwc3Callback(IComposerCallback::TRANSACTION_onVsyncIdle, this,
+ reinterpret_cast<hwc2_function_pointer_t>(hook::vsyncIdle));
}
void HalImpl::unregisterEventCallback() {
@@ -194,6 +200,9 @@ void HalImpl::unregisterEventCallback() {
mDevice->registerCallback(HWC2_CALLBACK_VSYNC_PERIOD_TIMING_CHANGED, this, nullptr);
mDevice->registerCallback(HWC2_CALLBACK_SEAMLESS_POSSIBLE, this, nullptr);
+ // unregister HWC3 Callback
+ mDevice->registerHwc3Callback(IComposerCallback::TRANSACTION_onVsyncIdle, this, nullptr);
+
mEventCallback = nullptr;
}