Chromium Code Reviews
DescriptionCorrectly handle damage involving filters in SurfaceAggregator
There are two main issues with the handling of damage of contents
affected by RenderPassDrawQuad filters:
1) Damage of a small part of a source Surface can affect a large part
of the destination and
2) To draw damage on the destination, an unexpectedly large portion
of the source must be used.
To deal with these, the SurfaceAggregator must keep track of all output
render passes affected by filters. Any Surface in an affected RenderPass
will cause its parent Surface to be completely damaged (handling #1
above).
To handle #2, affected RenderPasses will have their damage rects set to
contain the entire output_rect. Then DirectRenderer can use that damage
rect to determine what to draw.
CopyRequests can also cause areas outside the damage rect to be read, so
any RenderPass inside a CopyRequest (directly or indirectly) will have
its damage rect set to the output rect.
This system is very pessimistic about what should be drawn, but in
general it shouldn't affect that many cases and should always be
correct.
BUG=602941
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Committed: https://crrev.com/575a9b96a2b2776a6a4ae81f2e20c2bf3e975250
Cr-Commit-Position: refs/heads/master@{#391733}
Patch Set 1 #Patch Set 2 : #Patch Set 3 : #Patch Set 4 : #
Total comments: 2
Patch Set 5 : #Patch Set 6 : #
Messages
Total messages: 14 (7 generated)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||