diff options
author | Yichi Chen <yichichen@google.com> | 2022-03-15 07:21:58 +0800 |
---|---|---|
committer | Yichi Chen <yichichen@google.com> | 2022-04-08 05:25:15 +0800 |
commit | d767263ad9fb5c93da0864c4311b0ec8a8ab5a08 (patch) | |
tree | 37a0edd8f53962bc73562773d3945aff0f0b772d /hwc3/impl/HalImpl.cpp | |
parent | 5fb2b2e3057510c14a68d947552adf3bbdcc90cb (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/impl/HalImpl.cpp')
-rw-r--r-- | hwc3/impl/HalImpl.cpp | 13 |
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; } |