summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/tests/unittests/TransactionApplicationTest.cpp
AgeCommit message (Collapse)Author
2021-07-01SF: move RefreshRateConfigs to DisplayDeviceAdy Abraham
Move RefreshRateConfigs to DisplayDevice to be able to maintain a per-display refresh rate switching policy. Test: SF unit tests Test: refresh rate switching is working on device with more than one display Bug: 187539899 Change-Id: Ica6a955e8ad0e563a0740f6579b61fc592eb982c
2021-02-25SurfaceFlinger: mExpectedPresentTime should not be updated outside theAdy Abraham
main thread mExpectedPresentTime should be set only by the main thread when composition starts as it is used throughout the composition stage, and updates to this variable may cause SF to use inconsistent values for determining the expected present time. Test: Run TouchLatency app and observe systraces Test: Expand notification shade and observe systraces Bug: 178148035 Change-Id: Ie221d7e1fb0b0965460af773d3ecf0b06b5c5d7a
2021-02-03Merge "SF: Don't cache display modes in HWComposer" into sc-devMarin Shalamanov
2021-02-02SF: Don't cache display modes in HWComposerMarin Shalamanov
The display modes should be stored only in DisplayDevice. Having the state also in HWComposer is unnesesary and hard to keep in sync with SF, e.g. during hotplug processing of displays which can change their supported modes. Any HWC calls which need to validate their parameters need to go through display device. This additinally makes the code more undestandable. Bug: 159590486 Test: presubmit Change-Id: I40b03c09a5fd6092fca0682d602deb70db022fa5
2021-02-02Introduce SurfaceFlinger Queued TransactionArthur Hung
Implements the transaction queue to store the transaction updated from 'setTransactionState', and apply these queued transactions in the main thread. That would prevent holding the state lock between binder thread and main thread. - The setTransactionState won't call 'applyTransactionState' directly. - The queue is protected by queue lock, apply/get states will still be protected by state lock. - drain and apply transaction queue should be triggered in main thread. - Sync transaction will wait after the condition broadcast, protected by stack lock. Test: atest libsurfaceflinger_unittest SurfaceFlinger_test libgui_test Test: atest SurfaceControlTest UiAutomationTest Test: manual, rotate behavior, seamless rotation, wm-smoke Bug: 166236811 Bug: 177355824 Change-Id: Ie54a9cc6cdf514df613fba0dff95f6752d1134e2
2021-01-29Add inputEventId to SurfaceFrameSiarhei Vishniakou
SurfaceFrame will now be aware of the id of the input event that caused the current frame. The flow of input event id is inputflinger -> app -> surfaceflinger. Here, we are adding the 'inputEventId' parameter to the 'setFrameTimelineVsync' call. This call will now be responsible for setting two pieces of information: the vsync id, and the input event id. Since it will no longer be limited to the vsync id, we rename this call to "setFrameTimelineInfo". Once the inputEventId is stored in SurfaceFrame, we will add a binder call to send the frame timing information to inputflinger (separate, future CL). This will allow input to reconstruct the entire sequence of events (at what time was input event getting processed in system_server, app, and surfaceflinger) and will provide the ability to measure end-to-end touch latency. In a separate change, we will also add ATRACE calls to allow manual / script-based latency analysis for local debugging. We will now know which input event is being processed in surfaceflinger. Bug: 169866723 Bug: 129481165 Design doc: https://docs.google.com/document/d/1G3bLaZYSmbe6AKcL-6ZChvrw_B_LXEz29Z6Ed9QoYXY/edit# Test: atest WMShellUnitTests SurfaceParcelable_test libgui_test IPC_test SurfaceFlinger_test Change-Id: If7e0eee82603b38b396b53ad7ced660973efcb50 Merged-In: If7e0eee82603b38b396b53ad7ced660973efcb50
2021-01-15Revert "Introduce SurfaceFlinger Queued Transaction"Zhuoyao Zhang
This reverts commit dca14285b538820ab5164014c2913b118ed0a8ff. Reason for revert: b/177355824 Bug: 177355824 Change-Id: Idbca13d2040b0d8e96fb7747bf5534f8c3feb08e
2021-01-11Introduce SurfaceFlinger Queued Transactionarthurhung
Implements the transaction queue to store the transaction updated from 'setTransactionState', and apply these queued transactions in main thread. That would prevent holding the state lock between binder thread and main thread. - The setTransactionState won't call 'applyTransactionState' directly. - The queue is protected by queue lock, apply/get states will still be protected by state lock. - drain and apply transaction queue should be triggered in main thread. - Sync transaction will wait after the condition broadcast, protected by stack lock. Test: atest libsurfaceflinger_unittest SurfaceFlinger_test libgui_test Test: atest UiAutomationTest Test: manual, rotate behavior, seamless rotation, wm-smoke Bug: 166236811 Change-Id: I9d504379d4aa941b68329f36f2e79ee1ed2f50bb
2020-12-24SF: Compile with -WextraMarin Shalamanov
Compile with -Wextra for additional conversion checks. In each file which produces compile errors -Wextra is ignored. Bug: 175126758 Test: m surfaceflinger && m libsurfaceflinger_unittest Change-Id: Iec6bcc699715a99c8c65d891ab3c0481e884c728
2020-12-23SurfaceFlinger: correctly pass desired present time for BLASTAdy Abraham
Pass whether a desired present time is automatically populated or not to match BufferStateLayer behavior to the one we have for BufferQueueLayer. Bug: 169901895 Test: expand notification shade and observe systrace Change-Id: Ia02c5633d46dde67d2c3be33b084d63c40c2afb0
2020-11-18SurfaceFlinger: Add DISPLAY_EVENT_FRAME_RATE_OVERRIDEAdy Abraham
Add a new event to DisplayEventReceiver that conveys a list of apps whose frame rates have been overriden. This event is processed by the DisplayManager to advertise the new frame rate to the overridden app. Change-Id: I89fce8b5b4d9db65ec5db7dd2393c384c0fcfd82 Bug: 169271059 Bug: 169271062 Bug: 170503758 Test: manual test using SF backdoor
2020-11-03SurfaceFlinger: throttle applications based on uidAdy Abraham
Add the ability for SurfaceFlinger to be able to throttle down to a divider of the refresh rate (i.e. for 30/45 for 90Hz) Change-Id: I6bfd6f43ee1f30e771a136c558d8ae9a6d7fbe0f Test: Manually via 1039 SF backdoor Bug: 170502573 Bug: 169270763 Bug: 169271059
2020-09-30SurfaceFlinger: add transactions to FrameTimelineAdy Abraham
Allow transaction clients to specify the vsyncId that started the transaction and plumb this data to FrameTimeline to be able to track jank associated with transactions Bug: 166302754 Test: manually see transactions in frame timeline Change-Id: Id05e0d0a73039204943d93b666cb67e3e7515a69
2020-09-25Add ids to transactions and dump them in transaction tracePablo Gamito
This is required for associating dumped transactions merges on the client side to dump transaction traces on the server side Test: Make sure a transaction id is present in the dump Change-Id: I8d3ad102bedb839901f0a818779c7d35519c669a
2020-09-24Revert "Introduce SurfaceFlinger Queued Transaction"Arthur Hung
This reverts commit 3e95285e5bc67a5e5a33ac72e3fff3f234b24de8. Reason for revert: broken test b/169245126 Bug: 169245126 Change-Id: I9d4b01619433a31ad8d8b2698926599359322e83
2020-09-23Introduce SurfaceFlinger Queued Transactionarthurhung
Implements the transaction queue to store the transaction updated from 'setTransactionState', and apply these queued transactions in main thread. That would prevent holding the state lock between binder thread and main thread. - The setTransactionState won't call 'applyTransactionState' directly. - The queue is protected by queue lock, apply/get states will still be protected by state lock. - drain and apply transaction queue should be triggered in main thread. - Sync transaction will wait after the condition broadcast, protected by stack lock. Test: atest libsurfaceflinger_unittest SurfaceFlinger_test libgui_test Bug: 166236811 Change-Id: Iab78a6d1e554d28eb4ffc5df860263ecb9091749
2020-08-28SurfaceFlinger: DispSync -> VsyncControllerAdy Abraham
Refactor the old DispSync to separate between Vsync math (VsyncTracker) and fence / vsync callback management (VsyncController) Bug: 162888874 Test: examine systraces Test: SF unit tests Change-Id: Id275620380a21aeb0017e966910cbf24860cecef
2020-08-03SF: Remove EventControlThreadDominik Laskowski
EventControlThread was a HWC workaround dating back to K for toggling VSYNC off the main thread, but as of R it defers back to main only to incur context switches. Clean up TestableScheduler construction to skip creating DispSync and timer threads, which fixes several gMock warnings of unexpected calls. Remove virtual destructors for non-polymorphic interfaces. Bug: 160012986 Test: systrace Test: libsurfaceflinger_unittest Change-Id: I01360016a7dba79dc905f250753e6fce34af0a90
2020-04-23Merge "Lookup layer handle when registering region sampling listener" into ↵Alec Mouri
rvc-dev
2020-04-22Lookup layer handle when registering region sampling listenerAlec Mouri
We must do this in order to prevent clients from providing a bogus handle when registering a region sampling listener. Fortunately, this particular path required a permissions check so it cannot be accessed from arbitrary apps on unrooted devices. But, we should not allow this type of memory corruption to be reachable by the system. Bug: 153467444 Test: libgui_test Test: Repro steps in the bug no longer reproduce Change-Id: I883506798574dfd0688371fdb6305cfad9d153fc
2020-04-16SurfaceFlinger: use intended wake up time when calculating next present timeAdy Abraham
If SurfaceFlinger wakes up too late (due to the main thread being busy) it may calculate a wrong presentation time as it is based on the wake up time. Instead, cache the intended wake up time and use it as the base time. Change-Id: I84c37bd5f164fbdef3151c0898d3cea624cea515 Bug: 154199567 Test: collect systrace for launcher scrolling
2020-01-15SurfaceFlinger: Enable -WConversion in Android.bpAdy Abraham
Enable global -WConversion in Android.bp and turn it off in individual files. This is the first step to enable -WConversion in SurfaceFlinger. Test: boot Bug: 129481165 Change-Id: Ia752df39ef380bde71705a32582d618242c466f7
2019-12-16Fix check for nullptr surface IBinderValerie Hau
Bug: 146345307 Test: build, boot, libsurfaceflinger_unittest, SurfaceFlinger_test Change-Id: I79d5bb71beb573c3c8a150c938aa6d7fa301353f
2019-10-07Add more fine-grained testing for TransactionsValerie Hau
Bug: 129130064 Test: build, boot, libsurfaceflinger_unittest Change-Id: I44b59c8b8c117353ee1da224cf4fe2c4290f0ec6