[PATCH 1/5] d3d9/tests: Use color_match() in more places.

Henri Verbeet hverbeet at codeweavers.com
Thu Oct 31 03:40:39 CDT 2013


---
 dlls/d3d9/tests/visual.c |   93 +++++++++++++++++++---------------------------
 1 file changed, 38 insertions(+), 55 deletions(-)

diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 2e9c336..246dd07 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -5991,37 +5991,31 @@ static void cnd_test(IDirect3DDevice9 *device)
     color = getPixelColor(device, 158, 358);
     ok(color == 0x00ffffff, "pixel 158, 358 has color %08x, expected 0x00ffffff\n", color);
     color = getPixelColor(device, 162, 358);
-    ok( (((color & 0x00ff0000) >> 16) <= 0x01) && (((color & 0x0000ff00) >> 8) <= 0x01) && ((color & 0x000000ff) <= 0x01),
-        "pixel 162, 358 has color %08x, expected 0x00000000\n", color);
+    ok(color_match(color, 0x00000000, 1), "pixel 162, 358 has color 0x%08x, expected 0x00000000.\n", color);
     color = getPixelColor(device, 158, 362);
     ok(color == 0x00ffffff, "pixel 158, 362 has color %08x, expected 0x00ffffff\n", color);
     color = getPixelColor(device, 162, 362);
-    ok( (((color & 0x00ff0000) >> 16) <= 0x01) && (((color & 0x0000ff00) >> 8) <= 0x01) && ((color & 0x000000ff) <= 0x01),
-        "pixel 162, 362 has color %08x, expected 0x00000000\n", color);
+    ok(color_match(color, 0x00000000, 1), "pixel 162, 362 has color 0x%08x, expected 0x00000000.\n", color);
 
     /* 1.2 shader */
     color = getPixelColor(device, 478, 358);
     ok(color == 0x00ffffff, "pixel 478, 358 has color %08x, expected 0x00ffffff\n", color);
     color = getPixelColor(device, 482, 358);
-    ok( (((color & 0x00ff0000) >> 16) <= 0x01) && (((color & 0x0000ff00) >> 8) <= 0x01) && ((color & 0x000000ff) <= 0x01),
-        "pixel 482, 358 has color %08x, expected 0x00000000\n", color);
+    ok(color_match(color, 0x00000000, 1), "pixel 482, 358 has color 0x%08x, expected 0x00000000.\n", color);
     color = getPixelColor(device, 478, 362);
     ok(color == 0x00ffffff, "pixel 478, 362 has color %08x, expected 0x00ffffff\n", color);
     color = getPixelColor(device, 482, 362);
-    ok( (((color & 0x00ff0000) >> 16) <= 0x01) && (((color & 0x0000ff00) >> 8) <= 0x01) && ((color & 0x000000ff) <= 0x01),
-        "pixel 482, 362 has color %08x, expected 0x00000000\n", color);
+    ok(color_match(color, 0x00000000, 1), "pixel 482, 362 has color 0x%08x, expected 0x00000000.\n", color);
 
     /* 1.3 shader */
     color = getPixelColor(device, 478, 118);
     ok(color == 0x00ffffff, "pixel 478, 118 has color %08x, expected 0x00ffffff\n", color);
     color = getPixelColor(device, 482, 118);
-    ok( (((color & 0x00ff0000) >> 16) <= 0x01) && (((color & 0x0000ff00) >> 8) <= 0x01) && ((color & 0x000000ff) <= 0x01),
-        "pixel 482, 118 has color %08x, expected 0x00000000\n", color);
+    ok(color_match(color, 0x00000000, 1), "pixel 482, 118 has color 0x%08x, expected 0x00000000.\n", color);
     color = getPixelColor(device, 478, 122);
     ok(color == 0x00ffffff, "pixel 478, 122 has color %08x, expected 0x00ffffff\n", color);
     color = getPixelColor(device, 482, 122);
