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

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: Rebase again 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
« no previous file with comments | « cc/layers/layer_impl.cc ('k') | cc/layers/picture_layer_impl_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layers/picture_layer_impl.cc
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
index f2b5e5472045fcebed89b05420a06ba957fe3b21..c1d5ee404e031a98069807a8477677d4432c3cac 100644
--- a/cc/layers/picture_layer_impl.cc
+++ b/cc/layers/picture_layer_impl.cc
@@ -112,9 +112,19 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink,
SharedQuadState* shared_quad_state =
quad_sink->UseSharedQuadState(CreateSharedQuadState());
- AppendDebugBorderQuad(quad_sink, shared_quad_state, append_quads_data);
- if (!append_quads_data->allow_tile_draw_quads) {
+ bool draw_direct_to_backbuffer =
+ draw_properties().can_draw_directly_to_backbuffer &&
+ layer_tree_impl()->settings().force_direct_layer_drawing;
+
+ if (draw_direct_to_backbuffer || !append_quads_data->allow_tile_draw_quads) {
+ AppendDebugBorderQuad(
+ quad_sink,
+ shared_quad_state,
+ append_quads_data,
+ DebugColors::DirectPictureBorderColor(),
+ DebugColors::DirectPictureBorderWidth(layer_tree_impl()));
+
gfx::Rect geometry_rect = rect;
gfx::Rect opaque_rect = contents_opaque() ? geometry_rect : gfx::Rect();
gfx::Size texture_size = rect.size();
@@ -131,12 +141,15 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink,
false,
quad_content_rect,
contents_scale,
+ draw_direct_to_backbuffer,
pile_);
if (quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data))
append_quads_data->num_missing_tiles++;
return;
}
+ AppendDebugBorderQuad(quad_sink, shared_quad_state, append_quads_data);
+
bool clipped = false;
gfx::QuadF target_quad = MathUtil::MapQuad(
draw_transform(),
@@ -264,6 +277,7 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink,
tile_version.contents_swizzled(),
iter->content_rect(),
iter->contents_scale(),
+ draw_direct_to_backbuffer,
pile_);
quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data);
break;
@@ -370,8 +384,17 @@ void PictureLayerImpl::CalculateContentsScale(
float* contents_scale_x,
float* contents_scale_y,
gfx::Size* content_bounds) {
- if (!DrawsContent()) {
- DCHECK(!tilings_->num_tilings());
+ if (!CanHaveTilings()) {
+ ideal_page_scale_ = page_scale_factor;
+ ideal_device_scale_ = device_scale_factor;
+ ideal_contents_scale_ = ideal_contents_scale;
+ ideal_source_scale_ =
+ ideal_contents_scale_ / ideal_page_scale_ / ideal_device_scale_;
+ *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;
}
@@ -714,9 +737,7 @@ void PictureLayerImpl::ManageTilings(bool animating_transform_to_screen) {
DCHECK(ideal_page_scale_);
DCHECK(ideal_device_scale_);
DCHECK(ideal_source_scale_);
-
- if (!CanHaveTilings())
- return;
+ DCHECK(CanHaveTilings());
bool change_target_tiling =
raster_page_scale_ == 0.f ||
@@ -942,6 +963,9 @@ bool PictureLayerImpl::CanHaveTilings() const {
return false;
if (!layer_tree_impl()->tile_manager())
return false;
+ if (draw_properties().can_draw_directly_to_backbuffer &&
+ layer_tree_impl()->settings().force_direct_layer_drawing)
+ return false;
return true;
}
« no previous file with comments | « cc/layers/layer_impl.cc ('k') | cc/layers/picture_layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698