Commit graph

2832 commits

Author SHA1 Message Date
Stefan Dösinger 1c5bfc120d ddraw/tests: Avoid picking a large mode on Win10 in find_different_mode_callback. 2022-09-07 20:07:18 +02:00
Stefan Dösinger fc9f3bbfa5 ddraw/tests: Avoid picking a large mode on Win10 in test_coop_level_mode_set_enum_cb. 2022-09-07 20:07:18 +02:00
Zhiyi Zhang 4f00a1f9e2 ddraw: Don't report unsupported device capabilities in d3d3_EnumDevices(). 2022-08-24 09:05:47 -05:00
Zhiyi Zhang 6c391ac139 ddraw: Don't report unsupported device capabilities in d3d7_EnumDevices().
Fix Battle Realms: Zen Edition failing to start. The game expects to find a device without
D3DDEVCAPS_HWTRANSFORMANDLIGHT.
2022-08-24 09:05:45 -05:00
Zhiyi Zhang 0868bed180 ddraw/tests: Add more capability tests for enumerated devices.
Add tests for D3DDEVCAPS_HWTRANSFORMANDLIGHT and D3DDEVCAPS_DRAWPRIMITIVES2EX.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
2022-08-24 09:05:42 -05:00
Zhiyi Zhang 3c899df3b5 ddraw/tests: Move the capability tests for enumerated devices.
Move the capability tests for enumerated devices from d3d.c to ddraw{1,2,4}.c.
2022-08-24 09:05:38 -05:00
Zhiyi Zhang 21beb2a8c7 ddraw/tests: Add a comment to note that tests in d3d.c are deprecated.
And new tests should be added to tests/ddraw{1,2,4,7}.c.
2022-08-24 09:05:36 -05:00
Matteo Bruni 1f8431658e wined3d: Introduce WINED3DUSAGE_MANAGED.
We would like to use two different textures for the CPU and GPU parts of managed
textures, which means that wined3d_resource_access_is_managed() as such will no
longer be useful.
2022-08-16 22:27:53 +02:00
Paul Gofman f48f5155ee ddraw: Restore full complex attachment chain in ddraw_surface7_Restore(). 2022-08-16 22:27:53 +02:00
Paul Gofman 4c0efe444d ddraw/tests: Add more tests for restoring complex surfaces. 2022-08-16 22:27:53 +02:00
Zebediah Figura 0ee74e9f81 d3d9: Cache the output mode list.
Garou: Mark of the Wolves calls IDirect3D9::GetAdapterModeCount() on every
frame. This results in calling EnumDisplaySettingsExW() once per available mode,
which is a very slow operation, both on Windows and Wine.

Manual testing shows that Windows caches the mode list (as well as the adapter
list, which is already cached in Wine) in Direct3D 9 and lower. Calls to
GetAdapterModeCount() and EnumAdapterDisplayModes() are fast, and they also do
not change if monitors are added or removed.

DXGI behaves differently, however. The list of outputs attached to an adapter is
cached—that is, calls to IDXGIAdapter::EnumOutputs() are fast, and return stale
data. However, at least some other calls are slow and do not seem to be cached,
including IDXGIOutput::GetDisplayModeList() and IDXGIOutput::GetDesc().

ddraw is also slow and uncached. Since all testing was done on Windows 10 (for
lack of available older hardware to test with) it is not unlikely that ddraw was
reimplemented over dxgi on newer Windows, and that older Windows versions would
be fast and cached, but this is speculation. In any case I have not included
patches to cache ddraw modes.

Tests were done on Windows 10 21H2, both on real hardware with NVidia drivers
and on software drivers via qemu/KVM. In the latter case only speed could be
tested, but this was consistent with the results from the NVidia machine.
2022-08-02 21:49:54 +02:00
Stefan Dösinger 7fa1259823 ddraw/tests: Add some video memory accounting tests. 2022-08-02 11:59:03 +02:00
Stefan Dösinger 8bddb9808e ddraw: Don't account video memory for sysmem surfaces' draw textures.
Star Trek Starfleet Academy does not like it when available video memory
goes down after creating a system memory resource. It destroys all its
textures and recreates them, and in some sitations forgets to recreate
one or another texture, resulting in rendering bugs.

