Title: [110221] trunk
Revision
110221
Author
timothy_hor...@apple.com
Date
2012-03-08 15:32:01 -0800 (Thu, 08 Mar 2012)

Log Message

No-op filter changes color output because of colorspace issues
https://bugs.webkit.org/show_bug.cgi?id=72411
<rdar://problem/10588374>

Reviewed by Dean Jackson.

Redefine "linear RGB" color space on Mac to mean linearized sRGB, instead of linear
Generic RGB. This makes existing CG color matching equivalent to what other ports do via
ImageBuffer::transformColorSpace (which only adjusts gamma, as we will now). Previously,
we were also causing actual (non-gamma) color adjustments which were not reversible.

No new tests, covered by all existing SVG and CSS filter tests.

* Resources/linearSRGB.icc: Added.
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::linearRGBColorSpaceRef):

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/platform/mac/test_expectations.txt (110220 => 110221)


--- trunk/LayoutTests/platform/mac/test_expectations.txt	2012-03-08 23:28:02 UTC (rev 110220)
+++ trunk/LayoutTests/platform/mac/test_expectations.txt	2012-03-08 23:32:01 UTC (rev 110221)
@@ -392,3 +392,310 @@
 BUGWK75568 : tables/mozilla/bugs/bug1188.html = TEXT
 
 BUGWK80531 : fast/forms/textfield-overflow.html = IMAGE+TEXT
