From 7d989b7f7199b3551976bcdeace91e9a18550361 Mon Sep 17 00:00:00 2001 From: Dan Kegel Date: Mon, 12 May 2008 13:54:18 -0700 Subject: [PATCH] d3d9: shademode_test: Increase slop in color comparison. --- dlls/d3d9/tests/visual.c | 43 +++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c index 998dcdab57..978e4f3f62 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", -- 2.32.0.93.g670b81a890