Bug 850396 - Disable single-tile paint path in BasicTiledThebesLayer. r=bgirard a=lsblakk
authorChris Lord <chrislord.net@gmail.com>
Wed, 13 Mar 2013 18:51:03 +0000
changeset 128588 669a4b33fa4bad757d840b40e99b69132007d573
parent 128587 4b062091ea4ea910e660d7545fdeb3c4e67f9b3a
child 128589 6324adcca5c1a44f49c14bbc93ff3ae10e2c8a2c
push id3497
push userchrislord.net@gmail.com
push dateWed, 13 Mar 2013 18:51:14 +0000
treeherdermozilla-aurora@669a4b33fa4b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbgirard, lsblakk
bugs850396, 842389
milestone21.0a2
Bug 850396 - Disable single-tile paint path in BasicTiledThebesLayer. r=bgirard a=lsblakk This code-path has always had issues, but the fix in bug 842389 causes them to be exposed more frequently.
gfx/layers/basic/BasicTiledThebesLayer.cpp
--- a/gfx/layers/basic/BasicTiledThebesLayer.cpp
+++ b/gfx/layers/basic/BasicTiledThebesLayer.cpp
@@ -88,25 +88,28 @@ BasicTiledLayerBuffer::PaintThebes(Basic
 #ifdef GFX_TILEDLAYER_PREF_WARNINGS
   long start = PR_IntervalNow();
 #endif
 
   // 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();
+  // XXX The single-tile case doesn't work at the moment, see bug 850396
+  /*
   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);
   }
+  */
 
   if (useSinglePaintBuffer) {
     const nsIntRect bounds = aPaintRegion.GetBounds();
     {
       SAMPLE_LABEL("BasicTiledLayerBuffer", "PaintThebesSingleBufferAlloc");
       mSinglePaintBuffer = new gfxImageSurface(
         gfxIntSize(ceilf(bounds.width * mResolution),
                    ceilf(bounds.height * mResolution)),