Index: cc/layers/picture_layer_impl.cc |
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc |
index 624b90aaf71f7441618b77153a94c7b90a21a04d..b058e2b96f17f0747e11ef395d5da585d8c19d2b 100644 |
--- a/cc/layers/picture_layer_impl.cc |
+++ b/cc/layers/picture_layer_impl.cc |
@@ -14,7 +14,6 @@ |
#include "cc/debug/micro_benchmark_impl.h" |
#include "cc/debug/traced_value.h" |
#include "cc/layers/append_quads_data.h" |
-#include "cc/layers/quad_sink.h" |
#include "cc/quads/checkerboard_draw_quad.h" |
#include "cc/quads/debug_border_draw_quad.h" |
#include "cc/quads/picture_draw_quad.h" |
@@ -22,6 +21,7 @@ |
#include "cc/quads/tile_draw_quad.h" |
#include "cc/resources/tile_manager.h" |
#include "cc/trees/layer_tree_impl.h" |
+#include "cc/trees/occlusion_tracker.h" |
#include "ui/gfx/quad_f.h" |
#include "ui/gfx/rect_conversions.h" |
#include "ui/gfx/size_conversions.h" |
@@ -135,8 +135,10 @@ void PictureLayerImpl::PushPropertiesTo(LayerImpl* base_layer) { |
needs_push_properties_ = true; |
} |
-void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, |
- AppendQuadsData* append_quads_data) { |
+void PictureLayerImpl::AppendQuads( |
+ RenderPass* render_pass, |
+ const OcclusionTracker<LayerImpl>& occlusion_tracker, |
+ AppendQuadsData* append_quads_data) { |
DCHECK(!needs_post_commit_initialization_); |
float max_contents_scale = MaximumTilingContentsScale(); |
@@ -150,7 +152,9 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, |
gfx::ScaleToEnclosingRect(visible_content_rect(), max_contents_scale); |
scaled_visible_content_rect.Intersect(gfx::Rect(scaled_content_bounds)); |
- SharedQuadState* shared_quad_state = quad_sink->CreateSharedQuadState(); |
+ SharedQuadState* shared_quad_state = |
+ render_pass->CreateAndAppendSharedQuadState(); |
+ PopulateSharedQuadState(shared_quad_state); |
shared_quad_state->SetAll(scaled_draw_transform, |
scaled_content_bounds, |
scaled_visible_content_rect, |
@@ -164,7 +168,7 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, |
if (current_draw_mode_ == DRAW_MODE_RESOURCELESS_SOFTWARE) { |
AppendDebugBorderQuad( |
- quad_sink, |
+ render_pass, |
scaled_content_bounds, |
shared_quad_state, |
append_quads_data, |
@@ -173,8 +177,8 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, |
gfx::Rect geometry_rect = rect; |
gfx::Rect opaque_rect = contents_opaque() ? geometry_rect : gfx::Rect(); |
- gfx::Rect visible_geometry_rect = |
- quad_sink->UnoccludedContentRect(geometry_rect, draw_transform()); |
+ gfx::Rect visible_geometry_rect = occlusion_tracker.UnoccludedContentRect( |
+ geometry_rect, draw_transform()); |
if (visible_geometry_rect.IsEmpty()) |
return; |
@@ -193,13 +197,13 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, |
quad_content_rect, |
max_contents_scale, |
pile_); |
- quad_sink->Append(quad.PassAs<DrawQuad>()); |
+ render_pass->AppendDrawQuad(quad.PassAs<DrawQuad>()); |
append_quads_data->num_missing_tiles++; |
return; |
} |
AppendDebugBorderQuad( |
- quad_sink, scaled_content_bounds, shared_quad_state, append_quads_data); |
+ render_pass, scaled_content_bounds, shared_quad_state, append_quads_data); |
if (ShowDebugBorders()) { |
for (PictureLayerTilingSet::CoverageIterator iter( |
@@ -244,7 +248,7 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, |
visible_geometry_rect, |
color, |
width); |
- quad_sink->Append(debug_border_quad.PassAs<DrawQuad>()); |
+ render_pass->AppendDrawQuad(debug_border_quad.PassAs<DrawQuad>()); |
} |
} |
@@ -259,8 +263,8 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, |
iter; |
++iter) { |
gfx::Rect geometry_rect = iter.geometry_rect(); |
- gfx::Rect visible_geometry_rect = |
- quad_sink->UnoccludedContentRect(geometry_rect, draw_transform()); |
+ gfx::Rect visible_geometry_rect = occlusion_tracker.UnoccludedContentRect( |
+ geometry_rect, draw_transform()); |
if (visible_geometry_rect.IsEmpty()) |
continue; |
@@ -341,7 +345,7 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, |
SkColor color = DebugColors::DefaultCheckerboardColor(); |
quad->SetNew( |
shared_quad_state, geometry_rect, visible_geometry_rect, color); |
- quad_sink->Append(quad.PassAs<DrawQuad>()); |
+ render_pass->AppendDrawQuad(quad.PassAs<DrawQuad>()); |
} else { |
SkColor color = SafeOpaqueBackgroundColor(); |
scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); |
@@ -350,7 +354,7 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, |
visible_geometry_rect, |
color, |
false); |
- quad_sink->Append(quad.PassAs<DrawQuad>()); |
+ render_pass->AppendDrawQuad(quad.PassAs<DrawQuad>()); |
} |
append_quads_data->num_missing_tiles++; |
@@ -361,7 +365,7 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, |
continue; |
} |
- quad_sink->Append(draw_quad.Pass()); |
+ render_pass->AppendDrawQuad(draw_quad.Pass()); |
if (iter->priority(ACTIVE_TREE).resolution != HIGH_RESOLUTION) { |
append_quads_data->approximated_visible_content_area += |