-    ok( (((color & 0x00ff0000) >> 16) <= 0x01) && (((color & 0x0000ff00) >> 8) <= 0x01) && ((color & 0x000000ff) <= 0x01),
-        "pixel 482, 122 has color %08x, expected 0x00000000\n", color);
+    ok(color_match(color, 0x00000000, 1), "pixel 482, 122 has color 0x%08x, expected 0x00000000.\n", color);
 
     hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
     ok(hr == D3D_OK, "IDirect3DDevice9_Present failed with %08x\n", hr);
@@ -6287,8 +6281,8 @@ static void nested_loop_test(IDirect3DDevice9 *device)
     }
 
     color = getPixelColor(device, 360, 240);
-    ok(color == 0x007f0000 || color == 0x00800000 || color == 0x00810000,
-       "Nested loop test returned color 0x%08x, expected 0x00800000\n", color);
+    ok(color_match(color, 0x00800000, 1),
+            "Nested loop test returned color 0x%08x, expected 0x00800000.\n", color);
 
     hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
     ok(hr == D3D_OK, "IDirect3DDevice9_Present failed with %08x\n", hr);
@@ -6488,7 +6482,7 @@ static void pretransformed_varying_test(IDirect3DDevice9 *device)
     IDirect3DVertexDeclaration9 *decl;
     HRESULT hr;
     unsigned int i;
-    DWORD color, r, g, b, r_e, g_e, b_e;
+    DWORD color;
 
     memcpy(data2, data, sizeof(data2));
     data2[0].pos_x = 0;     data2[0].pos_y = 0;
@@ -6528,29 +6522,20 @@ static void pretransformed_varying_test(IDirect3DDevice9 *device)
             ok(hr == D3D_OK, "IDirect3DDevice9_EndScene returned %08x\n", hr);
         }
 
+        /* This isn't a weekend's job to fix, ignore the problem for now.
+         * Needs a replacement pipeline. */
         color = getPixelColor(device, 360, 240);
-        r = color & 0x00ff0000 >> 16;
-        g = color & 0x0000ff00 >>  8;
-        b = color & 0x000000ff;
-        r_e = tests[i].color_rhw & 0x00ff0000 >> 16;
-        g_e = tests[i].color_rhw & 0x0000ff00 >>  8;
-        b_e = tests[i].color_rhw & 0x000000ff;
+        if (tests[i].todo_rhw)
+            todo_wine ok(color_match(color, tests[i].color_rhw, 1),
+                    "Test %s returned color 0x%08x, expected 0x%08x (todo).\n",
+                    tests[i].name, color, tests[i].color_rhw);
+        else
+            ok(color_match(color, tests[i].color_rhw, 1),
+                    "Test %s returned color 0x%08x, expected 0x%08x.\n",
+                    tests[i].name, color, tests[i].color_rhw);
 
         hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
         ok(hr == D3D_OK, "IDirect3DDevice9_Present failed with %08x\n", hr);
-
-        if(tests[i].todo_rhw) {
-            /* This isn't a weekend's job to fix, ignore the problem for now. Needs a replacement
-             * pipeline
-             */
-            todo_wine ok(abs(r - r_e) <= 1 && abs(g - g_e) <= 1 && abs(b - b_e) <= 1,
-                         "Test %s returned color 0x%08x, expected 0x%08x(todo)\n",
-                         tests[i].name, color, tests[i].color_rhw);
-        } else {
-            ok(abs(r - r_e) <= 1 && abs(g - g_e) <= 1 && abs(b - b_e) <= 1,
-               "Test %s returned color 0x%08x, expected 0x%08x\n",
-               tests[i].name, color, tests[i].color_rhw);
-        }
     }
 
     for(i = 0; i < sizeof(tests) / sizeof(tests[0]); i++)
@@ -7256,7 +7241,7 @@ static void srgbtexture_test(IDirect3DDevice9 *device)
     ok(hr == D3D_OK, "IDirect3DDevice9_SetSamplerState failed with %08x\n", hr);
 
     color = getPixelColor(device, 320, 240);
