| Index: cc/layers/delegated_renderer_layer_impl.cc
|
| diff --git a/cc/layers/delegated_renderer_layer_impl.cc b/cc/layers/delegated_renderer_layer_impl.cc
|
| index 4201e59ef40fc39040eabc11a5edbab80f2ec191..1b5557c9e7fb11696770701205f48de9630ba31c 100644
|
| --- a/cc/layers/delegated_renderer_layer_impl.cc
|
| +++ b/cc/layers/delegated_renderer_layer_impl.cc
|
| @@ -11,12 +11,12 @@
|
| #include "base/containers/hash_tables.h"
|
| #include "cc/base/math_util.h"
|
| #include "cc/layers/append_quads_data.h"
|
| -#include "cc/layers/quad_sink.h"
|
| #include "cc/layers/render_pass_sink.h"
|
| #include "cc/output/delegated_frame_data.h"
|
| #include "cc/quads/render_pass_draw_quad.h"
|
| #include "cc/quads/solid_color_draw_quad.h"
|
| #include "cc/trees/layer_tree_impl.h"
|
| +#include "cc/trees/occlusion_tracker.h"
|
|
|
| namespace cc {
|
|
|
| @@ -273,9 +273,10 @@ bool DelegatedRendererLayerImpl::WillDraw(DrawMode draw_mode,
|
| }
|
|
|
| void DelegatedRendererLayerImpl::AppendQuads(
|
| - QuadSink* quad_sink,
|
| + RenderPass* render_pass,
|
| + const OcclusionTracker<LayerImpl>& occlusion_tracker,
|
| AppendQuadsData* append_quads_data) {
|
| - AppendRainbowDebugBorder(quad_sink, append_quads_data);
|
| + AppendRainbowDebugBorder(render_pass, append_quads_data);
|
|
|
| // This list will be empty after a lost context until a new frame arrives.
|
| if (render_passes_in_draw_order_.empty())
|
| @@ -299,8 +300,11 @@ void DelegatedRendererLayerImpl::AppendQuads(
|
| // render_target.
|
| DCHECK(target_render_pass_id.layer_id == render_target()->id());
|
|
|
| - AppendRenderPassQuads(
|
| - quad_sink, append_quads_data, root_delegated_render_pass, frame_size);
|
| + AppendRenderPassQuads(render_pass,
|
| + occlusion_tracker,
|
| + append_quads_data,
|
| + root_delegated_render_pass,
|
| + frame_size);
|
| } else {
|
| // Verify that the RenderPass we are appending to was created by us.
|
| DCHECK(target_render_pass_id.layer_id == id());
|
| @@ -308,18 +312,22 @@ void DelegatedRendererLayerImpl::AppendQuads(
|
| int render_pass_index = IdToIndex(target_render_pass_id.index);
|
| const RenderPass* delegated_render_pass =
|
| render_passes_in_draw_order_[render_pass_index];
|
| - AppendRenderPassQuads(
|
| - quad_sink, append_quads_data, delegated_render_pass, frame_size);
|
| + AppendRenderPassQuads(render_pass,
|
| + occlusion_tracker,
|
| + append_quads_data,
|
| + delegated_render_pass,
|
| + frame_size);
|
| }
|
| }
|
|
|
| void DelegatedRendererLayerImpl::AppendRainbowDebugBorder(
|
| - QuadSink* quad_sink,
|
| + RenderPass* render_pass,
|
| AppendQuadsData* append_quads_data) {
|
| if (!ShowDebugBorders())
|
| return;
|
|
|
| - SharedQuadState* shared_quad_state = quad_sink->CreateSharedQuadState();
|
| + SharedQuadState* shared_quad_state =
|
| + render_pass->CreateAndAppendSharedQuadState();
|
| PopulateSharedQuadState(shared_quad_state);
|
|
|
| SkColor color;
|
| @@ -366,7 +374,7 @@ void DelegatedRendererLayerImpl::AppendRainbowDebugBorder(
|
| scoped_ptr<SolidColorDrawQuad> top_quad = SolidColorDrawQuad::Create();
|
| top_quad->SetNew(
|
| shared_quad_state, top, top, colors[i % kNumColors], false);
|
| - quad_sink->Append(top_quad.PassAs<DrawQuad>());
|
| + render_pass->AppendDrawQuad(top_quad.PassAs<DrawQuad>());
|
|
|
| scoped_ptr<SolidColorDrawQuad> bottom_quad = SolidColorDrawQuad::Create();
|
| bottom_quad->SetNew(shared_quad_state,
|
| @@ -374,7 +382,7 @@ void DelegatedRendererLayerImpl::AppendRainbowDebugBorder(
|
| bottom,
|
| colors[kNumColors - 1 - (i % kNumColors)],
|
| false);
|
| - quad_sink->Append(bottom_quad.PassAs<DrawQuad>());
|
| + render_pass->AppendDrawQuad(bottom_quad.PassAs<DrawQuad>());
|
| }
|
| if (!left.IsEmpty()) {
|
| scoped_ptr<SolidColorDrawQuad> left_quad = SolidColorDrawQuad::Create();
|
| @@ -383,22 +391,22 @@ void DelegatedRendererLayerImpl::AppendRainbowDebugBorder(
|
| left,
|
| colors[kNumColors - 1 - (i % kNumColors)],
|
| false);
|
| - quad_sink->Append(left_quad.PassAs<DrawQuad>());
|
| + render_pass->AppendDrawQuad(left_quad.PassAs<DrawQuad>());
|
|
|
| scoped_ptr<SolidColorDrawQuad> right_quad = SolidColorDrawQuad::Create();
|
| right_quad->SetNew(
|
| shared_quad_state, right, right, colors[i % kNumColors], false);
|
| - quad_sink->Append(right_quad.PassAs<DrawQuad>());
|
| + render_pass->AppendDrawQuad(right_quad.PassAs<DrawQuad>());
|
| }
|
| }
|
| }
|
|
|
| void DelegatedRendererLayerImpl::AppendRenderPassQuads(
|
| - QuadSink* quad_sink,
|
| + RenderPass* render_pass,
|
| + const OcclusionTracker<LayerImpl>& occlusion_tracker,
|
| AppendQuadsData* append_quads_data,
|
| const RenderPass* delegated_render_pass,
|
| const gfx::Size& frame_size) const {
|
| -
|
| const SharedQuadState* delegated_shared_quad_state = NULL;
|
| SharedQuadState* output_shared_quad_state = NULL;
|
|
|
| @@ -407,7 +415,7 @@ void DelegatedRendererLayerImpl::AppendRenderPassQuads(
|
|
|
| if (delegated_quad->shared_quad_state != delegated_shared_quad_state) {
|
| delegated_shared_quad_state = delegated_quad->shared_quad_state;
|
| - output_shared_quad_state = quad_sink->CreateSharedQuadState();
|
| + output_shared_quad_state = render_pass->CreateAndAppendSharedQuadState();
|
| output_shared_quad_state->CopyFrom(delegated_shared_quad_state);
|
|
|
| bool is_root_delegated_render_pass =
|
| @@ -446,8 +454,8 @@ void DelegatedRendererLayerImpl::AppendRenderPassQuads(
|
| }
|
| DCHECK(output_shared_quad_state);
|
|
|
| - gfx::Rect quad_visible_rect = quad_sink->UnoccludedContentRect(
|
| - this,
|
| + gfx::Rect quad_visible_rect = occlusion_tracker.UnoccludedContentRect(
|
| + this->render_target(),
|
| delegated_quad->visible_rect,
|
| output_shared_quad_state->content_to_target_transform);
|
| if (quad_visible_rect.IsEmpty())
|
| @@ -480,7 +488,7 @@ void DelegatedRendererLayerImpl::AppendRenderPassQuads(
|
| }
|
|
|
| if (output_quad)
|
| - quad_sink->Append(output_quad.Pass());
|
| + render_pass->AppendDrawQuad(output_quad.Pass());
|
| }
|
| }
|
|
|
|
|