[PATCH 1/3] d3d9/tests: Accept Nvidia results in test_sample_mask as broken.

Stefan Dösinger stefan at codeweavers.com
Fri Jan 21 03:58:12 CST 2022


Signed-off-by: Stefan Dösinger <stefan at codeweavers.com>
---
 dlls/d3d9/tests/visual.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index f4aa45f91fa..89f9e9cf2c6 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -26911,7 +26911,15 @@ static void test_sample_mask(void)
     ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
     get_rt_readback(rt, &rb);
     colour = get_readback_color(&rb, 64, 64);
-    ok(color_match(colour, 0xffff8080, 1), "Got unexpected colour %08x.\n", colour);
+    /* Multiple generations of Nvidia cards return broken results.
+     * A mask with no bits or all bits set produce the expected results (0x00 / 0xff),
+     * but any other mask behaves almost as if the result is 0.5 + (enabled / total)
+     * samples. It's not quite that though (you'd expect 0xbf or 0xc0 instead of 0xbc).
+     *
+     * I looked at a few other possible problems: Incorrectly enabled Z test, alpha test,
+     * culling, the multisample mask affecting CopyRects. Neither of these make a difference. */
+    ok(color_match(colour, 0xffff8080, 1) || broken(color_match(colour, 0xffffbcbc, 1)),
+            "Got unexpected colour %08x.\n", colour);
     release_surface_readback(&rb);
 
     hr = IDirect3DDevice9_EndScene(device);
-- 
2.24.3 (Apple Git-128)




More information about the wine-devel mailing list