Bug 808746 - Properly calculate the tile's origin when avoiding SinglePaintBuffer. r=bjacob
☠☠ backed out by 8f5204fb76c8 ☠ ☠
authorBenoit Girard <b56girard@gmail.com>
Mon, 05 Nov 2012 23:41:58 -0500
changeset 112384 0d4e09ade3368bfa95e66c514bfe31271daafecb
parent 112383 0b25e27d0a354ddcafbd6fd248f92337dfa1ba7e
child 112385 64a0ab78b261ab09381b8293b21a4f843ad2f398
push id23812
push useremorley@mozilla.com
push dateTue, 06 Nov 2012 14:01:34 +0000
treeherdermozilla-central@f4aeed115e54 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbjacob
bugs808746
milestone19.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 808746 - Properly calculate the tile's origin when avoiding SinglePaintBuffer. r=bjacob
gfx/layers/basic/BasicTiledThebesLayer.cpp
--- a/gfx/layers/basic/BasicTiledThebesLayer.cpp
+++ b/gfx/layers/basic/BasicTiledThebesLayer.cpp
@@ -90,20 +90,20 @@ BasicTiledLayerBuffer::PaintThebes(Basic
   // If this region is empty XMost() - 1 will give us a negative value.
   NS_ASSERTION(!aPaintRegion.GetBounds().IsEmpty(), "Empty paint region\n");
 
   bool useSinglePaintBuffer = UseSinglePaintBuffer();
   if (useSinglePaintBuffer) {
     // Check if the paint only spans a single tile. If that's
     // the case there's no point in using a single paint buffer.
     nsIntRect paintBounds = aPaintRegion.GetBounds();
-    useSinglePaintBuffer = GetTileStart(paintBounds.x) !=
-                           GetTileStart(paintBounds.XMost() - 1) ||
-                           GetTileStart(paintBounds.y) !=
-                           GetTileStart(paintBounds.YMost() - 1);
+    useSinglePaintBuffer = RoundDownToTileEdge(paintBounds.x) !=
+                           RoundDownToTileEdge(paintBounds.XMost() - 1) ||
+                           RoundDownToTileEdge(paintBounds.y) !=
+                           RoundDownToTileEdge(paintBounds.YMost() - 1);
   }
 
   if (useSinglePaintBuffer) {
     const nsIntRect bounds = aPaintRegion.GetBounds();
     {
       SAMPLE_LABEL("BasicTiledLayerBuffer", "PaintThebesSingleBufferAlloc");
       mSinglePaintBuffer = new gfxImageSurface(gfxIntSize(bounds.width, bounds.height), GetFormat(), !aLayer->CanUseOpaqueSurface());
       mSinglePaintBufferOffset = nsIntPoint(bounds.x, bounds.y);