[Webkit-unassigned] [Bug 138551] Border-radius does not clip a composited decendent

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Nov 17 05:42:48 PST 2014


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

--- Comment #7 from Byungseon Shin <sun.shin at lge.com> ---
Comment on attachment 241288
  --> https://bugs.webkit.org/attachment.cgi?id=241288
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=241288&action=review

>> Source/WebCore/platform/graphics/GraphicsLayer.h:251
>> +    virtual void setContentsClippingMaskLayer(GraphicsLayer* layer) { m_contentsClippingMaskLayer = layer; }
> 
> You need to look at what I did for Mac in r175794.
> On Mac/iOS we can use the existing contentsClippingLayer for border-radius clip, since CA supports clipping via a layer's corner radius. We use a mask shape layer in cases where that's not possible.
> 
> Because of that it's not appropriate to add a contentsClippingMaskLayer for all platforms here in the base class; you need to do this in a way that lets platforms optimally clip.

At this time, we only consider Fix clipping compositing decendents of an accelerated layer having border radius and clip overflow issue. So we removed contentsClippingMaskLayer.

>> Source/WebCore/rendering/RenderBox.cpp:1490
>> +}
> 
> I don't understand why any new code in renderers is required.

Please check following review history of https://codereview.chromium.org/19954010. 
=========================================================================================
On 2013/07/29 19:17:18, eseidel wrote:
> I'm confused by what this new paint-phase means.  It doesn't look like it
> interacts with SVG at all (its RenderBlock specific?) is that OK?
> 
> Historically the PaintPhases were all defined by CSS paint order, but I guess 
> that's no longer true:
> http://www.w3.org/TR/CSS21/zindex.html#painting-order

This paint phase is valid only for hardware composited elements and it's called
on an auxiliary layer, so this phase is never mixed up with the main layer's
phases. The auxiliary layer is set up as a mask only for the composited elements
which should clip overflow using an irregular clip path (border-radius and,
later, clip-path), and only if there is any composited child to be clipped. I
think this is RenderBlock specific, isn't it? I should probably check that
renderer() is RenderBlock before painting this phase.

>> Source/WebCore/rendering/RenderLayerBacking.cpp:94
>> +static inline bool isAcceleratedContents(const RenderObject& renderer)
> 
> This is a bad name: should be hasAcceleratedContents()

It has been removed.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20141117/4fd8a780/attachment-0002.html>


More information about the webkit-unassigned mailing list