History log of /frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
9339952bfc64103c1a3c51d1150719d7289995b4 25-May-2018 Steven Moreland <smoreland@google.com> surfaceflinger: fix race condition

surfaceflinger only has one thread.

main thread is:
a). startHidlServices
b). do a getService
c). getService receives notification on binder thread and returns
d). binder ServiceManager register SF service

Then, started by a).
hwbinder thread is (DisplayService's, when it receives a transaction):
e). binder ServiceManager get SF service ( (d) must happen first! )

Normally, (e) never happens because nothing calls into DisplayService
until later. However, on a particular QCOM device (b/80061790),
surfaceflinger restarts at just the right time that this sequence happens:
(a) (b) (e)

then (c) is blocked since (e) is on a binder thread).

Test: QCOM device no longer enters this deadlock
Test: boot up on Pixel device
Test: (sanity) check to make sure surface flinger has one hwbinder thread
Test: (sanity) make sure Pixel device surface flinger doesn't register an
allocator when it isn't supposed to.

As a follow-up, the return values from these various services will be
checked.

Bug: 80061790
Change-Id: I254d70951ee9508790c940240bcd1da5af746dd3
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
6a40853e06f5274d84b0fc66e349a36510d1497f 24-Oct-2017 Vishnu Nair <vishnun@google.com> Add proto dump flag to services (1/2)

Adds new PROTO flag which requests services to dump sections
in proto format. Modifies dumpsys to take in proto argument
and pass on proto flags to services which support proto
dumps. Modify PriorityDumper helper class to parse proto
arguments and set asProto flags.

Bug: 67716082

Test: mmm -j56 frameworks/native/cmds/dumpsys && \
mmm -j56 frameworks/native/services/utils && \
adb sync data && \
adb shell /data/nativetest/dumpsys_test/dumpsys_test && \
adb shell /data/nativetest64/dumpsys_test/dumpsys_test && \
adb shell /data/nativetest/prioritydumper_test/prioritydumper_test && \
adb shell /data/nativetest64/prioritydumper_test/prioritydumper_test && \
printf "\n\n#### ALL TESTS PASSED ####\n"

Change-Id: I42c2a6a8876efbf9a7d792d68572499b16985147
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
357988777218502ed68a56a0c8b247ba64b74721 07-Oct-2017 Vishnu Nair <vishnun@google.com> Support priority based dumpsys in surface flinger

Call dump with no args when called with CRITICAL priority. Register
service with support for critical priority dumps.

BUG: 31774394

Test: lunch mini_emulator_x86-userdebug && make -j56
Test: adb bugreport ~/tmp.zip
Test: adb shell dumpsys --priority CRITICAL
Test: mmm -j32 frameworks/native/services/utils && \
adb sync data && adb shell /data/nativetest/prioritydumper_test/prioritydumper_test && \
adb shell /data/nativetest64/prioritydumper_test/prioritydumper_test && \
printf "\n\n#### ALL TESTS PASSED ####\n"

Change-Id: Iec35ef8026d4d9346c83bab203bed8524c28bf89
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
91a86774805069c853edbb2adb5033ca43621497 06-Oct-2017 Vishnu Nair <vishnun@google.com> Revert "Support priority based dumpsys in surface flinger"

This reverts commit deb36f24f43fdbd83c5c61d40b9a32d091ac2a37.

Reason for revert: fixing git_master/mini_emulator_x86-userdebug break

Change-Id: I4729bcb0f4c6ee1f388b916666a0ddbf8a5da5bd
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
deb36f24f43fdbd83c5c61d40b9a32d091ac2a37 06-Oct-2017 Vishnu Nair <vishnun@google.com> Support priority based dumpsys in surface flinger

Call dump with no args when called with CRITICAL priority. Register
service with support for critical priority dumps.

BUG: 31774394

Test: adb bugreport ~/tmp.zip
Test: adb shell dumpsys --priority CRITICAL
Test: mmm -j32 frameworks/native/services/utils && \
adb sync data && adb shell /data/nativetest/prioritydumper_test/prioritydumper_test && \
adb shell /data/nativetest64/prioritydumper_test/prioritydumper_test && \
printf "\n\n#### ALL TESTS PASSED ####\n"

Change-Id: I29140808493eb7c8805bfa338ab9a335154862b4
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
6ad20f7271c05bfa1e7bb4b67a8fa72f4a08756a 17-May-2017 Steven Moreland <smoreland@google.com> Add displayservice.

This hidl service provides information about vsync and hotplug
to vendor services which is required by at least some camera
hal implementations.

Test: VtsFwkDisplayServiceV1_0TargetTest
Bug: 38311538
Change-Id: Ifc344c11ca4b3c8cebc6f0145f506d1aa774506d
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
b278404c8766f04648b38a5f4da8872748f78a00 30-Mar-2017 Chia-I Wu <olv@google.com> surfaceflinger: start grahpics allocator when requested

