summaryrefslogtreecommitdiffstats
path: root/cc/layers/io_surface_layer_impl.cc
diff options
context:
space:
mode:
authordanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-17 23:11:38 +0000
committerdanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-17 23:11:38 +0000
commitf31cf7bf95f70d41e183fca70cb9a1cfe86e2850 (patch)
tree94b8b66fecd35a0165a980944dc2dfb262c0f25a /cc/layers/io_surface_layer_impl.cc
parentf1fe3115997b08ea26920e2ac6920eb0e9cdbe90 (diff)
downloadchromium_src-f31cf7bf95f70d41e183fca70cb9a1cfe86e2850.zip
chromium_src-f31cf7bf95f70d41e183fca70cb9a1cfe86e2850.tar.gz
chromium_src-f31cf7bf95f70d41e183fca70cb9a1cfe86e2850.tar.bz2
cc: Apply occlusion before creating quads in IOSurfaceLayerImpl.
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. R=enne BUG=344962 Review URL: https://codereview.chromium.org/200423005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@257520 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/layers/io_surface_layer_impl.cc')
-rw-r--r--cc/layers/io_surface_layer_impl.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/cc/layers/io_surface_layer_impl.cc b/cc/layers/io_surface_layer_impl.cc
index 4287978..c40e05e 100644
--- a/cc/layers/io_surface_layer_impl.cc
+++ b/cc/layers/io_surface_layer_impl.cc
@@ -113,7 +113,11 @@ void IOSurfaceLayerImpl::AppendQuads(QuadSink* quad_sink,
gfx::Rect quad_rect(content_bounds());
gfx::Rect opaque_rect(contents_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<IOSurfaceDrawQuad> quad = IOSurfaceDrawQuad::Create();
quad->SetNew(shared_quad_state,
quad_rect,
@@ -122,7 +126,7 @@ void IOSurfaceLayerImpl::AppendQuads(QuadSink* quad_sink,
io_surface_size_,
io_surface_resource_id_,
IOSurfaceDrawQuad::FLIPPED);
- quad_sink->MaybeAppend(quad.PassAs<DrawQuad>());
+ quad_sink->Append(quad.PassAs<DrawQuad>());
}
void IOSurfaceLayerImpl::ReleaseResources() {