Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Unified Diff: cc/raster/raster_buffer_provider.cc

Issue 2175553002: Raster PictureLayerTiling with fractional translation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Raster PictureLayerTiling with fractional translation Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/raster/raster_buffer_provider.cc
diff --git a/cc/raster/raster_buffer_provider.cc b/cc/raster/raster_buffer_provider.cc
index 100de97b5fea57fa4253b29114d2de94949b4e51..d0d6ae415bcb5795df99a93b4624d0bc3c9ec0e1 100644
--- a/cc/raster/raster_buffer_provider.cc
+++ b/cc/raster/raster_buffer_provider.cc
@@ -52,6 +52,7 @@ void RasterBufferProvider::PlaybackToMemory(
const gfx::Rect& canvas_bitmap_rect,
const gfx::Rect& canvas_playback_rect,
float scale,
+ const gfx::Vector2dF& translation,
const RasterSource::PlaybackSettings& playback_settings) {
TRACE_EVENT0("disabled-by-default-cc.debug",
"RasterBufferProvider::PlaybackToMemory");
@@ -78,19 +79,25 @@ void RasterBufferProvider::PlaybackToMemory(
case BGRA_8888: {
sk_sp<SkSurface> surface =
SkSurface::MakeRasterDirect(info, memory, stride, &surface_props);
- raster_source->PlaybackToCanvas(surface->getCanvas(), canvas_bitmap_rect,
- canvas_playback_rect, scale,
- playback_settings);
+ SkCanvas* canvas = surface->getCanvas();
+ canvas->translate(-canvas_bitmap_rect.x(), -canvas_bitmap_rect.y());
+ canvas->clipRect(gfx::RectToSkRect(canvas_playback_rect));
+ canvas->translate(translation.x(), translation.y());
+ canvas->scale(scale, scale);
+ raster_source->PlaybackToCanvas(surface->getCanvas(), playback_settings);
return;
}
case RGBA_4444:
case ETC1: {
sk_sp<SkSurface> surface = SkSurface::MakeRaster(info, &surface_props);
+ SkCanvas* canvas = surface->getCanvas();
+ canvas->translate(-canvas_bitmap_rect.x(), -canvas_bitmap_rect.y());
// TODO(reveman): Improve partial raster support by reducing the size of
- // playback rect passed to PlaybackToCanvas. crbug.com/519070
- raster_source->PlaybackToCanvas(surface->getCanvas(), canvas_bitmap_rect,
- canvas_bitmap_rect, scale,
- playback_settings);
+ // the clip rect here. crbug.com/519070
+ canvas->clipRect(gfx::RectToSkRect(canvas_bitmap_rect));
+ canvas->translate(translation.x(), translation.y());
+ canvas->scale(scale, scale);
+ raster_source->PlaybackToCanvas(surface->getCanvas(), playback_settings);
if (format == ETC1) {
TRACE_EVENT0("cc",

Powered by Google App Engine
This is Rietveld 408576698