Closed Bug 1186501 Opened 9 years ago Closed 8 years ago

bugzilla checkerboards on OS X w/ APZ

Categories

(Core :: Graphics, defect)

defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: mchang, Assigned: mchang)

References

(Blocks 1 open bug)

Details

(Whiteboard: [gfx-noted])

When scrolling some bugzilla bugs, such as https://bugzilla.mozilla.org/show_bug.cgi?id=1172841, we checkerboard. This is mostly time spent drawing scaled images, bug 1154311. Part of this is that CG scales too slow. From investigatig bug 1155249, it can take up to 100+ ms. On this bugzilla page, it can take 200+ ms. Some profiles: Nightly w/ CG backend: http://people.mozilla.org/~bgirard/cleopatra/#report=29fede938b2ddc874234b6a0e2ddd6b584671b96 Nightly w/ Skia backend: http://people.mozilla.org/~bgirard/cleopatra/#report=e26dd98290ec514268e36d61d9dff4addd0b7d2d Skia can be ~3x faster than CG when scrolling bugzilla.
Here is some timings measuring how long it takes to call the drawable at [1] without CSRD with a CG backend. Regular Drawable w/ CG Regular drawable time: 17.101884 Regular drawable time: 26.682879 Regular drawable time: 41.183676 Regular drawable time: 60.411246 Regular drawable time: 25.456059 Regular drawable time: 54.728834 Regular drawable time: 16.585522 Regular drawable time: 81.239594 Regular drawable time: 97.843143 Regular drawable time: 25.241616 Regular drawable time: 190.207473 Regular drawable time: 186.015054 Regular drawable time: 49.973632 Regular drawable time: 210.867341 Regular drawable time: 203.920489 Regular drawable time: 191.743822 [1] https://dxr.mozilla.org/mozilla-central/source/gfx/thebes/gfxUtils.cpp?from=gfxUtils.cpp&case=true#671
Same timings, scrolling bugzilla w/ APZ w/ Skia backend: Regular drawable time: 9.331795 Regular drawable time: 6.644195 Regular drawable time: 12.603062 Regular drawable time: 9.530555 Regular drawable time: 18.712289 Regular drawable time: 2.990693 Regular drawable time: 6.208775 Regular drawable time: 6.633232 Regular drawable time: 6.641707 Regular drawable time: 10.046756 Regular drawable time: 14.812113 Regular drawable time: 21.410304 Regular drawable time: 3.149424 Regular drawable time: 19.155819 Regular drawable time: 3.165345 Regular drawable time: 3.127967 Regular drawable time: 3.624180 Regular drawable time: 12.679421 Regular drawable time: 10.775032 Regular drawable time: 47.560594 Regular drawable time: 80.710716 Regular drawable time: 73.424655 Regular drawable time: 72.496547 Regular drawable time: 68.968230 Regular drawable time: 72.517356 ~3x faster.
Same timings with a CG backend, but we scale one intermediate surface, and repeat the scaled intermediate surface. Scale Intermediate w/ CG Draw Scaled Image time: 5.718917 Draw Scaled Image time: 11.208186 Draw Scaled Image time: 19.101618 Draw Scaled Image time: 17.078632 Draw Scaled Image time: 13.900280 Draw Scaled Image time: 13.893101 Draw Scaled Image time: 11.107655 Draw Scaled Image time: 12.096150 Draw Scaled Image time: 7.478432 Draw Scaled Image time: 5.352066 Draw Scaled Image time: 7.555185 Draw Scaled Image time: 8.625464 Draw Scaled Image time: 23.184639 Draw Scaled Image time: 20.819044 Draw Scaled Image time: 24.581860 Draw Scaled Image time: 14.070200 Draw Scaled Image time: 13.988282 Draw Scaled Image time: 7.660256 Draw Scaled Image time: 4.967027 Draw Scaled Image time: 18.487178 Draw Scaled Image time: 7.665447 Draw Scaled Image time: 66.230677 Draw Scaled Image time: 40.192577 Draw Scaled Image time: 72.784236 Draw Scaled Image time: 29.285122 Draw Scaled Image time: 63.249865 Draw Scaled Image time: 7.510592 Draw Scaled Image time: 17.276791 Draw Scaled Image time: 5.096366 Draw Scaled Image time: 5.676165 Can be ~3-4x faster, or roughly just using skia.
Same timings, scaling an intermediate surface, tiling the intermediate surface with skia: Draw Scaled Image time: 2.284806 Draw Scaled Image time: 2.325681 Draw Scaled Image time: 1.764987 Draw Scaled Image time: 1.893706 Draw Scaled Image time: 1.880156 Draw Scaled Image time: 1.906906 Draw Scaled Image time: 1.873985 Draw Scaled Image time: 1.389793 Draw Scaled Image time: 2.094485 Draw Scaled Image time: 1.330126 Draw Scaled Image time: 2.121071 Draw Scaled Image time: 1.332040 Draw Scaled Image time: 2.541563 Draw Scaled Image time: 1.676939 Draw Scaled Image time: 3.165072 Draw Scaled Image time: 2.691432 Draw Scaled Image time: 3.536036 Draw Scaled Image time: 2.431425 Draw Scaled Image time: 4.982088 Draw Scaled Image time: 1.678813 Draw Scaled Image time: 4.925463 Draw Scaled Image time: 2.066480 Draw Scaled Image time: 2.257159 Draw Scaled Image time: 1.452386 Draw Scaled Image time: 2.347731 Draw Scaled Image time: 3.011957 Draw Scaled Image time: 1.653549 Draw Scaled Image time: 6.929488 Draw Scaled Image time: 7.350661 Draw Scaled Image time: 10.002218 Draw Scaled Image time: 10.659667 Draw Scaled Image time: 11.607621 Draw Scaled Image time: 6.525624 Draw Scaled Image time: 7.274104 Draw Scaled Image time: 2.219838 Draw Scaled Image time: 2.881576 Draw Scaled Image time: 1.768754 Draw Scaled Image time: 1.849733 Draw Scaled Image time: 1.371068 Draw Scaled Image time: 1.612341 Draw Scaled Image time: 1.634699 Draw Scaled Image time: 1.613472 Draw Scaled Image time: 1.558230 Draw Scaled Image time: 1.646504 Draw Scaled Image time: 1.626132 Up to 20x faster. I can almost not checkerboard with scaling an intermediate surface and using skia. We should just scale faster on OS X or just use Skia. I'm a bigger fan of not spending time making CG scale faster and use the time to move to skia.
Profile of Scale intermediate surface and repeat w/ skia http://people.mozilla.org/~bgirard/cleopatra/#report=8e2d7d5d3f4364b6858f2355b5169b656f9f5dd8 No longer see any time spent in draw background.
Mason, are you able to reproduce this?
Flags: needinfo?(mchang)
Whiteboard: [gfx-noted]
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Flags: needinfo?(mchang)
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.