summaryrefslogtreecommitdiff
path: root/hwc3/impl/HalImpl.cpp
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-03-07 02:24:27 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-03-07 02:24:27 +0000
commit58b5e577e66276787edc84445f9bab35debf71d0 (patch)
tree188508ec08fc83984f54f4a31e97a0a368fb3968 /hwc3/impl/HalImpl.cpp
parent916a23578402f828a26fa8ad77a38ee64d9f9061 (diff)
parent3e4ac183f0da7b6d6bc36259b1d2b1b1f6896d9e (diff)
Snap for 9696334 from 3e4ac183f0da7b6d6bc36259b1d2b1b1f6896d9e to udc-release
Change-Id: If7aca2296a44e9c1f172634d48c6a3b285c974fe
Diffstat (limited to 'hwc3/impl/HalImpl.cpp')
-rw-r--r--hwc3/impl/HalImpl.cpp29
1 files changed, 25 insertions, 4 deletions
diff --git a/hwc3/impl/HalImpl.cpp b/hwc3/impl/HalImpl.cpp
index fb41a77..e48d390 100644
--- a/hwc3/impl/HalImpl.cpp
+++ b/hwc3/impl/HalImpl.cpp
@@ -99,6 +99,20 @@ void seamlessPossible(hwc2_callback_data_t callbackData, hwc2_display_t hwcDispl
hal->getEventCallback()->onSeamlessPossible(display);
}
+void refreshRateChangedDebug(hwc2_callback_data_t callbackData, hwc2_display_t hwcDisplay,
+ hwc2_vsync_period_t hwcVsyncPeriodNanos) {
+ auto hal = static_cast<HalImpl*>(callbackData);
+ int64_t display;
+ int32_t vsyncPeriodNanos;
+
+ h2a::translate(hwcDisplay, display);
+ h2a::translate(hwcVsyncPeriodNanos, vsyncPeriodNanos);
+ hal->getEventCallback()->onRefreshRateChangedDebug(RefreshRateChangedDebugData{
+ .display = display,
+ .vsyncPeriodNanos = vsyncPeriodNanos,
+ });
+}
+
} // nampesapce hook
HalImpl::HalImpl(std::unique_ptr<ExynosDevice> device) : mDevice(std::move(device)) {
@@ -130,6 +144,7 @@ void HalImpl::initCaps() {
}
mCaps.insert(Capability::BOOT_DISPLAY_CONFIG);
+ mCaps.insert(Capability::REFRESH_RATE_CHANGED_CALLBACK_DEBUG);
}
int32_t HalImpl::getHalDisplay(int64_t display, ExynosDisplay*& halDisplay) {
@@ -193,6 +208,9 @@ void HalImpl::registerEventCallback(EventCallback* callback) {
// register HWC3 Callback
mDevice->registerHwc3Callback(IComposerCallback::TRANSACTION_onVsyncIdle, this,
reinterpret_cast<hwc2_function_pointer_t>(hook::vsyncIdle));
+ mDevice->registerHwc3Callback(IComposerCallback::TRANSACTION_onRefreshRateChangedDebug, this,
+ reinterpret_cast<hwc2_function_pointer_t>(
+ hook::refreshRateChangedDebug));
}
void HalImpl::unregisterEventCallback() {
@@ -204,6 +222,8 @@ void HalImpl::unregisterEventCallback() {
// unregister HWC3 Callback
mDevice->registerHwc3Callback(IComposerCallback::TRANSACTION_onVsyncIdle, this, nullptr);
+ mDevice->registerHwc3Callback(IComposerCallback::TRANSACTION_onRefreshRateChangedDebug, this,
+ nullptr);
mEventCallback = nullptr;
}
@@ -1064,10 +1084,11 @@ int32_t HalImpl::getDisplayMultiThreadedPresentSupport(const int64_t& display, b
return halDisplay->getDisplayMultiThreadedPresentSupport(outSupport);
}
-int32_t HalImpl::setRefreshRateChangedCallbackDebugEnabled(int64_t /* display*/,
- bool /* enabled */) {
- // TODO(b/267825022) Add implementation for the HAL
- return EX_UNSUPPORTED_OPERATION;
+int32_t HalImpl::setRefreshRateChangedCallbackDebugEnabled(int64_t display, bool enabled) {
+ ExynosDisplay* halDisplay;
+ RET_IF_ERR(getHalDisplay(display, halDisplay));
+
+ return halDisplay->setRefreshRateChangedCallbackDebugEnabled(enabled);
}
} // namespace aidl::android::hardware::graphics::composer3::impl