+
+// Need pixel rebaselines after https://bugs.webkit.org/show_bug.cgi?id=80571 is fixed
+// Changes should be limited to color space changes
+BUGWK80630: css3/filters/add-filter-rendering.html = IMAGE
+BUGWK80630: css3/filters/crash-filter-change.html = IMAGE
+BUGWK80630: css3/filters/crash-hw-sw-switch.html = IMAGE
+BUGWK80630: css3/filters/effect-blur.html = IMAGE
+BUGWK80630: css3/filters/effect-brightness.html = IMAGE
+BUGWK80630: css3/filters/effect-combined.html = IMAGE
+BUGWK80630: css3/filters/effect-contrast.html = IMAGE
+BUGWK80630: css3/filters/effect-drop-shadow.html = IMAGE
+BUGWK80630: css3/filters/effect-grayscale.html = IMAGE
+BUGWK80630: css3/filters/effect-hue-rotate.html = IMAGE
+BUGWK80630: css3/filters/effect-invert.html = IMAGE
+BUGWK80630: css3/filters/effect-opacity.html = IMAGE
+BUGWK80630: css3/filters/effect-saturate.html = IMAGE
+BUGWK80630: css3/filters/effect-sepia.html = IMAGE
+BUGWK80630: css3/filters/filter-region.html = IMAGE
+BUGWK80630: css3/filters/filter-repaint.html = IMAGE
+BUGWK80630: css3/filters/filter-with-transform.html = IMAGE
+BUGWK80630: css3/filters/filtered-inline.html = IMAGE
+BUGWK80630: css3/filters/multiple-filters-invalidation.html = IMAGE
+BUGWK80630: css3/filters/nested-filter.html = IMAGE
+BUGWK80630: css3/filters/regions-expanding.html = IMAGE
+BUGWK80630: css3/filters/simple-filter-rendering.html = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1-SE/filters-image-03-f.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1-SE/filters-image-05-f.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-blend-01-b.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-color-01-b.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-composite-02-b.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-comptran-01-b.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-conv-01-f.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-diffuse-01-f.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-displace-01-f.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-example-01-b.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-gauss-01-b.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-image-01-b.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-morph-01-f.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-offset-01-b.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-specular-01-f.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-tile-01-b.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-turb-01-f.svg = IMAGE
+BUGWK80630: svg/W3C-SVG-1.1/filters-turb-02-f.svg = IMAGE
+BUGWK80630: svg/batik/filters/feTile.svg = IMAGE
+BUGWK80630: svg/batik/filters/filterRegions.svg = IMAGE
+BUGWK80630: svg/batik/text/textEffect.svg = IMAGE
+BUGWK80630: svg/batik/text/textEffect3.svg = IMAGE
+BUGWK80630: svg/css/path-gradient-stroke-shadow.svg = IMAGE
+BUGWK80630: svg/css/rect-gradient-stroke-shadow.svg = IMAGE
+BUGWK80630: svg/custom/convolution-crash.svg = IMAGE
+BUGWK80630: svg/custom/empty-merge.svg = IMAGE
+BUGWK80630: svg/custom/feComponentTransfer-Discrete.svg = IMAGE
+BUGWK80630: svg/custom/feComponentTransfer-Gamma.svg = IMAGE
+BUGWK80630: svg/custom/feComponentTransfer-Linear.svg = IMAGE
+BUGWK80630: svg/custom/feComponentTransfer-Table.svg = IMAGE
+BUGWK80630: svg/custom/feDisplacementMap-01.svg = IMAGE
+BUGWK80630: svg/custom/grayscale-gradient-mask-2.svg = IMAGE
+BUGWK80630: svg/custom/non-opaque-filters.svg = IMAGE
+BUGWK80630: svg/custom/recursive-filter.svg = IMAGE
+BUGWK80630: svg/custom/resource-invalidate-on-target-update.svg = IMAGE
+BUGWK80630: svg/custom/text-filter.svg = IMAGE
+BUGWK80630: svg/custom/use-disappears-after-style-update.svg = IMAGE
+BUGWK80630: svg/custom/visibility-override-filter.svg = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEBlendElement-dom-in-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEColorMatrixElement-dom-in-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEColorMatrixElement-dom-type-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEColorMatrixElement-dom-values-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEColorMatrixElement-svgdom-in-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEColorMatrixElement-svgdom-type-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEColorMatrixElement-svgdom-values-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFECompositeElement-dom-in-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFECompositeElement-dom-in2-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFECompositeElement-dom-k1-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFECompositeElement-dom-k2-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFECompositeElement-dom-k3-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFECompositeElement-dom-k4-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFECompositeElement-dom-operator-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFECompositeElement-svgdom-in-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFECompositeElement-svgdom-in2-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFECompositeElement-svgdom-k1-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFECompositeElement-svgdom-k2-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFECompositeElement-svgdom-k3-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFECompositeElement-svgdom-k4-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFECompositeElement-svgdom-operator-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-bias-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-divisor-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-edgeMode-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-in-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-kernelMatrix-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-kernelUnitLength-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-order-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-preserveAlpha-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-targetX-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-targetY-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-bias-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-divisor-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-edgeMode-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-in-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-kernelMatrix-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-kernelUnitLength-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-order-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-preserveAlpha-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-targetX-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-targetY-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-diffuseConstant-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-in-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-lighting-color-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-surfaceScale-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDiffuseLightingElement-inherit-lighting-color-css-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDiffuseLightingElement-lighting-color-css-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-diffuseConstant-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-in-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-surfaceScale-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDisplacementMapElement-dom-in-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDisplacementMapElement-dom-in2-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDisplacementMapElement-dom-scale-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDisplacementMapElement-dom-xChannelSelector-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDisplacementMapElement-dom-yChannelSelector-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDisplacementMapElement-svgdom-in-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDisplacementMapElement-svgdom-in2-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDisplacementMapElement-svgdom-scale-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDisplacementMapElement-svgdom-xChannelSelector-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDisplacementMapElement-svgdom-yChannelSelector-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDistantLightElement-dom-azimuth-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDistantLightElement-dom-elevation-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDistantLightElement-svgdom-azimuth-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDistantLightElement-svgdom-elevation-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDropShadowElement-dom-dx-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDropShadowElement-dom-dy-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDropShadowElement-dom-in-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDropShadowElement-dom-shadow-color-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDropShadowElement-dom-shadow-opacity-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDropShadowElement-dom-stdDeviation-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDropShadowElement-svgdom-dx-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDropShadowElement-svgdom-dy-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDropShadowElement-svgdom-in-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDropShadowElement-svgdom-shadow-color-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDropShadowElement-svgdom-shadow-opacity-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEDropShadowElement-svgdom-stdDeviation-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEGaussianBlurElement-dom-in-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEGaussianBlurElement-dom-stdDeviation-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEGaussianBlurElement-dom-stdDeviation-call.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEGaussianBlurElement-svgdom-in-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEImageElement-dom-preserveAspectRatio-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEImageElement-svgdom-preserveAspectRatio-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEMergeNodeElement-dom-in-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEMergeNodeElement-svgdom-in-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEMorphologyElement-dom-in-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEMorphologyElement-svgdom-in-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEOffsetElement-dom-dx-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEOffsetElement-dom-dy-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEOffsetElement-dom-in-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEOffsetElement-svgdom-dx-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEOffsetElement-svgdom-dy-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEOffsetElement-svgdom-in-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEPointLightElement-dom-x-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEPointLightElement-dom-y-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEPointLightElement-dom-z-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEPointLightElement-svgdom-x-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEPointLightElement-svgdom-y-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFEPointLightElement-svgdom-z-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpecularLightingElement-dom-in-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularConstant-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularExponent-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpecularLightingElement-inherit-lighting-color-css-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpecularLightingElement-lighting-color-css-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-in-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularConstant-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularExponent-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFETileElement-dom-in-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFETileElement-svgdom-in-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFETurbulenceElement-dom-baseFrequency-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFETurbulenceElement-dom-numOctaves-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFETurbulenceElement-dom-seed-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFETurbulenceElement-dom-stitchTiles-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFETurbulenceElement-dom-type-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFETurbulenceElement-svgdom-baseFrequency-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFETurbulenceElement-svgdom-numOctaves-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFETurbulenceElement-svgdom-seed-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFETurbulenceElement-svgdom-stitchTiles-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFETurbulenceElement-svgdom-type-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-dom-height-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-dom-width-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-dom-x-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-dom-y-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-svgdom-height-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-svgdom-width-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-svgdom-x-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterElement-svgdom-y-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-height-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-result-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-width-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-x-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-y-attr.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-height-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-result-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-width-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-x-prop.html = IMAGE
+BUGWK80630: svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-y-prop.html = IMAGE
+BUGWK80630: svg/filters/animate-fill.svg = IMAGE
+BUGWK80630: svg/filters/big-sized-filter-2.svg = IMAGE
+BUGWK80630: svg/filters/big-sized-filter.svg = IMAGE
+BUGWK80630: svg/filters/feColorMatrix-default-type.svg = IMAGE
+BUGWK80630: svg/filters/feColorMatrix-offset.svg = IMAGE
+BUGWK80630: svg/filters/feColorMatrix-saturate.svg = IMAGE
+BUGWK80630: svg/filters/feColorMatrix-values.svg = IMAGE
+BUGWK80630: svg/filters/feComposite.svg = IMAGE
+BUGWK80630: svg/filters/feConvolveFilter-y-bounds.svg = IMAGE
+BUGWK80630: svg/filters/feDisplacementMap.svg = IMAGE
+BUGWK80630: svg/filters/feDropShadow.svg = IMAGE
+BUGWK80630: svg/filters/feGaussianBlur.svg = IMAGE
+BUGWK80630: svg/filters/feImage-animated-transform-on-target-rect.svg = IMAGE
+BUGWK80630: svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-objectBoundingBox.svg = IMAGE
+BUGWK80630: svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-userSpaceOnUse.svg = IMAGE
+BUGWK80630: svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-objectBoundingBox.svg = IMAGE
+BUGWK80630: svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-userSpaceOnUse.svg = IMAGE
+BUGWK80630: svg/filters/feImage-late-indirect-update.svg = IMAGE
+BUGWK80630: svg/filters/feImage-multiple-targets-id-change.svg = IMAGE
+BUGWK80630: svg/filters/feImage-position.svg = IMAGE
+BUGWK80630: svg/filters/feImage-preserveAspectratio.svg = IMAGE
+BUGWK80630: svg/filters/feImage-reference-invalidation.svg = IMAGE
+BUGWK80630: svg/filters/feImage-reference-svg-primitive.svg = IMAGE
+BUGWK80630: svg/filters/feImage-subregions-preseveAspectRatio-none-with-viewBox.svg = IMAGE
+BUGWK80630: svg/filters/feImage-subregions-preseveAspectRatio-none.svg = IMAGE
+BUGWK80630: svg/filters/feImage-subregions.svg = IMAGE
+BUGWK80630: svg/filters/feImage-target-add-to-document.svg = IMAGE
+BUGWK80630: svg/filters/feImage-target-attribute-change-with-use-indirection-2.svg = IMAGE
+BUGWK80630: svg/filters/feImage-target-attribute-change-with-use-indirection.svg = IMAGE
+BUGWK80630: svg/filters/feImage-target-attribute-change.svg = IMAGE
+BUGWK80630: svg/filters/feImage-target-changes-id.svg = IMAGE
+BUGWK80630: svg/filters/feImage-target-id-change.svg = IMAGE
+BUGWK80630: svg/filters/feImage-target-inline-style-change.svg = IMAGE
+BUGWK80630: svg/filters/feImage-target-property-change.svg = IMAGE
+BUGWK80630: svg/filters/feImage-target-reappend-to-document.svg = IMAGE
+BUGWK80630: svg/filters/feImage-target-remove-from-document.svg = IMAGE
+BUGWK80630: svg/filters/feImage-target-style-change.svg = IMAGE
+BUGWK80630: svg/filters/feLighting-crash.svg = IMAGE
+BUGWK80630: svg/filters/feMerge.svg = IMAGE
+BUGWK80630: svg/filters/feOffset.svg = IMAGE
+BUGWK80630: svg/filters/feTile.svg = IMAGE
+BUGWK80630: svg/filters/filter-clip.svg = IMAGE
+BUGWK80630: svg/filters/filter-on-tspan.svg = IMAGE
+BUGWK80630: svg/filters/filter-placement-issue.svg = IMAGE
+BUGWK80630: svg/filters/filter-refresh.svg = IMAGE
+BUGWK80630: svg/filters/filter-rounding-issues.svg = IMAGE
+BUGWK80630: svg/filters/filter-source-position.svg = IMAGE
+BUGWK80630: svg/filters/filter-width-update.svg = IMAGE
+BUGWK80630: svg/filters/filterRes.svg = IMAGE
+BUGWK80630: svg/filters/filterRes1.svg = IMAGE
+BUGWK80630: svg/filters/filterRes2.svg = IMAGE
+BUGWK80630: svg/filters/filterRes3.svg = IMAGE
+BUGWK80630: svg/filters/filteredImage.svg = IMAGE
+BUGWK80630: svg/filters/parent-children-with-same-filter.svg = IMAGE
+BUGWK80630: svg/filters/shadow-on-filter.svg = IMAGE
+BUGWK80630: svg/filters/shadow-on-rect-with-filter.svg = IMAGE
+BUGWK80630: svg/filters/subRegion-in-userSpace.svg = IMAGE
+BUGWK80630: svg/filters/subRegion-one-effect.svg = IMAGE
+BUGWK80630: svg/filters/subRegion-two-effects.svg = IMAGE
+BUGWK80630: svg/foreignObject/filter.html = IMAGE
+BUGWK80630: svg/repaint/filter-child-repaint.svg = IMAGE
+BUGWK80630: svg/repaint/filter-repaint.svg = IMAGE
+BUGWK80630: svg/webarchive/svg-feimage-subresources.svg = IMAGE