When ISurfaceFlingerConfigs::startGraphicsAllocatorService returns
true, start graphics allocator service.

Bug: 36462585
Test: YouTube, Play Movies
Change-Id: Iac177e96ec89465398ec3eef46208bdb817934e3
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
391ab069b114d5012b1fa0a48c9bc2b841974970 16-Feb-2017 Isaac Chen <ycchen@google.com> Removed build time variable ENABLE_CPUSETS.

Use runtime check, cpuset_enabled(), instead of build time varianble
usually set in BoardConfog.mk.

Bug: 34726944

Test: Tested on Sailfish
without cpuset mounted
with cpuset mounted, but without schedtune
with cpuset mounted and with schedtune

Change-Id: I00153628db62abfbaa0ba75d571ba1bda0611ff3
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
acff43dca6a3c8a29f449706967d4de21c373d26 29-Jul-2016 Tim Murray <timmurray@google.com> Update SurfaceFlinger FIFO configuration.

- move SurfaceFlinger main thread to prio 2
- drop EventThread from FIFO but not SFEventThread, which is still FIFO
prio 1
- make DispSyncThread FIFO, prio 1

bug 30481949

Change-Id: Ifedccfbf3cf144ffad030109849a924dddae8d09
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
41a3853cea0cffede422fc2692b9c8e1674fc5eb 22-Jun-2016 Tim Murray <timmurray@google.com> surfaceflinger: make critical threads SCHED_FIFO

Sets the main thread, EventThread, and SFEventThread to SCHED_FIFO to
minimize jitter.

bug 24503801

Change-Id: I3751c00c79482842f5c0bdaec92b6cbfe62328a0
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
fc038bd8fc77998a436d43027919f4500c4291e6 27-Mar-2016 Jesse Hall <jessehall@google.com> Add service "gpu" in the SurfaceFlinger process

This service will handle shell commands for querying information about
the graphics hardware and driver. It currently does nothing.

Most shell command services are provided by ActivityManagerService. I
didn't want to put this there, because I'd rather not load graphics
drivers in the system_service process (robustness, security, etc.).
SurfaceFlinger is going to have them anyway, and is the only other
global always-running process that makes sense for this.

Change-Id: I27e451ea62b71aed01c6ececefd76d6707912eed
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
ac8d239dd7c22fc2be4e2d470b9d164c3c9285e9 10-Nov-2015 Tim Murray <timmurray@google.com> Set cpuset from surfaceflinger.

SurfaceFlinger shouldn't be limited to little cores exclusively, as the
binder threads should be placed on big cores when they are in the
critical path for a RenderThread.

bug 25745866

Change-Id: I9fb65f6d951733f91b4735ff27018411b58b2bfb
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
0944691d68089c17d71641a55192fb2fe755ec92 28-Aug-2015 Young-Ho Cha <ganadist@gmail.com> ignore SIGPIPE signal in native services

When run dump method via dumpsys command with invalid pipe fd, native
services can crash with SIGPIPE.
So ignore SIGPIPE signal.

Bug: https://code.google.com/p/android/issues/detail?id=184099
Change-Id: Icb15e0dff34a245c08c1b4c4bed51992ae382da4
Signed-off-by: Young-Ho Cha <ganadist@gmail.com>
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
8fb2d25ff3e9ade7c03ebe52a89c671ee75ce484 27-Jan-2015 Yabin Cui <yabinc@google.com> Kill HAVE_PTHREADS.

Bug: 19083585
Change-Id: I355491de945590f43c82bdcb7968b01b4bff6e06
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
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/main_surfaceflinger.cpp
9414d67f46d315873502b909ee51bab7abf3f9cc 24-Aug-2013 Mathias Agopian <mathias@google.com> make sure SF initialization is ran at target priority and correct thread group

SF can spawn threads (indirectly) during initialization
and we want those to be spawned at URGENT_DISPLAY_PRIORITY
(in theory they should set their own, but some code lives
in vendor libraries and doesn't).

Bug: 10430209
Change-Id: I5b3a8f979297de287614c8eafd8267bef1176e4b
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
4f4f0943489d9113c66ac22b58cfba8c21dfa879 20-Aug-2013 Mathias Agopian <mathias@google.com> SurfaceFlinger now runs in the process's main thread

it used to spawn its own thread and return the main thread
to the binder thread pool -- this was confusing the naming
of things in the kernel.

Bug: 10331839

Change-Id: I2d13a6d73409a38109300fcbe6a04b4c41cb5d00
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
7ffaa7c60d51cc0eb731158de2ac3df9c50cc0b4 22-Jul-2013 Mathias Agopian <mathias@google.com> move services executables sources in their respective src folder

Change-Id: Ic65434a26c7fed1699abf0851fec6faa40e09c0c
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp