diff options
author | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-20 06:36:13 +0000 |
---|---|---|
committer | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-20 06:36:13 +0000 |
commit | 353908965d3de013d8de38cfa184f2a40d275046 (patch) | |
tree | ddf87d1ee2d343900a5d2ba935260a9c95c0731c /cc/layers/ui_resource_layer_impl.cc | |
parent | d2af1cdb2415db51159b45dc527cc16695f994b9 (diff) | |
download | chromium_src-353908965d3de013d8de38cfa184f2a40d275046.zip chromium_src-353908965d3de013d8de38cfa184f2a40d275046.tar.gz chromium_src-353908965d3de013d8de38cfa184f2a40d275046.tar.bz2 |
cc: Apply occlusion before creating quads in UIResourceLayerImpl.
This makes the AppendQuads method query occlusion directly and subtract
it from the quads it would create before they are created, skipping
quads that are completely occluded and avoiding a malloc/free for them.
Depends on: https://codereview.chromium.org/201153021/
R=enne
BUG=344962
Review URL: https://codereview.chromium.org/203463015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@258228 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/layers/ui_resource_layer_impl.cc')
-rw-r--r-- | cc/layers/ui_resource_layer_impl.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/cc/layers/ui_resource_layer_impl.cc b/cc/layers/ui_resource_layer_impl.cc index 2a975314..33392af 100644 --- a/cc/layers/ui_resource_layer_impl.cc +++ b/cc/layers/ui_resource_layer_impl.cc @@ -116,7 +116,11 @@ void UIResourceLayerImpl::AppendQuads(QuadSink* quad_sink, gfx::Rect quad_rect(bounds()); gfx::Rect opaque_rect(opaque ? quad_rect : gfx::Rect()); - gfx::Rect visible_quad_rect(quad_rect); + gfx::Rect visible_quad_rect = quad_sink->UnoccludedContentRect( + quad_rect, draw_properties().target_space_transform); + if (visible_quad_rect.IsEmpty()) + return; + scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); quad->SetNew(shared_quad_state, quad_rect, @@ -129,7 +133,7 @@ void UIResourceLayerImpl::AppendQuads(QuadSink* quad_sink, SK_ColorTRANSPARENT, vertex_opacity_, flipped); - quad_sink->MaybeAppend(quad.PassAs<DrawQuad>()); + quad_sink->Append(quad.PassAs<DrawQuad>()); } const char* UIResourceLayerImpl::LayerTypeAsString() const { |