Modified: trunk/Source/WebCore/ChangeLog (110220 => 110221)


--- trunk/Source/WebCore/ChangeLog	2012-03-08 23:28:02 UTC (rev 110220)
+++ trunk/Source/WebCore/ChangeLog	2012-03-08 23:32:01 UTC (rev 110221)
@@ -1,3 +1,23 @@
+2012-03-08  Tim Horton  <timothy_hor...@apple.com>
+
+        No-op filter changes color output because of colorspace issues
+        https://bugs.webkit.org/show_bug.cgi?id=72411
+        <rdar://problem/10588374>
+
+        Reviewed by Dean Jackson.
+
+        Redefine "linear RGB" color space on Mac to mean linearized sRGB, instead of linear
+        Generic RGB. This makes existing CG color matching equivalent to what other ports do via
+        ImageBuffer::transformColorSpace (which only adjusts gamma, as we will now). Previously,
+        we were also causing actual (non-gamma) color adjustments which were not reversible.
+
+        No new tests, covered by all existing SVG and CSS filter tests.
+
+        * Resources/linearSRGB.icc: Added.
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/graphics/cg/GraphicsContextCG.cpp:
+        (WebCore::linearRGBColorSpaceRef):
+
 2012-03-08  Beth Dakin  <bda...@apple.com>
 
         https://bugs.webkit.org/show_bug.cgi?id=80463

