History log of /frameworks/native/services/surfaceflinger/DispSync.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
f41745301d5ecfa680dcef3a1948a8a321f80509 13-Jul-2017 Saurabh Shah <saurshah@codeaurora.org> sf: Defer DispSync initialization

Some DispSync members are initialized based on uninitialized static
members of sf, that are in turn initialized in sf constructor. Fix
the sequence by deferring DispSync initialization.

Current sequence:
sf constructor|-> DispSync constructor -> Access static sf members
|-> Initialize sf static members

New sequence:
sf constructor|-> DispSync constructor
|-> Initialize sf static members
|-> DispSync init -> Access static sf members

Bug: 63671437
Test: "present fences are ignored" not present in SF dumpsys
Change-Id: I618d2bbbbd4e39fc382e67f85dd8d637dd82cf38
/frameworks/native/services/surfaceflinger/DispSync.h
fbc80aef0ba1b11982cf4ca88d218b65b6eca0f3 27-May-2017 Brian Anderson <brianderson@google.com> Reduce number of Fence syscalls made.

This patch saves 6 or more Fence syscalls per frame.

* Timelines are updated just before adding a new fence
since the newly added fence is unlikely to have signaled.
* Layer::latch uses a FenceTime now, so the signal time is
automatically shared with other owners of the FenceTime.
* DispSync uses FenceTime now, only using cached values of
the signal time that have been populated by a Timeline.

Test: SurfaceFlinger boots and dumps still work.
Change-Id: Ie0cfc1af2aca143dd8d5f08f08dbe1e597376f2f
/frameworks/native/services/surfaceflinger/DispSync.h
cbf153bedf2eafc1443bbc97c4e74f97e7973edd 11-Mar-2017 Fabien Sanglard <sanglardf@google.com> Use hasSyncFramework value from configStore

Change-Id: I41c6b1a26001eb6ba08cbc419dc8a683f5722aa3
/frameworks/native/services/surfaceflinger/DispSync.h
c45a7d9dfdefa07512c5acc07bcbee5362b34e3d 14-Mar-2017 Fabien Sanglard <sanglardf@google.com> [SF] Use presentTimeOffset from configStore

Change-Id: If9c872c565e68e8abe552ee11d2c7d48f44aec4b
/frameworks/native/services/surfaceflinger/DispSync.h
342b760763300593cd20b01dac8cef61e7b25b86 01-Sep-2016 Chih-Hung Hsieh <chh@google.com> Fix google-explicit-constructor warnings in surfaceflinger.

* Add explicit keyword to conversion constructors,
or use NOLINT for implicit converters.
Bug: 28341362
Test: build with WITH_TIDY=1

Change-Id: I94f511c3be31dc22022db6466ee9ed0c6be2bc8e
/frameworks/native/services/surfaceflinger/DispSync.h
4a4e4a239f034cb8af2df9a438b26c3bc088889c 19-Apr-2016 Tim Murray <timmurray@google.com> Revert "Revert "DispSync: Always resync after inactivity""

This reverts commit 67264e930992e43ef3351b04692d4ca59cbb01ad.

We've fixed the kernel issues this exposed.

bug 28198793

Change-Id: Ie895cc0a815094cce4bee3b2bf45800ee1e2fdc3
/frameworks/native/services/surfaceflinger/DispSync.h
67264e930992e43ef3351b04692d4ca59cbb01ad 14-Apr-2016 Dan Stoza <stoza@google.com> Revert "DispSync: Always resync after inactivity"

This reverts commit f34b9be610ce286af224364cb6e69ef6f7697ee9.
Bug: 28160740

Change-Id: I48a5bd66712651b42fdc0aaf1492899d7b032977
/frameworks/native/services/surfaceflinger/DispSync.h
f34b9be610ce286af224364cb6e69ef6f7697ee9 06-Apr-2016 Dan Stoza <stoza@google.com> DispSync: Always resync after inactivity

