Bug 134950 - Subpixel rendering: Adjust cliprect with devicePixelFractionFromRenderer() before painting.
Summary: Subpixel rendering: Adjust cliprect with devicePixelFractionFromRenderer() be...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: zalan
URL:
Keywords: InRadar, Regression
Depends on:
Blocks:
 
Reported: 2014-07-15 16:12 PDT by zalan
Modified: 2014-07-16 18:47 PDT (History)
5 users (show)

See Also:


Attachments
Patch (6.37 KB, patch)
2014-07-15 16:40 PDT, zalan
no flags Details | Formatted Diff | Diff
Patch (6.44 KB, patch)
2014-07-15 16:42 PDT, zalan
no flags Details | Formatted Diff | Diff
Patch (5.12 KB, patch)
2014-07-16 15:46 PDT, zalan
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description zalan 2014-07-15 16:12:52 PDT
It breaks painting when the compositing layer has tiled layering.
 
This is a workaround until bug 134947 gets fixed.
Comment 1 zalan 2014-07-15 16:17:03 PDT
<rdar://problem/17617994>
Comment 2 zalan 2014-07-15 16:40:52 PDT
Created attachment 234963 [details]
Patch
Comment 3 zalan 2014-07-15 16:42:01 PDT
Created attachment 234964 [details]
Patch
Comment 4 Simon Fraser (smfr) 2014-07-15 16:54:05 PDT
Comment on attachment 234964 [details]
Patch

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

> Source/WebCore/ChangeLog:9
> +        When the compositing layer has tiled layering, offsetting the cliprect with the subpixel accumulation

"has tiled layering" -> "is tiled".

> Source/WebCore/ChangeLog:10
> +        leaves a line of one device pixel gap on the non-leftmost tiles. It's because leftmost tiles get

leaves single device-pixel gap

> Source/WebCore/rendering/RenderLayer.cpp:1697
> +        // FIXME: Moving the cliprect by subPixelAccumulation requires to get IntRect enclosing removed from clipping/dirtyPaintRect.

"requires removal of the enclosingIntRect code from..."

> Source/WebCore/rendering/RenderLayer.cpp:3596
> +        if (!paintingInfo.subPixelAccumulation.isEmpty())
> +            adjustedClipRect.expand(paintingInfo.subPixelAccumulation);

I'm not sure I agree with this expanding here. You're fixing a bug specific to tiled layers with a change that affects clipping in all composited layers, and may actually result in incorrect clipping.
Comment 5 zalan 2014-07-16 15:46:52 PDT
Created attachment 235030 [details]
Patch
Comment 6 WebKit Commit Bot 2014-07-16 18:47:33 PDT
Comment on attachment 235030 [details]
Patch

Clearing flags on attachment: 235030

Committed r171165: <http://trac.webkit.org/changeset/171165>
Comment 7 WebKit Commit Bot 2014-07-16 18:47:36 PDT
All reviewed patches have been landed.  Closing bug.