[Webkit-unassigned] [Bug 62003] New: [GTK] svg/custom/embedding-external-svgs.xhtml render different zero values in 32-bit and 64-bit

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Jun 3 03:03:31 PDT 2011


https://bugs.webkit.org/show_bug.cgi?id=62003

           Summary: [GTK] svg/custom/embedding-external-svgs.xhtml render
                    different zero values in 32-bit and 64-bit
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: Unspecified
        OS/Version: Linux
            Status: NEW
          Keywords: Gtk
          Severity: Normal
          Priority: P2
         Component: Tools / Tests
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: msanchez at igalia.com
                CC: mrobinson at webkit.org


This test has been consistently failing in GTK 32-bit bots but not on the 64-bit ones, lately.

The problem is that the output is slightly different in the first case compared to the second, in that zero values in the translation part of the affine transformation are rendered as "0.00" in the 32-bit bots, while rendered as "-0.00" in the 64-bit bot.

The reason why the 64-bit is succeeding is simply because the expected results were generated in a 64 bit environment, but it could be the other way around if generated in a 32-bit one. Anyway that's not the issue, obviously, but a problem in how signed zero values are being represented.

Don't know for sure whether this could be the place where the problem is originated, but in Source/WebCore/platform/graphics/transforms/AffineTransform.cpp, we have this:


   AffineTransform AffineTransform::inverse() const
   {
       double determinant = det();
       if (determinant == 0.0)
           return AffineTransform();

       AffineTransform result;
       if (isIdentityOrTranslation()) {
           result.m_transform[4] = -m_transform[4];
           result.m_transform[5] = -m_transform[5];
           return result;
       }

       [...]

       return result;
   }

It could be that checking for zero values in m_transform[4] and m_transform[5] before inverting (and do nothing if that's the case) helped to workaround the issue, couldn't try yet. Anyway, that wouldn't be probably the right solution, just mentioning in case it rang any bell to someone with more knowledge than me on this matter.

Skipping in GTK by now, here you have the failing diff in the 32-bit bots at the moment:

--- /home/slave/webkitgtk/gtk-linux-32-debug/build/layout-test-results/svg/custom/embedding-external-svgs-expected.txt    2011-06-03 01:39:54.211740803 -0700
+++ /home/slave/webkitgtk/gtk-linux-32-debug/build/layout-test-results/svg/custom/embedding-external-svgs-actual.txt    2011-06-03 01:39:54.211740803 -0700
@@ -24,7 +24,7 @@
                   RenderSVGContainer {g} at (25,7) size 15x12
                     RenderSVGViewportContainer {svg} at (25,7) size 15x12
                       RenderSVGPath {polygon} at (25,7) size 15x12 [fill={[type=SOLID] [color=#000000] [opacity=0.12]}] [points="22 0 28 0 23 15 23 15"]
-                RenderSVGContainer {use} at (28,17) size 12x6 [transform={m=((0.00,1.00)(-1.00,0.00)) t=(50.00,0.00)}]
+                RenderSVGContainer {use} at (28,17) size 12x6 [transform={m=((0.00,1.00)(-1.00,0.00)) t=(50.00,-0.00)}]
                   RenderSVGContainer {g} at (28,17) size 12x6
                     RenderSVGViewportContainer {svg} at (28,17) size 12x6
                       RenderSVGPath {polygon} at (28,17) size 12x6 [fill={[type=SOLID] [color=#000000] [opacity=0.16]}] [points="22 0 28 0 23 15 23 15"]
@@ -88,7 +88,7 @@
                   RenderSVGContainer {g} at (25,7) size 15x12
                     RenderSVGViewportContainer {svg} at (25,7) size 15x12
                       RenderSVGPath {polygon} at (25,7) size 15x12 [fill={[type=SOLID] [color=#000000] [opacity=0.12]}] [points="22 0 28 0 23 15 23 15"]
-                RenderSVGContainer {use} at (28,17) size 12x6 [transform={m=((0.00,1.00)(-1.00,0.00)) t=(50.00,0.00)}]
+                RenderSVGContainer {use} at (28,17) size 12x6 [transform={m=((0.00,1.00)(-1.00,0.00)) t=(50.00,-0.00)}]
                   RenderSVGContainer {g} at (28,17) size 12x6
                     RenderSVGViewportContainer {svg} at (28,17) size 12x6
                       RenderSVGPath {polygon} at (28,17) size 12x6 [fill={[type=SOLID] [color=#000000] [opacity=0.16]}] [points="22 0 28 0 23 15 23 15"]
@@ -132,7 +132,7 @@
             RenderSVGPath {svg:polygon} at (103,279) size 4x8 [fill={[type=SOLID] [color=#000000] [opacity=0.04]}] [points="22 0 28 0 27 12 23 12"]
             RenderSVGPath {svg:polygon} at (106,279) size 9x10 [transform={m=((0.87,0.50)(-0.50,0.87)) t=(15.85,-9.15)}] [fill={[type=SOLID] [color=#000000] [opacity=0.08]}] [points="22 0 28 0 27 12 23 12"]
             RenderSVGPath {svg:polygon} at (110,284) size 10x9 [transform={m=((0.50,0.87)(-0.87,0.50)) t=(34.15,-9.15)}] [fill={[type=SOLID] [color=#000000] [opacity=0.12]}] [points="22 0 28 0 27 12 23 12"]
-            RenderSVGPath {svg:polygon} at (112,292) size 8x4 [transform={m=((0.00,1.00)(-1.00,0.00)) t=(50.00,0.00)}] [fill={[type=SOLID] [color=#000000] [opacity=0.16]}] [points="22 0 28 0 27 12 23 12"]
+            RenderSVGPath {svg:polygon} at (112,292) size 8x4 [transform={m=((0.00,1.00)(-1.00,0.00)) t=(50.00,-0.00)}] [fill={[type=SOLID] [color=#000000] [opacity=0.16]}] [points="22 0 28 0 27 12 23 12"]
             RenderSVGPath {svg:polygon} at (110,295) size 10x9 [transform={m=((-0.50,0.87)(-0.87,-0.50)) t=(59.15,15.85)}] [fill={[type=SOLID] [color=#000000] [opacity=0.20]}] [points="22 0 28 0 27 12 23 12"]
             RenderSVGPath {svg:polygon} at (106,299) size 9x10 [transform={m=((-0.87,0.50)(-0.50,-0.87)) t=(59.15,34.15)}] [fill={[type=SOLID] [color=#000000] [opacity=0.24]}] [points="22 0 28 0 27 12 23 12"]
             RenderSVGPath {svg:polygon} at (103,301) size 4x8 [transform={m=((-1.00,0.00)(-0.00,-1.00)) t=(50.00,50.00)}] [fill={[type=SOLID] [color=#000000] [opacity=0.29]}] [points="22 0 28 0 27 12 23 12"]

http://build.webkit.org/results/GTK%20Linux%2032-bit%20Debug/r87992%20%2815679%29/svg/custom/embedding-external-svgs-diffs.txt

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list