Changes DispSync to enable hardware vsync immediately when new frames
arrive after a period of inactivity.

No matter how hard we try, we can't avoid drifting over time without
being able to detect error based on display retire fences. By enabling
hardware vsync immediately, we avoid having a weird period or phase
offset relative to hardware while we retrain the model. Once the model
has locked, we turn hardware vsync back off to save power (until we
detect drift again).

Bug: 26255070
Change-Id: If4dd17c2d541015c730f47d824359d7cb4b52c3c
/frameworks/native/services/surfaceflinger/DispSync.h
22279c44183a9c71301c770c4275545500a48345 10-Mar-2016 Dan Stoza <stoza@google.com> Revert "DispSync: workaround HH hardware vsync issue"

This reverts commit c734d95c575830ffc97fc5d2ae14b020c95d05de, which was
a workaround for a bug on a device which is now obsolete.

Bug: 25845510
Change-Id: I3244bfd3f758c52dfe76e9d5b0a72bbcffdf5a6f
/frameworks/native/services/surfaceflinger/DispSync.h
c734d95c575830ffc97fc5d2ae14b020c95d05de 24-Nov-2015 Haixia Shi <hshi@google.com> DispSync: workaround HH hardware vsync issue

The HWC of HH seems to have a bug where it fails to generate vsync events upon
the first eventControl call to turn on HWC_EVENT_VSYNC.

The workaround is for DispSync to detect when it has received no resync samples
after many presents, and return false so that SF will disable HW vsync and
re-enable it in the next present. This gets the HWC of HH out of the bad state.

Bug:25845510
TEST=reboot HH then immediately capture systrace while scrolling all apps

Change-Id: Ie034c113d94ea53068eef75b8eac39a32788666a
/frameworks/native/services/surfaceflinger/DispSync.h
676b1f6ed0d637b7eb1858361e0d09068f26e9fa 29-Oct-2015 Haixia Shi <hshi@google.com> SF: more DispSync improvements.

Pass the reference time to DispSyncThread. Since the phase offset is calculated
using timestamps relative to the reference time, we must also adjust the phase
offset by the same reference time when computing the next refresh time.

Always reset phase offset to zero when updating the reference time because the
reference time equals the first timestamp.

After beginResync() we need to keep HW vsync enabled until the model is updated.

Bug: 25113115
Change-Id: I8eae227bee91c24a99bf8e57fbebceb98d29c77d
Test: check in systrace that app/sf vsync events have correct phase
/frameworks/native/services/surfaceflinger/DispSync.h
664339a8e8d3f2d5acd5728dae666cc9a14e08f3 28-Oct-2015 Haixia Shi <hshi@google.com> SF: use first sample timestamp as reference.

Do not use the absolute 64-bit nsecs_t timestamp directly in phase
and error calculations. Compared to the estimated vsync period, the
timestamp tend to many orders of magnitudes larger, and consequently
the integer modulo operation used to calculate phase and error can
be very sensitive to tiny fluctuation in vsync period.

Bug: 25113115
Test: set kTraceDetailedInfo=true; see Phase and Error are stable in systrace

Change-Id: I687703eec31b1072c606898c0424a96c0a8ca033
/frameworks/native/services/surfaceflinger/DispSync.h
ef78916d86fa60e08a6358af4b0b1f6bd0134164 29-May-2015 Dan Stoza <stoza@google.com> SF: Reduce resync samples without present

Reduces the number of resync samples that DispSync will attempt to
collect without an intervening present from 12 to 4. The former value
was causing excessive power draw for some vendors' implementations, and
reducing it doesn't seem to harm anything.

Bug: 20724456
Change-Id: Ifd6e0490be67756ed001d509a38e8a36953b4618
(cherry picked from commit 9c64757f6530a0510f15f8bd75b1925a3001f83a)
/frameworks/native/services/surfaceflinger/DispSync.h
67d8bd66aaf04805cb8f2616ba964141b865e3b9 11-Sep-2014 Lajos Molnar <lajos@google.com> surfaceflinger: add getDisplayStats() method

