Skip to content

Commit

Permalink
cc: Stop using occlusion tracker on the main thread.
Browse files Browse the repository at this point in the history
It was only used by TiledLayer, which we can't quite delete but we can
just make it stop using occlusion. This will allow us to de-templatize
the OcclusionTracker.

R=enne, vmpstr
BUG=413479
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review URL: https://codereview.chromium.org/1182233004

Cr-Commit-Position: refs/heads/master@{#334269}
  • Loading branch information
danakj authored and Commit bot committed Jun 12, 2015
1 parent 85931a6 commit e16c1bf
Show file tree
Hide file tree
Showing 31 changed files with 104 additions and 568 deletions.
5 changes: 2 additions & 3 deletions cc/layers/content_layer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -66,16 +66,15 @@ void ContentLayer::SetTexturePriorities(
TiledLayer::SetTexturePriorities(priority_calc);
}

bool ContentLayer::Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion) {
bool ContentLayer::Update(ResourceUpdateQueue* queue) {
{
base::AutoReset<bool> ignore_set_needs_commit(&ignore_set_needs_commit_,
true);

CreateUpdaterIfNeeded();
}

bool updated = TiledLayer::Update(queue, occlusion);
bool updated = TiledLayer::Update(queue);
return updated;
}

Expand Down
3 changes: 1 addition & 2 deletions cc/layers/content_layer.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,7 @@ class CC_EXPORT ContentLayer : public TiledLayer {

void SetLayerTreeHost(LayerTreeHost* layer_tree_host) override;
void SetTexturePriorities(const PriorityCalculator& priority_calc) override;
bool Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion) override;
bool Update(ResourceUpdateQueue* queue) override;
bool NeedMoreUpdates() override;

void SetContentsOpaque(bool contents_opaque) override;
Expand Down
5 changes: 2 additions & 3 deletions cc/layers/contents_scaling_layer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,8 @@ void ContentsScalingLayer::CalculateContentsScale(
}
}

