WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-109464-20130227143138.patch (text/plain), 22.83 KB, created by
Michelangelo De Simone
on 2013-02-27 14:35:24 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Michelangelo De Simone
Created:
2013-02-27 14:35:24 PST
Size:
22.83 KB
patch
obsolete
>Subversion Revision: 144216 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index c4f7dc8ae524ad631efc12154ad2def3da08883c..3375128764d88c512a6ebbe9203235cd00dcd115 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,26 @@ >+2013-02-27 Michelangelo De Simone <michelangelo@webkit.org> >+ >+ [CSS Shaders] Implement hue and saturation non-separable blend modes >+ https://bugs.webkit.org/show_bug.cgi?id=109464 >+ >+ Added the following GLSL helper functions to the CustomFilterValidatedProgram: >+ >+ - css_Sat(C): returns the saturation for the color C >+ - css_SetSat(C, s): sets the saturation s on the color C >+ - css_SetSatHelper(Cmin, Cmid, Cmax, s): helper function for css_SetSat >+ >+ The above functions are being used for the "hue" and "saturation" non-separable >+ blend modes, the relevant spec for such modes is at URL: >+ https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html#blendingnonseparable >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Tests: css3/filters/custom/custom-filter-nonseparable-blend-mode-hue.html >+ css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation.html >+ >+ * platform/graphics/filters/CustomFilterValidatedProgram.cpp: >+ (WebCore::CustomFilterValidatedProgram::blendFunctionString): >+ > 2013-02-26 Alexey Proskuryakov <ap@apple.com> > > Don't add a body to platform request until necessary >diff --git a/Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp b/Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp >index 58ebe34d96df64506a0d944aeccc4b829667c722..1a1843453c9afe732c96a9898bd5fa81c97b7716 100644 >--- a/Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp >+++ b/Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp >@@ -292,6 +292,7 @@ String CustomFilterValidatedProgram::blendFunctionString(BlendMode blendMode) > const char* blendColorExpression = "vec3(css_BlendComponent(Cb.r, Cs.r), css_BlendComponent(Cb.g, Cs.g), css_BlendComponent(Cb.b, Cs.b))"; > const char* blendComponentExpression = "Co = 0.0;"; > bool needsLuminosityHelperFunctions = false; >+ bool needsSaturationHelperFunctions = false; > String blendFunctionString; > switch (blendMode) { > case BlendModeNormal: >@@ -416,9 +417,17 @@ String CustomFilterValidatedProgram::blendFunctionString(BlendMode blendMode) > blendColorExpression = "css_SetLum(Cb, css_Lum(Cs))"; > break; > case BlendModeHue: >+ needsLuminosityHelperFunctions = true; >+ needsSaturationHelperFunctions = true; >+ blendColorExpression = "css_SetLum(css_SetSat(Cs, css_Sat(Cb)), css_Lum(Cb))"; >+ break; > case BlendModeSaturation: >- notImplemented(); >- return String(); >+ needsLuminosityHelperFunctions = true; >+ needsSaturationHelperFunctions = true; >+ blendColorExpression = "css_SetLum(css_SetSat(Cb, css_Sat(Cs)), css_Lum(Cb))"; >+ break; >+ default: >+ ASSERT_NOT_REACHED(); > } > > if (needsLuminosityHelperFunctions) { >@@ -446,6 +455,49 @@ String CustomFilterValidatedProgram::blendFunctionString(BlendMode blendMode) > )); > } > >+ if (needsSaturationHelperFunctions) { >+ blendFunctionString.append(SHADER( >+ mediump float css_Sat(mediump vec3 C) >+ { >+ mediump float cMin = min(min(C.r, C.g), C.b); >+ mediump float cMax = max(max(C.r, C.g), C.b); >+ return cMax - cMin; >+ } >+ void css_SetSatHelper(inout mediump float cMin, inout mediump float cMid, inout mediump float cMax, mediump float s) >+ { >+ if (cMax > cMin) { >+ cMid = (((cMid - cMin) * s) / (cMax - cMin)); >+ cMax = s; >+ } else >+ cMid = cMax = 0.0; >+ cMin = 0.0; >+ } >+ mediump vec3 css_SetSat(mediump vec3 C, mediump float s) >+ { >+ if (C.r <= C.g) { >+ if (C.g <= C.b) >+ css_SetSatHelper(C.r, C.g, C.b, s); >+ else { >+ if (C.r <= C.b) >+ css_SetSatHelper(C.r, C.b, C.g, s); >+ else >+ css_SetSatHelper(C.b, C.r, C.g, s); >+ } >+ } else { >+ if (C.r <= C.b) >+ css_SetSatHelper(C.g, C.r, C.b, s); >+ else { >+ if (C.g <= C.b) >+ css_SetSatHelper(C.g, C.b, C.r, s); >+ else >+ css_SetSatHelper(C.b, C.g, C.r, s); >+ } >+ } >+ return C; >+ } >+ )); >+ } >+ > blendFunctionString.append(String::format(SHADER( > mediump float css_BlendComponent(mediump float Cb, mediump float Cs) > { >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index f8410e54121aea0b0b2fa97e2b119f502e48aa3d..c522fb2306eecd3ec9413ec8f84f01c3a0df9b02 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,19 @@ >+2013-02-27 Michelangelo De Simone <michelangelo@webkit.org> >+ >+ [CSS Shaders] Implement hue and saturation non-separable blend modes >+ https://bugs.webkit.org/show_bug.cgi?id=109464 >+ >+ Added relevant tests for the "hue" and "saturation" non-separable blend modes. >+ These tests are currently skipped on Mac due to a slight color difference; please see relevant bug: http://webkit.org/b/107487. >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * css3/filters/custom/custom-filter-nonseparable-blend-mode-hue-expected.html: Added. >+ * css3/filters/custom/custom-filter-nonseparable-blend-mode-hue.html: Added. >+ * css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation-expected.html: Added. >+ * css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation.html: Added. >+ * platform/mac/TestExpectations: >+ > 2013-02-27 Stephen Chenney <schenney@chromium.org> > > [Chromium] Test expectations updates >diff --git a/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue-expected.html b/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue-expected.html >new file mode 100644 >index 0000000000000000000000000000000000000000..3f17f87aa67920eb2aff2a0a4b4528419c8457b4 >--- /dev/null >+++ b/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue-expected.html >@@ -0,0 +1,36 @@ >+<!DOCTYPE HTML> >+<html lang="en"> >+<head> >+ <title>Test that blends the source and the backdrop with the hue blend mode.</title> >+ <style type="text/css"> >+ /* These are exactly the color values we expect. Some platforms may have slight different >+ color result. */ >+ #solid-solid { >+ background-color: rgb(108, 157, 255); >+ width: 100px; >+ height: 100px; >+ } >+ #alpha-solid { >+ background-color: rgb(167, 192, 242); >+ width: 100px; >+ height: 100px; >+ } >+ #solid-alpha { >+ background-color: rgb(169, 142, 166); >+ width: 100px; >+ height: 100px; >+ } >+ #alpha-alpha { >+ background-color: rgb(205, 192, 204); >+ width: 100px; >+ height: 100px; >+ } >+ </style> >+</head> >+<body> >+ <div id="solid-solid"></div> >+ <div id="alpha-solid"></div> >+ <div id="solid-alpha"></div> >+ <div id="alpha-alpha"></div> >+</body> >+</html> >diff --git a/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue.html b/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue.html >new file mode 100644 >index 0000000000000000000000000000000000000000..2ea0d8c2b9caa1bb4d8d41f6878f6d9407a3b816 >--- /dev/null >+++ b/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue.html >@@ -0,0 +1,151 @@ >+<!DOCTYPE HTML> >+<html lang="en"> >+<head> >+ <title>Test that blends the source and the backdrop with the hue blend mode.</title> >+ <script> >+ if (window.testRunner) { >+ window.testRunner.overridePreference("WebKitCSSCustomFilterEnabled", "1"); >+ window.testRunner.overridePreference("WebKitWebGLEnabled", "1"); >+ } >+ </script> >+ <style type="text/css"> >+ #solid-solid { >+ background-color: rgb(90%, 50%, 30%); >+ width: 100px; >+ height: 100px; >+ -webkit-filter: custom(none mix(url('../resources/mix-color.fs') hue source-atop), mix_color 0.2 0.4 0.8 1.0); >+ } >+ #alpha-solid { >+ background-color: rgba(90%, 50%, 30%, 0.5); >+ width: 100px; >+ height: 100px; >+ -webkit-filter: custom(none mix(url('../resources/mix-color.fs') hue source-atop), mix_color 0.2 0.4 0.8 1.0); >+ } >+ #solid-alpha { >+ background-color: rgb(90%, 50%, 30%); >+ width: 100px; >+ height: 100px; >+ -webkit-filter: custom(none mix(url('../resources/mix-color.fs') hue source-atop), mix_color 0.2 0.4 0.8 0.5); >+ } >+ #alpha-alpha { >+ background-color: rgba(90%, 50%, 30%, 0.5); >+ width: 100px; >+ height: 100px; >+ -webkit-filter: custom(none mix(url('../resources/mix-color.fs') hue source-atop), mix_color 0.2 0.4 0.8 0.5); >+ } >+ </style> >+</head> >+<body> >+<!-- >+ The following proof applies to the first case (#solid-solid) where both the backdrop and the >+ source are solid. >+ >+ In this test the following combinations are also tested: >+ Backdrop with 0.5 alpha blended with solid source >+ Solid backdrop blended with source with 0.5 alpha >+ Backdrop with 0.5 blended with source with 0.5 alpha >+ The underlaying proof of the above mentioned cases is the same: the colors are premultiplied >+ and then blended together. >+ >+ The final color of #solid-solid depends on the "hue" blend mode, which is a non-separable >+ blend mode. This means that colors are blended together as a whole, not component by component. >+ >+ The formula for this blend mode is: >+ Cr = B(Cb, Cs) = SetLum(SetSat(Cs, Sat(Cb)), Lum(Cb)) >+ >+ With: >+ Cr: the resulting color >+ Cb: the backdrop color, which is #solid-solid ("original DOM element color") >+ Cs: the source color, which is mix_color >+ Lum(Cb): the luminosity of Cb. Luminosity for color C is generally defined by >+ Lum(C): 0.3 * Cred + 0.59 * Cgreen + 0.11 * Cblue >+ Sat(Cb): the saturation of Cb. Saturation for color C is generally defined by >+ Sat(C): max(Cred, Cgreen, Cblue) - min(Cred, Cgreen, Cblue) >+ SetSat(Cs, Sat(Cb)): the function that sets the saturation >+ SetLum(SetSat(Cs, Sat(Cb)), Lum(Cb)): the function that sets the luminosity. >+ >+ The function that sets the luminosity l on the color C is generally defined by: >+ >+ SetLum(C, l) >+ d = l - Lum(C) >+ Cred = Cred + d >+ Cgreen = Cgreen + d >+ Cblue = Cblue + d >+ return ClipColor(C) >+ >+ At this point the color C has to be clipped between [0..1] by the ClipColor function, which is >+ generally defined by: >+ >+ ClipColor(C) >+ l = Lum(C) >+ n = min(Cred, Cgreen, Cblue) >+ x = max(Cred, Cgreen, Cblue) >+ if n < 0.0 >+ Cred = l + (((Cred - l) * l) / (l - n)) >+ Cgreen = l + (((Cgreen - l) * l) / (l - n)) >+ Cblue = l + (((Cblue - l) * l) / (l - n)) >+ if x > 1.0 >+ Cred = l + (((Cred - l) * (1 - l)) / (x - l)) >+ Cgreen = l + (((Cgreen - l) * (1 - l)) / (x - l)) >+ Cblue = l + (((Cblue - l) * (1 - l)) / (x - l)) >+ return C >+ >+ The function that sets the saturation s on the color C is generally defined by: >+ >+ SetSat(C, s) >+ if(Cmax > Cmin) >+ Cmid = (((Cmid - Cmin) * s) / (Cmax - Cmin)) >+ Cmax = s >+ else >+ Cmid = Cmax = 0 >+ Cmin = 0 >+ return C >+ >+ In this test case: >+ Lum(Cb) = 0.3 * 0.9 + 0.59 * 0.5 + 0.11 * 0.3 >+ Lum(Cb) = 0.27 + 0.295 + 0.033 >+ Lum(Cb) = 0.598 >+ >+ Sat(Cb) = max(0.9, 0.5, 0.3) - min(0.9, 0.5, 0.3) >+ Sat(Cb) = 0.9 - 0.3 >+ Sat(Cb) = 0.6 >+ >+ For the sake of brevity the result of this computation is called Ct >+ Ct = SetSat(Cs, Sat(Cb)) >+ 0.8 > 0.2 >+ Cmid = (((0.4 - 0.2) * 0.6) / (0.8 - 0.2)) = (0.2 * 0.6) / 0.6 = 0.2 >+ Cmax = 0.6 >+ Cmin = 0 >+ return (0, 0.2, 0.6) >+ >+ Cr = SetLum(Ct, Lum(Cb)) >+ d = 0.598 - (0.3 * 0.0 + 0.59 * 0.2 + 0.11 * 0.6) = 0.118 + 0.066 = 0.184 >+ d = 0.598 - (0.118 + 0.066) = 0.598 - 0.184 >+ d = 0.414 >+ Cred = 0.0 + 0.414 = 0.414 >+ Green = 0.2 + 0.414 = 0.614 >+ Cblue = 0.6 + 0.414 = 1.014 >+ return ClipColor(0.414, 0.614, 1.014) >+ >+ ClipColor(0.414, 0.614, 1.014) >+ l = 0.3 * 0.414 + 0.59 * 0.614 + 0.11 * 1.1014 = 0.1242 + 0.36226 + 0.121154 = 0.607614 >+ n = min(0.414, 0.614, 1.014) = 0.414 >+ x = max(0.414, 0.614, 1.014) = 1.014 >+ x > 1.0 >+ Cred = 0.607614 + (((0.414 - 0.607614) * (1 - 0.607614)) / (1.014 - 0.607614)) = >+ = 0.607614 + ((-0.193614 * 0.392386) / 0.406386) = 0.607614 - (0.07597142 / 0.406386) = 0.607614 - 0.18694399 = 0.42067001 >+ Cgreen = 0.607614 + (((0.614 - 0.607614) * (1 - 0.607614)) / (1.014 - 0.607614)) = >+ = 0.607614 + ((0.003386 * 0.392386) / 0.406386 = 0.607614 + (0.00132862 / 0.406386) = 0.607614 + 0.00326935 = 0.61088335 >+ Cblue = 0.607614 + (((1.014 - 0.607614) * (1 - 0.607614)) / (1.014 - 0.607614) = >+ = 0.607614 + ((0.406386 * 0.392386) / 0.406386) = 0.607614 + (0.15946018 / 0.406386) = 0.607614 + 0.39238601 = 1.0 >+ return (0.42, 0.61, 1.0) >+ >+ This value is equivalent to (108, 157, 255), which is the expected color. >+ This is the exact color value, other ports might experience slight differences. >+--> >+ <div id="solid-solid"></div> >+ <div id="alpha-solid"></div> >+ <div id="solid-alpha"></div> >+ <div id="alpha-alpha"></div> >+</body> >+</html> >diff --git a/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation-expected.html b/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation-expected.html >new file mode 100644 >index 0000000000000000000000000000000000000000..01d49c82b0aa3221e2c1450dbc2a092d6eea74b4 >--- /dev/null >+++ b/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation-expected.html >@@ -0,0 +1,36 @@ >+<!DOCTYPE HTML> >+<html lang="en"> >+<head> >+ <title>Test that blends the source and the backdrop with the saturation blend mode.</title> >+ <style type="text/css"> >+ /* These are exactly the color values we expect. Some platforms may have slight different >+ color result. */ >+ #solid-solid { >+ background-color: rgb(191, 141, 115); >+ width: 100px; >+ height: 100px; >+ } >+ #alpha-solid { >+ background-color: rgb(198, 185, 198); >+ width: 100px; >+ height: 100px; >+ } >+ #solid-alpha { >+ background-color: rgb(230, 128, 76); >+ width: 100px; >+ height: 100px; >+ } >+ #alpha-alpha { >+ background-color: rgb(220, 189, 182); >+ width: 100px; >+ height: 100px; >+ } >+ </style> >+</head> >+<body> >+ <div id="solid-solid"></div> >+ <div id="alpha-solid"></div> >+ <div id="solid-alpha"></div> >+ <div id="alpha-alpha"></div> >+</body> >+</html> >diff --git a/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation.html b/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation.html >new file mode 100644 >index 0000000000000000000000000000000000000000..ea18bb1be8c8cd07347e24bc10a1104416108279 >--- /dev/null >+++ b/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation.html >@@ -0,0 +1,137 @@ >+<!DOCTYPE HTML> >+<html lang="en"> >+<head> >+ <title>Test that blends the source and the backdrop with the saturation blend mode.</title> >+ <script> >+ if (window.testRunner) { >+ window.testRunner.overridePreference("WebKitCSSCustomFilterEnabled", "1"); >+ window.testRunner.overridePreference("WebKitWebGLEnabled", "1"); >+ } >+ </script> >+ <style type="text/css"> >+ #solid-solid { >+ background-color: rgb(90%, 50%, 30%); >+ width: 100px; >+ height: 100px; >+ -webkit-filter: custom(none mix(url('../resources/mix-color.fs') saturation source-atop), mix_color 0.1 0.2 0.4 1.0); >+ } >+ #alpha-solid { >+ background-color: rgba(90%, 50%, 30%, 0.5); >+ width: 100px; >+ height: 100px; >+ -webkit-filter: custom(none mix(url('../resources/mix-color.fs') saturation source-atop), mix_color 0.2 0.4 0.8 1.0); >+ } >+ #solid-alpha { >+ background-color: rgb(90%, 50%, 30%); >+ width: 100px; >+ height: 100px; >+ -webkit-filter: custom(none mix(url('../resources/mix-color.fs') saturation source-atop), mix_color 0.2 0.4 0.8 0.5); >+ } >+ #alpha-alpha { >+ background-color: rgba(90%, 50%, 30%, 0.5); >+ width: 100px; >+ height: 100px; >+ -webkit-filter: custom(none mix(url('../resources/mix-color.fs') saturation source-atop), mix_color 0.2 0.4 0.8 0.5); >+ } >+ </style> >+</head> >+<body> >+<!-- >+ The following proof applies to the first case (#solid-solid) where both the backdrop and the >+ source are solid. >+ >+ In this test the following combinations are also tested: >+ Backdrop with 0.5 alpha blended with solid source >+ Solid backdrop blended with source with 0.5 alpha >+ Backdrop with 0.5 blended with source with 0.5 alpha >+ The underlaying proof of the above mentioned cases is the same: the colors are premultiplied >+ and then blended together. >+ >+ The final color of #solid-solid depends on the "saturation" blend mode, which is a non-separable >+ blend mode. This means that colors are blended together as a whole, not component by component. >+ >+ The formula for this blend mode is: >+ Cr = B(Cb, Cs) = SetLum(SetSat(Cb, Sat(Cs)), Lum(Cb)) >+ >+ With: >+ Cr: the resulting color >+ Cb: the backdrop color, which is #solid-solid ("original DOM element color") >+ Cs: the source color, which is mix_color >+ Sat(Cb): the saturation of Cb. Saturation for color C is generally defined by >+ Sat(C): max(Cred, Cgreen, Cblue) - min(Cred, Cgreen, Cblue) >+ Lum(Cs): the luminosity of Cs. Luminosity for color C is generally defined by >+ Lum(C): 0.3 * Cred + 0.59 * Cgreen + 0.11 * Cblue >+ SetSat(Cb, Sat(Cs)): the function that sets the saturation >+ SetLum(SetSat(Cb, Sat(Cs)), Lum(Cb)): the function that sets the luminosity. >+ >+ The function that sets the luminosity l on the color C is generally defined by: >+ >+ SetLum(C, l) >+ d = l - Lum(C) >+ Cred = Cred + d >+ Cgreen = Cgreen + d >+ Cblue = Cblue + d >+ return ClipColor(C) >+ >+ At this point the color C has to be clipped between [0..1] by the ClipColor function, which is >+ generally defined by: >+ >+ ClipColor(C) >+ l = Lum(C) >+ n = min(Cred, Cgreen, Cblue) >+ x = max(Cred, Cgreen, Cblue) >+ if n < 0.0 >+ Cred = l + (((Cred - l) * l) / (l - n)) >+ Cgreen = l + (((Cgreen - l) * l) / (l - n)) >+ Cblue = l + (((Cblue - l) * l) / (l - n)) >+ if x > 1.0 >+ Cred = l + (((Cred - l) * (1 - l)) / (x - l)) >+ Cgreen = l + (((Cgreen - l) * (1 - l)) / (x - l)) >+ Cblue = l + (((Cblue - l) * (1 - l)) / (x - l)) >+ return C >+ >+ The function that sets the saturation s on the color C is generally defined by: >+ >+ SetSat(C, s) >+ if(Cmax > Cmin) >+ Cmid = (((Cmid - Cmin) * s) / (Cmax - Cmin)) >+ Cmax = s >+ else >+ Cmid = Cmax = 0 >+ Cmin = 0 >+ return C >+ >+ In this test case: >+ Lum(Cb) = 0.3 * 0.9 + 0.59 * 0.5 + 0.11 * 0.3 >+ Lum(Cb) = 0.27 + 0.295 + 0.033 >+ Lum(Cb) = 0.598 >+ >+ Sat(Cs) = max(0.1, 0.2, 0.4) - min(0.1, 0.2, 0.4) >+ Sat(Cs) = 0.4 - 0.1 >+ Sat(Cs) = 0.3 >+ >+ For the sake of brevity the result of this computation is called Ct >+ Ct = SetSat(Cb, Sat(Cs)) >+ 0.9 > 0.3 >+ Cmid = (((0.5 - 0.3) * 0.3) / (0.9 - 0.3) = 0.2 * 0.3 / 0.6 = 0.06 / 0.6 = 0.10 >+ Cmax = 0.3 >+ Cmin = 0 >+ return (0.3, 0.10, 0.0) >+ >+ Cr = SetLum(Ct, 0.598) >+ d = 0.598 - (0.3 * 0.3 + 0.59 * 0.10 + 0.11 * 0.0) = 0.598 - (0.09 + 0.059) = 0.598 - 0.149 >+ d = 0.449 >+ Cred = 0.3 + 0.449 = 0.749 >+ Cgreen = 0.10 + 0.449 = 0.549 >+ Cblue = 0.0 + 0.449 = 0.449 >+ return (0.0.749, 0.549, 0.449) >+ >+ This value is equivalent to (191, 140, 115), which is the expected color. >+ This is the exact color value, other ports might experience slight differences. >+--> >+ <div id="solid-solid"></div> >+ <div id="alpha-solid"></div> >+ <div id="solid-alpha"></div> >+ <div id="alpha-alpha"></div> >+</body> >+</html> >diff --git a/LayoutTests/platform/mac/TestExpectations b/LayoutTests/platform/mac/TestExpectations >index 8d9c49ff0ff6e76f7130adbd12b0170fbcf67df5..185f1ad40db80681bb455cc7a29f962b1b909aab 100644 >--- a/LayoutTests/platform/mac/TestExpectations >+++ b/LayoutTests/platform/mac/TestExpectations >@@ -953,11 +953,13 @@ fast/canvas/canvas-quadratic-same-endpoint.html > css3/filters/composited-during-transition-layertree.html > > # --- Custom Filters --- >-# The following 3 tests are currently skipped on Mac for slight color differences, >+# The following 5 tests are currently skipped on Mac for slight color differences, > # please see the relevant bug: http://webkit.org/b/107487 > webkit.org/b/107487 css3/filters/custom/custom-filter-blend-fractional-destination-alpha.html [ Skip ] > webkit.org/b/107487 css3/filters/custom/custom-filter-nonseparable-blend-mode-color.html [ Skip ] > webkit.org/b/107487 css3/filters/custom/custom-filter-nonseparable-blend-mode-luminosity.html [ Skip ] >+webkit.org/b/107487 css3/filters/custom/custom-filter-nonseparable-blend-mode-hue.html [ Skip ] >+webkit.org/b/107487 css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation.html [ Skip ] > > # --- Text --- > fast/forms/text-control-intrinsic-widths.html
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 109464
:
190604
|
191059