- Revision
- 119831
- Author
- schen...@chromium.org
- Date
- 2012-06-08 08:01:00 -0700 (Fri, 08 Jun 2012)
Log Message
WebCore::ImageBuffer.cpp has broken color table code
https://bugs.webkit.org/show_bug.cgi?id=80321
Reviewed by Dirk Schulze.
Source/WebCore:
The code in ImageBuffer::transformColorSpace had two problems that are
fixed by this patch.
First, it was using member variables for data
that is static constant. This is incredibly wasteful, as every
ImageBuffer that is created (and we make a lot of them) gets its own
copy of the LUT and the table is initialized again and again. The
patch replaces this with a static local, with lazy evaluation, in
the method that uses the tables.
Second, the code for filling the table was mapping 255 to 254, thus
reducing the intensity and alpha of every image it pushed through a
color transform.
Test: svg/filters/color-space-conversion.svg
* platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::transformColorSpace):
* platform/graphics/ImageBuffer.h:
(ImageBuffer):
LayoutTests:
Temporarily marking Chromium tests expected to fail as a result of this patch. And a new test.
* platform/chromium/TestExpectations:
* svg/filters/color-space-conversion.svg:
* svg/filters/color-space-conversion-expected.svg:
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (119830 => 119831)
--- trunk/LayoutTests/ChangeLog 2012-06-08 14:44:04 UTC (rev 119830)
+++ trunk/LayoutTests/ChangeLog 2012-06-08 15:01:00 UTC (rev 119831)
@@ -1,3 +1,16 @@
+2012-06-08 Stephen Chenney <schen...@chromium.org>
+
+ WebCore::ImageBuffer.cpp has broken color table code
+ https://bugs.webkit.org/show_bug.cgi?id=80321
+
+ Reviewed by Dirk Schulze.
+
+ Temporarily marking Chromium tests expected to fail as a result of this patch. And a new test.
+
+ * platform/chromium/TestExpectations:
+ * svg/filters/color-space-conversion.svg:
+ * svg/filters/color-space-conversion-expected.svg:
+
2012-06-08 Qi Zhang <qi.2.zh...@nokia.com>
[Qt] fast/viewport/viewport-133.html fails
Modified: trunk/LayoutTests/platform/chromium/TestExpectations (119830 => 119831)
--- trunk/LayoutTests/platform/chromium/TestExpectations 2012-06-08 14:44:04 UTC (rev 119830)
+++ trunk/LayoutTests/platform/chromium/TestExpectations 2012-06-08 15:01:00 UTC (rev 119831)
@@ -1304,6 +1304,205 @@
BUGWK85107 : svg/as-image/svg-as-relative-image-with-explicit-size.html = PASS IMAGE
BUGWK85107 : svg/as-image/animated-svg-as-image.html = PASS IMAGE
+BUGWK80321 : platform/chromium/compositing/accelerated-drawing/svg-filters.html = IMAGE
+BUGWK80321 : svg/W3C-SVG-1.1-SE/filters-image-05-f.svg = IMAGE
+BUGWK80321 : svg/W3C-SVG-1.1/filters-color-01-b.svg = IMAGE
+BUGWK80321 : svg/W3C-SVG-1.1/filters-comptran-01-b.svg = IMAGE
+BUGWK80321 : svg/W3C-SVG-1.1/filters-conv-01-f.svg = IMAGE
+BUGWK80321 : svg/W3C-SVG-1.1/filters-diffuse-01-f.svg = IMAGE
+BUGWK80321 : svg/W3C-SVG-1.1/filters-gauss-01-b.svg = IMAGE
+BUGWK80321 : svg/W3C-SVG-1.1/filters-image-01-b.svg = IMAGE
+BUGWK80321 : svg/W3C-SVG-1.1/filters-light-01-f.svg = IMAGE
+BUGWK80321 : svg/W3C-SVG-1.1/filters-specular-01-f.svg = IMAGE
+BUGWK80321 : svg/W3C-SVG-1.1/filters-tile-01-b.svg = IMAGE
+BUGWK80321 : svg/W3C-SVG-1.1/filters-turb-01-f.svg = IMAGE
+BUGWK80321 : svg/css/path-gradient-stroke-shadow.svg = IMAGE
+BUGWK80321 : svg/css/rect-gradient-stroke-shadow.svg = IMAGE
+BUGWK80321 : svg/custom/convolution-crash.svg = IMAGE
+BUGWK80321 : svg/custom/empty-merge.svg = IMAGE
+BUGWK80321 : svg/custom/feDisplacementMap-01.svg = IMAGE
+BUGWK80321 : svg/custom/grayscale-gradient-mask-2.svg = IMAGE
+BUGWK80321 : svg/custom/image-with-transform-clip-filter.svg = IMAGE
+BUGWK80321 : svg/custom/non-opaque-filters.svg = IMAGE
+BUGWK80321 : svg/custom/recursive-filter.svg = IMAGE
+BUGWK80321 : svg/custom/text-filter.svg = IMAGE
+BUGWK80321 : svg/custom/use-disappears-after-style-update.svg = IMAGE
+BUGWK80321 : svg/custom/visibility-override-filter.svg = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEBlendElement-dom-in-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEColorMatrixElement-dom-in-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEColorMatrixElement-dom-type-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEColorMatrixElement-dom-values-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEColorMatrixElement-svgdom-in-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEColorMatrixElement-svgdom-type-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEColorMatrixElement-svgdom-values-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-bias-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-divisor-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-edgeMode-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-in-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-kernelMatrix-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-kernelUnitLength-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-order-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-preserveAlpha-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-bias-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-divisor-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-edgeMode-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-in-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-kernelMatrix-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-kernelUnitLength-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-order-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-preserveAlpha-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEDisplacementMapElement-dom-in-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEDisplacementMapElement-dom-in2-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEDisplacementMapElement-dom-scale-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEDisplacementMapElement-dom-xChannelSelector-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEDisplacementMapElement-dom-yChannelSelector-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEDisplacementMapElement-svgdom-in-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEDisplacementMapElement-svgdom-in2-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEDisplacementMapElement-svgdom-scale-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEDisplacementMapElement-svgdom-xChannelSelector-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEDisplacementMapElement-svgdom-yChannelSelector-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEGaussianBlurElement-dom-in-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEGaussianBlurElement-dom-stdDeviation-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEGaussianBlurElement-dom-stdDeviation-call.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEGaussianBlurElement-svgdom-in-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEImageElement-dom-preserveAspectRatio-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFEImageElement-svgdom-preserveAspectRatio-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpecularLightingElement-dom-in-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularConstant-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularExponent-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpecularLightingElement-inherit-lighting-color-css-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpecularLightingElement-lighting-color-css-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-in-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularConstant-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularExponent-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop.html = IMAGE
+BUGWK80231 : svg/dynamic-updates/SVGFETileElement-dom-in-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFETileElement-svgdom-in-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFETurbulenceElement-dom-numOctaves-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFETurbulenceElement-dom-seed-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFETurbulenceElement-dom-stitchTiles-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFETurbulenceElement-dom-type-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFETurbulenceElement-svgdom-numOctaves-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFETurbulenceElement-svgdom-seed-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFETurbulenceElement-svgdom-stitchTiles-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFETurbulenceElement-svgdom-type-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-dom-height-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-dom-width-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-dom-x-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-dom-y-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-svgdom-height-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-svgdom-width-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-svgdom-x-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterElement-svgdom-y-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-height-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-result-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-width-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-x-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-y-attr.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-height-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-result-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-width-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-x-prop.html = IMAGE
+BUGWK80321 : svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-y-prop.html = IMAGE
+BUGWK80321 : svg/filters/animate-fill.svg = IMAGE
+BUGWK80321 : svg/filters/big-sized-filter-2.svg = IMAGE
+BUGWK80321 : svg/filters/container-with-filters.svg = IMAGE
+BUGWK80321 : svg/filters/feColorMatrix-default-type.svg = IMAGE
+BUGWK80321 : svg/filters/feColorMatrix-offset.svg = IMAGE
+BUGWK80321 : svg/filters/feColorMatrix-saturate.svg = IMAGE
+BUGWK80321 : svg/filters/feColorMatrix-values.svg = IMAGE
+BUGWK80321 : svg/filters/feComposite.svg = IMAGE
+BUGWK80321 : svg/filters/feConvolveFilter-y-bounds.svg = IMAGE
+BUGWK80321 : svg/filters/feDisplacementMap.svg = IMAGE
+BUGWK80321 : svg/filters/feGaussianBlur.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-animated-transform-on-target-rect.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-multiple-targets-id-change.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-position.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-preserveAspectratio.svg = IMAGE
+BUGWK80231 : svg/filters/feImage-reference-invalidation.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-subregions-preseveAspectRatio-none-with-viewBox.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-subregions-preseveAspectRatio-none.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-subregions.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-target-add-to-document.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-target-attribute-change-with-use-indirection-2.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-target-attribute-change-with-use-indirection.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-target-attribute-change.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-target-changes-id.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-target-id-change.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-target-inline-style-change.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-target-property-change.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-target-reappend-to-document.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-target-remove-from-document.svg = IMAGE
+BUGWK80321 : svg/filters/feImage-target-style-change.svg = IMAGE
+BUGWK80321 : svg/filters/feLighting-crash.svg = IMAGE
+BUGWK80321 : svg/filters/feMerge.svg = IMAGE
+BUGWK80321 : svg/filters/feOffset.svg = IMAGE
+BUGWK80321 : svg/filters/feTile.svg = IMAGE
+BUGWK80321 : svg/filters/filter-on-tspan.svg = IMAGE
+BUGWK80321 : svg/filters/filter-placement-issue.svg = IMAGE
+BUGWK80321 : svg/filters/filter-refresh.svg = IMAGE
+BUGWK80321 : svg/filters/filter-rounding-issues.svg = IMAGE
+BUGWK80321 : svg/filters/filter-source-position.svg = IMAGE
+BUGWK80321 : svg/filters/filter-width-update.svg = IMAGE
+BUGWK80321 : svg/filters/filterRes.svg = IMAGE
+BUGWK80321 : svg/filters/filterRes1.svg = IMAGE
+BUGWK80321 : svg/filters/filterRes2.svg = IMAGE
+BUGWK80321 : svg/filters/filterRes3.svg = IMAGE
+BUGWK80321 : svg/filters/filteredImage.svg = IMAGE
+BUGWK80321 : svg/filters/parent-children-with-same-filter.svg = IMAGE
+BUGWK80321 : svg/filters/shadow-on-filter.svg = IMAGE
+BUGWK80321 : svg/filters/shadow-on-rect-with-filter.svg = IMAGE
+BUGWK80321 : svg/filters/subRegion-in-userSpace.svg = IMAGE
+BUGWK80321 : svg/filters/subRegion-one-effect.svg = IMAGE
+BUGWK80321 : svg/filters/subRegion-two-effects.svg = IMAGE
+BUGWK80321 : svg/foreignObject/filter.html = IMAGE
+BUGWK80321 : svg/repaint/filter-child-repaint.svg = IMAGE
+BUGWK80322 : svg/repaint/filter-repaint.svg = IMAGE
+
// -----------------------------------------------------------------
// End SVG TESTS
// -----------------------------------------------------------------
Added: trunk/LayoutTests/svg/filters/color-space-conversion-expected.svg (0 => 119831)
--- trunk/LayoutTests/svg/filters/color-space-conversion-expected.svg (rev 0)
+++ trunk/LayoutTests/svg/filters/color-space-conversion-expected.svg 2012-06-08 15:01:00 UTC (rev 119831)
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+ <rect x="5" y="5" width="20" height="20" fill="rgb(0,0,0)"/>
+ <rect x="25" y="5" width="20" height="20" fill="rgb(102,0,0)"/>
+ <rect x="45" y="5" width="20" height="20" fill="rgb(204,0,0)"/>
+ <rect x="65" y="5" width="20" height="20" fill="rgb(255,0,0)"/>
+ <rect x="25" y="25" width="20" height="20" fill="rgb(0,102,0)"/>
+ <rect x="45" y="25" width="20" height="20" fill="rgb(0,204,0)"/>
+ <rect x="65" y="25" width="20" height="20" fill="rgb(0,255,0)"/>
+ <rect x="25" y="45" width="20" height="20" fill="rgb(0,0,102)"/>
+ <rect x="45" y="45" width="20" height="20" fill="rgb(0,0,204)"/>
+ <rect x="65" y="45" width="20" height="20" fill="rgb(0,0,255)"/>
+ <rect x="85" y="45" width="20" height="20" fill="rgb(255,255,255)"/>
+ </g>
+</svg>
Added: trunk/LayoutTests/svg/filters/color-space-conversion.svg (0 => 119831)
--- trunk/LayoutTests/svg/filters/color-space-conversion.svg (rev 0)
+++ trunk/LayoutTests/svg/filters/color-space-conversion.svg 2012-06-08 15:01:00 UTC (rev 119831)
@@ -0,0 +1,20 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <filter id="filter">
+ <feOffset dx="5" dy="5"/>
+ </filter>
+ </defs>
+ <g filter="url(#filter)">
+ <rect x="0" y="0" width="20" height="20" fill="rgb(0,0,0)"/>
+ <rect x="20" y="0" width="20" height="20" fill="rgb(102,0,0)"/>
+ <rect x="40" y="0" width="20" height="20" fill="rgb(204,0,0)"/>
+ <rect x="60" y="0" width="20" height="20" fill="rgb(255,0,0)"/>
+ <rect x="20" y="20" width="20" height="20" fill="rgb(0,102,0)"/>
+ <rect x="40" y="20" width="20" height="20" fill="rgb(0,204,0)"/>
+ <rect x="60" y="20" width="20" height="20" fill="rgb(0,255,0)"/>
+ <rect x="20" y="40" width="20" height="20" fill="rgb(0,0,102)"/>
+ <rect x="40" y="40" width="20" height="20" fill="rgb(0,0,204)"/>
+ <rect x="60" y="40" width="20" height="20" fill="rgb(0,0,255)"/>
+ <rect x="80" y="40" width="20" height="20" fill="rgb(255,255,255)"/>
+ </g>
+</svg>
Modified: trunk/Source/WebCore/ChangeLog (119830 => 119831)
--- trunk/Source/WebCore/ChangeLog 2012-06-08 14:44:04 UTC (rev 119830)
+++ trunk/Source/WebCore/ChangeLog 2012-06-08 15:01:00 UTC (rev 119831)
@@ -1,3 +1,31 @@
+2012-06-08 Stephen Chenney <schen...@chromium.org>
+
+ WebCore::ImageBuffer.cpp has broken color table code
+ https://bugs.webkit.org/show_bug.cgi?id=80321
+
+ Reviewed by Dirk Schulze.
+
+ The code in ImageBuffer::transformColorSpace had two problems that are
+ fixed by this patch.
+
+ First, it was using member variables for data
+ that is static constant. This is incredibly wasteful, as every
+ ImageBuffer that is created (and we make a lot of them) gets its own
+ copy of the LUT and the table is initialized again and again. The
+ patch replaces this with a static local, with lazy evaluation, in
+ the method that uses the tables.
+
+ Second, the code for filling the table was mapping 255 to 254, thus
+ reducing the intensity and alpha of every image it pushed through a
+ color transform.
+
+ Test: svg/filters/color-space-conversion.svg
+
+ * platform/graphics/ImageBuffer.cpp:
+ (WebCore::ImageBuffer::transformColorSpace):
+ * platform/graphics/ImageBuffer.h:
+ (ImageBuffer):
+
2012-06-08 Alexei Filippov <alex...@chromium.org>
Web Inspector: Better labels positioning on the memory pie chart
Modified: trunk/Source/WebCore/platform/graphics/ImageBuffer.cpp (119830 => 119831)
--- trunk/Source/WebCore/platform/graphics/ImageBuffer.cpp 2012-06-08 14:44:04 UTC (rev 119830)
+++ trunk/Source/WebCore/platform/graphics/ImageBuffer.cpp 2012-06-08 15:01:00 UTC (rev 119831)
@@ -35,6 +35,9 @@
#if !USE(CG)
void ImageBuffer::transformColorSpace(ColorSpace srcColorSpace, ColorSpace dstColorSpace)
{
+ DEFINE_STATIC_LOCAL(Vector<int>, deviceRgbLUT, ());
+ DEFINE_STATIC_LOCAL(Vector<int>, linearRgbLUT, ());
+
if (srcColorSpace == dstColorSpace)
return;
@@ -44,27 +47,27 @@
return;
if (dstColorSpace == ColorSpaceLinearRGB) {
- if (m_linearRgbLUT.isEmpty()) {
+ if (linearRgbLUT.isEmpty()) {
for (unsigned i = 0; i < 256; i++) {
float color = i / 255.0f;
color = (color <= 0.04045f ? color / 12.92f : pow((color + 0.055f) / 1.055f, 2.4f));
color = std::max(0.0f, color);
color = std::min(1.0f, color);
- m_linearRgbLUT.append(static_cast<int>(color * 255));
+ linearRgbLUT.append(static_cast<int>(round(color * 255)));
}
}
- platformTransformColorSpace(m_linearRgbLUT);
+ platformTransformColorSpace(linearRgbLUT);
} else if (dstColorSpace == ColorSpaceDeviceRGB) {
- if (m_deviceRgbLUT.isEmpty()) {
+ if (deviceRgbLUT.isEmpty()) {
for (unsigned i = 0; i < 256; i++) {
float color = i / 255.0f;
color = (powf(color, 1.0f / 2.4f) * 1.055f) - 0.055f;
color = std::max(0.0f, color);
color = std::min(1.0f, color);
- m_deviceRgbLUT.append(static_cast<int>(color * 255));
+ deviceRgbLUT.append(static_cast<int>(round(color * 255)));
}
}
- platformTransformColorSpace(m_deviceRgbLUT);
+ platformTransformColorSpace(deviceRgbLUT);
}
}
#endif // USE(CG)
Modified: trunk/Source/WebCore/platform/graphics/ImageBuffer.h (119830 => 119831)
--- trunk/Source/WebCore/platform/graphics/ImageBuffer.h 2012-06-08 14:44:04 UTC (rev 119830)
+++ trunk/Source/WebCore/platform/graphics/ImageBuffer.h 2012-06-08 15:01:00 UTC (rev 119831)
@@ -140,11 +140,6 @@
float m_resolutionScale;
OwnPtr<GraphicsContext> m_context;
-#if !USE(CG)
- Vector<int> m_linearRgbLUT;
- Vector<int> m_deviceRgbLUT;
-#endif
-
// This constructor will place its success into the given out-variable
// so that create() knows when it should return failure.
ImageBuffer(const IntSize&, float resolutionScale, ColorSpace, RenderingMode, DeferralMode, bool& success);