New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 591680 link

Starred by 8 users

Issue metadata

Status: Archived
Owner:
Last visit > 30 days ago
Closed: May 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All , Chrome
Pri: 3
Type: Bug



Sign in to add a comment

Servo seems to GPU raster more efficiently than Chrome

Project Member Reported by aerotwist@chromium.org, Mar 3 2016

Issue description

Running Servo[1][2] yields about 50fps on a MacBook Pro (Retina, Mid-2015), where Chrome (with GPU raster force-enabled) gets around 12fps. That's against the moire demo on Patrick Walton's repo[3].

I've attached a trace in case it helps.

[1] https://github.com/servo/servo
[2] Using the following command: target/release/servo -Z wr-stats -w --resolution=1024x768 --pref dom.mozbrowser.enabled ../webrender-demos/moire.html
[3] https://github.com/pcwalton/webrender-demos/blob/master/moire.html
 
trace_moire.json.gz
1.1 MB Download
https://www.youtube.com/watch?v=u0hYIRQRiws another demo.

Chrome is 15fps, or 6fps with GPU raster force-enabled. Servo hits 60fps easily.
Components: Internals>GPU>Rasterization
FYI this particular test looks like it is in effect a microbenchmark for the scalability of Chrome's rounded corner compositing path. The compositor uses a mask bitmap for rounded corners, which is a known performance issue.
Owner: bsalomon@chromium.org
Status: Assigned (was: Untriaged)
Cc: ericrk@chromium.org
I think that fixing crbug.com/590373 will make performance on this example much better. And there are other reasons to care, having to do with the design of Slimming
Paint.
I take that back. This example doesn't use compositing at all. So any optimization will be directly in Ganesh (*). Maybe Ganesh also uses masks instead of shaders for rounded corners? Also, it doesn't seem easy to make the shader work in all cases involving non-1 opacity, see the last paragraph of enne's comment in crbug.com/590373.

We should still fix crbug.com/590373 for the compositing path.
Cc: robertph...@google.com
We don't use a mask bitmap but clip changes can break our batching. We're still doing analysis and deciding how to optimize but initial thoughts are

1) We need to store blur masks/strips in an atlas to avoid texture changes (which break batches) and probably unify the implementation more for different rrect subcategories (e.g. circle vs circular corner rounded rectangle)

2) In the short term handle rrects clipped against rrects as a special case for clipping.

3) Generalize 2 to apply to all clips (long term change that has many other positive side effects).

Also, upcoming changes from Chris Dalton at NVIDIA to render all rrect variants with one shader using sample masks should help a lot here.
webrenderer_demo_skps.zip
94.0 KB Download
Status: Fixed (was: Assigned)
The demo renders at 60FPS on my machine.

Comment 8 by dchan@chromium.org, Aug 1 2017

Labels: VerifyIn-61

Comment 9 by dchan@chromium.org, Jan 22 2018

Status: Archived (was: Fixed)

Sign in to add a comment