Added: trunk/Source/WebCore/Resources/linearSRGB.icc


(Binary files differ)
Property changes on: trunk/Source/WebCore/Resources/linearSRGB.icc ___________________________________________________________________

Added: svn:mime-type

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (110220 => 110221)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2012-03-08 23:28:02 UTC (rev 110220)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2012-03-08 23:32:01 UTC (rev 110221)
@@ -751,6 +751,7 @@
 		2D8FEBDD143E3EF70072502B /* CSSCrossfadeValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D8FEBDB143E3EF70072502B /* CSSCrossfadeValue.h */; };
 		2D9066060BE141D400956998 /* LayoutState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D9066040BE141D400956998 /* LayoutState.cpp */; };
 		2D9066070BE141D400956998 /* LayoutState.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D9066050BE141D400956998 /* LayoutState.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		2D9F0E1314FF1CBF00BA0FF7 /* linearSRGB.icc in Resources */ = {isa = PBXBuildFile; fileRef = 2D9F0E1214FF1CBF00BA0FF7 /* linearSRGB.icc */; };
 		2E0888D41148848A00AF4265 /* JSDOMFormData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E0888D21148848A00AF4265 /* JSDOMFormData.cpp */; };
 		2E0888D51148848A00AF4265 /* JSDOMFormData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E0888D31148848A00AF4265 /* JSDOMFormData.h */; };
 		2E0888E6114884E200AF4265 /* JSDOMFormDataCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E0888E5114884E200AF4265 /* JSDOMFormDataCustom.cpp */; };
