Description4x allocation in PipeController is probably overkill.
When verylargebitmap GM runs in cross-process pipe mode, we're
requestBlock()ing ~200M to carry the bitmaps. The current
implementation ends up allocating ~800M, which is a bit wasteful.
SkGPipeWrite already rounds up to 16K, so just rely on that.
This change exposed several bugs in pipe:
- we don't reserve enough space in drawVertices
- we don't reserve enough space for factory names in cross-process mode
- we don't quite have the right check in needOpBytes to see if we needed to send off the current block and allocate a new one
SETUP_NOTIFY and generally calling doNotify() more often than necessary made things hard to debug and understand. Now the pipe always waits to send off its current block until it needs more space than that block can provide, or it's the final block. We can put these back if we need the proactive flushing, but it seems not necessary?
Removed an assert in DeferredCanvasTest, which is somtimes 2 (Debug), sometimes 3 (Release). It seemed like the other asserts were more essential, and this one was more of a white-box assertion. Still sound if we remove it?
BUG=skia:2478
Committed: http://code.google.com/p/skia/source/detail?r=14613
Patch Set 1 #Patch Set 2 : 128 bytes #Patch Set 3 : move #
Total comments: 1
Patch Set 4 : exact in debug #Patch Set 5 : remove AUTO_NOTIFY #Patch Set 6 : sometimes 2, sometimes 3 #
Total comments: 2
Patch Set 7 : update comment #
Total comments: 2
Patch Set 8 : keep test #
Messages
Total messages: 14 (0 generated)
|