I suspect the game is trying to detect focus loss by monitoring for
unexpected video memory changes.
2022-08-02 11:58:59 +02:00
Zebediah Figura 7375e8a9fc ddraw/tests: Build ddraw7.c without -DWINE_NO_LONG_TYPES. 2022-07-13 12:50:07 +02:00
Zebediah Figura b176b9dab1 ddraw/tests: Build ddraw4.c without -DWINE_NO_LONG_TYPES. 2022-07-13 12:50:07 +02:00
Zebediah Figura 0af510467b ddraw/tests: Build ddraw2.c without -DWINE_NO_LONG_TYPES. 2022-07-12 22:51:29 +02:00
Zebediah Figura 92793a6e73 ddraw/tests: Build ddraw1.c without -DWINE_NO_LONG_TYPES. 2022-07-12 22:51:29 +02:00
Zebediah Figura fcaa16ae40 ddraw/tests: Build visual.c without -DWINE_NO_LONG_TYPES. 2022-07-11 10:33:29 +02:00
Zebediah Figura a4bf81081d ddraw/tests: Build refcount.c without -DWINE_NO_LONG_TYPES. 2022-07-11 10:33:29 +02:00
Zebediah Figura cc7eae0c8f ddraw/tests: Build dsurface.c without -DWINE_NO_LONG_TYPES. 2022-07-11 10:33:27 +02:00
Zebediah Figura 8a56c4dbba ddraw/tests: Build ddrawmodes.c without -DWINE_NO_LONG_TYPES. 2022-07-08 10:48:28 +02:00
Zebediah Figura 0f45657137 ddraw/tests: Build d3d.c without -DWINE_NO_LONG_TYPES. 2022-07-08 10:48:28 +02:00
Zebediah Figura 27e84c2897 wined3d: Consider WINED3D_LOCATION_CLEARED to be a GPU location for GPU-accessible textures.
When blitting from a staging texture in SYSMEM to an as-yet uninitialized GPU
texture, we want to avoid ever loading the source texture into TEXTURE_RGB, or
loading the destination texture into SYSMEM.

This isn't really a proper fix for the relevant tests; it just manages to avoid
the problematic code path.

