#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"
+#include "cc/trees/occlusion.h"
+#include "ui/gfx/geometry/rect_conversions.h"
namespace cc {
&invalid_frame,
resource_map,
&resources_in_frame);
- for (size_t i = 0; i < render_pass_list.size(); ++i) {
- RenderPass* pass = render_pass_list[i];
- for (QuadList::Iterator iter = pass->quad_list.begin();
- iter != pass->quad_list.end();
- ++iter) {
- iter->IterateResources(remap_resources_to_parent_callback);
- }
+ for (const auto& pass : render_pass_list) {
+ for (const auto& quad : pass->quad_list)
+ quad->IterateResources(remap_resources_to_parent_callback);
}
if (invalid_frame) {
gfx::RectF damage_in_layer = damage_in_frame;
damage_in_layer.Scale(inverse_device_scale_factor_);
SetUpdateRect(gfx::IntersectRects(
- gfx::UnionRects(update_rect(), damage_in_layer), gfx::Rect(bounds())));
+ gfx::UnionRects(update_rect(), gfx::ToEnclosingRect(damage_in_layer)),
+ gfx::Rect(bounds())));
SetRenderPasses(&render_pass_list);
have_render_passes_to_push_ = true;
scoped_ptr<LayerImpl> DelegatedRendererLayerImpl::CreateLayerImpl(
LayerTreeImpl* tree_impl) {
- return DelegatedRendererLayerImpl::Create(
- tree_impl, id()).PassAs<LayerImpl>();
+ return DelegatedRendererLayerImpl::Create(tree_impl, id());
}
void DelegatedRendererLayerImpl::ReleaseResources() {
void DelegatedRendererLayerImpl::AppendQuads(
RenderPass* render_pass,
- const OcclusionTracker<LayerImpl>& occlusion_tracker,
+ const Occlusion& occlusion_in_content_space,
AppendQuadsData* append_quads_data) {
AppendRainbowDebugBorder(render_pass, append_quads_data);
DCHECK(target_render_pass_id.layer_id == render_target()->id());
AppendRenderPassQuads(render_pass,
- occlusion_tracker,
+ occlusion_in_content_space,
append_quads_data,
root_delegated_render_pass,
frame_size);
const RenderPass* delegated_render_pass =
render_passes_in_draw_order_[render_pass_index];
AppendRenderPassQuads(render_pass,
- occlusion_tracker,
+ occlusion_in_content_space,
append_quads_data,
delegated_render_pass,
frame_size);
void DelegatedRendererLayerImpl::AppendRenderPassQuads(
RenderPass* render_pass,
- const OcclusionTracker<LayerImpl>& occlusion_tracker,
+ const Occlusion& occlusion_in_content_space,
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;
-
- for (QuadList::ConstIterator iter = delegated_render_pass->quad_list.begin();
- iter != delegated_render_pass->quad_list.end();
- ++iter) {
- const DrawQuad* delegated_quad = &*iter;
+ const SharedQuadState* delegated_shared_quad_state = nullptr;
+ SharedQuadState* output_shared_quad_state = nullptr;
+ for (const auto& delegated_quad : delegated_render_pass->quad_list) {
bool is_root_delegated_render_pass =
delegated_render_pass == render_passes_in_draw_order_.back();
quad_content_to_delegated_target_space.ConcatTransform(draw_transform());
}
+ Occlusion occlusion_in_quad_space =
+ occlusion_in_content_space.GetOcclusionWithGivenDrawTransform(
+ quad_content_to_delegated_target_space);
+
gfx::Rect quad_visible_rect =
- occlusion_tracker.GetCurrentOcclusionForLayer(
- quad_content_to_delegated_target_space)
- .GetUnoccludedContentRect(delegated_quad->visible_rect);
+ occlusion_in_quad_space.GetUnoccludedContentRect(
+ delegated_quad->visible_rect);
if (quad_visible_rect.IsEmpty())
continue;