Signed-off-by: Stefan Dösinger stefan@codeweavers.com --- dlls/ddraw/tests/ddraw2.c | 8 +++++++- dlls/ddraw/tests/ddraw4.c | 8 +++++++- dlls/ddraw/tests/ddraw7.c | 9 +++++++-- 3 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c index f80d4fe3ab8..00c8f820edb 100644 --- a/dlls/ddraw/tests/ddraw2.c +++ b/dlls/ddraw/tests/ddraw2.c @@ -148,6 +148,11 @@ static BOOL ddraw_is_vendor(IDirectDraw2 *ddraw, DWORD vendor) && identifier.dwVendorId == vendor; }
+static BOOL ddraw_is_amd(IDirectDraw2 *ddraw) +{ + return ddraw_is_vendor(ddraw, 0x1002); +} + static BOOL ddraw_is_intel(IDirectDraw2 *ddraw) { return ddraw_is_vendor(ddraw, 0x8086); @@ -13640,7 +13645,8 @@ static void test_depth_readback(void) /* The ddraw2 version of this test behaves similarly to the ddraw7 version on Nvidia GPUs, * except that we only have D16 (broken on geforce 9) and D24X8 (broken on geforce 7) available. * Accept all nvidia GPUs as broken here, but still expect one of the formats to pass. */ - ok(compare_uint(expected_depth, depth, max_diff) || ddraw_is_nvidia(ddraw), + ok(compare_uint(expected_depth, depth, max_diff) || ddraw_is_nvidia(ddraw) + || (ddraw_is_amd(ddraw) && tests[i].z_depth == 24), "Test %u: Got depth 0x%08x (diff %d), expected 0x%08x+/-%u, at %u, %u.\n", i, depth, expected_depth - depth, expected_depth, max_diff, x, y); if (!compare_uint(expected_depth, depth, max_diff)) diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c index 4447c5675ea..a8b68b8a20b 100644 --- a/dlls/ddraw/tests/ddraw4.c +++ b/dlls/ddraw/tests/ddraw4.c @@ -149,6 +149,11 @@ static BOOL ddraw_is_vendor(IDirectDraw4 *ddraw, DWORD vendor) && identifier.dwVendorId == vendor; }
+static BOOL ddraw_is_amd(IDirectDraw4 *ddraw) +{ + return ddraw_is_vendor(ddraw, 0x1002); +} + static BOOL ddraw_is_intel(IDirectDraw4 *ddraw) { return ddraw_is_vendor(ddraw, 0x8086); @@ -16252,7 +16257,8 @@ static void test_depth_readback(void) * * Some of the tested places pass on some GPUs on Wine by accident. */ todo_wine_if(tests[i].todo && !compare_uint(expected_depth, depth, max_diff)) - ok(compare_uint(expected_depth, depth, max_diff) || ddraw_is_nvidia(ddraw), + ok(compare_uint(expected_depth, depth, max_diff) || ddraw_is_nvidia(ddraw) + || (ddraw_is_amd(ddraw) && !tests[i].s_depth && tests[i].z_mask == 0x00ffffff), "Test %u: Got depth 0x%08x (diff %d), expected 0x%08x+/-%u, at %u, %u.\n", i, depth, expected_depth - depth, expected_depth, max_diff, x, y); if (!compare_uint(expected_depth, depth, max_diff)) diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index e5324cfe8bd..c7a38ab7701 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -15716,7 +15716,8 @@ static void test_depth_readback(void) depth = raw_value & tests[i].z_mask; expected_depth = (x * (0.9 / 640.0) + y * (0.1 / 480.0)) * tests[i].z_mask; max_diff = ((0.5f * 0.9f) / 640.0f) * tests[i].z_mask; - /* This test is very reliably on AMD, but fails in a number of interesting ways on Nvidia GPUs: + /* This test is very reliably on older AMD drivers, but fails in a number of interesting + * ways on Nvidia GPUs: * * Geforce 7 GPUs work only with D16. D24 and D24S8 return 0, D24X8 broken data. * @@ -15729,10 +15730,14 @@ static void test_depth_readback(void) * Arx Fatalis is broken on the Geforce 9 in the same way it was broken in Wine (bug 43654). * The !tests[i].s_depth is supposed to rule out D16 on GF9 and D24X8 on GF7. * + * On new-ish AMD GPUs (Radeon Polaris at least) returns weird data for D24 and D24X8. D16 + * and D24S8 work. + * * Some of the tested places pass on some GPUs on Wine by accident. */ todo_wine_if(tests[i].todo && !compare_uint(expected_depth, depth, max_diff)) ok(compare_uint(expected_depth, depth, max_diff) - || (ddraw_is_nvidia(ddraw) && (all_zero || all_one || !tests[i].s_depth)), + || (ddraw_is_nvidia(ddraw) && (all_zero || all_one || !tests[i].s_depth) + || (ddraw_is_amd(ddraw) && !tests[i].s_depth && tests[i].z_mask == 0x00ffffff)), "Test %u: Got depth 0x%08x (diff %d), expected 0x%08x+/-%u, at %u, %u.\n", i, depth, expected_depth - depth, expected_depth, max_diff, x, y); if (!compare_uint(expected_depth, depth, max_diff))
It works better for depth readback on modern Radeon GPUs.
Signed-off-by: Stefan Dösinger stefan@codeweavers.com
---
Also compare to the readback mess that is test_depth_readback. On Nvidia cards test_depth_readback is broken for D24S8, but works for some cards with D16 or D24X8. That's not necessarily contradictory: test_depth_readback draws actual geometry, whereas test_color_fill just uses DDBLT_DEPTHFILL.
If any Nvidia GPU I did not test now fails test_color_fill we can make the chosen format card dependent. I'll avoid that for now though. --- dlls/ddraw/tests/ddraw4.c | 12 ++++++++++++ dlls/ddraw/tests/ddraw7.c | 12 ++++++++++++ 2 files changed, 24 insertions(+)
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c index a8b68b8a20b..451dabff20a 100644 --- a/dlls/ddraw/tests/ddraw4.c +++ b/dlls/ddraw/tests/ddraw4.c @@ -432,8 +432,20 @@ static HRESULT CALLBACK enum_z_fmt(DDPIXELFORMAT *format, void *ctx) { DDPIXELFORMAT *z_fmt = ctx;
+ /* Prefer higher Z precision over lower, and prefer D24S8 over + * D24X8. See also test_depth_readback for some GPU specific + * limitations. Note that test_depth_readback reads back depth + * values from draws, while users of this functions usually do + * not. */ if (U1(*format).dwZBufferBitDepth > U1(*z_fmt).dwZBufferBitDepth) + { *z_fmt = *format; + } + else if (U1(*format).dwZBufferBitDepth == U1(*z_fmt).dwZBufferBitDepth + && U2(*format).dwStencilBitDepth > U2(*z_fmt).dwStencilBitDepth) + { + *z_fmt = *format; + }
return DDENUMRET_OK; } diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index c7a38ab7701..fe09766eddb 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -455,8 +455,20 @@ static HRESULT CALLBACK enum_z_fmt(DDPIXELFORMAT *format, void *ctx) { DDPIXELFORMAT *z_fmt = ctx;
+ /* Prefer higher Z precision over lower, and prefer D24S8 over + * D24X8. See also test_depth_readback for some GPU specific + * limitations. Note that test_depth_readback reads back depth + * values from draws, while users of this functions usually do + * not. */ if (U1(*format).dwZBufferBitDepth > U1(*z_fmt).dwZBufferBitDepth) + { *z_fmt = *format; + } + else if (U1(*format).dwZBufferBitDepth == U1(*z_fmt).dwZBufferBitDepth + && U2(*format).dwStencilBitDepth > U2(*z_fmt).dwStencilBitDepth) + { + *z_fmt = *format; + }
return DDENUMRET_OK; }
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=105683
Your paranoid android.
=== w8adm (32 bit report) ===
ddraw: ddraw7.c:4651: Test failed: Lit quad without normals has color 0x00ff0000, expected 0x00000000. ddraw7.c:4664: Test failed: Lit quad with normals has color 0x00ff0000, expected 0x00000000. ddraw7.c:4709: Test failed: Lit quad with non-affine matrix has color 0x00ff0000.
=== w1064v1809 (32 bit report) ===
ddraw: ddraw7.c:18861: Test failed: Got unexpected color 0x00000040.
=== debian11 (32 bit report) ===
ddraw: ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer. ddraw7.c:2628: Test failed: Expected window style 0x4cf0000, got 0xa40b0000. ddraw7.c:2661: Test failed: Expected window style 0x4cf0000, got 0xa40b0000. ddraw7.c:2664: Test failed: Expected window extended style 0x108, got 0x8. ddraw7.c:2670: Test failed: Expected window style 0x4cf0000, got 0xa40b0000. ddraw7.c:2673: Test failed: Expected window extended style 0x108, got 0x8. ddraw7.c:2693: Test failed: Expected window style 0x4cf0000, got 0xa40b0000. ddraw7.c:2695: Test failed: Expected window extended style 0x100, got 0. ddraw7.c:2712: Test failed: Expected (0,0)-(640,480), got (-32000,-32000)-(-31840,-31976). ddraw7.c:2735: Test failed: Expected (0,0)-(640,480), got (-32000,-32000)-(-31840,-31976). ddraw7.c:2755: Test failed: Expected window style 0x4cf0000, got 0xa40b0000. ddraw7.c:2757: Test failed: Expected window extended style 0x100, got 0. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer.
=== debian11 (32 bit Arabic:Morocco report) ===
ddraw: ddraw4.c:3530: Test failed: Expected message 0x47, but didn't receive it. ddraw4.c:3532: Test failed: Expected screen size 640x480, got 0x0. ddraw4.c:3538: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3562: Test failed: Expected surface width 640, got 720. ddraw4.c:3568: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3575: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3580: Test failed: Expected surface width 640, got 720. ddraw4.c:3595: Test failed: Expected surface width 640, got 720. ddraw4.c:3601: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3624: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3637: Test failed: Got unexpected hr 0. ddraw4.c:3639: Test failed: Got unexpected hr 0. ddraw4.c:3646: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3651: Test failed: Expected surface width 640, got 720. ddraw4.c:3672: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3692: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3705: Test failed: Expected resolution 640x480, got 720x480. ddraw4.c:3722: Test failed: Expected surface width 640, got 720. ddraw4.c:3728: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3738: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3743: Test failed: Expected surface width 640, got 720. ddraw4.c:3758: Test failed: Expected surface width 640, got 720. ddraw4.c:3764: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3787: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3800: Test failed: Got unexpected hr 0. ddraw4.c:3802: Test failed: Got unexpected hr 0. ddraw4.c:3809: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3814: Test failed: Expected surface width 640, got 720. ddraw4.c:3835: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3855: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3868: Test failed: Expected resolution 640x480, got 720x480. ddraw4.c:3885: Test failed: Expected surface width 640, got 720. ddraw4.c:3892: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3909: Test failed: Expected message 0x5, but didn't receive it. ddraw4.c:3911: Test failed: Expected screen size 640x480, got 0x0. ddraw4.c:3918: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:3930: Test failed: Expected surface width 640, got 720. ddraw4.c:3983: Test failed: Expected screen size 2 640x480, got 720x480. ddraw4.c:3991: Test failed: Expected (0,0)-(640,480), got (0,0)-(720,480). ddraw4.c:4003: Test failed: Expected surface width 640, got 720. ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer.
=== debian11 (32 bit German report) ===
ddraw: ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer. ddraw4.c:18323: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,768). ddraw4.c:18379: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,768). ddraw4.c:18386: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,768). ddraw4.c:18323: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,737). ddraw4.c:18345: Test failed: Expected window rect (800,0)-(1824,737), got (0,0)-(1024,737). ddraw4.c:18360: Test failed: Expected window rect (800,0)-(1824,737), got (0,0)-(1024,737). ddraw4.c:18379: Test failed: Expect window rect (0,0)-(800,600), got (1024,0)-(2048,737). ddraw4.c:18386: Test failed: Expect window rect (0,0)-(800,600), got (1024,0)-(2048,737). ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer.
=== debian11 (32 bit French report) ===
ddraw: ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer.
=== debian11 (32 bit Hebrew:Israel report) ===
ddraw: ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer.
=== debian11 (32 bit Hindi:India report) ===
ddraw: ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer.
=== debian11 (32 bit Japanese:Japan report) ===
ddraw: ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer.
=== debian11 (32 bit Chinese:China report) ===
ddraw: ddraw4.c:4217: Test failed: Got unexpected screen width 800. ddraw4.c:4219: Test failed: Got unexpected screen height 600. ddraw4.c:4241: Test failed: Got unexpected screen width 800. ddraw4.c:4243: Test failed: Got unexpected screen height 600. ddraw4.c:4276: Test failed: Got unexpected screen width 800. ddraw4.c:4278: Test failed: Got unexpected screen height 600. ddraw4.c:4299: Test failed: Got unexpected screen width 800. ddraw4.c:4301: Test failed: Got unexpected screen height 600. ddraw4.c:4306: Test failed: Got unexpected screen width 800. ddraw4.c:4308: Test failed: Got unexpected screen height 600. ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer.
=== debian11 (32 bit WoW report) ===
ddraw: ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer.
=== debian11 (64 bit WoW report) ===
ddraw: ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer. ddraw7.c:3958: Test failed: Got unexpected screen width 640. ddraw7.c:3960: Test failed: Got unexpected screen height 480. ddraw7.c:3965: Test failed: Got unexpected screen width 640. ddraw7.c:3967: Test failed: Got unexpected screen height 480. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw7.c:11650: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw7.c:11694: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer.
On Sun, 23 Jan 2022 at 21:37, Marvin testbot@winehq.org wrote:
=== debian11 (32 bit report) ===
ddraw: ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer.
This fails for me on Wine in a similar way.
Am Dienstag, 25. Jänner 2022, 13:49:08 EAT schrieb Henri Verbeet:
On Sun, 23 Jan 2022 at 21:37, Marvin testbot@winehq.org wrote:
=== debian11 (32 bit report) ===
ddraw: ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface vidmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface vidmem zbuffer. ddraw4.c:11666: Test failed: Got clear result 0x00beef00, expected 0x00adbeef, surface sysmem zbuffer. ddraw4.c:11710: Test failed: Got clear result 0xffffff00, expected 0xffffffff, surface sysmem zbuffer.
This fails for me on Wine in a similar way.
I can reproduce it on my Radeon card; AFAICS the stencil bits are in the low 8 bits and the depth bits in the high 24 bits. AMD and Nvidia cards report this differently on Windows in ddraw, but we don't particular care.
I am not particularly motivated to fix up readback values of depth stencil surfaces when we know only one game that needs them. But I'll have a look if the todo_wine in test_depth_readback has the same cause. Most likely I'll settle for making the test failure fix a windows-radeon specific thing.
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=105682
Your paranoid android.
=== w8adm (32 bit report) ===
ddraw: ddraw7.c:18849: Test failed: Got unexpected color 0x00000040.
=== w1064 (32 bit report) ===
ddraw: ddraw7.c:18849: Test failed: Got unexpected color 0x00000040.
=== debian11 (32 bit Arabic:Morocco report) ===
ddraw: ddraw4.c:3693: Test failed: Expected resolution 640x480, got 800x600. ddraw4.c:3710: Test failed: Expected surface width 640, got 800. ddraw4.c:3712: Test failed: Expected surface height 480, got 600. ddraw4.c:3726: Test failed: Expected (0,0)-(640,480), got (0,0)-(800,600). ddraw4.c:3731: Test failed: Expected surface width 640, got 800. ddraw4.c:3733: Test failed: Expected surface height 480, got 600. ddraw4.c:3746: Test failed: Expected surface width 640, got 800. ddraw4.c:3748: Test failed: Expected surface height 480, got 600. ddraw4.c:3752: Test failed: Expected (0,0)-(640,480), got (0,0)-(800,600). ddraw4.c:3775: Test failed: Expected (0,0)-(640,480), got (0,0)-(800,600). ddraw4.c:3784: Test failed: Got unexpected hr 0. ddraw4.c:3797: Test failed: Expected (0,0)-(640,480), got (0,0)-(800,600). ddraw4.c:3802: Test failed: Expected surface width 640, got 800. ddraw4.c:3804: Test failed: Expected surface height 480, got 600. ddraw4.c:3823: Test failed: Expected (0,0)-(640,480), got (0,0)-(800,600). ddraw4.c:3843: Test failed: Expected (0,0)-(640,480), got (0,0)-(800,600). ddraw4.c:3856: Test failed: Expected resolution 640x480, got 800x600. ddraw4.c:3873: Test failed: Expected surface width 640, got 800. ddraw4.c:3875: Test failed: Expected surface height 480, got 600. ddraw4.c:3880: Test failed: Expected (0,0)-(640,480), got (0,0)-(800,600). ddraw4.c:3899: Test failed: Expected screen size 640x480, got 800x600. ddraw4.c:3906: Test failed: Expected (0,0)-(640,480), got (0,0)-(800,600). ddraw4.c:3918: Test failed: Expected surface width 640, got 800. ddraw4.c:3920: Test failed: Expected surface height 480, got 600. ddraw4.c:3971: Test failed: Expected screen size 2 640x480, got 800x600. ddraw4.c:3979: Test failed: Expected (0,0)-(640,480), got (0,0)-(800,600). ddraw4.c:3991: Test failed: Expected surface width 640, got 800. ddraw4.c:3993: Test failed: Expected surface height 480, got 600. ddraw4.c:4403: Test failed: Got a different mode.
=== debian11 (32 bit Japanese:Japan report) ===
ddraw: ddraw2.c:15274: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,768). ddraw2.c:15330: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,768). ddraw2.c:15337: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,768). ddraw2.c:15274: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,737). ddraw2.c:15296: Test failed: Expected window rect (800,0)-(1824,737), got (0,0)-(1024,737). ddraw2.c:15311: Test failed: Expected window rect (800,0)-(1824,737), got (0,0)-(1024,737). ddraw2.c:15330: Test failed: Expect window rect (0,0)-(800,600), got (1024,0)-(2048,737). ddraw2.c:15337: Test failed: Expect window rect (0,0)-(800,600), got (1024,0)-(2048,737). ddraw4.c:18311: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,768). ddraw4.c:18367: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,768). ddraw4.c:18374: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,768). ddraw4.c:18311: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,737). ddraw4.c:18333: Test failed: Expected window rect (800,0)-(1824,737), got (0,0)-(1024,737). ddraw4.c:18348: Test failed: Expected window rect (800,0)-(1824,737), got (0,0)-(1024,737). ddraw4.c:18367: Test failed: Expect window rect (0,0)-(800,600), got (1024,0)-(2048,737). ddraw4.c:18374: Test failed: Expect window rect (0,0)-(800,600), got (1024,0)-(2048,737). ddraw7.c:18577: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,768). ddraw7.c:18633: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,768). ddraw7.c:18640: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,768). ddraw7.c:18577: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,737). ddraw7.c:18599: Test failed: Expected window rect (800,0)-(1824,737), got (0,0)-(1024,737). ddraw7.c:18614: Test failed: Expected window rect (800,0)-(1824,737), got (0,0)-(1024,737). ddraw7.c:18633: Test failed: Expect window rect (0,0)-(800,600), got (1024,0)-(2048,737). ddraw7.c:18640: Test failed: Expect window rect (0,0)-(800,600), got (1024,0)-(2048,737).
=== debian11 (32 bit Chinese:China report) ===
ddraw: ddraw2.c:15296: Test failed: Expected window rect (800,0)-(1824,737), got (0,0)-(1024,737). ddraw2.c:15311: Test failed: Expected window rect (800,0)-(1824,737), got (0,0)-(1024,737). ddraw4.c:3843: Test failed: Expected (0,0)-(800,600), got (0,0)-(640,480). ddraw4.c:3880: Test failed: Expected (0,0)-(800,600), got (0,0)-(640,480). ddraw4.c:18311: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,768). ddraw4.c:18367: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,768). ddraw4.c:18374: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,768). ddraw4.c:18311: Test failed: Expect window rect (0,0)-(800,600), got (0,0)-(1024,737). ddraw4.c:18333: Test failed: Expected window rect (800,0)-(1824,737), got (0,0)-(1024,737). ddraw4.c:18348: Test failed: Expected window rect (800,0)-(1824,737), got (0,0)-(1024,737). ddraw4.c:18367: Test failed: Expect window rect (0,0)-(800,600), got (1024,0)-(2048,737). ddraw4.c:18374: Test failed: Expect window rect (0,0)-(800,600), got (1024,0)-(2048,737).
=== debian11 (64 bit WoW report) ===
ddraw: ddraw7.c:3123: Test failed: Got unexpected screen size 640x480. ddraw7.c:3129: Test failed: Expected message 0x7e, but didn't receive it. ddraw7.c:3177: Test failed: Expected message 0x47, but didn't receive it. ddraw7.c:3179: Test failed: Expected screen size 1024x768, got 0x0. ddraw7.c:3185: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3209: Test failed: Expected surface width 1024, got 640. ddraw7.c:3215: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3222: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3227: Test failed: Expected surface width 1024, got 640. ddraw7.c:3242: Test failed: Expected surface width 1024, got 640. ddraw7.c:3248: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3271: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3284: Test failed: Got unexpected hr 0. ddraw7.c:3286: Test failed: Got unexpected hr 0. ddraw7.c:3293: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3298: Test failed: Expected surface width 1024, got 640. ddraw7.c:3300: Test failed: Expected surface height 768, got 480. ddraw7.c:3319: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3339: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3352: Test failed: Expected resolution 1024x768, got 640x480. ddraw7.c:3369: Test failed: Expected surface width 1024, got 640. ddraw7.c:3371: Test failed: Expected surface height 768, got 480. ddraw7.c:3375: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3385: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3390: Test failed: Expected surface width 1024, got 640. ddraw7.c:3392: Test failed: Expected surface height 768, got 480. ddraw7.c:3405: Test failed: Expected surface width 1024, got 640. ddraw7.c:3407: Test failed: Expected surface height 768, got 480. ddraw7.c:3411: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3434: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3447: Test failed: Got unexpected hr 0. ddraw7.c:3449: Test failed: Got unexpected hr 0. ddraw7.c:3456: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3461: Test failed: Expected surface width 1024, got 640. ddraw7.c:3463: Test failed: Expected surface height 768, got 480. ddraw7.c:3482: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3502: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3515: Test failed: Expected resolution 1024x768, got 640x480. ddraw7.c:3532: Test failed: Expected surface width 1024, got 640. ddraw7.c:3534: Test failed: Expected surface height 768, got 480. ddraw7.c:3539: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3556: Test failed: Expected message 0x5, but didn't receive it. ddraw7.c:3558: Test failed: Expected screen size 1024x768, got 0x0. ddraw7.c:3565: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3577: Test failed: Expected surface width 1024, got 640. ddraw7.c:3579: Test failed: Expected surface height 768, got 480. ddraw7.c:3630: Test failed: Expected screen size 2 1024x768, got 640x480. ddraw7.c:3638: Test failed: Expected (0,0)-(1024,768), got (0,0)-(640,480). ddraw7.c:3650: Test failed: Expected surface width 1024, got 640. ddraw7.c:3652: Test failed: Expected surface height 768, got 480.
Am Sonntag, 23. Jänner 2022, 19:08:16 EAT schrieb Stefan Dösinger:
|| (ddraw_is_nvidia(ddraw) && (all_zero || all_one || !tests[i].s_depth)),
|| (ddraw_is_nvidia(ddraw) && (all_zero || all_one || !tests[i].s_depth)
|| (ddraw_is_amd(ddraw) && !tests[i].s_depth && tests[i].z_mask == 0x00ffffff)),
The parenthesis here are all wrong; Visual Studio warns about a lot of stuff, but I needed gcc to tell me about the real problem...