Age | Commit message (Collapse) | Author |
|
9428514, 9428272, 9428273, 9428275, 9428276, 9428277, 9428278, 9428689, 9428690, 9428691, 9428478, 9428702, 9428692, 9428479, 9428720, 9428721, 9428722, 9428723, 9428703, 9426151, 9428693, 9428724, 9428725, 9428726, 9428727, 9428728, 9428729, 9428730, 9428731, 9428732, 9428733, 9428734, 9428704, 9428609, 9428610, 9428611, 9428612, 9428613, 9428614, 9428615, 9426152, 9426153, 9426154, 9426155, 9426156, 9426157, 9426158, 9426159, 9428740, 9428409, 9428694, 9428695, 9428735] into sparse-5888870-L93800000368094851
Change-Id: I76ea51b3f5022c6f44d291a3c829a31c09d2532c
|
|
Bug: 140823887
Test: Manual test with Calculator apps
Change-Id: I705c16534a616bc1a3af4402ba999eeb68871a3f
(cherry picked from commit 457bef9139e9e756aa487703d75ee5e0844d9076)
|
|
Currently two entities in SurfaceFlinger can set a new display refresh
rate: (1) SurfaceFlinger core, and (2) Scheduler. It's possible for
these two entities to get out of sync in the following way:
1) Scheduler updates the refresh rate to some rate
2) Upper layers call into SurfaceFlinger to update allowed display
configs
3) SurfaceFlinger always sets display rate to max
If the refresh rate from #1 and #3 don't match, it can leave the system
in an inconsistent state, potentially causing visual and power issues.
This change fixes this problem by changing step #3: Instead of always
choosing the max refresh rate, SurfaceFlinger queries the optimal
refresh rate from Scheduler. If that rate isn't available, only then
does SurfaceFlinger default to the maximum rate.
Bug: 139557239
Test: atest libsurfaceflinger_unittest
Test: Manual:
1) Start with SurfaceFlinger idling (Scheduler selected
RefreshRateType::DEFAULT)
2) Trigger a change in allowed display configs from
DisplayModeDirector
3) Make sure the RefreshRateType SurfaceFlinger sets is DEFAULT
instead of PERFORMANCE
Change-Id: Ia85a60fde55afaed5106462942e0bb77652ec737
Merged-In: Ia85a60fde55afaed5106462942e0bb77652ec737
(cherry picked from commit d916d941d89ec8fdcbc2bbe0bfdf0b0db1ad08b5)
|
|
Provide a notification whenever allowed display configurations have
changed, this allows Display Event Receivers to be aware of a change in
allowed configs.
Bug: 139487676
Change-Id: Ida73391c350989be595f55ff8e1d9d2cc70c0276
(cherry picked from commit ab6ef6c8871506317dc7ada75707c19963daabe4)
|
|
qt-c2f2-release
Change-Id: Iae1413ea1a3977252bdd9603420a0b08c74fa338
|
|
|
|
Bug: 139427228
Test: builds
Change-Id: I72ff075bbf878c39a17803b2d74181fbe045a3fb
|
|
qt-c2f2-release
Change-Id: I05e28eed45918898dbc2f820eaf44b59c49c8466
|
|
|
|
HALs dumps are needed to debug WFC releated issues
Persistent logs capture is needed to capture the history of logs that
captures the scenario of telephony going to bad state.
Bug: 138261934
Test: Triggered telephony dumpsys using connectivity monitor app and verified
Change-Id: I158e327d5c5a13c64e48d5711f82903d4a50b8f0
|
|
qt-c2f2-release
Change-Id: I41b4899b66463ce42a8e1ea307c9107b776b592d
|
|
into qt-r1-dev
|
|
Otherwise we may leak if BufferStateLayer is destroyed first.
Bug: 137514000
Test: Over 61 hours, ran: while [ true ]; do am start -n \
com.android.chrome/com.google.android.apps.chrome.Main \
http://m.youtube.com; sleep 10; input tap 740 740 ; sleep 10; input \
keyevent HOME; sleep 0.5; am force-stop com.android.chrome; sleep 0.5; \
done
Test: Over >30 minutes: while [ true ]; do am start -n \
com.android.chrome/com.google.android.apps.chrome.Main \
http://m.youtube.com; sleep 10; input tap 740 740; \
sleep 1; content insert --uri content://settings/system --bind \
name:s:user_rotation --bind value:i:1; sleep 4; content insert --uri \
content://settings/system --bind name:s:user_rotation --bind value:i:0; \
sleep 5; input keyevent HOME; sleep 0.5; \
am force-stop com.android.chrome; sleep 0.5; done
Test: CtsViewTestCases:ASurfaceControlTest
Test: CtsViewTestCases:SurfaceControlTest
Test: Transaction_test
Change-Id: I743eb8bd9887d17e08b6f1b8e8ec5874359df175
|
|
Some applications may send doubles frames which are scheduled to be
presented very close to each other. In this case to avoid calculating
a very high fps for the layer, clamp the refresh duration to the minimal
value allowed for the layer.
Test: YouTube play "YouTube 60fps Tester" video.
Bug: 139209733
Change-Id: I4bcdfad65b57782ec6e346e8d884bfb6e2abac4d
|
|
qt-c2f2-release
Change-Id: I362efbc1a3c5ba7213b1f77f256cac3332558335
|
|
|
|
|
|
qt-c2f2-release
Change-Id: I4129315e1695059addf0bb8127ec65e11e948518
|
|
Bug: 138963614
Test: opt-in to GameDriver or ANGLE and test
Change-Id: I1e74cf55dd00f6fd7cb65d278d4dbaf018c5f322
Merged-In: I1e74cf55dd00f6fd7cb65d278d4dbaf018c5f322
|
|
Prior to this change, EGLImage management would be performed by both
binder threads and the main rendering thread in a synchronized manner.
But because of BufferQueue implementation details, it's possible for an
app's Surface to be disconnected (destroying all backing EGLImages per
the disconnect api spec), while still latching and presenting the most
recently queued image (which requires recreating the EGLImage on the
main thread), which can cause jank in some scenarios such as app-launch.
To mitigate this, defer EGLImage creation and destruction to a separate
thread behind RenderEngine so that creating the EGLImage should never be
done on the main thread. So scenarios such as app-launch avoid jank by
performing the EGLImage creation asynchronously with the main thread, so
that the creation is done by the time RenderEngine needs to start
rendering.
Bug: 136806342
Bug: 137191934
Test: Launching photos app shows no bindExternalImage* calls
during the rendering path
Test: librenderengine_test
Change-Id: Ib809e36267b5604bbbedd4089d15666b22cabc95
|
|
Client should not be requesting such large buffers.
Limit byte size to max(size_t)
Bug: 137801859
Test: build, boot
Change-Id: Idef0c1e926c180bfaf640b627046adba5d3043c3
|
|
qt-c2f2-release
Change-Id: Ibbe994d96da0879f8cb91c310411469f61327dd5
|
|
am: f941c1ea7e
Change-Id: I4ab039f9fffad26d9c5dcbbb87210c3e98e93041
|
|
Big corner radii would cause problems at lower precision because
computing a vector norm would overflow. But since highp tanks
performance, instead scale down and back up by a power of 2 during the
normalization operation, so that a higher precision is not required.
Bug: 137191934
Test: eyeballing systrace when opening Photos, GPU seems to take shorter
time and no jank is observed
Test: Stepping through frames from a Pixel 3 XL screenrecording shows
that the beginning of the app opening animation is rounded instead of
square
Change-Id: Ie7a39bd0f992f7f42414ef49de9873775cc34409
Exempt-From-Owner-Approval: Approved in qt-r1-dev
|
|
qt-c2f2-release
Change-Id: I8625fae3538fb6adddb171a0b101c3e51acb3fea
|
|
into qt-r1-dev
|
|
|
|
Big corner radii would cause problems at lower precision because
computing a vector norm would overflow. But since highp tanks
performance, instead scale down and back up by a power of 2 during the
normalization operation, so that a higher precision is not required.
Bug: 137191934
Test: eyeballing systrace when opening Photos, GPU seems to take shorter
time and no jank is observed
Test: Stepping through frames from a Pixel 3 XL screenrecording shows
that the beginning of the app opening animation is rounded instead of
square
Change-Id: Ie7a39bd0f992f7f42414ef49de9873775cc34409
|
|
When we decide to drop a buffer from a buffer queue, make sure to merge
the damage region from the dropped buffer into the current damage
region. Otherwise we'll pass the wrong damage region to hardware
composer and get broken rendering.
Bug: 136158117
Test: Wrote a new test in Transaction_test.cpp to repro the problem and
confirm the fix works.
Change-Id: Icdc61e1be3297450f2869c496dad1453fb6dca6d
|
|
qt-c2f2-release
Change-Id: Ic60974db1b4ff8aa95bcbfbf3dd69eb4d44f658d
|
|
am: a604f0a824
Change-Id: I2104b990656d4884baa69334b3fcb9d4a2d29867
|
|
|
|
am: 4658e11cbe
Change-Id: I3162bfbd6070dfeb179deaeb4b9358a027737ce5
|
|
|
|
calculation" into qt-r1-dev
|
|
|
|
Calculate the expected present time in the beginning of the frame
and use the same value across the frame composition.
Bug: 137873466
Test: App transitions
Change-Id: I0b41c62796f6150702e8d50ec7d28838d3a5aa87
|
|
To decrease jank while rotating.
Test: Rotate screen
Bug: 138083790
Change-Id: I2b0d63bbf4143b9273a502ced451867f69e42636
Merged-In: I2b0d63bbf4143b9273a502ced451867f69e42636
|
|
|
|
qt-c2f2-release
Change-Id: I6ef9604e7e9938f966308297e82e59b701d7706a
|
|
In some devices where SF misses a frame in GL comp, HWC queue may
get stuffed. This causes application to block longer on dequeueBuffer
which leads to jank.
Test: 1. Open Camera
2. Swipe horizontally to go back to previous app.
Bug: 138083790
Change-Id: I4c5963cb7ba7f9b10254c77dc7117ca3acac81cf
|
|
|
|
Increase the thresholds to mark layer as "relevant" to be less agressive
when changing refresh rate based on content.
Bug: 136558136
Test: 1) put icons in drawer/folder on homescreen
2) tap drawer to expand
3) tap homescreen to contract drawer
4) goto 2), repeating quickly.
Test: libsurfaceflinger_unnittest
Change-Id: I2a9b696f267d93720408a41dceb4acb7dc80bd69
|
|
Track EGL images allocated by libgui to help debug memory leaks
Test: monkey
Bug: 137514000
Change-Id: I0b193c0fdb7a4c07d7c2e5d06063e3dc01b5a57b
|
|
qt-c2f2-release
Change-Id: I8d6939208f9c99402ca8838277587be27bb395de
|
|
Some displays don't exit from idle state immediately when vsync is
enabled through the kernel idle timer, so exclude the first vsync period
instead of just the first sample.
Bug: 136197211
Test: Scrolling through settings
Change-Id: I899fec289c8b08cfaa3264f7f6291a6fac489ab8
|
|
This is a debug change to make sure layer bounds will not overflow after
an inset operation.
Bug: 137560795
Test: manual tests
Change-Id: Ifd9a8d84877e7f4c1f62c0419b0f86294ab576af
|
|
qt-c2f2-release
Change-Id: I6fa9c8d7fd0fba5a5078139e7d619555fe75a04f
|
|
timeout" into qt-r1-dev
|
|
|