Index: cc/picture_pile_impl.cc |
diff --git a/cc/picture_pile_impl.cc b/cc/picture_pile_impl.cc |
index 217a5eb4ee4e2922bbf9b85f77cbbfe791c91e4c..2f898281360bd2040aa0751840ebe096a5001ade 100644 |
--- a/cc/picture_pile_impl.cc |
+++ b/cc/picture_pile_impl.cc |
@@ -4,7 +4,9 @@ |
#include "base/debug/trace_event.h" |
#include "cc/picture_pile_impl.h" |
+#include "cc/rendering_stats.h" |
#include "third_party/skia/include/core/SkCanvas.h" |
+#include "third_party/skia/include/core/SkSize.h" |
namespace cc { |
@@ -28,7 +30,10 @@ scoped_refptr<PicturePileImpl> PicturePileImpl::CloneForDrawing() const { |
return clone; |
} |
-void PicturePileImpl::Raster(SkCanvas* canvas, gfx::Rect rect) { |
+void PicturePileImpl::Raster(SkCanvas* canvas, gfx::Rect rect, |
+ RenderingStats* stats) { |
+ base::TimeTicks rasterizeBeginTime = base::TimeTicks::Now(); |
+ |
// TODO(enne): do this more efficiently, i.e. top down with Skia clips |
canvas->save(); |
canvas->translate(-rect.x(), -rect.y()); |
@@ -39,8 +44,14 @@ void PicturePileImpl::Raster(SkCanvas* canvas, gfx::Rect rect) { |
if (!pile_[i]->LayerRect().Intersects(rect)) |
continue; |
pile_[i]->Raster(canvas); |
+ |
+ SkISize deviceSize = canvas->getDeviceSize(); |
+ stats->totalPixelsRasterized += deviceSize.width() * deviceSize.height(); |
} |
canvas->restore(); |
+ |
+ stats->totalRasterizeTimeInSeconds += (base::TimeTicks::Now() - |
+ rasterizeBeginTime).InSecondsF(); |
} |
} // namespace cc |