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/EventThread.cpp
|
9e663de4fe1dcc872373ee530c60a375624671c3 |
|
16-Aug-2013 |
Jesse Hall <jessehall@google.com> |
Use new HWC display type/count constants. Change-Id: I774d0c68906ac6dc69268f708c30a6b0868b8816
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
74d211ae26a0257c6075a823812e40b55aa1e653 |
|
22-Apr-2013 |
Mathias Agopian <mathias@google.com> |
clean-up/simplify all dump() APIs remove the scratch buffer parameter and use String8::appendFormat() instead. Change-Id: Ib96c91617c8e7292de87433d15cf6232b7d591b0
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
7adb0f8a9fdb961692ffd2f0c65cacb155143f64 |
|
07-Mar-2013 |
Jesse Hall <jessehall@google.com> |
Minor cleanups/fixes before virtual display refactoring None of these should change behavior, except for removing some incorrect log messages when using a virtual display. - HWComposer::getAndResetReleaseFenceFd() checks the HWC version, so no need to do that in the DisplayDevice::onSwapBuffersCompleted(). However, it should check that mFramebufferSurface is not NULL like it is for virtual displays. - Comment that FramebufferSurface::dump() overrides the non-virtual ConsumerBase::dump(), and fix it so the right thing happens regardless of the static type of the pointer/reference the callee has. FramebufferSurface::dump() could be removed right now, but I'd need to bring it back in a later change. - Use the right enum for validating display type ids. - Don't try to send hotplug events for virtual displays. - Mark virtual displays as connected so HWComposer::prepare() doesn't think something is wrong when it gets a non-NULL layer list. - Remove unused FramebufferSurface methods. Bug: 8384764 Change-Id: Id28a2f9be86b45f4bb7915fdf7752157035f4294
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
81cd5d3b94d21253a0be925f4ae58cc7f4afeef7 |
|
04-Oct-2012 |
Mathias Agopian <mathias@google.com> |
make sure we don't call into the HWC HAL when not needed when enabling/disabling vsync we now make sure to not call into the HAL if the state wouldn't change. Bug: 7274951 Change-Id: Ie24a6d68888a51b577acf9c2a973d85437cbacaf
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
ff28e201ec0c6d620eaaa29814ab52958487dc31 |
|
21-Sep-2012 |
Mathias Agopian <mathias@google.com> |
Display events now always carry the display id they happened on Change-Id: I12de1d883c23927722bc3a71b782f0079de4e831
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
b4d18ed34e3513f3a14ea0876c7e330bee72a529 |
|
21-Sep-2012 |
Mathias Agopian <mathias@google.com> |
fix an issue where hotplug events were not dispatched Change-Id: I527eec77f338cd6f1a9021aa4c9d384dbddd6d2a
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
148994e5f33ce240ff24ceb5bc0500b7f2001959 |
|
20-Sep-2012 |
Mathias Agopian <mathias@google.com> |
We now report hotplug events to the framework Change-Id: I2d6b7787d39e5929485a551e4982498c5053c211
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
ae2cfb5746e87f1bf17c446e20274c41ce0a57ce |
|
13-Sep-2012 |
Andy McFadden <fadden@android.com> |
Minor tweaks A couple of minor cleanups I stumbled over while looking at other things. Change-Id: I385ecfe1afefd577afbc59d7ef1d98d868073651
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
6bf552ee02f8540a36cde7be90ffd840b2f6cd5c |
|
31-Aug-2012 |
Andy McFadden <fadden@android.com> |
Add timeout when waiting for HW vsync This way we don't get stuck if, say, the driver decides not to send us vsync events. Change-Id: I4af6358b3a1f304eaae5fd926ed3403fa1091827
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
3ee454a7bef8bd3d1c9cdd9d17108eb80ebadf2a |
|
28-Aug-2012 |
Mathias Agopian <mathias@google.com> |
Eradicate DisplayID. DisplayDevices are now keyed of the wp<IBinder> the client uses. DisplayID has now become DisplayType which is just used to identify physical displays (as opposed to virtual displays such as wifi displays). Change-Id: I0c5968f2c902dcd699a7e0afacf833ff070c12ea
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
f6bbd44a23c2791277db7814a894633de04cd460 |
|
22-Aug-2012 |
Mathias Agopian <mathias@google.com> |
simplify further vsync handling - we now clean-up "dead" connection in the main loop, this entirely avoid the problem with the side effects of releasing strong references. We now only hold on to strong reference for the connection we will signal. - also simplify how we build the list of "ready" connections, by only adding them to the list when we did receive a vsync event Change-Id: I2a84da431320a2af8e8a93e07622a1d258236f43
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
a4cb35a2864d58e9a764a17623e15ab25a9964a0 |
|
21-Aug-2012 |
Mathias Agopian <mathias@google.com> |
fix various issues in SF's EventThread - one issues caused most timestamps to be reported as 0 - on rare occasions an uninitialized variable could be used - vsync counts per connection were accessed unthreadsafely we now have 2 lists of connections in the main loop, one just keeps a list of strong refs to the connections because once we have a strong ref we're not allowed to release it while holding the lock. the 2nd list holds the connections that have a vsync event to be reported. all the calculations are made with the lock held. Change-Id: Iacfad3745b05df79d9ece3719bd4c34ddbfd5b83
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
10125f00a50d3edd05deef9fcd2d368cf2766683 |
|
18-Aug-2012 |
Mathias Agopian <mathias@google.com> |
Fix deadlock in SF. problem was that we were acquiring a strong reference on Connection object with a lock held, when those got out of scope (lock still held) their dtor could be called if all other refs had dropped, the dtor would acquire the lock again to remove the Connection from the main list. boom. we rearange the code so this doesn't happen. Bug: 6942208 Change-Id: I0a0ebabce2842d29d60d645b64aac2f26640e59b
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
0f2f5ff75b7b48ceb64270655ee6b62d09bf4d00 |
|
01-Aug-2012 |
Mathias Agopian <mathias@google.com> |
rename DisplayHardware to DisplayDevice Change-Id: I3f7250cd914e0da4f9ec2c9403587bbe12f3cc62
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
8630320433bd15aca239522e54e711ef6372ab07 |
|
25-Jul-2012 |
Mathias Agopian <mathias@google.com> |
split HWComposer out of DisplayHardware we will only ever have a single instance of HWComposer, so it's now an attribute of SurfaceFlinger, instead of being part of DisplayHardware. DisplayHardware now just represents a "display" (it should be renamed). Change-Id: Iec191e57686868e1df6daa8b880a286c9fefde56
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
921e6ac4b7610a178285898d191eb0e3afe906c0 |
|
24-Jul-2012 |
Mathias Agopian <mathias@google.com> |
SurfaceFlinger cleanup mostly refactored SurfaceFlinger.h, but also removed dead code. cleaned-up a few includes as well. Change-Id: Ib15f4ffe567912b61ee98aa076c6a283b72811b5
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
1b03149f3533db04e72e088d3fdd09d0087ca594 |
|
21-Jun-2012 |
Mathias Agopian <mathias@google.com> |
get rid of GraphicPlane its functionality is now folded into DisplayHardware there will be more changes in that area.
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
7d886474734623fd2565ff40215ffe497e10b4cc |
|
15-Jun-2012 |
Mathias Agopian <mathias@google.com> |
SF could get stuck waiting for vsync when turning the screen off When turning the screen off we could have 2 waiters on the vsync condition: The main vsync waiter as well as one in onScreenReleased(). We were only signaling the condition though, so it it would be possible to wake onScreenReleased() without waking the main vsync thread which would then be stuck in .wait(). We fix this by just using broadcast() when receiving a vsync event. We also add a broadcast() to signal when the state of mUseSoftwareVSync changes. This is important particularly for the transition from hardware to software vsync because the main vsync waiter might have observed mUseSoftwareVSync == false and decided to block indefinitely pending a hardware vsync signal that will never arrive. Removed a potentially deadlocking wait for a signal in onScreenReleased(). The function was trying to wait for the last vsync event from the hardware to be delivered to clients but there was no guarantee that another thread would signal it to wake up again afterwards. (As far as I can tell, the only other other thread that might wake it up at this point would be a client application issuing a vsync request.) We don't really need to wait here anyhow. It's enough to set the mUseSoftwareVSync flag, wake up the thread loop and go. If there was a pending vsync timestamp from the hardware, then the thread loop will grab it and use it then start software vsync on the next iteration. Bug: 6672102 Change-Id: I7c6abc23bb021d1dfc94f101bd3ce18e3a81a73e
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
03e407270c7ad76632f982c886d0776bed9e9b4c |
|
27-Apr-2012 |
Mathias Agopian <mathias@google.com> |
set vsync power hint Change-Id: I28c2faf9ff584df3e74392712971cbcf75eb9e98
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
fca660cf730161f823e770ad1693fab441477edd |
|
13-Apr-2012 |
Mathias Agopian <mathias@google.com> |
don't wake-up eventthread every 16ms if there are no vsync requests Bug: 6332534 Change-Id: Idf79ad913770c6180969f6c95a9b125fff580231
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
22ffb117b0c2a906bd04aef9738a52223cdd1dce |
|
11-Apr-2012 |
Mathias Agopian <mathias@google.com> |
make sure to disable VSYNC while screen is off Change-Id: If1894c43b0a39a2851e1280a35ae77bccd6d9abd
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
e2c4f4ec23b735dd2a03f4ea8b08b288a1bb04e8 |
|
11-Apr-2012 |
Mathias Agopian <mathias@google.com> |
Added vsync debugging information in dumpsys log Change-Id: I20ef05a73d89caaf6a70dc9ca25ada6e6a1f6ff9
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
2965b26022f95051f65b09d7eac47cbe923855c9 |
|
09-Apr-2012 |
Mathias Agopian <mathias@google.com> |
VSYNC handling cleanup Change-Id: I1376bf864c4e03c11fb6d1333a8b7cfdda08c9e4
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
d94d3b890ac3d5731bd0397874d32aa4bc74bd61 |
|
09-Apr-2012 |
Mathias Agopian <mathias@google.com> |
avoid turning vsync off/on at each frame always keep vsync active for an extra frame before deciding if it should be turned off. Change-Id: I55b03265b7851b33a595e46a013f2ab55e66c964
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
3eb38cb33e41ce40dd1094bdec850f0fca9f8a53 |
|
04-Apr-2012 |
Mathias Agopian <mathias@google.com> |
SurfaceFlinger now uses the new VSYNC HAL API. If h/w composer doesn't support vsync (version < 0.3) we "fake" it with a timer. Change-Id: I1e3be79f43c9631d1293ad7d6cf52f9bfc42d65b
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
cb9732a951d20cacb7ebe2dab132b5738226b1b6 |
|
04-Apr-2012 |
Mathias Agopian <mathias@google.com> |
refactor / simplify EventThread Change-Id: I3981c6fba93b7b985174b2a7045e24db2c0b4428
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
841cde55549cea7a344a1705b18d57a0c6c8ec45 |
|
02-Mar-2012 |
Mathias Agopian <mathias@google.com> |
add more ATRACE Change-Id: I6cc5759fb0a05427680488fd12ae797e77644f3d
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
3cf199aef6250552555344944c3e3a6e4ab05f92 |
|
01-Feb-2012 |
Mathias Agopian <mathias@google.com> |
fix an issue with vsync event delivery vsync events were sometimes delivered to connected client who didn't request them. this happened if another client requested the delivery and that client was first in the client list. also fix the vsync test which didn't request any events as well as DisplayEventReveiver documentation which was misleading about the necessity to request vsync events. Change-Id: Ie990fda3f337f8f0042745c4b2cde67936c45686
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
8aedd4737d6ce8548d2fd5def65b1e1737283821 |
|
25-Jan-2012 |
Mathias Agopian <mathias@google.com> |
SF now synchronizes to VSYNC Change-Id: Ic5e4f2ea9927ce133eef9499c03161325e9d02c5
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
82d7ab6c7e0cf971e515134ccf072682dd1a2cdb |
|
20-Jan-2012 |
Mathias Agopian <mathias@google.com> |
improve SurfaceFlinger dumpsys It is now possible to say: dumpsys SurfaceFlinger --latency to print latency information about all windows dumpsys SurfaceFlinger --latency window-name to print the latency stats of the specified window for instance: dumpsys SurfaceFlinger --latency SurfaceView The data consists of one line containing global stats, followed by 128 lines of tab separated timestamps in nanosecond. The first line currently contains the refresh period in nanosecond. Each 128 following line contains 3 timestamps, of respectively the app draw time, the vsync timestamp just prior the call to set and the timestamp of the call to set. Change-Id: Ib6b6da1d7e2e6ba49c282bdbc0b56a7dc203343a
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
616c0cdf2c9e9a86e54f727640a6673bd99fda8e |
|
13-Jan-2012 |
Mathias Agopian <mathias@google.com> |
fix a bug with vsync management this bug was introduced recently. we were signaling *all* clients regardless of the vsync rate. Change-Id: I2ae8a6c820a390f602382596ba75e8ed737fb2ef
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
a72d0db29213c407278a1d0257baa60db28c8471 |
|
10-Jan-2012 |
Mathias Agopian <mathias@google.com> |
Fix an issue with VSYNC one-shot VSYNC listeners could miss a VSYNC event if scheduled while in waitForVsync(). Change-Id: I720485784aecfea6cc7a23c77081d7af3c9c71db
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
a19954ab377b46dbcb9cbe8a6ab6d458f2e32bca |
|
04-Jan-2012 |
Steve Block <steveblock@google.com> |
Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGE See https://android-git.corp.google.com/g/156801 Bug: 5449033 Change-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
478ae5eb5a0047e1b2988c896cff6363b455ee50 |
|
07-Dec-2011 |
Mathias Agopian <mathias@google.com> |
Improve the VSYNC api a bit. - add the ability to set the vsync delivery rate, when the rate is set to N>1 (ie: receive every N vsync), SF process' is woken up for all of vsync, but clients only see the every N events. - add the concept of one-shot vsync events, with a call-back to request the next one. currently the call-back is a binder IPC. Change-Id: I09f71df0b0ba0d88ed997645e2e2497d553c9a1b
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
23748668d33ac850e64d87e25ac4cc78679c9384 |
|
05-Dec-2011 |
Mathias Agopian <mathias@google.com> |
fix a deadlock when removing a DisplayEventConnection the deadlock would happen when the pipe became invalid and SF trying to remove the connection from its list. we know make sure to process events without holding a lock. Change-Id: I39927ed8824fc7811e16db3c7608a2ebc72d9642
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
d0566bc26fcf6ca396118701fa11900b627f2c09 |
|
18-Nov-2011 |
Mathias Agopian <mathias@google.com> |
Add support for sending VSYNC events to the framework use gui/DisplayEvent to receive the events. Events are dispatched through a unix pipe, so the API is compatible with utils/Looper. see gui/DisplayEvent.h for more info. Bug: 1475048 Change-Id: Ia720f64d1b950328b47b22c6a86042e481d35f09
/frameworks/native/services/surfaceflinger/EventThread.cpp
|