Signed-off-by: Jeff Smith whydoubt@gmail.com --- This series cleans up failures seen on the XP test machine using the "VMware SVGA II" driver, which seems to lack various features, such as 3D texture support.
dlls/ddraw/tests/ddraw1.c | 3 +++ dlls/ddraw/tests/ddraw2.c | 3 +++ dlls/ddraw/tests/ddraw4.c | 3 +++ dlls/ddraw/tests/ddraw7.c | 3 +++ 4 files changed, 12 insertions(+)
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c index b513121fbb..b1045e2854 100644 --- a/dlls/ddraw/tests/ddraw1.c +++ b/dlls/ddraw/tests/ddraw1.c @@ -5488,6 +5488,9 @@ static void test_create_surface_pitch(void) } if ((test_data[i].caps & DDSCAPS_VIDEOMEMORY) && hr == DDERR_NODIRECTDRAWHW) continue; + if (((test_data[i].caps & (DDSCAPS_VIDEOMEMORY | DDSCAPS_TEXTURE)) == + (DDSCAPS_VIDEOMEMORY | DDSCAPS_TEXTURE)) && hr == DDERR_NOTEXTUREHW) + continue; ok(hr == test_data[i].hr, "Test %u: Got unexpected hr %#x, expected %#x.\n", i, hr, test_data[i].hr); if (FAILED(hr)) continue; diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c index 541362c748..5a26d4eec4 100644 --- a/dlls/ddraw/tests/ddraw2.c +++ b/dlls/ddraw/tests/ddraw2.c @@ -6430,6 +6430,9 @@ static void test_create_surface_pitch(void) } if ((test_data[i].caps & DDSCAPS_VIDEOMEMORY) && hr == DDERR_NODIRECTDRAWHW) continue; + if (((test_data[i].caps & (DDSCAPS_VIDEOMEMORY | DDSCAPS_TEXTURE)) == + (DDSCAPS_VIDEOMEMORY | DDSCAPS_TEXTURE)) && hr == DDERR_NOTEXTUREHW) + continue; ok(hr == test_data[i].hr, "Test %u: Got unexpected hr %#x, expected %#x.\n", i, hr, test_data[i].hr); if (FAILED(hr)) continue; diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c index 8cadfae52a..33e3db259a 100644 --- a/dlls/ddraw/tests/ddraw4.c +++ b/dlls/ddraw/tests/ddraw4.c @@ -8266,6 +8266,9 @@ static void test_create_surface_pitch(void) } if ((test_data[i].caps & DDSCAPS_VIDEOMEMORY) && hr == DDERR_NODIRECTDRAWHW) continue; + if (((test_data[i].caps & (DDSCAPS_VIDEOMEMORY | DDSCAPS_TEXTURE)) == + (DDSCAPS_VIDEOMEMORY | DDSCAPS_TEXTURE)) && hr == DDERR_NOTEXTUREHW) + continue; ok(hr == test_data[i].hr, "Test %u: Got unexpected hr %#x, expected %#x.\n", i, hr, test_data[i].hr); if (FAILED(hr)) continue; diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index f4a709711b..8ad1e859fa 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -8110,6 +8110,9 @@ static void test_create_surface_pitch(void) } if ((test_data[i].caps & DDSCAPS_VIDEOMEMORY) && hr == DDERR_NODIRECTDRAWHW) continue; + if (((test_data[i].caps & (DDSCAPS_VIDEOMEMORY | DDSCAPS_TEXTURE)) == + (DDSCAPS_VIDEOMEMORY | DDSCAPS_TEXTURE)) && hr == DDERR_NOTEXTUREHW) + continue; if (is_ddraw64 && (test_data[i].caps & DDSCAPS_TEXTURE) && SUCCEEDED(test_data[i].hr)) todo_wine ok(hr == E_NOINTERFACE, "Test %u: Got unexpected hr %#x.\n", i, hr); else
Signed-off-by: Jeff Smith whydoubt@gmail.com --- dlls/ddraw/tests/ddraw1.c | 3 ++- dlls/ddraw/tests/ddraw2.c | 3 ++- dlls/ddraw/tests/ddraw4.c | 3 ++- dlls/ddraw/tests/ddraw7.c | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c index b1045e2854..a03d0881c5 100644 --- a/dlls/ddraw/tests/ddraw1.c +++ b/dlls/ddraw/tests/ddraw1.c @@ -5509,7 +5509,8 @@ static void test_create_surface_pitch(void) "Test %u: Got unexpected pitch %u, expected %u.\n", i, U1(surface_desc).lPitch, test_data[i].pitch_out64); else - ok(U1(surface_desc).lPitch == test_data[i].pitch_out32, + ok(U1(surface_desc).lPitch == test_data[i].pitch_out32 || broken( + U1(surface_desc).lPitch == 0xfc && (test_data[i].caps & DDSCAPS_VIDEOMEMORY)), "Test %u: Got unexpected pitch %u, expected %u.\n", i, U1(surface_desc).lPitch, test_data[i].pitch_out32); } diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c index 5a26d4eec4..688cb532bd 100644 --- a/dlls/ddraw/tests/ddraw2.c +++ b/dlls/ddraw/tests/ddraw2.c @@ -6452,7 +6452,8 @@ static void test_create_surface_pitch(void) "Test %u: Got unexpected pitch %u, expected %u.\n", i, U1(surface_desc).lPitch, test_data[i].pitch_out64); else - ok(U1(surface_desc).lPitch == test_data[i].pitch_out32, + ok(U1(surface_desc).lPitch == test_data[i].pitch_out32 || broken( + U1(surface_desc).lPitch == 0xfc && (test_data[i].caps & DDSCAPS_VIDEOMEMORY)), "Test %u: Got unexpected pitch %u, expected %u.\n", i, U1(surface_desc).lPitch, test_data[i].pitch_out32); } diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c index 33e3db259a..96d8e2a701 100644 --- a/dlls/ddraw/tests/ddraw4.c +++ b/dlls/ddraw/tests/ddraw4.c @@ -8288,7 +8288,8 @@ static void test_create_surface_pitch(void) "Test %u: Got unexpected pitch %u, expected %u.\n", i, U1(surface_desc).lPitch, test_data[i].pitch_out64); else - ok(U1(surface_desc).lPitch == test_data[i].pitch_out32, + ok(U1(surface_desc).lPitch == test_data[i].pitch_out32 || broken( + U1(surface_desc).lPitch == 0xfc && (test_data[i].caps & DDSCAPS_VIDEOMEMORY)), "Test %u: Got unexpected pitch %u, expected %u.\n", i, U1(surface_desc).lPitch, test_data[i].pitch_out32); } diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index 8ad1e859fa..8044e49a60 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -8135,7 +8135,8 @@ static void test_create_surface_pitch(void) "Test %u: Got unexpected pitch %u, expected %u.\n", i, U1(surface_desc).lPitch, test_data[i].pitch_out64); else - ok(U1(surface_desc).lPitch == test_data[i].pitch_out32, + ok(U1(surface_desc).lPitch == test_data[i].pitch_out32 || broken( + U1(surface_desc).lPitch == 0xfc && (test_data[i].caps & DDSCAPS_VIDEOMEMORY)), "Test %u: Got unexpected pitch %u, expected %u.\n", i, U1(surface_desc).lPitch, test_data[i].pitch_out32); }
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=63700
Your paranoid android.
=== wvistau64 (32 bit report) ===
ddraw: 06ec:ddraw4: unhandled exception c0000005 at 74196143
=== wvistau64 (64 bit report) ===
ddraw: 06e4:ddraw4: unhandled exception c0000005 at 000007FEF6301883
=== wvistau64 (32 bit report) ===
ddraw: 06ec:ddraw7: unhandled exception c0000005 at 74126143
=== wvistau64 (64 bit report) ===
ddraw: 0914:ddraw7: unhandled exception c0000005 at 000007FEF6301883
=== debian10 (build log) ===
0009:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0009:err:winediag:nodrv_CreateWindow The explorer process failed to start. Error: Unable to create a window, the display driver is not working. Task: WineTest did not produce the wow64 report
Signed-off-by: Jeff Smith whydoubt@gmail.com --- dlls/ddraw/tests/ddraw1.c | 7 +++++++ dlls/ddraw/tests/ddraw2.c | 7 +++++++ dlls/ddraw/tests/ddraw4.c | 7 +++++++ dlls/ddraw/tests/ddraw7.c | 7 +++++++ 4 files changed, 28 insertions(+)
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c index a03d0881c5..30069738b0 100644 --- a/dlls/ddraw/tests/ddraw1.c +++ b/dlls/ddraw/tests/ddraw1.c @@ -13018,6 +13018,13 @@ static void test_caps(void) "Got unexpected caps %#x, expected %#x.\n", hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
+ if (hal_caps.ddsCaps.dwCaps && (~hal_caps.ddsCaps.dwCaps & caps_always)) + { + skip("Failed to find sufficient hardware caps, skipping test.\n"); + IDirectDraw_Release(ddraw); + return; + } + no3d = !(hal_caps.ddsCaps.dwCaps & DDSCAPS_3DDEVICE); if (hal_caps.ddsCaps.dwCaps) { diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c index 688cb532bd..48c00e2220 100644 --- a/dlls/ddraw/tests/ddraw2.c +++ b/dlls/ddraw/tests/ddraw2.c @@ -13850,6 +13850,13 @@ static void test_caps(void) "Got unexpected caps %#x, expected %#x.\n", hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
+ if (hal_caps.ddsCaps.dwCaps && (~hal_caps.ddsCaps.dwCaps & caps_always)) + { + skip("Failed to find sufficient hardware caps, skipping test.\n"); + IDirectDraw_Release(ddraw); + return; + } + no3d = !(hal_caps.ddsCaps.dwCaps & DDSCAPS_3DDEVICE); if (hal_caps.ddsCaps.dwCaps) { diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c index 96d8e2a701..3c2143e5bf 100644 --- a/dlls/ddraw/tests/ddraw4.c +++ b/dlls/ddraw/tests/ddraw4.c @@ -16502,6 +16502,13 @@ static void test_caps(void) "Got unexpected caps %#x, expected %#x.\n", hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
+ if (hal_caps.ddsCaps.dwCaps && (~hal_caps.ddsCaps.dwCaps & caps_always)) + { + skip("Failed to find sufficient hardware caps, skipping test.\n"); + IDirectDraw_Release(ddraw); + return; + } + no3d = !(hal_caps.ddsCaps.dwCaps & DDSCAPS_3DDEVICE); if (hal_caps.ddsCaps.dwCaps) { diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index 8044e49a60..2ca73d2d66 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -16476,6 +16476,13 @@ static void test_caps(void) "Got unexpected caps %#x, expected %#x.\n", hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
+ if (hal_caps.ddsCaps.dwCaps && (~hal_caps.ddsCaps.dwCaps & caps_always)) + { + skip("Failed to find sufficient hardware caps, skipping test.\n"); + IDirectDraw_Release(ddraw); + return; + } + no3d = !(hal_caps.ddsCaps.dwCaps & DDSCAPS_3DDEVICE); if (hal_caps.ddsCaps.dwCaps) {
Am 23.01.20 um 18:33 schrieb Jeff Smith:
- if (hal_caps.ddsCaps.dwCaps && (~hal_caps.ddsCaps.dwCaps & caps_always))
- {
skip("Failed to find sufficient hardware caps, skipping test.\n");
IDirectDraw_Release(ddraw);
return;
- }
On which machine do you get test failures otherwise? Can you test https://source.winehq.org/patches/data/176979 and see if that helps too? Patch 176980 may be relevant too.
There are certainly some other weird things going on in the test that I don't fully understand yet.
On Thu, Jan 23, 2020 at 12:27 PM Stefan Dösinger stefandoesinger@gmail.com wrote:
Am 23.01.20 um 18:33 schrieb Jeff Smith:
- if (hal_caps.ddsCaps.dwCaps && (~hal_caps.ddsCaps.dwCaps & caps_always))
- {
skip("Failed to find sufficient hardware caps, skipping test.\n");
IDirectDraw_Release(ddraw);
return;
- }
On which machine do you get test failures otherwise? Can you test https://source.winehq.org/patches/data/176979 and see if that helps too? Patch 176980 may be relevant too.
There are certainly some other weird things going on in the test that I don't fully understand yet.
Hi Stefan,
IIRC, on the testbot machine using the "WMware SVGA II" driver, the HAL caps include DDSCAPS_FLIP, DDSCAPS_OFFSCREENPLAIN, DDSCAPS_PRIMARYSURFACE but not DDSCAPS_TEXTURE, DDSCAPS_ZBUFFER, DDSCAPS_MIPMAP
I don't have a box set up that reports lacking these caps. Patches #1 and #3 are tied to these HAL caps: #1: if that TEXTURE flag is not set, skip a test that depends on texture support #3: if any of those flags are not set, skip the tests that relate back to those flags being set. These do seem similar to 176980 (but for different flags). I will look into doing some tests with 176979, to see if it has any impact on these flags.
As for patch #2: for VIDEOMEMORY surfaces, if the reported line pitch is unpadded, pass the test (as a "broken" value). I doubt that one is really related to the others (besides being caused by the same driver).
Thanks, Jeff
On Thu, Jan 23, 2020 at 2:40 PM Jeff Smith whydoubt@gmail.com wrote:
On Thu, Jan 23, 2020 at 12:27 PM Stefan Dösinger stefandoesinger@gmail.com wrote:
Am 23.01.20 um 18:33 schrieb Jeff Smith:
- if (hal_caps.ddsCaps.dwCaps && (~hal_caps.ddsCaps.dwCaps & caps_always))
- {
skip("Failed to find sufficient hardware caps, skipping test.\n");
IDirectDraw_Release(ddraw);
return;
- }
On which machine do you get test failures otherwise? Can you test https://source.winehq.org/patches/data/176979 and see if that helps too? Patch 176980 may be relevant too.
IIRC, on the testbot machine using the "WMware SVGA II" driver, the HAL caps include DDSCAPS_FLIP, DDSCAPS_OFFSCREENPLAIN, DDSCAPS_PRIMARYSURFACE but not DDSCAPS_TEXTURE, DDSCAPS_ZBUFFER, DDSCAPS_MIPMAP
I don't have a box set up that reports lacking these caps.
Hi Stefan,
Well, it seems I cannot test that machine directly (I guess it's available only for the 'daily' build), but I really believe this is just a case of the driver being very limited in capability.
Thanks, Jeff
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=63701
Your paranoid android.
=== w8adm (32 bit report) ===
ddraw: ddraw1.c:11117: Test failed: Got unexpected color 0x00ffffff.
=== w1064v1809_he (32 bit report) ===
ddraw: ddraw1.c:11097: Test failed: Got unexpected color 0x00ffffff. ddraw1.c:11117: Test failed: Got unexpected color 0x00ffffff.
=== wvistau64 (32 bit report) ===
ddraw: 08d8:ddraw4: unhandled exception c0000005 at 73DE6143
=== w8adm (32 bit report) ===
ddraw: ddraw4.c:3497: Test failed: Got unexpected hr 0x887601c2.
=== wvistau64 (64 bit report) ===
ddraw: 0914:ddraw4: unhandled exception c0000005 at 000007FEF6301883
=== wvistau64 (32 bit report) ===
ddraw: 0914:ddraw7: unhandled exception c0000005 at 73DE6143
=== wvistau64 (64 bit report) ===
ddraw: 0914:ddraw7: unhandled exception c0000005 at 000007FEF6301883
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=63699
Your paranoid android.
=== wvistau64 (32 bit report) ===
ddraw: 02d8:ddraw4: unhandled exception c0000005 at 73DE6143
=== w8 (32 bit report) ===
ddraw: 0d00:ddraw4: unhandled exception c0000005 at 69E73599
=== w8adm (32 bit report) ===
ddraw: ddraw4.c:3479: Test failed: Failed to create surface, hr 0x887601c2.
=== wvistau64 (64 bit report) ===
ddraw: 0910:ddraw4: unhandled exception c0000005 at 000007FEF6301883
=== wvistau64 (32 bit report) ===
ddraw: 0914:ddraw7: unhandled exception c0000005 at 74126143
=== w8 (32 bit report) ===
ddraw: ddraw7.c:3979: Test failed: Lit quad without normals has color 0x00ffffff, expected 0x00000000. ddraw7.c:3992: Test failed: Lit quad with normals has color 0x00ffffff, expected 0x00000000. ddraw7.c:4037: Test failed: Lit quad with light has color 0x00ffffff. ddraw7.c:4037: Test failed: Lit quad with singular world matrix has color 0x00ffffff. ddraw7.c:4037: Test failed: Lit quad with transformation matrix has color 0x00ffffff. ddraw7.c:4037: Test failed: Lit quad with non-affine matrix has color 0x00ffffff.
=== wvistau64 (64 bit report) ===
ddraw: 0388:ddraw7: unhandled exception c0000005 at 000007FEF6301883
On Thu, 23 Jan 2020 at 21:04, Jeff Smith whydoubt@gmail.com wrote:
This series cleans up failures seen on the XP test machine using the "VMware SVGA II" driver, which seems to lack various features, such as 3D texture support.
I think there's very little value in accommodating such configurations; they're just not representative of the GPUs and drivers ddraw applications typically target. I feel similarly about e.g. WARP and Windows 10, but in that case it's more about accommodating the testbot than anything else.
On Fri, Jan 24, 2020 at 7:48 AM Henri Verbeet hverbeet@gmail.com wrote:
On Thu, 23 Jan 2020 at 21:04, Jeff Smith whydoubt@gmail.com wrote:
This series cleans up failures seen on the XP test machine using the "VMware SVGA II" driver, which seems to lack various features, such as 3D texture support.
I think there's very little value in accommodating such configurations; they're just not representative of the GPUs and drivers ddraw applications typically target. I feel similarly about e.g. WARP and Windows 10, but in that case it's more about accommodating the testbot than anything else.
Hi Henri,
Making accommodation for the testbot is exactly what this patchset does. The choices here I see are... 1) deal with/work around the configuration (i.e. this patchset), or 2) can the configuration (i.e. quit testing with the vmx_fb driver, only test the vga driver), or 3) stop caring about test breakage (O, that way madness lies).
Thanks, Jeff
On Fri, 24 Jan 2020 at 20:46, Jeff Smith whydoubt@gmail.com wrote:
Making accommodation for the testbot is exactly what this patchset does.
I don't think any testbot machine is running VMware SVGA. In particular, newtb-wxppro is running "vga.dll". There are test reports on test.winehq.org using VMware SVGA (e.g. fg-winxp-lusr), but those aren't from the testbot.
On Mon, Jan 27, 2020 at 5:47 AM Henri Verbeet hverbeet@gmail.com wrote:
On Fri, 24 Jan 2020 at 20:46, Jeff Smith whydoubt@gmail.com wrote:
Making accommodation for the testbot is exactly what this patchset does.
I don't think any testbot machine is running VMware SVGA. In particular, newtb-wxppro is running "vga.dll". There are test reports on test.winehq.org using VMware SVGA (e.g. fg-winxp-lusr), but those aren't from the testbot.
Ah yes, I wasn't think about that box being on test but not testbot. So I take it you do not wish to accommodate for machines that are in "test" but not "testbot"?
As an aside on the Jan 23 test, it appears that the "VBoxDisp.dll":"VirtualBox Graphics Adapter" driver exhibits the same failures (as well as others). Also, the "igxprd32.dll":"Mobile Intel(R) 945 Express Chipset Family" has a very different set of flags and fails several test_caps checks. It makes me wonder if test_caps, needs more significant help.
On Mon, 27 Jan 2020 at 18:27, Jeff Smith whydoubt@gmail.com wrote:
On Mon, Jan 27, 2020 at 5:47 AM Henri Verbeet hverbeet@gmail.com wrote:
I don't think any testbot machine is running VMware SVGA. In particular, newtb-wxppro is running "vga.dll". There are test reports on test.winehq.org using VMware SVGA (e.g. fg-winxp-lusr), but those aren't from the testbot.
Ah yes, I wasn't think about that box being on test but not testbot. So I take it you do not wish to accommodate for machines that are in "test" but not "testbot"?
It's not quite that black and white. We'd certainly accommodate common AMD/NVIDIA/Intel hardware. Even for VMware SVGA, if someone cared enough about it, it wouldn't necessarily be against it. (But you'd probably have to do something involving ddraw_is_vmware() instead.) Nevertheless, results on VMware SVGA have very little relation to what ddraw applications written at the time may or may not expect drivers to do; it's just not representative. And ultimately the goal of running the tests on Windows is to find out how applications expect the API to behave.
As an aside on the Jan 23 test, it appears that the "VBoxDisp.dll":"VirtualBox Graphics Adapter" driver exhibits the same failures (as well as others).
Similar issue.
Also, the "igxprd32.dll":"Mobile Intel(R) 945 Express Chipset Family" has a very different set of flags and fails several test_caps checks. It makes me wonder if test_caps, needs more significant help.
Stefan was looking at test_caps() recently and may be able to help.