This is used by media service to schedule video frames at the
proper time, based on precise vsync timings.

Bug: 14659809
Change-Id: I1a90603f3dc09dca9aa4f90a3aa845fab56e0a5e
/frameworks/native/services/surfaceflinger/DispSync.h
645b1f7ffb41d21a60765d1ec54ba82f14a36a59 10-Jun-2014 Andy McFadden <fadden@android.com> Replace "lower power mode" experiment

This replaces the previous low-power mode experiment, which
discarded refresh events, with a new experiment that alters
the refresh period.

(see also I2849e5ea335c0d2509fea1c315392bce7f20451d )

The feature is enabled by specifying a nonzero value for the
"refresh skip count", which indicates the number of periods
to skip. For example, the command:

adb shell service call SurfaceFlinger 1016 i32 1

sets a skip count of '1', yielding a 30Hz refresh rate on a device
with a 60Hz display. Changing the last value to '2' would set the
refresh to 20Hz. '0' returns to the default behavior.

Bug 15523257

Change-Id: I00039c22a55750e74035644c63800e4bee1c774a
/frameworks/native/services/surfaceflinger/DispSync.h
5167ec68fed047bf65b1eb0c6091534682135eef 22-May-2014 Andy McFadden <fadden@android.com> Disable DispSync resync when not needed

If app and SF events aren't using phase offsets, we don't need
to maintain the DispSync model. We just turn hardware VSYNC on
whenever something wants to draw. This avoids some edge cases
where we were doing too much resync work.

Also, updated the systrace output. The "VsyncOn" line was a
combination of SF and app event threads, and would occasionally
be very weird. Removed VsyncOn, renamed VSYNC to VSYNC-app,
and added VSYNC-sf.

Also, added more details to the --dispsync dumpsys output.

Also, renamed global constants to not look like local variables.

Bug 15516453

Change-Id: I0da10b72f0d9a7b7eb5202d87cc18967f698adbd
/frameworks/native/services/surfaceflinger/DispSync.h
c751e92c56de5f335a36e68607c7a6c627dcd0dc 08-May-2014 Andy McFadden <fadden@android.com> Add "dumpsys SurfaceFlinger --dispsync"

Dumps the current DispSync state.

Bug 14651879

Change-Id: Ide4e6dbd58b117bc1a6b97b57d10cd92ec86dc84
/frameworks/native/services/surfaceflinger/DispSync.h
41d67d7ab4da1c393497a620a116a854b3c618e7 26-Apr-2014 Andy McFadden <fadden@android.com> Improve SurfaceFlinger PTS estimation

Get the next refresh time from DispSync instead of guessing based
on the current time.

Change-Id: I8dc72a3217bfd4e9b4c905034194d1a298cad69a
/frameworks/native/services/surfaceflinger/DispSync.h
f52b3c88f18c0546526996c839fbce74172e11c7 25-Apr-2014 Ruchi Kandoi <kandoiruchi@google.com> SurfaceFlinger: Adds the functionality to reduce refresh rate to half of
the default.

Feature added for the low power mode.

Change-Id: I2849e5ea335c0d2509fea1c315392bce7f20451d
Signed-off-by: Ruchi Kandoi <kandoiruchi@google.com>
/frameworks/native/services/surfaceflinger/DispSync.h
faf77cce9d9ec0238d6999b3bd0d40c71ff403c5 31-Jul-2013 Jamie Gennis <jgennis@google.com> SurfaceFlinger: SW-based vsync events

This change adds the DispSync class, which models the hardware vsync event
times to allow vsync event callbacks to be done at an arbitrary phase offset
from the hardware vsync. This can be used to reduce the minimum latency from
Choreographer wake-up to on-screen image presentation.

Bug: 10624956
Change-Id: I8c7a54ceacaa4d709726ed97b0dcae4093a7bdcf
/frameworks/native/services/surfaceflinger/DispSync.h