bool ContentsScalingLayer::Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion) {
bool updated = Layer::Update(queue, occlusion);
bool ContentsScalingLayer::Update(ResourceUpdateQueue* queue) {
bool updated = Layer::Update(queue);

if (draw_properties().contents_scale_x == last_update_contents_scale_x_ &&
draw_properties().contents_scale_y == last_update_contents_scale_y_)
Expand Down
3 changes: 1 addition & 2 deletions cc/layers/contents_scaling_layer.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ class CC_EXPORT ContentsScalingLayer : public Layer {
float* contents_scale_y,
gfx::Size* content_bounds) override;

bool Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion) override;
bool Update(ResourceUpdateQueue* queue) override;

protected:
explicit ContentsScalingLayer(const LayerSettings& settings);
Expand Down
5 changes: 2 additions & 3 deletions cc/layers/delegated_renderer_layer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,8 @@ void DelegatedRendererLayer::ProviderHasNewFrame() {
SetNextCommitWaitsForActivation();
}

bool DelegatedRendererLayer::Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion) {
bool updated = Layer::Update(queue, occlusion);
bool DelegatedRendererLayer::Update(ResourceUpdateQueue* queue) {
bool updated = Layer::Update(queue);
if (!should_collect_new_frame_)
return updated;

Expand Down
3 changes: 1 addition & 2 deletions cc/layers/delegated_renderer_layer.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ class CC_EXPORT DelegatedRendererLayer : public Layer {

scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override;
void SetLayerTreeHost(LayerTreeHost* host) override;
bool Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion) override;
bool Update(ResourceUpdateQueue* queue) override;
void PushPropertiesTo(LayerImpl* impl) override;

// Called by the DelegatedFrameProvider when a new frame is available to be
Expand Down
5 changes: 2 additions & 3 deletions cc/layers/io_surface_layer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,8 @@ void IOSurfaceLayer::PushPropertiesTo(LayerImpl* layer) {
io_surface_layer->SetIOSurfaceProperties(io_surface_id_, io_surface_size_);
}

bool IOSurfaceLayer::Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion) {
bool updated = Layer::Update(queue, occlusion);
bool IOSurfaceLayer::Update(ResourceUpdateQueue* queue) {
bool updated = Layer::Update(queue);

// This layer doesn't update any resources from the main thread side,
// but repaint rects need to be sent to the layer impl via commit.
Expand Down
3 changes: 1 addition & 2 deletions cc/layers/io_surface_layer.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@ class CC_EXPORT IOSurfaceLayer : public Layer {

scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override;
void PushPropertiesTo(LayerImpl* layer) override;
bool Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion) override;
bool Update(ResourceUpdateQueue* queue) override;

protected:
bool HasDrawableContent() const override;
Expand Down
3 changes: 1 addition & 2 deletions cc/layers/layer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1377,8 +1377,7 @@ void Layer::SavePaintProperties() {
layer_tree_host_->source_frame_number();
}

bool Layer::Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion) {
bool Layer::Update(ResourceUpdateQueue* queue) {
DCHECK(layer_tree_host_);
DCHECK_EQ(layer_tree_host_->source_frame_number(),
paint_properties_.source_frame_number) <<
Expand Down
5 changes: 1 addition & 4 deletions cc/layers/layer.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,6 @@ class ResourceUpdateQueue;
class ScrollbarLayerInterface;
class SimpleEnclosedRegion;
struct AnimationEvent;
template <typename LayerType>
class OcclusionTracker;

// Base class for composited layers. Special layer types are derived from
// this class.
Expand Down Expand Up @@ -377,8 +375,7 @@ class CC_EXPORT Layer : public base::RefCounted<Layer>,
// This methods typically need to be overwritten by derived classes.
virtual void SavePaintProperties();
// Returns true iff any resources were updated that need to be committed.
virtual bool Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion);
virtual bool Update(ResourceUpdateQueue* queue);
virtual bool NeedMoreUpdates();
virtual void SetIsMask(bool is_mask) {}
virtual void ReduceMemoryUsage() {}
Expand Down
6 changes: 2 additions & 4 deletions cc/layers/nine_patch_layer_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
#include "cc/test/geometry_test_utils.h"
#include "cc/test/test_shared_bitmap_manager.h"
#include "cc/trees/layer_tree_host.h"
#include "cc/trees/occlusion_tracker.h"
#include "cc/trees/single_thread_proxy.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
Expand Down Expand Up @@ -59,9 +58,8 @@ TEST_F(NinePatchLayerTest, SetLayerProperties) {

ResourceUpdateQueue queue;
gfx::Rect screen_space_clip_rect;
OcclusionTracker<Layer> occlusion_tracker(screen_space_clip_rect);
test_layer->SavePaintProperties();
test_layer->Update(&queue, &occlusion_tracker);
test_layer->Update(&queue);

EXPECT_FALSE(test_layer->DrawsContent());

Expand All @@ -73,7 +71,7 @@ TEST_F(NinePatchLayerTest, SetLayerProperties) {
test_layer->SetAperture(aperture);
test_layer->SetUIResourceId(resource->id());
test_layer->SetFillCenter(fill_center);
test_layer->Update(&queue, &occlusion_tracker);
test_layer->Update(&queue);

EXPECT_TRUE(test_layer->DrawsContent());
}
Expand Down
5 changes: 2 additions & 3 deletions cc/layers/painted_scrollbar_layer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -231,12 +231,11 @@ void PaintedScrollbarLayer::UpdateInternalContentScale() {
}
}

bool PaintedScrollbarLayer::Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion) {
bool PaintedScrollbarLayer::Update(ResourceUpdateQueue* queue) {
{
base::AutoReset<bool> ignore_set_needs_commit(&ignore_set_needs_commit_,
true);
Layer::Update(queue, occlusion);
Layer::Update(queue);
UpdateInternalContentScale();
}

Expand Down
3 changes: 1 addition & 2 deletions cc/layers/painted_scrollbar_layer.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,7 @@ class CC_EXPORT PaintedScrollbarLayer : public ScrollbarLayerInterface,
ScrollbarOrientation orientation() const override;

// Layer interface
bool Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion) override;
bool Update(ResourceUpdateQueue* queue) override;
void SetLayerTreeHost(LayerTreeHost* host) override;
void PushPropertiesTo(LayerImpl* layer) override;
void PushScrollClipPropertiesTo(LayerImpl* layer) override;
Expand Down
5 changes: 2 additions & 3 deletions cc/layers/picture_layer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,9 @@ void PictureLayer::SetNeedsDisplayRect(const gfx::Rect& layer_rect) {
Layer::SetNeedsDisplayRect(layer_rect);
}

bool PictureLayer::Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion) {
bool PictureLayer::Update(ResourceUpdateQueue* queue) {
update_source_frame_number_ = layer_tree_host()->source_frame_number();
bool updated = Layer::Update(queue, occlusion);
bool updated = Layer::Update(queue);

gfx::Rect visible_layer_rect = gfx::ScaleToEnclosingRect(
visible_content_rect(), 1.f / contents_scale_x());
Expand Down
4 changes: 1 addition & 3 deletions cc/layers/picture_layer.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
#include "cc/debug/devtools_instrumentation.h"
#include "cc/debug/micro_benchmark_controller.h"
#include "cc/layers/layer.h"
#include "cc/trees/occlusion_tracker.h"

namespace cc {

Expand All @@ -31,8 +30,7 @@ class CC_EXPORT PictureLayer : public Layer {
void SetLayerTreeHost(LayerTreeHost* host) override;
void PushPropertiesTo(LayerImpl* layer) override;
void SetNeedsDisplayRect(const gfx::Rect& layer_rect) override;
bool Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion) override;
bool Update(ResourceUpdateQueue* queue) override;
void SetIsMask(bool is_mask) override;
skia::RefPtr<SkPicture> GetPicture() const override;
bool IsSuitableForGpuRasterization() const override;
Expand Down
4 changes: 1 addition & 3 deletions cc/layers/picture_layer_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
#include "cc/test/fake_picture_layer_impl.h"
#include "cc/test/fake_proxy.h"
#include "cc/test/impl_side_painting_settings.h"
#include "cc/trees/occlusion_tracker.h"
#include "cc/trees/single_thread_proxy.h"
#include "testing/gtest/include/gtest/gtest.h"

Expand Down Expand Up @@ -46,9 +45,8 @@ TEST(PictureLayerTest, NoTilesIfEmptyBounds) {
layer->SetIsDrawable(true);
layer->SavePaintProperties();

OcclusionTracker<Layer> occlusion(gfx::Rect(0, 0, 1000, 1000));
scoped_ptr<ResourceUpdateQueue> queue(new ResourceUpdateQueue);
layer->Update(queue.get(), &occlusion);
layer->Update(queue.get());

EXPECT_EQ(0, host->source_frame_number());
host->CommitComplete();
Expand Down
31 changes: 12 additions & 19 deletions cc/layers/scrollbar_layer_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -736,12 +736,10 @@ class ScrollbarLayerTestResourceCreationAndRelease : public ScrollbarLayerTest {
EXPECT_EQ(scrollbar_layer->layer_tree_host(), layer_tree_host_.get());

ResourceUpdateQueue queue;
gfx::Rect screen_space_clip_rect;
OcclusionTracker<Layer> occlusion_tracker(screen_space_clip_rect);

scrollbar_layer->SavePaintProperties();
for (int update_counter = 0; update_counter < num_updates; update_counter++)
scrollbar_layer->Update(&queue, &occlusion_tracker);
scrollbar_layer->Update(&queue);

// A non-solid-color scrollbar should have requested two textures.
EXPECT_EQ(expected_resources, layer_tree_host_->UIResourceCount());
Expand Down Expand Up @@ -805,16 +803,14 @@ TEST_F(ScrollbarLayerTestResourceCreationAndRelease, TestResourceUpdate) {
EXPECT_EQ(scrollbar_layer->layer_tree_host(), layer_tree_host_.get());

ResourceUpdateQueue queue;
gfx::Rect screen_space_clip_rect;
size_t resource_count;
int expected_created, expected_deleted;
OcclusionTracker<Layer> occlusion_tracker(screen_space_clip_rect);
scrollbar_layer->SavePaintProperties();

resource_count = 2;
expected_created = 2;
expected_deleted = 0;
EXPECT_TRUE(scrollbar_layer->Update(&queue, &occlusion_tracker));
EXPECT_TRUE(scrollbar_layer->Update(&queue));
EXPECT_NE(0, scrollbar_layer->track_resource_id());
EXPECT_NE(0, scrollbar_layer->thumb_resource_id());
EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
Expand All @@ -825,7 +821,7 @@ TEST_F(ScrollbarLayerTestResourceCreationAndRelease, TestResourceUpdate) {
expected_created = 2;
expected_deleted = 2;
scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(0, 0, 0, 0));
EXPECT_TRUE(scrollbar_layer->Update(&queue, &occlusion_tracker));
EXPECT_TRUE(scrollbar_layer->Update(&queue));
EXPECT_EQ(0, scrollbar_layer->track_resource_id());
EXPECT_EQ(0, scrollbar_layer->thumb_resource_id());
EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
Expand All @@ -836,7 +832,7 @@ TEST_F(ScrollbarLayerTestResourceCreationAndRelease, TestResourceUpdate) {
expected_created = 2;
expected_deleted = 2;
scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(0, 0, 0, 0));
EXPECT_FALSE(scrollbar_layer->Update(&queue, &occlusion_tracker));
EXPECT_FALSE(scrollbar_layer->Update(&queue));
EXPECT_EQ(0, scrollbar_layer->track_resource_id());
EXPECT_EQ(0, scrollbar_layer->thumb_resource_id());
EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
Expand All @@ -847,7 +843,7 @@ TEST_F(ScrollbarLayerTestResourceCreationAndRelease, TestResourceUpdate) {
expected_created = 4;
expected_deleted = 2;
scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(30, 10, 50, 10));
EXPECT_TRUE(scrollbar_layer->Update(&queue, &occlusion_tracker));
EXPECT_TRUE(scrollbar_layer->Update(&queue));
EXPECT_NE(0, scrollbar_layer->track_resource_id());
EXPECT_NE(0, scrollbar_layer->thumb_resource_id());
EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
Expand All @@ -858,7 +854,7 @@ TEST_F(ScrollbarLayerTestResourceCreationAndRelease, TestResourceUpdate) {
expected_created = 5;
expected_deleted = 4;
scrollbar_layer->fake_scrollbar()->set_has_thumb(false);
EXPECT_TRUE(scrollbar_layer->Update(&queue, &occlusion_tracker));
EXPECT_TRUE(scrollbar_layer->Update(&queue));
EXPECT_NE(0, scrollbar_layer->track_resource_id());
EXPECT_EQ(0, scrollbar_layer->thumb_resource_id());
EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
Expand All @@ -869,7 +865,7 @@ TEST_F(ScrollbarLayerTestResourceCreationAndRelease, TestResourceUpdate) {
expected_created = 5;
expected_deleted = 5;
scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(0, 0, 0, 0));
EXPECT_TRUE(scrollbar_layer->Update(&queue, &occlusion_tracker));
EXPECT_TRUE(scrollbar_layer->Update(&queue));
EXPECT_EQ(0, scrollbar_layer->track_resource_id());
EXPECT_EQ(0, scrollbar_layer->thumb_resource_id());
EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
Expand All @@ -881,7 +877,7 @@ TEST_F(ScrollbarLayerTestResourceCreationAndRelease, TestResourceUpdate) {
expected_deleted = 5;
scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(30, 10, 50, 10));
scrollbar_layer->fake_scrollbar()->set_has_thumb(true);
EXPECT_TRUE(scrollbar_layer->Update(&queue, &occlusion_tracker));
EXPECT_TRUE(scrollbar_layer->Update(&queue));
EXPECT_NE(0, scrollbar_layer->track_resource_id());
EXPECT_NE(0, scrollbar_layer->thumb_resource_id());

Expand All @@ -891,7 +887,7 @@ TEST_F(ScrollbarLayerTestResourceCreationAndRelease, TestResourceUpdate) {
scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(30, 10, 50, 10));
scrollbar_layer->fake_scrollbar()->set_has_thumb(false);
scrollbar_layer->SetBounds(gfx::Size(90, 15));
EXPECT_TRUE(scrollbar_layer->Update(&queue, &occlusion_tracker));
EXPECT_TRUE(scrollbar_layer->Update(&queue));
EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
EXPECT_EQ(expected_created, layer_tree_host_->TotalUIResourceCreated());
EXPECT_EQ(expected_deleted, layer_tree_host_->TotalUIResourceDeleted());
Expand All @@ -900,7 +896,7 @@ TEST_F(ScrollbarLayerTestResourceCreationAndRelease, TestResourceUpdate) {
layer_tree_host_->ui_resource_size(scrollbar_layer->track_resource_id()));

scrollbar_layer->ResetNeedsDisplayForTesting();
EXPECT_FALSE(scrollbar_layer->Update(&queue, &occlusion_tracker));
EXPECT_FALSE(scrollbar_layer->Update(&queue));
EXPECT_NE(0, scrollbar_layer->track_resource_id());
EXPECT_EQ(0, scrollbar_layer->thumb_resource_id());
EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
Expand Down Expand Up @@ -951,10 +947,8 @@ class ScaledScrollbarLayerTestResourceCreation : public ScrollbarLayerTest {
EXPECT_EQ(scrollbar_layer->layer_tree_host(), layer_tree_host_.get());

ResourceUpdateQueue queue;
gfx::Rect screen_space_clip_rect;
OcclusionTracker<Layer> occlusion_tracker(screen_space_clip_rect);
scrollbar_layer->SavePaintProperties();
scrollbar_layer->Update(&queue, &occlusion_tracker);
scrollbar_layer->Update(&queue);

// Verify that we have not generated any content uploads that are larger
// than their destination textures.
Expand Down Expand Up @@ -1021,10 +1015,9 @@ class ScaledScrollbarLayerTestScaledRasterization : public ScrollbarLayerTest {

ResourceUpdateQueue queue;
gfx::Rect screen_space_clip_rect;
OcclusionTracker<Layer> occlusion_tracker(screen_space_clip_rect);
scrollbar_layer->SavePaintProperties();

scrollbar_layer->Update(&queue, &occlusion_tracker);
scrollbar_layer->Update(&queue);

UIResourceBitmap* bitmap = layer_tree_host_->ui_resource_bitmap(
scrollbar_layer->track_resource_id());
Expand Down
5 changes: 2 additions & 3 deletions cc/layers/texture_layer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -216,9 +216,8 @@ bool TextureLayer::HasDrawableContent() const {
return (client_ || holder_ref_) && Layer::HasDrawableContent();
}

bool TextureLayer::Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion) {
bool updated = Layer::Update(queue, occlusion);
bool TextureLayer::Update(ResourceUpdateQueue* queue) {
bool updated = Layer::Update(queue);
if (client_) {
TextureMailbox mailbox;
scoped_ptr<SingleReleaseCallback> release_callback;
Expand Down
3 changes: 1 addition & 2 deletions cc/layers/texture_layer.h
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,7 @@ class CC_EXPORT TextureLayer : public Layer {
void SetNeedsDisplayRect(const gfx::Rect& dirty_rect) override;

void SetLayerTreeHost(LayerTreeHost* layer_tree_host) override;
bool Update(ResourceUpdateQueue* queue,
const OcclusionTracker<Layer>* occlusion) override;
bool Update(ResourceUpdateQueue* queue) override;
void PushPropertiesTo(LayerImpl* layer) override;
SimpleEnclosedRegion VisibleContentOpaqueRegion() const override;

Expand Down
Loading

0 comments on commit e16c1bf

Please sign in to comment.