summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/SurfaceFlinger.cpp
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-15 10:16:37 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-15 10:16:37 +0000
commit9f70df8d9689aa25feff1401d79b0f33e49694a8 (patch)
tree805e598093d1fab8f478f40c368f219e526cceda /services/surfaceflinger/SurfaceFlinger.cpp
parentee721fb600e6e17f1e65980e8ff05e714d90eb19 (diff)
parent7d844c38698fe873829983c91122b07bc92be350 (diff)
Snap for 8720886 from 7d844c38698fe873829983c91122b07bc92be350 to s-keystone-qcom-release
Change-Id: If7763a35b0fb755602f2431bd8b4bf6843d8ba79
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp37
1 files changed, 27 insertions, 10 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index e385c517ec..1899efe9a0 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -3994,6 +3994,7 @@ void SurfaceFlinger::processDisplayChanged(const wp<IBinder>& displayToken,
void SurfaceFlinger::updateInternalDisplayVsyncLocked(const sp<DisplayDevice>& activeDisplay) {
mVsyncConfiguration->reset();
+ updateSfPhaseOffsets(activeDisplay);
const Fps refreshRate = activeDisplay->refreshRateConfigs().getCurrentRefreshRate().getFps();
updatePhaseConfiguration(refreshRate);
mRefreshRateStats->setRefreshRate(refreshRate);
@@ -9001,6 +9002,31 @@ void SurfaceFlinger::updateInternalDisplaysPresentationMode() {
}
}
+void SurfaceFlinger::updateSfPhaseOffsets(const sp<DisplayDevice> &display) {
+#ifdef PHASE_OFFSET_EXTN
+ if (!g_comp_ext_intf_.phaseOffsetExtnIntf) {
+ return;
+ }
+
+ // Get the Advanced SF Offsets from Phase Offset Extn
+ std::unordered_map<float, int64_t> advancedSfOffsets;
+ g_comp_ext_intf_.phaseOffsetExtnIntf->GetAdvancedSfOffsets(&advancedSfOffsets);
+
+ // Populate the fps supported on device in mOffsetCache
+ const auto& supportedModes = display->getSupportedModes();
+ for (auto mode : supportedModes) {
+ mVsyncConfiguration->getConfigsForRefreshRate(mode->getFps());
+ }
+
+ // Update the Advanced SF Offsets
+ mVsyncConfiguration->UpdateSfOffsets(advancedSfOffsets);
+ const auto vsyncConfig =
+ mVsyncModulator->setVsyncConfigSet(mVsyncConfiguration->getCurrentConfigs());
+ ALOGI("VsyncConfig sfOffset %" PRId64 "\n", vsyncConfig.sfOffset);
+ ALOGI("VsyncConfig appOffset %" PRId64 "\n", vsyncConfig.appOffset);
+#endif
+}
+
void SurfaceFlinger::createPhaseOffsetExtn() {
#ifdef PHASE_OFFSET_EXTN
if (mUseAdvanceSfOffset && mComposerExtnIntf) {
@@ -9010,16 +9036,7 @@ void SurfaceFlinger::createPhaseOffsetExtn() {
return;
}
- // Get the Advanced SF Offsets from Phase Offset Extn
- std::unordered_map<float, int64_t> advancedSfOffsets;
- g_comp_ext_intf_.phaseOffsetExtnIntf->GetAdvancedSfOffsets(&advancedSfOffsets);
-
- // Update the Advanced SF Offsets
- mVsyncConfiguration->UpdateSfOffsets(advancedSfOffsets);
- const auto vsyncConfig =
- mVsyncModulator->setVsyncConfigSet(mVsyncConfiguration->getCurrentConfigs());
- ALOGI("VsyncConfig sfOffset %" PRId64 "\n", vsyncConfig.sfOffset);
- ALOGI("VsyncConfig appOffset %" PRId64 "\n", vsyncConfig.appOffset);
+ updateSfPhaseOffsets(getDefaultDisplayDeviceLocked());
}
#endif
}