Loading services/surfaceflinger/DisplayDevice.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -410,7 +410,8 @@ HdrCapabilities DisplayDevice::getHdrCapabilities() const { capabilities.getDesiredMinLuminance()); } void DisplayDevice::enableRefreshRateOverlay(bool enable, bool showSpinner, bool showRenderRate) { void DisplayDevice::enableRefreshRateOverlay(bool enable, bool showSpinner, bool showRenderRate, bool showInMiddle) { if (!enable) { mRefreshRateOverlay.reset(); return; Loading @@ -425,6 +426,10 @@ void DisplayDevice::enableRefreshRateOverlay(bool enable, bool showSpinner, bool features |= RefreshRateOverlay::Features::RenderRate; } if (showInMiddle) { features |= RefreshRateOverlay::Features::ShowInMiddle; } const auto fpsRange = mRefreshRateSelector->getSupportedRefreshRateRange(); mRefreshRateOverlay = std::make_unique<RefreshRateOverlay>(fpsRange, features); mRefreshRateOverlay->setLayerStack(getLayerStack()); Loading services/surfaceflinger/DisplayDevice.h +2 −2 Original line number Diff line number Diff line Loading @@ -237,8 +237,8 @@ public: } // Enables an overlay to be displayed with the current refresh rate void enableRefreshRateOverlay(bool enable, bool showSpinner, bool showRenderRate) REQUIRES(kMainThreadContext); void enableRefreshRateOverlay(bool enable, bool showSpinner, bool showRenderRate, bool showInMiddle) REQUIRES(kMainThreadContext); bool isRefreshRateOverlayEnabled() const { return mRefreshRateOverlay != nullptr; } bool onKernelTimerChanged(std::optional<DisplayModeId>, bool timerExpired); void animateRefreshRateOverlay(); Loading services/surfaceflinger/RefreshRateOverlay.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -320,7 +320,12 @@ void RefreshRateOverlay::setViewport(ui::Size viewport) { const auto width = std::min({kMaxWidth, viewport.width, viewport.height}); const auto height = 2 * width; Rect frame((5 * width) >> 4, height >> 5); if (!mFeatures.test(Features::ShowInMiddle)) { frame.offsetBy(width >> 5, height >> 4); } else { frame.offsetBy(width >> 1, height >> 4); } createTransaction(mSurfaceControl->get()) .setMatrix(mSurfaceControl->get(), frame.getWidth() / static_cast<float>(kBufferWidth), Loading services/surfaceflinger/RefreshRateOverlay.h +1 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ public: enum class Features { Spinner = 1 << 0, RenderRate = 1 << 1, ShowInMiddle = 1 << 2, }; RefreshRateOverlay(FpsRange, ftl::Flags<Features>); Loading services/surfaceflinger/SurfaceFlinger.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -461,6 +461,8 @@ SurfaceFlinger::SurfaceFlinger(Factory& factory) : SurfaceFlinger(factory, SkipI mRefreshRateOverlaySpinner = property_get_bool("debug.sf.show_refresh_rate_overlay_spinner", 0); mRefreshRateOverlayRenderRate = property_get_bool("debug.sf.show_refresh_rate_overlay_render_rate", 0); mRefreshRateOverlayShowInMiddle = property_get_bool("debug.sf.show_refresh_rate_overlay_in_middle", 0); if (!mIsUserBuild && base::GetBoolProperty("debug.sf.enable_transaction_tracing"s, true)) { mTransactionTracing.emplace(); Loading Loading @@ -6995,7 +6997,8 @@ void SurfaceFlinger::enableRefreshRateOverlay(bool enable) { if (display.snapshot().connectionType() == ui::DisplayConnectionType::Internal) { if (const auto device = getDisplayDeviceLocked(id)) { device->enableRefreshRateOverlay(enable, mRefreshRateOverlaySpinner, mRefreshRateOverlayRenderRate); mRefreshRateOverlayRenderRate, mRefreshRateOverlayShowInMiddle); } } } Loading Loading
services/surfaceflinger/DisplayDevice.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -410,7 +410,8 @@ HdrCapabilities DisplayDevice::getHdrCapabilities() const { capabilities.getDesiredMinLuminance()); } void DisplayDevice::enableRefreshRateOverlay(bool enable, bool showSpinner, bool showRenderRate) { void DisplayDevice::enableRefreshRateOverlay(bool enable, bool showSpinner, bool showRenderRate, bool showInMiddle) { if (!enable) { mRefreshRateOverlay.reset(); return; Loading @@ -425,6 +426,10 @@ void DisplayDevice::enableRefreshRateOverlay(bool enable, bool showSpinner, bool features |= RefreshRateOverlay::Features::RenderRate; } if (showInMiddle) { features |= RefreshRateOverlay::Features::ShowInMiddle; } const auto fpsRange = mRefreshRateSelector->getSupportedRefreshRateRange(); mRefreshRateOverlay = std::make_unique<RefreshRateOverlay>(fpsRange, features); mRefreshRateOverlay->setLayerStack(getLayerStack()); Loading
services/surfaceflinger/DisplayDevice.h +2 −2 Original line number Diff line number Diff line Loading @@ -237,8 +237,8 @@ public: } // Enables an overlay to be displayed with the current refresh rate void enableRefreshRateOverlay(bool enable, bool showSpinner, bool showRenderRate) REQUIRES(kMainThreadContext); void enableRefreshRateOverlay(bool enable, bool showSpinner, bool showRenderRate, bool showInMiddle) REQUIRES(kMainThreadContext); bool isRefreshRateOverlayEnabled() const { return mRefreshRateOverlay != nullptr; } bool onKernelTimerChanged(std::optional<DisplayModeId>, bool timerExpired); void animateRefreshRateOverlay(); Loading
services/surfaceflinger/RefreshRateOverlay.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -320,7 +320,12 @@ void RefreshRateOverlay::setViewport(ui::Size viewport) { const auto width = std::min({kMaxWidth, viewport.width, viewport.height}); const auto height = 2 * width; Rect frame((5 * width) >> 4, height >> 5); if (!mFeatures.test(Features::ShowInMiddle)) { frame.offsetBy(width >> 5, height >> 4); } else { frame.offsetBy(width >> 1, height >> 4); } createTransaction(mSurfaceControl->get()) .setMatrix(mSurfaceControl->get(), frame.getWidth() / static_cast<float>(kBufferWidth), Loading
services/surfaceflinger/RefreshRateOverlay.h +1 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ public: enum class Features { Spinner = 1 << 0, RenderRate = 1 << 1, ShowInMiddle = 1 << 2, }; RefreshRateOverlay(FpsRange, ftl::Flags<Features>); Loading
services/surfaceflinger/SurfaceFlinger.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -461,6 +461,8 @@ SurfaceFlinger::SurfaceFlinger(Factory& factory) : SurfaceFlinger(factory, SkipI mRefreshRateOverlaySpinner = property_get_bool("debug.sf.show_refresh_rate_overlay_spinner", 0); mRefreshRateOverlayRenderRate = property_get_bool("debug.sf.show_refresh_rate_overlay_render_rate", 0); mRefreshRateOverlayShowInMiddle = property_get_bool("debug.sf.show_refresh_rate_overlay_in_middle", 0); if (!mIsUserBuild && base::GetBoolProperty("debug.sf.enable_transaction_tracing"s, true)) { mTransactionTracing.emplace(); Loading Loading @@ -6995,7 +6997,8 @@ void SurfaceFlinger::enableRefreshRateOverlay(bool enable) { if (display.snapshot().connectionType() == ui::DisplayConnectionType::Internal) { if (const auto device = getDisplayDeviceLocked(id)) { device->enableRefreshRateOverlay(enable, mRefreshRateOverlaySpinner, mRefreshRateOverlayRenderRate); mRefreshRateOverlayRenderRate, mRefreshRateOverlayShowInMiddle); } } } Loading