Title: [93850] trunk
Revision
93850
Author
commit-qu...@webkit.org
Date
2011-08-25 21:27:02 -0700 (Thu, 25 Aug 2011)

Log Message

Use PATH_BASED_BORDER_RADIUS_DRAWING for skia
https://bugs.webkit.org/show_bug.cgi?id=65583

Source/WebCore:

This change brings in the new border rendering for Skia. To support this without aliasing the skia
graphics context has been updated to support anti-aliased clipping around convex polygons and also
anti-aliased clipping outside a path.

Patch by Ben Wells <benwe...@chromium.org> on 2011-08-25
Reviewed by James Robinson.

* platform/graphics/skia/GraphicsContextSkia.cpp:
(WebCore::GraphicsContext::clipOut):
(WebCore::GraphicsContext::clipConvexPolygon):
* platform/graphics/skia/PlatformContextSkia.cpp:
(WebCore::PlatformContextSkia::clipPathAntiAliased):
* rendering/RenderObject.h:

LayoutTests:

Patch by Ben Wells <benwe...@chromium.org> on 2011-08-25
Reviewed by James Robinson.

Update expectations: added failures for baselines to come. removed some
failure expectations for tests that now pass and moved some expectations
into the group of tests to be rebaselined.

* platform/chromium/test_expectations.txt:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (93849 => 93850)


--- trunk/LayoutTests/ChangeLog	2011-08-26 02:54:09 UTC (rev 93849)
+++ trunk/LayoutTests/ChangeLog	2011-08-26 04:27:02 UTC (rev 93850)
@@ -1,3 +1,16 @@
+2011-08-25  Ben Wells  <benwe...@chromium.org>
+
+        Use PATH_BASED_BORDER_RADIUS_DRAWING for skia
+        https://bugs.webkit.org/show_bug.cgi?id=65583
+
+        Reviewed by James Robinson.
+
+        Update expectations: added failures for baselines to come. removed some
+        failure expectations for tests that now pass and moved some expectations
+        into the group of tests to be rebaselined.
+
+        * platform/chromium/test_expectations.txt:
+
 2011-08-25  Martin Robinson  <mrobin...@igalia.com>
 
         Skip some tests on GTK+ that are missing DRT functionality. Also

Modified: trunk/LayoutTests/platform/chromium/test_expectations.txt (93849 => 93850)


--- trunk/LayoutTests/platform/chromium/test_expectations.txt	2011-08-26 02:54:09 UTC (rev 93849)
+++ trunk/LayoutTests/platform/chromium/test_expectations.txt	2011-08-26 04:27:02 UTC (rev 93850)
@@ -1934,32 +1934,6 @@
 BUGCR47826 SKIP MAC : fast/dom/HTMLMeterElement/meter-styles.html = FAIL
 BUGCR47826 SKIP MAC : fast/dom/HTMLMeterElement/meter-styles-changing-pseudo.html = FAIL
 
-
-BUGWK41311 LINUX WIN : fast/borders/border-radius-circle.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/border-radius-groove-01.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/border-radius-groove-02.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/border-radius-groove-03.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/border-radius-wide-border-01.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/border-radius-wide-border-02.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/border-radius-wide-border-03.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/border-radius-wide-border-04.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/borderRadiusDashed04.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/borderRadiusDashed05.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/borderRadiusDashed06.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/borderRadiusDotted04.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/borderRadiusDotted05.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/borderRadiusDotted06.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/borderRadiusDouble04.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/borderRadiusDouble05.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/borderRadiusDouble06.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/borderRadiusDouble07.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/borderRadiusDouble08.html = IMAGE
-BUGWK41311 LINUX WIN : fast/borders/borderRadiusDouble09.html = IMAGE
-
-BUGWK41311 LINUX WIN : fast/borders/mixed-border-styles-radius.html = IMAGE+TEXT
-BUGWK41311 LINUX WIN : fast/borders/mixed-border-styles-radius2.html = IMAGE+TEXT
-BUGWK41311 LINUX WIN : fast/borders/mixed-border-styles.html = IMAGE+TEXT
-
 // Flaky tests.
 BUGCR44345 LINUX : svg/zoom/text/zoom-hixie-mixed-009.xml = PASS IMAGE
 BUGCR44346 LINUX : svg/zoom/page/zoom-hixie-mixed-009.xml = PASS IMAGE
