Changeset 93850 in webkit


Ignore:
Timestamp:
Aug 25, 2011 9:27:02 PM (13 years ago)
Author:
commit-queue@webkit.org
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 <benwells@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 <benwells@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:
Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r93849 r93850  
     12011-08-25  Ben Wells  <benwells@chromium.org>
     2
     3        Use PATH_BASED_BORDER_RADIUS_DRAWING for skia
     4        https://bugs.webkit.org/show_bug.cgi?id=65583
     5
     6        Reviewed by James Robinson.
     7
     8        Update expectations: added failures for baselines to come. removed some
     9        failure expectations for tests that now pass and moved some expectations
     10        into the group of tests to be rebaselined.
     11
     12        * platform/chromium/test_expectations.txt:
     13
    1142011-08-25  Martin Robinson  <mrobinson@igalia.com>
    215
  • trunk/LayoutTests/platform/chromium/test_expectations.txt

    r93846 r93850  
    19351935BUGCR47826 SKIP MAC : fast/dom/HTMLMeterElement/meter-styles-changing-pseudo.html = FAIL
    19361936
    1937 
    1938 BUGWK41311 LINUX WIN : fast/borders/border-radius-circle.html = IMAGE
    1939 BUGWK41311 LINUX WIN : fast/borders/border-radius-groove-01.html = IMAGE
    1940 BUGWK41311 LINUX WIN : fast/borders/border-radius-groove-02.html = IMAGE
    1941 BUGWK41311 LINUX WIN : fast/borders/border-radius-groove-03.html = IMAGE
    1942 BUGWK41311 LINUX WIN : fast/borders/border-radius-wide-border-01.html = IMAGE
    1943 BUGWK41311 LINUX WIN : fast/borders/border-radius-wide-border-02.html = IMAGE
    1944 BUGWK41311 LINUX WIN : fast/borders/border-radius-wide-border-03.html = IMAGE
    1945 BUGWK41311 LINUX WIN : fast/borders/border-radius-wide-border-04.html = IMAGE
    1946 BUGWK41311 LINUX WIN : fast/borders/borderRadiusDashed04.html = IMAGE
    1947 BUGWK41311 LINUX WIN : fast/borders/borderRadiusDashed05.html = IMAGE
    1948 BUGWK41311 LINUX WIN : fast/borders/borderRadiusDashed06.html = IMAGE
    1949 BUGWK41311 LINUX WIN : fast/borders/borderRadiusDotted04.html = IMAGE
    1950 BUGWK41311 LINUX WIN : fast/borders/borderRadiusDotted05.html = IMAGE
    1951 BUGWK41311 LINUX WIN : fast/borders/borderRadiusDotted06.html = IMAGE
    1952 BUGWK41311 LINUX WIN : fast/borders/borderRadiusDouble04.html = IMAGE
    1953 BUGWK41311 LINUX WIN : fast/borders/borderRadiusDouble05.html = IMAGE
    1954 BUGWK41311 LINUX WIN : fast/borders/borderRadiusDouble06.html = IMAGE
    1955 BUGWK41311 LINUX WIN : fast/borders/borderRadiusDouble07.html = IMAGE
    1956 BUGWK41311 LINUX WIN : fast/borders/borderRadiusDouble08.html = IMAGE
    1957 BUGWK41311 LINUX WIN : fast/borders/borderRadiusDouble09.html = IMAGE
    1958 
    1959 BUGWK41311 LINUX WIN : fast/borders/mixed-border-styles-radius.html = IMAGE+TEXT
    1960 BUGWK41311 LINUX WIN : fast/borders/mixed-border-styles-radius2.html = IMAGE+TEXT
    1961 BUGWK41311 LINUX WIN : fast/borders/mixed-border-styles.html = IMAGE+TEXT
    1962 
    19631937// Flaky tests.
    19641938BUGCR44345 LINUX : svg/zoom/text/zoom-hixie-mixed-009.xml = PASS IMAGE
     
    29982972BUGCR79917 LINUX WIN : fast/repaint/reflection-repaint-test.html = IMAGE
    29992973BUGCR79917 LINUX WIN : fast/repaint/table-cell-vertical-overflow.html = IMAGE
    3000 BUGCR79917 LINUX WIN : fast/repaint/transform-absolute-child.html = IMAGE
    3001 BUGCR79917 LINUX WIN : fast/repaint/transform-absolute-in-positioned-container.html = IMAGE
    30022974BUGCR79917 LINUX WIN : fast/repaint/transform-layout-repaint.html = IMAGE
    3003 BUGCR79917 LINUX WIN : fast/repaint/transform-relative-position.html = IMAGE
    3004 BUGCR79917 LINUX WIN : fast/repaint/transform-repaint-descendants.html = IMAGE
    30052975BUGCR79917 LINUX WIN : fast/table/border-collapsing/002-vertical.html = IMAGE
    30062976BUGCR79917 LINUX WIN : fast/table/border-collapsing/002.html = IMAGE
    30072977BUGCR79917 LINUX WIN : fast/table/empty-table-percent-height.html = IMAGE
    30082978BUGCR79917 LINUX WIN : fast/table/table-and-parts-outline.html = IMAGE
    3009 BUGCR79917 LINUX WIN : fast/transforms/diamond.html = IMAGE
    3010 BUGCR79917 LINUX WIN : fast/transforms/matrix-01.html = IMAGE
    3011 BUGCR79917 LINUX WIN : fast/transforms/matrix-02.html = IMAGE
    3012 BUGCR79917 LINUX WIN : fast/transforms/skew-with-unitless-zero.html = IMAGE
    30132979BUGCR79917 LINUX WIN : fast/transforms/transformed-caret.html = IMAGE
    30142980BUGCR79917 LINUX WIN : svg/custom/no-inherited-dashed-stroke.xhtml = IMAGE
     
    35203486BUGWK65462 VISTA : http/tests/cache/history-only-cached-subresource-loads-max-age-https.html = PASS TIMEOUT
    35213487
     3488// Need new baselines due to border drawing now using the PATH_BASED_BORDER_RADIUS_DRAWING
     3489// code path.
     3490BUGWK65583 WIN LINUX : css2.1/t0805-c5517-brdr-s-00-c.html = IMAGE
     3491BUGWK65583 WIN LINUX : fast/backgrounds/border-radius-split-background-image.html = IMAGE
     3492BUGWK65583 WIN LINUX : fast/backgrounds/border-radius-split-background.html = IMAGE
     3493BUGWK65583 WIN LINUX : fast/backgrounds/gradient-background-leakage.html = IMAGE
     3494BUGWK65583 WIN LINUX : fast/backgrounds/repeat/negative-offset-repeat-transformed.html = IMAGE
     3495BUGWK65583 WIN LINUX : fast/writing-mode/border-radius-clipping-vertical-lr.html = IMAGE
     3496BUGWK65583 WIN LINUX : fast/writing-mode/box-shadow-horizontal-bt.html = IMAGE
     3497BUGWK65583 WIN LINUX : fast/writing-mode/box-shadow-vertical-lr.html = IMAGE
     3498BUGWK65583 WIN LINUX : fast/writing-mode/box-shadow-vertical-rl.html = IMAGE
     3499BUGWK65583 WIN LINUX : fast/borders/border-antialiasing.html = IMAGE
     3500BUGWK65583 WIN LINUX : fast/borders/border-radius-constraints.html = IMAGE
     3501BUGWK65583 WIN LINUX : fast/borders/border-radius-huge-assert.html = IMAGE
     3502BUGWK65583 WIN LINUX : fast/borders/border-radius-inline-flow.html = IMAGE
     3503BUGWK65583 WIN LINUX : fast/borders/border-radius-split-inline.html = IMAGE
     3504BUGWK65583 WIN LINUX : fast/borders/borderRadiusAllStylesAllCorners.html = IMAGE
     3505BUGWK65583 WIN LINUX : fast/borders/borderRadiusArcs01.html = IMAGE
     3506BUGWK65583 WIN LINUX : fast/borders/borderRadiusDashed02.html = IMAGE
     3507BUGWK65583 WIN LINUX : fast/borders/borderRadiusDashed03.html = IMAGE
     3508BUGWK65583 WIN LINUX : fast/borders/borderRadiusDotted01.html = IMAGE
     3509BUGWK65583 WIN LINUX : fast/borders/borderRadiusDouble01.html = IMAGE
     3510BUGWK65583 WIN LINUX : fast/borders/borderRadiusDouble02.html = IMAGE
     3511BUGWK65583 WIN LINUX : fast/borders/borderRadiusDouble03.html = IMAGE
     3512BUGWK65583 WIN LINUX : fast/borders/borderRadiusGroove01.html = IMAGE
     3513BUGWK65583 WIN LINUX : fast/borders/borderRadiusGroove02.html = IMAGE
     3514BUGWK65583 WIN LINUX : fast/borders/borderRadiusInset01.html = IMAGE
     3515BUGWK65583 WIN LINUX : fast/borders/borderRadiusInvalidColor.html = IMAGE
     3516BUGWK65583 WIN LINUX : fast/borders/borderRadiusOutset01.html = IMAGE
     3517BUGWK65583 WIN LINUX : fast/borders/borderRadiusRidge01.html = IMAGE
     3518BUGWK65583 WIN LINUX : fast/borders/borderRadiusSolid01.html = IMAGE
     3519BUGWK65583 WIN LINUX : fast/borders/borderRadiusSolid02.html = IMAGE
     3520BUGWK65583 WIN LINUX : fast/borders/borderRadiusSolid03.html = IMAGE
     3521BUGWK65583 WIN LINUX : fast/borders/borderRadiusSolid04.html = IMAGE
     3522BUGWK65583 WIN LINUX : fast/borders/different-color-borders.html = IMAGE
     3523BUGWK65583 WIN LINUX : fast/borders/fieldsetBorderRadius.html = IMAGE
     3524BUGWK65583 WIN LINUX : fast/borders/rtl-border-01.html = IMAGE
     3525BUGWK65583 WIN LINUX : fast/borders/rtl-border-02.html = IMAGE
     3526BUGWK65583 WIN LINUX : fast/borders/rtl-border-03.html = IMAGE
     3527BUGWK65583 WIN LINUX : fast/borders/rtl-border-04.html = IMAGE
     3528BUGWK65583 WIN LINUX : fast/borders/rtl-border-05.html = IMAGE
     3529BUGWK65583 WIN LINUX : fast/borders/table-borders.html = IMAGE
     3530BUGWK65583 WIN LINUX : fast/box-shadow/basic-shadows.html = IMAGE
     3531BUGWK65583 WIN LINUX : fast/box-shadow/border-radius-big.html = IMAGE
     3532BUGWK65583 WIN LINUX : fast/box-shadow/inset-box-shadow-radius.html = IMAGE
     3533BUGWK65583 WIN LINUX : fast/box-shadow/inset-box-shadows.html = IMAGE
     3534BUGWK65583 WIN LINUX : fast/box-shadow/inset-with-extraordinary-radii-and-border.html = IMAGE
     3535BUGWK65583 WIN LINUX : fast/box-shadow/inset.html = IMAGE
     3536BUGWK65583 WIN LINUX : fast/box-shadow/spread-multiple-normal.html = IMAGE
     3537BUGWK65583 WIN LINUX : fast/box-shadow/spread.html = IMAGE
     3538BUGWK65583 WIN LINUX : fast/css/box-shadow-and-border-radius.html = IMAGE
     3539BUGWK65583 WIN LINUX : fast/css/color-leakage.html = IMAGE
     3540BUGWK65583 WIN LINUX : fast/css/nested-rounded-corners.html = IMAGE
     3541BUGWK65583 WIN LINUX : fast/css/text-input-with-webkit-border-radius.html = IMAGE
     3542BUGWK65583 WIN LINUX : fast/forms/basic-selects.html = IMAGE
     3543BUGWK65583 WIN LINUX : fast/forms/validation-message-appearance.html = IMAGE
     3544BUGWK65583 WIN LINUX : fast/gradients/background-clipped.html = IMAGE
     3545BUGWK65583 WIN LINUX : fast/inline/inline-borders-with-bidi-override.html = IMAGE
     3546BUGWK65583 WIN LINUX : fast/multicol/client-rects.html = IMAGE
     3547BUGWK65583 WIN LINUX : fast/overflow/border-radius-clipping.html = IMAGE
     3548BUGWK65583 WIN LINUX : fast/repaint/border-radius-repaint.html = IMAGE
     3549BUGWK65583 WIN LINUX : fast/repaint/shadow-multiple-horizontal.html = IMAGE
     3550BUGWK65583 WIN LINUX : fast/repaint/shadow-multiple-strict-horizontal.html = IMAGE
     3551BUGWK65583 WIN LINUX : fast/repaint/shadow-multiple-strict-vertical.html = IMAGE
     3552BUGWK65583 WIN LINUX : fast/repaint/shadow-multiple-vertical.html = IMAGE
     3553BUGWK65583 WIN LINUX : fast/transforms/rotated-transform-affects-scrolling-1.html = IMAGE
     3554BUGWK65583 WIN LINUX : fast/transforms/rotated-transform-affects-scrolling-2.html = IMAGE
     3555BUGWK65583 WIN LINUX : fast/transforms/shadows.html = IMAGE
     3556BUGWK65583 WIN LINUX : media/video-layer-crash.html = IMAGE
     3557BUGWK65583 WIN LINUX : media/video-transformed.html = IMAGE
     3558
     3559BUGWK65583 LINUX WIN : fast/borders/border-radius-circle.html = IMAGE
     3560BUGWK65583 LINUX WIN : fast/borders/border-radius-groove-01.html = IMAGE
     3561BUGWK65583 LINUX WIN : fast/borders/border-radius-groove-02.html = IMAGE
     3562BUGWK65583 LINUX WIN : fast/borders/border-radius-groove-03.html = IMAGE
     3563BUGWK65583 LINUX WIN : fast/borders/border-radius-wide-border-01.html = IMAGE
     3564BUGWK65583 LINUX WIN : fast/borders/border-radius-wide-border-02.html = IMAGE
     3565BUGWK65583 LINUX WIN : fast/borders/border-radius-wide-border-03.html = IMAGE
     3566BUGWK65583 LINUX WIN : fast/borders/border-radius-wide-border-04.html = IMAGE
     3567BUGWK65583 LINUX WIN : fast/borders/borderRadiusDashed04.html = IMAGE
     3568BUGWK65583 LINUX WIN : fast/borders/borderRadiusDashed05.html = IMAGE
     3569BUGWK65583 LINUX WIN : fast/borders/borderRadiusDashed06.html = IMAGE
     3570BUGWK65583 LINUX WIN : fast/borders/borderRadiusDotted04.html = IMAGE
     3571BUGWK65583 LINUX WIN : fast/borders/borderRadiusDotted05.html = IMAGE
     3572BUGWK65583 LINUX WIN : fast/borders/borderRadiusDotted06.html = IMAGE
     3573BUGWK65583 LINUX WIN : fast/borders/borderRadiusDouble04.html = IMAGE
     3574BUGWK65583 LINUX WIN : fast/borders/borderRadiusDouble05.html = IMAGE
     3575BUGWK65583 LINUX WIN : fast/borders/borderRadiusDouble06.html = IMAGE
     3576BUGWK65583 LINUX WIN : fast/borders/borderRadiusDouble07.html = IMAGE
     3577BUGWK65583 LINUX WIN : fast/borders/borderRadiusDouble08.html = IMAGE
     3578BUGWK65583 LINUX WIN : fast/borders/borderRadiusDouble09.html = IMAGE
     3579
     3580BUGWK65583 LINUX WIN : fast/borders/mixed-border-styles-radius.html = IMAGE+TEXT
     3581BUGWK65583 LINUX WIN : fast/borders/mixed-border-styles-radius2.html = IMAGE+TEXT
     3582BUGWK65583 LINUX WIN : fast/borders/mixed-border-styles.html = IMAGE+TEXT
     3583
     3584BUGWK65583 LINUX WIN : fast/frames/iframe-scaling-with-scroll.html = IMAGE
     3585
     3586BUGWK65583 LINUX WIN : fast/css/border-radius-non-negative.html = IMAGE
     3587
    35223588// Introduced in r92298, which might cause another test crashing.
    35233589BUGZMO SKIP : fast/loader/reload-zero-byte-plugin.html = FAIL
  • trunk/Source/WebCore/ChangeLog

    r93848 r93850  
     12011-08-25  Ben Wells  <benwells@chromium.org>
     2
     3        Use PATH_BASED_BORDER_RADIUS_DRAWING for skia
     4        https://bugs.webkit.org/show_bug.cgi?id=65583
     5
     6        This change brings in the new border rendering for Skia. To support this without aliasing the skia
     7        graphics context has been updated to support anti-aliased clipping around convex polygons and also
     8        anti-aliased clipping outside a path.
     9
     10        Reviewed by James Robinson.
     11
     12        * platform/graphics/skia/GraphicsContextSkia.cpp:
     13        (WebCore::GraphicsContext::clipOut):
     14        (WebCore::GraphicsContext::clipConvexPolygon):
     15        * platform/graphics/skia/PlatformContextSkia.cpp:
     16        (WebCore::PlatformContextSkia::clipPathAntiAliased):
     17        * rendering/RenderObject.h:
     18
    1192011-08-25  Luke Macpherson   <macpherson@chromium.org>
    220
  • trunk/Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp

    r93386 r93850  
    393393        return;
    394394
    395     const SkPath& path = *p.platformPath();
     395    SkPath path = *p.platformPath();
    396396    if (!isPathSkiaSafe(getCTM(), path))
    397397        return;
    398398
    399     platformContext()->canvas()->clipPath(path, SkRegion::kDifference_Op);
     399    path.toggleInverseFillType();
     400    platformContext()->clipPathAntiAliased(path);
    400401}
    401402
     
    480481
    481482    SkPath path;
     483    if (!isPathSkiaSafe(getCTM(), path))
     484        return;
     485
    482486    setPathFromConvexPoints(&path, numPoints, points);
    483     platformContext()->canvas()->clipPath(path);
     487    if (antialiased)
     488        platformContext()->clipPathAntiAliased(path);
     489    else
     490        platformContext()->canvas()->clipPath(path);
    484491}
    485492
  • trunk/Source/WebCore/platform/graphics/skia/PlatformContextSkia.cpp

    r93386 r93850  
    284284    if (!haveLayerOutstanding) {
    285285        SkRect bounds = clipPath.getBounds();
    286         canvas()->saveLayerAlpha(&bounds, 255, static_cast<SkCanvas::SaveFlags>(SkCanvas::kHasAlphaLayer_SaveFlag | SkCanvas::kFullColorLayer_SaveFlag | SkCanvas::kClipToLayer_SaveFlag));
     286        // If we are doing a clip outside of clipPath our layer needs to be for the whole
     287        // canvas, otherwise we can create a smaller layer.
     288        SkRect* layerBounds = 0;
     289        if (!clipPath.isInverseFillType())
     290            layerBounds = &bounds;
     291        canvas()->saveLayerAlpha(layerBounds, 255, static_cast<SkCanvas::SaveFlags>(SkCanvas::kHasAlphaLayer_SaveFlag | SkCanvas::kFullColorLayer_SaveFlag | SkCanvas::kClipToLayer_SaveFlag));
    287292        // Guards state modification during clipped operations.
    288293        // The state is popped in applyAntiAliasedClipPaths().
  • trunk/Source/WebCore/rendering/RenderObject.h

    r93547 r93850  
    3939#include <wtf/UnusedParam.h>
    4040
    41 #if USE(CG) || USE(CAIRO) || PLATFORM(QT)
     41#if USE(CG) || USE(CAIRO) || USE(SKIA) || PLATFORM(QT)
    4242#define HAVE_PATH_BASED_BORDER_RADIUS_DRAWING 1
    4343#endif
Note: See TracChangeset for help on using the changeset viewer.