diff --git a/aosp_diff/preliminary/external/drm_hwcomposer/0006-Fix-regression.patch b/aosp_diff/preliminary/external/drm_hwcomposer/0006-Fix-regression.patch new file mode 100644 index 0000000000..2137cfe64b --- /dev/null +++ b/aosp_diff/preliminary/external/drm_hwcomposer/0006-Fix-regression.patch @@ -0,0 +1,56 @@ +From 05d04dffb4c1aa0b96491a6ecf30c3a5a8546373 Mon Sep 17 00:00:00 2001 +From: "Li, HaihongX" +Date: Fri, 29 Oct 2021 10:27:18 +0800 +Subject: [PATCH] Fix regression + +Set 3rd parameter of vsync2.4 callback with vsync period value. +Visit https://www.testufo.com/ for testing. + +Tracked-On: OAM-99923 +Signed-off-by: Li, HaihongX +--- + DrmHwcTwo.cpp | 2 +- + drm/VSyncWorker.cpp | 13 ++++++++++++- + 2 files changed, 13 insertions(+), 2 deletions(-) + +diff --git a/DrmHwcTwo.cpp b/DrmHwcTwo.cpp +index 194b11e..b3b5503 100644 +--- a/DrmHwcTwo.cpp ++++ b/DrmHwcTwo.cpp +@@ -924,7 +924,7 @@ HWC2::Error DrmHwcTwo::HwcDisplay::GetDisplayVsyncPeriod( + if (mode.id() == 0) + return HWC2::Error::BadConfig; + +- *outVsyncPeriod = 1E9 / mode.v_refresh(); ++ *outVsyncPeriod = 1000.0 * 1000.0 * 1000.0 / mode.v_refresh(); + return HWC2::Error::None; + } + +diff --git a/drm/VSyncWorker.cpp b/drm/VSyncWorker.cpp +index b7ceb4c..acf4988 100644 +--- a/drm/VSyncWorker.cpp ++++ b/drm/VSyncWorker.cpp +@@ -181,8 +181,19 @@ void VSyncWorker::Routine() { + if (enabled_ && vsync_callback_hook_ && vsync_callback_data_) + vsync_callback_hook_(vsync_callback_data_, display, timestamp); + ++ uint32_t vsyncPeriodNanos = 1000.0 * 1000.0 * 1000.0 / 60.0F; // Default to 60Hz refresh rate ++ if (last_timestamp_ == -1) { ++ DrmConnector * connector = drm_->GetConnectorForDisplay(display_); ++ if (connector != nullptr) { ++ DrmMode const &mode = connector ->active_mode(); ++ if (mode.id() != 0) ++ vsyncPeriodNanos = 1000.0 * 1000.0 * 1000.0 / mode.v_refresh(); ++ } ++ } else { ++ vsyncPeriodNanos = timestamp - last_timestamp_; ++ } + if (enabled_ && vsync_2_4_callback_hook_ && vsync_2_4_callback_data_) +- vsync_2_4_callback_hook_(vsync_2_4_callback_data_, display, timestamp, 0); ++ vsync_2_4_callback_hook_(vsync_2_4_callback_data_, display, timestamp, vsyncPeriodNanos); + Unlock(); + + last_timestamp_ = timestamp; +-- +2.32.0 +