@@ -2997,19 +2971,11 @@
 BUGCR79917 LINUX WIN : fast/repaint/layer-child-outline.html = IMAGE
 BUGCR79917 LINUX WIN : fast/repaint/reflection-repaint-test.html = IMAGE
 BUGCR79917 LINUX WIN : fast/repaint/table-cell-vertical-overflow.html = IMAGE
-BUGCR79917 LINUX WIN : fast/repaint/transform-absolute-child.html = IMAGE
-BUGCR79917 LINUX WIN : fast/repaint/transform-absolute-in-positioned-container.html = IMAGE
 BUGCR79917 LINUX WIN : fast/repaint/transform-layout-repaint.html = IMAGE
-BUGCR79917 LINUX WIN : fast/repaint/transform-relative-position.html = IMAGE
-BUGCR79917 LINUX WIN : fast/repaint/transform-repaint-descendants.html = IMAGE
 BUGCR79917 LINUX WIN : fast/table/border-collapsing/002-vertical.html = IMAGE
 BUGCR79917 LINUX WIN : fast/table/border-collapsing/002.html = IMAGE
 BUGCR79917 LINUX WIN : fast/table/empty-table-percent-height.html = IMAGE
 BUGCR79917 LINUX WIN : fast/table/table-and-parts-outline.html = IMAGE
-BUGCR79917 LINUX WIN : fast/transforms/diamond.html = IMAGE
-BUGCR79917 LINUX WIN : fast/transforms/matrix-01.html = IMAGE
-BUGCR79917 LINUX WIN : fast/transforms/matrix-02.html = IMAGE
-BUGCR79917 LINUX WIN : fast/transforms/skew-with-unitless-zero.html = IMAGE
 BUGCR79917 LINUX WIN : fast/transforms/transformed-caret.html = IMAGE
 BUGCR79917 LINUX WIN : svg/custom/no-inherited-dashed-stroke.xhtml = IMAGE
 BUGCR79917 LINUX WIN : svg/transforms/animated-path-inside-transformed-html.xhtml = IMAGE
@@ -3519,6 +3485,106 @@
 
 BUGWK65462 VISTA : http/tests/cache/history-only-cached-subresource-loads-max-age-https.html = PASS TIMEOUT
 
