Closed
Bug 771219
Opened 12 years ago
Closed 12 years ago
Tile base progressive painting
Categories
(Core :: Graphics, defect)
Tracking
()
RESOLVED
FIXED
People
(Reporter: BenWa, Assigned: BenWa)
References
Details
Attachments
(4 files, 6 obsolete files)
1.79 KB,
patch
|
roc
:
review+
|
Details | Diff | Splinter Review |
2.16 KB,
patch
|
ajuma
:
review+
|
Details | Diff | Splinter Review |
6.51 KB,
patch
|
BenWa
:
review+
|
Details | Diff | Splinter Review |
3.22 KB,
patch
|
ajuma
:
review+
|
Details | Diff | Splinter Review |
Tile base progressive painting is a pre-requisite for priority tiled base drawing. The design is: - Validate the buffer in groups of tiles (1,3,9). - Send the progress as individual transactions. - Have the compositor receive these transactions, upload and present it as it arrives. - If the layers are not fully painted repeat the transaction imediate rather then discarding the display list. The benefits are: - Tiles start appearing much faster to user. - The compositor can start to upload while content is still drawing tiles. - We COULD (this needs another bug) abort painting between the group of tiles safely if we decide that we're no longer painting something useful. - This provides a pre-requesite for efficient drawing at high and low resolution. This is required to replace the screenshot.
Assignee | ||
Comment 1•12 years ago
|
||
I know we discussed this patch before. Whats the most representative way to measure the performance impact of this patch? If needed I can make this change android only.
Assignee | ||
Comment 2•12 years ago
|
||
Attachment #639393 -
Flags: review?(ajuma)
Assignee | ||
Comment 3•12 years ago
|
||
Attachment #639412 -
Flags: review?(ajuma)
Assignee | ||
Comment 4•12 years ago
|
||
Forgot the mResolution changes
Attachment #639412 -
Attachment is obsolete: true
Attachment #639412 -
Flags: review?(ajuma)
Assignee | ||
Updated•12 years ago
|
Attachment #639417 -
Flags: review?(ajuma)
Comment 5•12 years ago
|
||
Comment on attachment 639393 [details] [diff] [review] Repeatable transaction Review of attachment 639393 [details] [diff] [review]: ----------------------------------------------------------------- ::: gfx/layers/basic/BasicLayerManager.cpp @@ +974,5 @@ > ForwardTransaction(); > if (mShadowTarget) { > ShadowLayerForwarder::ShadowDrawToTarget(mShadowTarget); > mShadowTarget = nsnull; > } When we have a repeat transaction, we shouldn't call ShadowDrawToTarget right away (since this will cause an incomplete draw to the target). Instead, we should wait until no further repeating is needed, and then call ShadowDrawToTarget. (So, essentially, move the code above to an 'else' case of the code below.)
Attachment #639393 -
Flags: review?(ajuma)
Comment 6•12 years ago
|
||
Comment on attachment 639417 [details] [diff] [review] Use Repeatable Transaction Review of attachment 639417 [details] [diff] [review]: ----------------------------------------------------------------- Nice work! ::: gfx/layers/basic/BasicTiledThebesLayer.cpp @@ +244,5 @@ > + // user interaction events. > + int paintTileStartX = mTiledBuffer.RoundDownToTileEdge(rect->x); > + int paintTileStartY = mTiledBuffer.RoundDownToTileEdge(rect->y); > + > + nsIntRegion maxPaint(nsIntRect(paintTileStartX, paintTileStartY, 768, 768)); Use 3*GetTileLength() instead of 768.
Attachment #639417 -
Flags: review?(ajuma) → review+
Comment on attachment 639390 [details] [diff] [review] Copy the displaylist for repeating paints Review of attachment 639390 [details] [diff] [review]: ----------------------------------------------------------------- I think instead of this, at the end of DrawThebesLayer you can re-get the ThebesLayerItemsEntry and just swap the elements back into place.
It should also be documented somewhere that it's OK to call DrawThebesLayer more than once.
Assignee | ||
Comment 9•12 years ago
|
||
Talos results are looking great: Changeset f5dd704b112f http://graphs.mozilla.org/graph.html#tests=[[204,23,20]]&sel=none&displayrange=7&datatype=running I'm seeing some bad results in dhtml: First run was +100%, modified run was +8% http://graphs.mozilla.org/graph.html#tests=[[19,23,20]] I think we're pushing pixels to the screen faster, uploading in parallel but overall we block the main thread for longer so I expect Talos to reflect this. I'm going to land this with a pref since it's easy to maintain a non progressive paint code path.
Assignee | ||
Comment 10•12 years ago
|
||
Attachment #639390 -
Attachment is obsolete: true
Attachment #639390 -
Flags: review?(roc)
Attachment #639725 -
Flags: review?(roc)
Assignee | ||
Comment 11•12 years ago
|
||
Attachment #639725 -
Attachment is obsolete: true
Attachment #639725 -
Flags: review?(roc)
Attachment #639727 -
Flags: review?(ajuma)
Assignee | ||
Comment 12•12 years ago
|
||
Comment on attachment 639725 [details] [diff] [review] Restore the display items Made the wrong patch obsolete.
Attachment #639725 -
Attachment is obsolete: false
Attachment #639725 -
Flags: review?(roc)
Assignee | ||
Comment 13•12 years ago
|
||
Carry forward r=ajuma
Attachment #639393 -
Attachment is obsolete: true
Attachment #639417 -
Attachment is obsolete: true
Attachment #639739 -
Flags: review+
Assignee | ||
Comment 14•12 years ago
|
||
I didn't add this to the pref.js on purpose.
Attachment #639741 -
Flags: review?(ajuma)
Updated•12 years ago
|
Attachment #639727 -
Flags: review?(ajuma) → review+
Updated•12 years ago
|
Attachment #639741 -
Flags: review?(ajuma) → review+
Attachment #639725 -
Flags: review?(roc) → review+
Assignee | ||
Comment 15•12 years ago
|
||
I'm going to be landing this pref'ed off shortly. The reason is because it will overplay the talos improvement. This is because the first progressive paint we update the viewport and this makes the front end and the Talos measurement think that we're done painting the page when we've only done a single tile. The solution is to compute the region that we have painted and pass that to the front end.
Assignee | ||
Comment 16•12 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/b7c9802cfef5 https://hg.mozilla.org/integration/mozilla-inbound/rev/265258de61ec https://hg.mozilla.org/integration/mozilla-inbound/rev/b5cdfedc324d https://hg.mozilla.org/integration/mozilla-inbound/rev/6a4ee4b39ca3 I meant to disable by default within part 4 but forgot: https://hg.mozilla.org/integration/mozilla-inbound/rev/02207487d5e5
Comment 17•12 years ago
|
||
Looks like this was breaking opt R2 and R3 as well.
Comment 18•12 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/b7c9802cfef5 https://hg.mozilla.org/mozilla-central/rev/265258de61ec https://hg.mozilla.org/mozilla-central/rev/b5cdfedc324d https://hg.mozilla.org/mozilla-central/rev/6a4ee4b39ca3 https://hg.mozilla.org/mozilla-central/rev/02207487d5e5
Comment 19•12 years ago
|
||
Leaving open based on comments 15 and 17.
Assignee | ||
Comment 20•12 years ago
|
||
https://tbpl.mozilla.org/?tree=Mozilla-Inbound&rev=6a4ee4b39ca3 https://tbpl.mozilla.org/php/getParsedLog.php?id=13332343&tree=Mozilla-Inbound&full=1
Assignee | ||
Comment 22•12 years ago
|
||
Hoping to land this by default on Friday.
Assignee | ||
Updated•12 years ago
|
Attachment #667135 -
Attachment is obsolete: true
Assignee | ||
Updated•12 years ago
|
Assignee | ||
Comment 23•12 years ago
|
||
Assignee | ||
Comment 24•12 years ago
|
||
Comment on attachment 667148 [details] [diff] [review] Turn this on by default Tracked in bug 795259
Attachment #667148 -
Attachment is obsolete: true
Assignee | ||
Comment 25•12 years ago
|
||
This feature is working, moving to track the blocking work over to bug 795259.
Assignee | ||
Updated•12 years ago
|
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•