diff options
| -rw-r--r-- | libs/gui/SurfaceComposerClient.cpp | 1 | ||||
| -rw-r--r-- | libs/gui/aidl/android/gui/DisplayMode.aidl | 2 | ||||
| -rw-r--r-- | libs/ui/include/ui/DisplayMode.h | 4 | ||||
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 2 |
4 files changed, 8 insertions, 1 deletions
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp index 8a57f925ec..f0604b9bfc 100644 --- a/libs/gui/SurfaceComposerClient.cpp +++ b/libs/gui/SurfaceComposerClient.cpp @@ -2604,6 +2604,7 @@ void SurfaceComposerClient::getDynamicDisplayInfoInternal(gui::DynamicDisplayInf outMode.xDpi = mode.xDpi; outMode.yDpi = mode.yDpi; outMode.refreshRate = mode.refreshRate; + outMode.vsyncRate = mode.vsyncRate; outMode.appVsyncOffset = mode.appVsyncOffset; outMode.sfVsyncOffset = mode.sfVsyncOffset; outMode.presentationDeadline = mode.presentationDeadline; diff --git a/libs/gui/aidl/android/gui/DisplayMode.aidl b/libs/gui/aidl/android/gui/DisplayMode.aidl index ce30426cb5..b057653200 100644 --- a/libs/gui/aidl/android/gui/DisplayMode.aidl +++ b/libs/gui/aidl/android/gui/DisplayMode.aidl @@ -29,7 +29,9 @@ parcelable DisplayMode { float yDpi = 0.0f; int[] supportedHdrTypes; + // Some modes have peak refresh rate lower than the panel vsync rate. float refreshRate = 0.0f; + float vsyncRate = 0.0f; long appVsyncOffset = 0; long sfVsyncOffset = 0; long presentationDeadline = 0; diff --git a/libs/ui/include/ui/DisplayMode.h b/libs/ui/include/ui/DisplayMode.h index 65a8769c98..a469c78070 100644 --- a/libs/ui/include/ui/DisplayMode.h +++ b/libs/ui/include/ui/DisplayMode.h @@ -37,7 +37,9 @@ struct DisplayMode { float yDpi = 0; std::vector<ui::Hdr> supportedHdrTypes; - float refreshRate = 0; + // Some modes have peak refresh rate lower than the panel vsync rate. + float refreshRate = 0.f; + float vsyncRate = 0.f; nsecs_t appVsyncOffset = 0; nsecs_t sfVsyncOffset = 0; nsecs_t presentationDeadline = 0; diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 7e799bbe30..e08690a2bb 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -1047,6 +1047,7 @@ void SurfaceFlinger::getDynamicDisplayInfoInternal(ui::DynamicDisplayInfo*& info const auto peakFps = mode->getPeakFps(); outMode.refreshRate = peakFps.getValue(); + outMode.vsyncRate = mode->getVsyncRate().getValue(); const auto vsyncConfigSet = mVsyncConfiguration->getConfigsForRefreshRate(Fps::fromValue(outMode.refreshRate)); @@ -9189,6 +9190,7 @@ void SurfaceComposerAIDL::getDynamicDisplayInfoInternal(ui::DynamicDisplayInfo& outMode.xDpi = mode.xDpi; outMode.yDpi = mode.yDpi; outMode.refreshRate = mode.refreshRate; + outMode.vsyncRate = mode.vsyncRate; outMode.appVsyncOffset = mode.appVsyncOffset; outMode.sfVsyncOffset = mode.sfVsyncOffset; outMode.presentationDeadline = mode.presentationDeadline; |