+// Need new baselines due to border drawing now using the PATH_BASED_BORDER_RADIUS_DRAWING
+// code path.
+BUGWK65583 WIN LINUX : css2.1/t0805-c5517-brdr-s-00-c.html = IMAGE
+BUGWK65583 WIN LINUX : fast/backgrounds/border-radius-split-background-image.html = IMAGE
+BUGWK65583 WIN LINUX : fast/backgrounds/border-radius-split-background.html = IMAGE
+BUGWK65583 WIN LINUX : fast/backgrounds/gradient-background-leakage.html = IMAGE
+BUGWK65583 WIN LINUX : fast/backgrounds/repeat/negative-offset-repeat-transformed.html = IMAGE
+BUGWK65583 WIN LINUX : fast/writing-mode/border-radius-clipping-vertical-lr.html = IMAGE
+BUGWK65583 WIN LINUX : fast/writing-mode/box-shadow-horizontal-bt.html = IMAGE
+BUGWK65583 WIN LINUX : fast/writing-mode/box-shadow-vertical-lr.html = IMAGE
+BUGWK65583 WIN LINUX : fast/writing-mode/box-shadow-vertical-rl.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/border-antialiasing.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/border-radius-constraints.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/border-radius-huge-assert.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/border-radius-inline-flow.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/border-radius-split-inline.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusAllStylesAllCorners.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusArcs01.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusDashed02.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusDashed03.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusDotted01.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusDouble01.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusDouble02.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusDouble03.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusGroove01.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusGroove02.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusInset01.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusInvalidColor.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusOutset01.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusRidge01.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusSolid01.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusSolid02.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusSolid03.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/borderRadiusSolid04.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/different-color-borders.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/fieldsetBorderRadius.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/rtl-border-01.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/rtl-border-02.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/rtl-border-03.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/rtl-border-04.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/rtl-border-05.html = IMAGE
+BUGWK65583 WIN LINUX : fast/borders/table-borders.html = IMAGE
+BUGWK65583 WIN LINUX : fast/box-shadow/basic-shadows.html = IMAGE
+BUGWK65583 WIN LINUX : fast/box-shadow/border-radius-big.html = IMAGE
+BUGWK65583 WIN LINUX : fast/box-shadow/inset-box-shadow-radius.html = IMAGE
+BUGWK65583 WIN LINUX : fast/box-shadow/inset-box-shadows.html = IMAGE
+BUGWK65583 WIN LINUX : fast/box-shadow/inset-with-extraordinary-radii-and-border.html = IMAGE
+BUGWK65583 WIN LINUX : fast/box-shadow/inset.html = IMAGE
+BUGWK65583 WIN LINUX : fast/box-shadow/spread-multiple-normal.html = IMAGE
+BUGWK65583 WIN LINUX : fast/box-shadow/spread.html = IMAGE
+BUGWK65583 WIN LINUX : fast/css/box-shadow-and-border-radius.html = IMAGE
+BUGWK65583 WIN LINUX : fast/css/color-leakage.html = IMAGE
+BUGWK65583 WIN LINUX : fast/css/nested-rounded-corners.html = IMAGE
+BUGWK65583 WIN LINUX : fast/css/text-input-with-webkit-border-radius.html = IMAGE
+BUGWK65583 WIN LINUX : fast/forms/basic-selects.html = IMAGE
+BUGWK65583 WIN LINUX : fast/forms/validation-message-appearance.html = IMAGE
+BUGWK65583 WIN LINUX : fast/gradients/background-clipped.html = IMAGE
+BUGWK65583 WIN LINUX : fast/inline/inline-borders-with-bidi-override.html = IMAGE
+BUGWK65583 WIN LINUX : fast/multicol/client-rects.html = IMAGE
+BUGWK65583 WIN LINUX : fast/overflow/border-radius-clipping.html = IMAGE
+BUGWK65583 WIN LINUX : fast/repaint/border-radius-repaint.html = IMAGE
+BUGWK65583 WIN LINUX : fast/repaint/shadow-multiple-horizontal.html = IMAGE
+BUGWK65583 WIN LINUX : fast/repaint/shadow-multiple-strict-horizontal.html = IMAGE
+BUGWK65583 WIN LINUX : fast/repaint/shadow-multiple-strict-vertical.html = IMAGE
+BUGWK65583 WIN LINUX : fast/repaint/shadow-multiple-vertical.html = IMAGE
+BUGWK65583 WIN LINUX : fast/transforms/rotated-transform-affects-scrolling-1.html = IMAGE
+BUGWK65583 WIN LINUX : fast/transforms/rotated-transform-affects-scrolling-2.html = IMAGE
+BUGWK65583 WIN LINUX : fast/transforms/shadows.html = IMAGE
+BUGWK65583 WIN LINUX : media/video-layer-crash.html = IMAGE
+BUGWK65583 WIN LINUX : media/video-transformed.html = IMAGE
+
+BUGWK65583 LINUX WIN : fast/borders/border-radius-circle.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/border-radius-groove-01.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/border-radius-groove-02.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/border-radius-groove-03.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/border-radius-wide-border-01.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/border-radius-wide-border-02.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/border-radius-wide-border-03.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/border-radius-wide-border-04.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/borderRadiusDashed04.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/borderRadiusDashed05.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/borderRadiusDashed06.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/borderRadiusDotted04.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/borderRadiusDotted05.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/borderRadiusDotted06.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/borderRadiusDouble04.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/borderRadiusDouble05.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/borderRadiusDouble06.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/borderRadiusDouble07.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/borderRadiusDouble08.html = IMAGE
+BUGWK65583 LINUX WIN : fast/borders/borderRadiusDouble09.html = IMAGE
+
+BUGWK65583 LINUX WIN : fast/borders/mixed-border-styles-radius.html = IMAGE+TEXT
+BUGWK65583 LINUX WIN : fast/borders/mixed-border-styles-radius2.html = IMAGE+TEXT
+BUGWK65583 LINUX WIN : fast/borders/mixed-border-styles.html = IMAGE+TEXT
+
+BUGWK65583 LINUX WIN : fast/frames/iframe-scaling-with-scroll.html = IMAGE
+
+BUGWK65583 LINUX WIN : fast/css/border-radius-non-negative.html = IMAGE
+
 // Introduced in r92298, which might cause another test crashing.
 BUGZMO SKIP : fast/loader/reload-zero-byte-plugin.html = FAIL
 

Modified: trunk/Source/WebCore/ChangeLog (93849 => 93850)


