Commit graph

2212 commits

Author SHA1 Message Date
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
Zebediah Figura a3c4410fea d3d9: Introduce a wined3d_usage_from_d3d() helper. 2022-08-16 22:27:53 +02:00
Zebediah Figura bc7b188f55 d3d9/tests: Add tests for D3DLOCK_NO_DIRTY_UPDATE with vertex buffers. 2022-08-16 22:27:53 +02:00
Zebediah Figura a0eaae85a4 d3d9/tests: Add more tests for dirty rect handling. 2022-08-15 18:11:11 +02:00
Zebediah Figura 5a8075c945 d3d9/tests: Expand tests for valid pools in UpdateTexture(). 2022-08-15 18:11:10 +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
Zebediah Figura dd5c511c9f d3d9: Do not release the wined3d mutex in d3d9_device_upload_sysmem_index_buffer().
Spotted by Henri Verbeet.

This fixes a regression introduced by 66f37aae7e.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53372
2022-07-27 23:07:06 +02:00
Zebediah Figura c885524cf6 d3d9: Correctly check for sysmem index buffers in d3d9_stateblock_Apply().
This fixes a regression introduced by 66f37aae7e.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53372
2022-07-27 23:07:06 +02:00
Zebediah Figura e386cc8f87 d3d9/tests: Use a nonzero start index in test_sysmem_draw().
This uncovered a bug in the previous patch.
2022-07-13 15:03:49 +02:00
Zebediah Figura 66f37aae7e d3d9: Upload sysmem vertex buffers into the streaming buffer in d3d9_device_DrawPrimitive().
As for d3d8.
2022-07-13 15:03:48 +02:00
Zebediah Figura 24c900b91f d3d9: Use the wined3d_streaming_buffer helpers to manage the streaming index buffer. 2022-07-12 22:51:30 +02:00
Zebediah Figura 2e94258ca2 d3d9: Use the wined3d_streaming_buffer helpers to manage the streaming vertex buffer. 2022-07-12 22:51:30 +02:00
Zebediah Figura 43f23d3e63 d3d8/tests: Build without -DWINE_NO_LONG_TYPES. 2022-07-07 19:10:29 +02:00
Zebediah Figura 7623d0a6f5 d3d9/tests: Build without -DWINE_NO_LONG_TYPES. 2022-07-06 16:02:48 +02:00
Zebediah Figura c6da355148 d3d9/tests: Make getPixelColor() checks into actual ok() calls.
These should never fail.
2022-07-06 16:02:48 +02:00
Andrew Eikum a64ec46e4e d3d9/tests: Demonstrate that NULL HWNDs don't prevent device creation.
The game Planetary Annihilation: TITANS depends on this.

Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-02 09:35:43 +02:00
Andrew Eikum de61c58308 d3d9/tests: Add desktop window tests for IDirect3DDevice9Ex.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-02 09:35:38 +02:00
Stefan Dösinger b4bf1fb7b2 d3d9/tests: Extend color_fill_test.
So it covers more formats and provokes the clear-to-sysmem path with the
Vulkan renderer.

Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
2022-05-31 22:52:45 +02:00
Matteo Bruni 89011e6f0a d3d9/tests: Fix typo.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
2022-05-24 17:36:37 +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 bdfa18eccc d3d9/tests: Add more tests for D3DLOCK_NO_DIRTY_UPDATE.
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:08 +02:00
Paul Gofman 2ce72c6872 wined3d: Add full dirty region at texture creation.
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-03-25 17:52:36 +01:00
Stefan Dösinger ef2943d166 d3d9/tests: Ignore random testbot failures in test_cursor.
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-31 18:38:54 +01:00
Stefan Dösinger dfd645734b d3d9/tests: Skip test_cursor_pos if we can't move the cursor.
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-31 18:38:54 +01:00
Stefan Dösinger ead1672c0e d3d9/tests: Try to make test_cursor_pos more reliable.
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-31 18:38:54 +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 fc98f7d9f9 d3d9/tests: Accept Nvidia results in test_sample_mask as broken.
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-21 18:40:02 +01:00
Stefan Dösinger 57e7ccaa6a d3d9/tests: Use a HW generation dependent offset for the filling convetion test.
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:45 +01:00
Paul Gofman 78533e9e94 d3d9/tests: Add more tests for fullscreen window size reset.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-30 22:07:21 +01:00
Stefan Dösinger 13871e8924 d3d9/tests: Test triangle 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>
2021-11-04 22:36:29 +01:00
Jan Sikorski ce93526f48 d3d9: Don't grab wined3d lock for surface AddRef/Release().
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-11-01 20:46:21 +01:00
Jan Sikorski 64b7ba3d65 d3d9: Don't grab wined3d lock for wined3d_query_issue().
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-11-01 20:46:21 +01:00
Jan Sikorski 6b866b93e0 d3d9: Don't grab wined3d lock in index/vertexbuffer AddRef/Release().
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-11-01 20:46:21 +01:00
Jan Sikorski 08c9b7c9ce d3d9: Don't grab wined3d lock for wined3d incref/decref functions.
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-11-01 20:46:21 +01:00
Jan Sikorski c9b5e2a7c1 d3d9: Don't grab wined3d lock for wined3d_resource_map/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:41 +02:00
Zebediah Figura 13650f43c9 d3d9/tests: Add a stress test for dynamic buffer 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>
2021-09-27 20:38:27 +02:00
Zebediah Figura b19cdef00e d3d9: Pass a valid map box to wined3d_resource_map().
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-09-27 20:38:07 +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
Zebediah Figura 1124edd281 d3d11: Fail OMSetRenderTargets() if any of the views have the wrong binding flags.
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-07-19 12:21:44 +02:00
Zebediah Figura 9fdc3fd8bb wined3d: Introduce a wined3d_bound_range() helper.
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-07-07 18:14:35 +02:00
Zebediah Figura ea5041c68a wined3d: Pass a wined3d_device_context to wined3d_device_set_primitive_type().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-21 21:20:55 +02:00
Zebediah Figura a313daea70 wined3d: Pass a wined3d_device_context to wined3d_device_get_depth_stencil_view().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-20 22:57:10 +02:00
Zebediah Figura 40e1072117 wined3d: Pass a wined3d_device_context to wined3d_device_get_rendertarget_view().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-20 22:57:10 +02:00
Zebediah Figura 9a8c5259bb wined3d: Pass a wined3d_device_context to wined3d_device_get_scissor_rects().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-16 22:39:46 +02:00
Zebediah Figura cdcc2ade6e wined3d: Pass a wined3d_device_context to wined3d_device_get_viewports().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-16 22:39:46 +02:00
Zebediah Figura 5a8b35c8f0 wined3d: Pass a wined3d_device_context to wined3d_shader_resource_view_generate_mipmaps().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-09 20:37:14 +02:00
Zebediah Figura fbd1e2eb6b wined3d: Pass a wined3d_device_context to wined3d_device_clear_rendertarget_view().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-08 18:51:29 +02:00
Zebediah Figura d4be20ac0d d3d9: Store the texture's parent device as a d3d9_device pointer.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-08 18:51:20 +02:00
Zebediah Figura 5c7057d229 wined3d: Pass a wined3d_device_context to wined3d_device_resolve_sub_resource().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-07 15:48:43 +02:00
Zebediah Figura 86dcbadffb wined3d: Pass a wined3d_device_context to wined3d_texture_blt().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-07 15:48:35 +02:00