-    ok(color == 0x00363636 || color == 0x00373737, "srgb quad has color %08x, expected 0x00363636\n", color);
+    ok(color_match(color, 0x00363636, 1), "sRGB quad has color 0x%08x, expected 0x00363636.\n", color);
 
     hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
     ok(hr == D3D_OK, "IDirect3DDevice9_Present failed with %08x\n", hr);
@@ -9646,7 +9631,6 @@ static void pixelshader_blending_test(IDirect3DDevice9 *device)
     IDirect3DSurface9 *backbuffer = NULL, *offscreen = NULL;
     IDirect3D9 *d3d = NULL;
     DWORD color;
-    DWORD r0, g0, b0, r1, g1, b1;
     int fmt_index;
 
     static const float quad[][5] = {
@@ -9768,27 +9752,26 @@ static void pixelshader_blending_test(IDirect3DDevice9 *device)
             IDirect3DDevice9_EndScene(device);
         }
 
-        if(IDirect3D9_CheckDeviceFormat(d3d, 0, D3DDEVTYPE_HAL, D3DFMT_X8R8G8B8, D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING, D3DRTYPE_TEXTURE, fmt) == D3D_OK) {
-            /* Compare the color of the center quad with our expectation */
+        if (IDirect3D9_CheckDeviceFormat(d3d, 0, D3DDEVTYPE_HAL, D3DFMT_X8R8G8B8,
+                D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING, D3DRTYPE_TEXTURE, fmt) == D3D_OK)
+        {
+            /* Compare the color of the center quad with our expectation. */
             color = getPixelColor(device, 320, 240);
-            r0 = (color & 0x00ff0000) >> 16;
-            g0 = (color & 0x0000ff00) >>  8;
-            b0 = (color & 0x000000ff) >>  0;
-
-            r1 = (test_formats[fmt_index].resultColorBlending & 0x00ff0000) >> 16;
-            g1 = (test_formats[fmt_index].resultColorBlending & 0x0000ff00) >>  8;
-            b1 = (test_formats[fmt_index].resultColorBlending & 0x000000ff) >>  0;
-
-            ok(r0 >= max(r1, 1) - 1 && r0 <= r1 + 1 &&
-               g0 >= max(g1, 1) - 1 && g0 <= g1 + 1 &&
-               b0 >= max(b1, 1) - 1 && b0 <= b1 + 1,
-               "Offscreen failed for %s: Got color %#08x, expected %#08x.\n", test_formats[fmt_index].fmtName, color, test_formats[fmt_index].resultColorBlending);
-        } else {
-            /* No pixel shader blending is supported so expect garbage. The type of 'garbage' depends on the driver version and OS.
-             * E.g. on G16R16 ati reports (on old r9600 drivers) 0x00ffffff and on modern ones 0x002010ff which is also what Nvidia
-             * reports. On Vista Nvidia seems to report 0x00ffffff on Geforce7 cards. */
+            ok(color_match(color, test_formats[fmt_index].resultColorBlending, 1),
+                    "Offscreen failed for %s: Got color 0x%08x, expected 0x%08x.\n",
+                    test_formats[fmt_index].fmtName, color, test_formats[fmt_index].resultColorBlending);
+        }
+        else
+        {
+            /* No pixel shader blending is supported so expect garbage. The
+             * type of 'garbage' depends on the driver version and OS. E.g. on
+             * G16R16 ATI reports (on old r9600 drivers) 0x00ffffff and on
+             * modern ones 0x002010ff which is also what NVIDIA reports. On
+             * Vista NVIDIA seems to report 0x00ffffff on Geforce7 cards. */
             color = getPixelColor(device, 320, 240);
-            ok((color == 0x00ffffff) || (color == test_formats[fmt_index].resultColorNoBlending), "Offscreen failed for %s: expected no color blending but received it anyway.\n", test_formats[fmt_index].fmtName);
+            ok((color == 0x00ffffff) || (color == test_formats[fmt_index].resultColorNoBlending),
+                    "Offscreen failed for %s: Got unexpected color 0x%08x, expected no color blending.\n",
+                    test_formats[fmt_index].fmtName, color);
         }
         IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
 
-- 
1.7.10.4




More information about the wine-patches mailing list