--- trunk/Source/WebCore/ChangeLog	2011-08-26 02:54:09 UTC (rev 93849)
+++ trunk/Source/WebCore/ChangeLog	2011-08-26 04:27:02 UTC (rev 93850)
@@ -1,3 +1,21 @@
+2011-08-25  Ben Wells  <benwe...@chromium.org>
+
+        Use PATH_BASED_BORDER_RADIUS_DRAWING for skia
+        https://bugs.webkit.org/show_bug.cgi?id=65583
+
+        This change brings in the new border rendering for Skia. To support this without aliasing the skia
+        graphics context has been updated to support anti-aliased clipping around convex polygons and also
+        anti-aliased clipping outside a path.
+
+        Reviewed by James Robinson.
+
+        * platform/graphics/skia/GraphicsContextSkia.cpp:
+        (WebCore::GraphicsContext::clipOut):
+        (WebCore::GraphicsContext::clipConvexPolygon):
+        * platform/graphics/skia/PlatformContextSkia.cpp:
+        (WebCore::PlatformContextSkia::clipPathAntiAliased):
+        * rendering/RenderObject.h:
+
 2011-08-25  Luke Macpherson   <macpher...@chromium.org>
 
         Implement animation and transition properties in CSSStyleApplyProperty.

Modified: trunk/Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp (93849 => 93850)


--- trunk/Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp	2011-08-26 02:54:09 UTC (rev 93849)
+++ trunk/Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp	2011-08-26 04:27:02 UTC (rev 93850)
@@ -392,11 +392,12 @@
     if (paintingDisabled())
         return;
 
-    const SkPath& path = *p.platformPath();
+    SkPath path = *p.platformPath();
     if (!isPathSkiaSafe(getCTM(), path))
         return;
 
-    platformContext()->canvas()->clipPath(path, SkRegion::kDifference_Op);
+    path.toggleInverseFillType();
+    platformContext()->clipPathAntiAliased(path);
 }
 
 void GraphicsContext::clipPath(const Path& pathToClip, WindRule clipRule)
@@ -479,8 +480,14 @@
         return;
 
     SkPath path;
+    if (!isPathSkiaSafe(getCTM(), path))
+        return;
+
     setPathFromConvexPoints(&path, numPoints, points);
-    platformContext()->canvas()->clipPath(path);
+    if (antialiased)
+        platformContext()->clipPathAntiAliased(path);
+    else
+        platformContext()->canvas()->clipPath(path);
 }
 
 // This method is only used to draw the little circles used in lists.

Modified: trunk/Source/WebCore/platform/graphics/skia/PlatformContextSkia.cpp (93849 => 93850)


--- trunk/Source/WebCore/platform/graphics/skia/PlatformContextSkia.cpp	2011-08-26 02:54:09 UTC (rev 93849)
+++ trunk/Source/WebCore/platform/graphics/skia/PlatformContextSkia.cpp	2011-08-26 04:27:02 UTC (rev 93850)
@@ -283,7 +283,12 @@
 
     if (!haveLayerOutstanding) {
         SkRect bounds = clipPath.getBounds();
-        canvas()->saveLayerAlpha(&bounds, 255, static_cast<SkCanvas::SaveFlags>(SkCanvas::kHasAlphaLayer_SaveFlag | SkCanvas::kFullColorLayer_SaveFlag | SkCanvas::kClipToLayer_SaveFlag));
+        // If we are doing a clip outside of clipPath our layer needs to be for the whole
+        // canvas, otherwise we can create a smaller layer.
+        SkRect* layerBounds = 0;
+        if (!clipPath.isInverseFillType())
+            layerBounds = &bounds;
+        canvas()->saveLayerAlpha(layerBounds, 255, static_cast<SkCanvas::SaveFlags>(SkCanvas::kHasAlphaLayer_SaveFlag | SkCanvas::kFullColorLayer_SaveFlag | SkCanvas::kClipToLayer_SaveFlag));
         // Guards state modification during clipped operations.
         // The state is popped in applyAntiAliasedClipPaths().
         canvas()->save();

Modified: trunk/Source/WebCore/rendering/RenderObject.h (93849 => 93850)


--- trunk/Source/WebCore/rendering/RenderObject.h	2011-08-26 02:54:09 UTC (rev 93849)
+++ trunk/Source/WebCore/rendering/RenderObject.h	2011-08-26 04:27:02 UTC (rev 93850)
@@ -38,7 +38,7 @@
 #include "TransformationMatrix.h"
 #include <wtf/UnusedParam.h>
 
-#if USE(CG) || USE(CAIRO) || PLATFORM(QT)
+#if USE(CG) || USE(CAIRO) || USE(SKIA) || PLATFORM(QT)
 #define HAVE_PATH_BASED_BORDER_RADIUS_DRAWING 1
 #endif
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to