diff options
author | Evan Rosky <erosky@google.com> | 2020-10-13 20:40:23 -0700 |
---|---|---|
committer | Evan Rosky <erosky@google.com> | 2020-10-16 13:25:17 -0700 |
commit | 123ca798581b5987f0f8048b234f8aec444847b6 (patch) | |
tree | 52e8868aefb9adf3cd4c97ea6d0eac0093c55384 /rs/java/android/renderscript/ProgramFragmentFixedFunction.java | |
parent | 97d89af95ffc5668fcd340ced7d5b7fb0a9178b1 (diff) |
Convert BLASTSyncEngine to a polling mechanism
SyncEngine's requirements are getting more demanding as it is
used in transitions as-well as more-complicated interractions
in Shell. In order to meet the requirements, this converts
BLASTSyncEngine to work mostly by polling during surface-placement.
The previous set-up was already gated on surface-placement, so
there shouldn't be any additional latency.
There is now only one SyncEngine (instead of many) and it manages
SyncGroups which must not overlap. Whenever a container is added
to a sync group, the SyncEngine will monitor the subtree rooted at
that container. When a child receives finishDrawing: instead of
immediately reporting to the engine, it simply remembers that it
is now READY for sync. On each surface-placement pass, SyncEngine
will check the subtrees to see if everything is finished syncing.
This enabled the following:
- Now handles visibility changes and new children (since it is
always checking the full subtree). This is needed to deal with
opening transitions.
- Doesn't wait for occluded siblings. This is needed to deal with
starting windows.
- Handles parenting changes: immediately applies sync transactions
on subtrees exiting the sync-group, requests updates/waits
on subtrees entering, and re-requests updates for subtrees moving
within the group.
- Includes removals in sync transaction
Bug: 161710818
Test: SyncEngineTests
Change-Id: Ic3fdc091d5656b3eaea45bce449e098ee9d2aabb
Diffstat (limited to 'rs/java/android/renderscript/ProgramFragmentFixedFunction.java')
0 files changed, 0 insertions, 0 deletions