This manages to fix test_yv12_overlay because it causes those blits to use the
upload path (whereas currently they go through the raw blitter, and before
1632b8e7a4 they would go through the CPU blitter), and
wined3d_texture_gl_upload_data() is one of the only functions to correctly
handle planar YUV formats.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52684
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-27 11:53:11 +02:00
Zebediah Figura edebe24a07 ddraw/tests: Use winetest_push_context() in test_viewport().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-21 19:57:49 +02:00
Nikolay Sivov 738c1c01b6 ddraw: Improve tracing format for unsigned fields.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-21 19:57:44 +02:00
Nikolay Sivov 4ceb3a650d ddraw: Build without -DWINE_NO_LONG_TYPES.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-15 20:55:37 +02:00
Matteo Bruni 6784684abf ddraw: Filter out redundant discard maps.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-17 18:57:22 +01:00
Stefan Dösinger 3a833d9b0b ddraw/tests: Account for random WARP behavior in test_texturemapblend.
Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-09 20:08:11 +01:00
Stefan Dösinger 9da1a5059d ddraw/tests: Mark random WARP behavior broken in test_ck_default.
Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-08 15:25:27 +01:00
Stefan Dösinger cbd14598d5 ddraw/tests: Disable color keying in ddraw1 test_texture_load.
Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-08 15:25:25 +01:00
Stefan Dösinger d41ca1818c ddraw/tests: Skip a crashy test on WARP.
ddraw1 doesn't draw, so presumably not affected. Can't find any crashes in the testbot history
http://test.winehq.org/data/4364ff8d5c0387edd6fae142affe8e844b291518/win81_newtb-w8adm/ddraw:ddraw2.html
http://test.winehq.org/data/d03984709d87d6eaa0e2e7746f0db5d8fdf81b5a/win1507_newtb-w1064v1507-32/ddraw:ddraw4.html
I haven't found any examples of ddraw7 crashing in this test. Doesn't mean there aren't any. Let's wait and see.

Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-08 15:25:14 +01:00
Alexandre Julliard f0cd33c69e include: Add support for defining Win32 types as 'long' where possible.
Add -DWINE_NO_LONG_TYPES to modules that still have compilation
warnings with long types.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 20:38:22 +01:00
Stefan Dösinger 9a4992173e ddraw/tests: Don't insist on a different refresh rate if no refresh rate was requested.
d4fdb1f62c broke test_cursor_clipping by accident. It added a requirement
that width, height and refresh rate are different from the old mode, but
test_cursor_clipping does not use DDEDM_REFRESHRATES, so all refresh rates
are 0.

Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 21:53:57 +01:00
Stefan Dösinger dc79534a6d ddraw/tests: Treat refresh rates with 1 hz difference as equal.
Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 21:53:57 +01:00
Stefan Dösinger 917e8dbf67 ddraw/tests: Accept broken depth readback of new-ish AMD GPUs.
Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-25 20:50:49 +01:00
Gabriel Ivăncescu e44afcd8bf ddraw: Remove topmost style when going from exclusive mode to normal.
Unless DDSCL_NOWINDOWCHANGES was specified.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-20 18:18:00 +01:00
Gabriel Ivăncescu f8ac8752ed ddraw: Use WINED3D_SWAPCHAIN_NO_WINDOW_CHANGES also if DDSCL_NOWINDOWCHANGES is set.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-20 18:17:52 +01:00
Gabriel Ivăncescu a384da8865 ddraw: Use WINED3D_SWAPCHAIN_NO_WINDOW_CHANGES only if window is not in foreground.
Fixes a regression introduced by f90d607c67.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50370
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-20 18:17:45 +01:00
Stefan Dösinger 9e6a307f09 ddraw/tests: Reduce precision in test_filling_convention.
Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-10 16:57:41 +01:00
Paul Gofman c52f7de248 ddraw/tests: Port tests for fullscreen window size reset from d3d9.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-03 14:50:30 +01:00
Matteo Bruni 1e992a430b ddraw: Fix typo in a comment.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-14 20:54:22 +01:00
Matteo Bruni 029297fabd ddraw: Add a trace to ddraw_surface_update_frontbuffer().
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-14 20:54:19 +01:00
Matteo Bruni 9191661992 ddraw: Pass the sub resource count to ddraw_surface_reserve_memory().
Mostly to avoid triggering the WARN() from
wined3d_texture_get_sub_resource_desc() every time this function is
called.

Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-14 20:54:15 +01:00
Zebediah Figura 2292e5fb5d ddraw/tests: Pass the correct size to VirtualQuery().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-24 15:33:50 +01:00
Stefan Dösinger f6ccf4a9c5 ddraw/tests: Port test_filling_convention to ddraw.
Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-15 19:57:55 +01:00
Henri Verbeet 996cfb841e ddraw: Use wined3d_bit_scan() in compute_sphere_visibility().
Rémi Bernon reports an unspecified issue with gcc 11 related to
compute_sphere_visibility() expecting 12 input planes, but
d3d_device3_ComputeSphereVisibility() only providing 6. The actual number of
planes required depends on the "enabled_planes" mask. This patch should make
the code better reflect that, but I do not have a gcc 11 setup to verify it
resolves the issue there.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 18:55:55 +01:00
Stefan Dösinger 044f5e109f wined3d: Test if an offset is needed to get the correct filling convention.
This fixes stray lines in GameFace GUIs, e.g. in World of Tanks.

Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-04 22:36:28 +01:00
Jan Sikorski 48bc9ba47a ddraw: Don't grab wined3d lock for wined3d_resource_unmap().
Signed-off-by: Jan Sikorski <jsikorski@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-19 22:51:19 +02:00
Alexandre Julliard 97479d3d32 ntdll: Move some exception definitions to winternl.h.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-07 13:52:42 +02:00
Alexandre Julliard 088a787a2c makefiles: Make -mno-cygwin the default.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-20 22:45:48 +02:00