@@ -7587,6 +7588,7 @@
 		2D9066050BE141D400956998 /* LayoutState.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = LayoutState.h; sourceTree = "<group>"; };
 		2D90660B0665D937006B6F1A /* ClipboardMac.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = ClipboardMac.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
 		2D90660C0665D937006B6F1A /* ClipboardMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ClipboardMac.mm; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
+		2D9F0E1214FF1CBF00BA0FF7 /* linearSRGB.icc */ = {isa = PBXFileReference; lastKnownFileType = file; path = linearSRGB.icc; sourceTree = "<group>"; };
 		2E0888C3114883A900AF4265 /* DOMFormData.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMFormData.idl; sourceTree = "<group>"; };
 		2E0888D21148848A00AF4265 /* JSDOMFormData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMFormData.cpp; sourceTree = "<group>"; };
 		2E0888D31148848A00AF4265 /* JSDOMFormData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMFormData.h; sourceTree = "<group>"; };
@@ -13774,6 +13776,7 @@
 				85136C8A0AED665800F90A3D /* eastWestResizeCursor.png */,
 				85136C8B0AED665800F90A3D /* helpCursor.png */,
 				93153BE314195B2900FCF5BE /* inputSpeech.png */,
+				2D9F0E1214FF1CBF00BA0FF7 /* linearSRGB.icc */,
 				85136C8C0AED665800F90A3D /* linkCursor.png */,
 				BCAD1808131C7A0D00990406 /* Localizable.strings */,
 				93153BE114195A5700FCF5BE /* missingImage.png */,
@@ -24700,6 +24703,7 @@
 				85136CA80AED665900F90A3D /* westResizeCursor.png in Resources */,
 				1AB1AE7A0C051FDE00139F4F /* zoomInCursor.png in Resources */,
 				1AB1AE7B0C051FDE00139F4F /* zoomOutCursor.png in Resources */,
+				2D9F0E1314FF1CBF00BA0FF7 /* linearSRGB.icc in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

Modified: trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp (110220 => 110221)


--- trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp	2012-03-08 23:28:02 UTC (rev 110220)
+++ trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp	2012-03-08 23:32:01 UTC (rev 110221)
@@ -73,6 +73,24 @@
 using namespace std;
 
 namespace WebCore {
+    
+static CGColorSpaceRef createLinearSRGBColorSpace()
+{
+    // If we fail to load the linearized sRGB ICC profile, fall back to DeviceRGB.
+    CGColorSpaceRef linearSRGBSpace = deviceRGBColorSpaceRef();
+    
+    CFBundleRef webCoreBundle = CFBundleGetBundleWithIdentifier(CFSTR("com.apple.WebCore"));
+    RetainPtr<CFURLRef> iccProfileURL(CFBundleCopyResourceURL(webCoreBundle, CFSTR("linearSRGB"), CFSTR("icc"), 0));
+    CFDataRef iccProfileData;
+    
+    if (iccProfileURL && CFURLCreateDataAndPropertiesFromResource(0, iccProfileURL.get(), &iccProfileData, 0, 0, 0))
+        linearSRGBSpace = CGColorSpaceCreateWithICCProfile(iccProfileData);
+    
+    if (iccProfileData)
+        CFRelease(iccProfileData);
+    
+    return linearSRGBSpace;
+}
 
 static void setCGFillColor(CGContextRef context, const Color& color, ColorSpace colorSpace)
 {
@@ -103,12 +121,12 @@
 
 CGColorSpaceRef linearRGBColorSpaceRef()
 {
-    // FIXME: Windows should be able to use kCGColorSpaceGenericRGBLinear, this is tracked by http://webkit.org/b/31363.
+    // FIXME: Windows should be able to use linear sRGB, this is tracked by http://webkit.org/b/80000.
 #if PLATFORM(WIN)
     return deviceRGBColorSpaceRef();
 #else
-    static CGColorSpaceRef linearRGBSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGBLinear);
-    return linearRGBSpace;
+    static CGColorSpaceRef linearSRGBSpace = createLinearSRGBColorSpace();
+    return linearSRGBSpace;
 #endif
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to