Dan Kegel : d3d9: shademode_test: Increase slop in color comparison.

Alexandre Julliard julliard at winehq.org
Tue May 13 04:40:08 CDT 2008


Module: wine
Branch: master
Commit: 7d989b7f7199b3551976bcdeace91e9a18550361
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7d989b7f7199b3551976bcdeace91e9a18550361

Author: Dan Kegel <dank at kegel.com>
Date:   Mon May 12 13:54:18 2008 -0700

d3d9: shademode_test: Increase slop in color comparison.

---

 dlls/d3d9/tests/visual.c |   43 +++++++++++++++++++++++++------------------
 1 files changed, 25 insertions(+), 18 deletions(-)

diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 998dcda..978e4f3 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -6367,13 +6367,32 @@ out:
     IDirect3D9_Release(d3d);
 }
 
+/* Return true if color is near the expected value */
+static int color_near(DWORD color, DWORD expected)
+{
+    const BYTE slop = 1;
+
+    BYTE r, g, b;
+    BYTE rx, gx, bx;
+    r = (color & 0x00ff0000) >> 16;
+    g = (color & 0x0000ff00) >>  8;
+    b = (color & 0x000000ff);
+    rx = (expected & 0x00ff0000) >> 16;
+    gx = (expected & 0x0000ff00) >>  8;
+    bx = (expected & 0x000000ff);
+
+    return
+      ((r >= (rx - slop)) && (r <= (rx + slop))) &&
+      ((g >= (gx - slop)) && (g <= (gx + slop))) &&
+      ((b >= (bx - slop)) && (b <= (bx + slop)));
+}
+
 static void shademode_test(IDirect3DDevice9 *device)
 {
     /* Render a quad and try all of the different fixed function shading models. */
     HRESULT hr;
     DWORD color0, color1;
     DWORD color0_gouraud = 0, color1_gouraud = 0;
-    BYTE r, g, b;
     DWORD shademode = D3DSHADE_FLAT;
     DWORD primtype = D3DPT_TRIANGLESTRIP;
     LPVOID data = NULL;
@@ -6469,15 +6488,9 @@ static void shademode_test(IDirect3DDevice9 *device)
                 case D3DSHADE_GOURAUD:
                     /* Should be an interpolated blend */
 
-                    r = (color0 & 0x00ff0000) >> 16;
-                    g = (color0 & 0x0000ff00) >>  8;
-                    b = (color0 & 0x000000ff);
-                    ok(r >= 0x0c && r <= 0x0e && g == 0xca && b >= 0x27 && b <= 0x28,
-                       "GOURAUD shading has color0 %08x, expected 0x000dca28\n", color0);
-                    r = (color1 & 0x00ff0000) >> 16;
-                    g = (color1 & 0x0000ff00) >>  8;
-                    b = (color1 & 0x000000ff);
-                    ok(r >= 0x0c && r <= 0x0d && g >= 0x44 && g <= 0x45 && b >= 0xc7 && b <= 0xc8,
+                    ok(color_near(color0, 0x000dca28),
+                       "GOURAUD shading has color0 %08x, expected 0x00dca28\n", color0);
+                    ok(color_near(color1, 0x000d45c7),
                        "GOURAUD shading has color1 %08x, expected 0x000d45c7\n", color1);
 
                     color0_gouraud = color0;
@@ -6487,15 +6500,9 @@ static void shademode_test(IDirect3DDevice9 *device)
                     break;
                 case D3DSHADE_PHONG:
                     /* Should be the same as GOURAUD, since no hardware implements this */
-                    r = (color0 & 0x00ff0000) >> 16;
-                    g = (color0 & 0x0000ff00) >>  8;
-                    b = (color0 & 0x000000ff);
-                    ok(r >= 0x0c && r <= 0x0e && g == 0xca && b >= 0x27 && b <= 0x28,
+                    ok(color_near(color0, 0x000dca28),
                        "PHONG shading has color0 %08x, expected 0x000dca28\n", color0);
-                    r = (color1 & 0x00ff0000) >> 16;
-                    g = (color1 & 0x0000ff00) >>  8;
-                    b = (color1 & 0x000000ff);
-                    ok(r >= 0x0c && r <= 0x0d && g >= 0x44 && g <= 0x45 && b >= 0xc7 && b <= 0xc8,
+                    ok(color_near(color1, 0x000d45c7),
                        "PHONG shading has color1 %08x, expected 0x000d45c7\n", color1);
 
                     ok(color0 == color0_gouraud, "difference between GOURAUD and PHONG shading detected: %08x %08x\n",




More information about the wine-cvs mailing list