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

Unified Diff: cc/layers/picture_layer_impl.cc

Issue 13863015: Add flag for drawing layers to screen with Ganesh (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use kTopLeft Created 7 years, 7 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/layers/picture_layer_impl.cc
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
index 8c4bba80a9439b73c0cc898eaf9023f59acc1974..d91192a4c007302bac53b11b232f6f96d22660f0 100644
--- a/cc/layers/picture_layer_impl.cc
+++ b/cc/layers/picture_layer_impl.cc
@@ -108,7 +108,10 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink,
quad_sink->UseSharedQuadState(CreateSharedQuadState());
AppendDebugBorderQuad(quad_sink, shared_quad_state, append_quads_data);
- if (!append_quads_data->allow_tile_draw_quads) {
+ bool use_ganesh = CanDrawDirectlyToBackbuffer() &&
+ layer_tree_impl()->settings().force_direct_layer_drawing;
+
+ if (use_ganesh || !append_quads_data->allow_tile_draw_quads) {
gfx::Rect geometry_rect = rect;
gfx::Rect opaque_rect = contents_opaque() ? geometry_rect : gfx::Rect();
gfx::Size texture_size = rect.size();
@@ -125,6 +128,7 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink,
false,
quad_content_rect,
contents_scale,
+ use_ganesh,
pile_);
if (quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data))
append_quads_data->num_missing_tiles++;
@@ -258,6 +262,7 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink,
drawing_info.contents_swizzled(),
iter->content_rect(),
iter->contents_scale(),
+ use_ganesh,
pile_);
quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data);
break;
@@ -388,6 +393,19 @@ void PictureLayerImpl::CalculateContentsScale(
ideal_device_scale_ = ideal_device_scale;
ideal_source_scale_ = std::max(ideal_source_scale, min_source_scale);
+ if (CanDrawDirectlyToBackbuffer() &&
+ layer_tree_impl()->settings().force_direct_layer_drawing) {
+ if (tilings_)
+ tilings_->RemoveAllTilings();
danakj 2013/05/15 20:33:16 Don't you also want to prevent syncing tilings to
enne (OOO) 2013/05/15 22:34:38 Done.
+
+ *contents_scale_x = ideal_contents_scale_;
+ *contents_scale_y = ideal_contents_scale_;
+ *content_bounds = gfx::ToCeiledSize(gfx::ScaleSize(bounds(),
+ ideal_contents_scale_,
+ ideal_contents_scale_));
+ return;
+ }
+
ManageTilings(animating_transform_to_screen);
// The content scale and bounds for a PictureLayerImpl is somewhat fictitious.

Powered by Google App Engine
This is Rietveld 408576698