DescriptionFixing how deferred canvas purges itself when a clear is recoreded.
This fixes performance because the old code was not reconstructing the clip
state correctly. This was causing a major performance degradation in the
Galactic IE testdrive demo. This fix also enbles the purge
on clear optimization when there is saved state on the matrix/clip stack.
The approach taken to solve the problem consists in purging by running the
playback silently. The previous approach was tearing down and
restarting the gpipe, which required reconstructing state, which is fragile
and hard to do correctly, and has the side effect of clearing the bitmap heap
and the flattened dictionary.
Note: This CL is expected to slightly degrade performance of the
deferred_canvas_record bench, which uses the skip on clear optimization.
This is because a silent playback takes more time that just destroying
the SkGPipe. Correctness trumps performance.
BUG=http://code.google.com/p/chromium/issues/detail?id=146178
Committed: https://code.google.com/p/skia/source/detail?r=5627
Patch Set 1 #
Total comments: 7
Patch Set 2 : #Patch Set 3 : #
Total comments: 2
Patch Set 4 : #MessagesTotal messages: 14
|