[Webkit-unassigned] [Bug 70634] Mark GraphicsLayers as opaque when possible

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Nov 29 14:09:35 PST 2011


https://bugs.webkit.org/show_bug.cgi?id=70634





--- Comment #82 from Dana Jansens <danakj at chromium.org>  2011-11-29 14:09:33 PST ---
(From update of attachment 116768)
View in context: https://bugs.webkit.org/attachment.cgi?id=116768&action=review

Not sure if this would help but I can imagine splitting this into a few smaller patches if you'd like. These are all somewhat independent pieces mashed together. If not at least we can talk about them somewhat independently.
1. RenderLayerCompositor builds opaque region for a backing (uses stub RenderLayer::opaqueRegion()), and backing decides opaque flag
2. RenderLayer::contentChanged() causes its compositing backing to re-decide opaque flag.
3. Add the *AreaIsOpaqueInRect() methods to RenderBox and RBMO.
4. Have RenderLayer::opaqueRegion() test its renderer() with RBMO::isOpaque().
5. Add foregroundContentsAreaIsOpaqueInRect() for RenderImage.

> Source/WebCore/rendering/RenderImage.cpp:437
> +            Image* image = m_imageResource->image(cWidth, cHeight).get();

This is the call we do not make for a canvas/webgl image when its contents are changed, as it causes a CPU readback.

> Source/WebCore/rendering/RenderLayer.h:470
> +    Region opaqueRegion() const { return renderer()->isOpaqueInRect(renderer()->borderBoundingBox()) ? renderer()->borderBoundingBox() : Region(); }

I can stick this behind #ifdef USE(ACCELERATED_COMPOSITING).

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list