Commit Graph

543 Commits

Author SHA1 Message Date
Jan Sikorski 6d8cc776f5 dxgi: Don't grab wined3d lock for wined3d_decref().
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:26 +02:00
Jan Sikorski 98e2668949 dxgi: 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:22 +02:00
Jacek Caban c166e9694e gdi32: Don't export Wine extensions.
Link directly to win32u instead.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-08 16:54:48 +02:00
Alexandre Julliard 6ba7773121 makefiles: Add a -mcygwin flag to specify the inverse of -mno-cygwin.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-20 22:45:48 +02:00
Andrew Eikum 39f2398913 dxgi/tests: Add tests to show frame latency object is a semaphore.
Shin Megami Tensei III Nocturne HD Remaster depends on the frame latency
semaphore being released several times after it calls
IDXGISwapChain2::SetMaximumFrameLatency(3).

Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-03 23:41:31 +02:00
Henri Verbeet d55348d2b1 dxgi: Implement d3d12_swapchain_GetLastPresentCount().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-01 22:34:31 +02:00
Henri Verbeet 6f674ef6f1 dxgi: Implement d3d11_swapchain_GetLastPresentCount().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-01 22:34:31 +02:00
Henri Verbeet 7eadbae52c dxgi/tests: Add a test for swapchain present counts.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-01 22:34:31 +02:00
Henri Verbeet a5ed207ab0 wined3d: Allow zero width/height for fullscreen swapchains as well in wined3d_swapchain_resize_buffers().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-27 21:25:31 +02:00
Zhiyi Zhang bd192cd2c6 dxgi: Introduce a helper to convert between dxgi and wined3d display rotation types.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-06 18:53:48 +02:00
Henri Verbeet 93077d4b4f dxgi: Pass an IWineDXGIFactory pointer to dxgi_get_output_from_window().
Since the factory and adapter interfaces may be wrapped, calling
IDXGIAdapter_EnumOutputs() on a wrapped adapter may in turn return a wrapped
output interface. Things would go poorly from there, so make sure we have a
unwrapped interface here. Alternatively, we could have allowed output
interfaces to be wrapped, but tests show that e.g.
IDXGISwapChain_SetFullscreenState() fails when passed a wrapped output
interface.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-05 21:52:22 +02:00
Henri Verbeet 55f6cda90e dxgi: Store an IWineDXGIFactory pointer in struct d3d11_swapchain.
Like we already do in struct d3d12_swapchain.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-05 21:52:22 +02:00
Henri Verbeet add2e8c928 dxgi/tests: Test that we don't use objects returned by wrapped interfaces internally.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-05 21:52:22 +02:00
Michael Stefaniuc 2bcf69d14d dxgi/tests: Remove superfluous casts to self.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-09 20:37:14 +02:00
Henri Verbeet e27ea1e03a dxgi: Implement dxgi_output_SetGammaControl().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-25 17:56:50 +01:00
Zhiyi Zhang 98f490bdfc wined3d: Support multiple outputs.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-26 17:53:54 +01:00
André Hentschel c6491bca46 dxgi/tests: Don't test functions directly when reporting GetLastError().
Signed-off-by: André Hentschel <nerv@dawncrow.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-04 17:12:40 +01:00
Francois Gouget e76c522ad9 dxgi/tests: Fix the grammar in a comment.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-25 22:51:35 +01:00
Zhiyi Zhang d8c9671d4d wined3d: Do not use wined3d_output_get_desc() to retrieve display rotation.
Most of the time when wined3d_output_get_desc() is called, display rotation is not needed.
Retrieving display rotation is quite expensive because it needs to query information from XRandR.
So use wined3d_output_get_display_mode() to retrieve display rotation when needed.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50096
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-23 21:05:05 +01:00
Zhiyi Zhang b911e56045 wined3d: Restore display modes for all outputs when doing mode restoration.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-03 21:47:27 +01:00
Zhiyi Zhang ef81152c8c dxgi/tests: Test display mode restoration.
Mostly to test that when doing mode restoration, all display outputs get restored to their display
settings in the registry, not just one output gets restored.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-30 22:14:11 +01:00
Zhiyi Zhang 541437e2ce dxgi/tests: Fix a window leak in test_inexact_modes().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-21 20:30:43 +02:00
Zhiyi Zhang 9288f31015 dxgi: Update swapchain containing output after Alt+Enter was used to exit fullscreen.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-09 16:21:33 +02:00
Zhiyi Zhang e62b6fa12d dxgi: Support Alt+Enter for d3d12 swapchains.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-09 16:21:33 +02:00
Zhiyi Zhang 0e58bcea7f dxgi: Retrieve d3d12 swapchain fullscreen state from wined3d.
Once Alt+Enter handling is implemented, the fullscreen state may change
without dxgi necessarily being aware of it.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-05 20:50:57 +02:00
Zhiyi Zhang 0a322f0ca5 dxgi: Support creating a fullscreen swapchain on d3d12.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-05 20:50:53 +02:00
Zhiyi Zhang 39cf65e48f dxgi/tests: Run test_default_fullscreen_target_output() on d3d12 as well.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-05 20:50:51 +02:00
Zhiyi Zhang b32083f9cc dxgi/tests: Run test_window_association() on d3d12 as well.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-05 20:50:48 +02:00
Zhiyi Zhang 6061c59322 dxgi/tests: Run test_get_containing_output() on d3d12 as well.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-05 20:50:46 +02:00
Rémi Bernon cce4f36e21 dxgi/tests: Check that the last adapter is always WARP.
Some games specifically ignore the last adapter from the adapter list,
as it's always WARP on Windows. This makes them fail to detect GPUs
correctly on Wine, as they drop one of the reported adapters.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-02 19:03:31 +02:00
Józef Kucia 99f2a5cd9f include: Move the ID3D12Debug interface to d3d12sdklayers.idl.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-02 19:03:31 +02:00
Zhiyi Zhang f92f363bbd dxgi/tests: Fix output ownership test failures on Win10 1909.
All DXGI output ownership calls on Win10 1909 return S_OK. It doesn't
grab VidPN output exclusive ownership for full screen mode.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-09 20:31:41 +02:00
Zhiyi Zhang e0b0ed3d00 dxgi/tests: Fix swapchain parameter test failures on Win10 1909.
Some of the invalid swapchain parameter tests crash on Win10 1909.
And DXGI_USAGE_DISCARD_ON_PRESENT is a DXGI internal flag. It doesn't
always get added if swap effect is DXGI_SWAP_EFFECT_DISCARD.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-09 20:31:39 +02:00
Zhiyi Zhang 8776111bc4 dxgi/tests: Relax closest matching mode comparison.
On Windows, a DXGI output may support 1920x1440 and 2560x1080
display modes, both of which have the same pixel count. And when
finding a mode closest to 2559x1079 or 2561x1081, 1920x1440 is returned.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-09 20:31:36 +02:00
Zebediah Figura 26da9b4297 dxgi: Add DXGI_FORMAT_NV12 and DXGI_FORMAT_YUY2.
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>
2020-09-03 18:19:24 +02:00
Biswapriyo Nath 249697c76d dxgi: Fix order of functions in IDXGIFactory2 interface.
Swap between RegisterStereoStatusWindow and RegisterOcclusionStatusWindow methods.

Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-20 21:20:22 +02:00
Rémi Bernon 5079d31e3a dxgi: Implement IDXGISwapChain4 stub.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 23:16:51 +02:00
Rémi Bernon d806203850 dxgi: Implement IDXGIOutput5 and IDXGIOutput6 stubs.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 23:16:51 +02:00
Zhiyi Zhang 122a28a313 wined3d: Use valid adapter LUIDs if they are available.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-08 16:06:06 +02:00
Gabriel Ivăncescu 0f024390ca wined3d: Restore the window visibility and z-order upon exiting fullscreen, if requested.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-07 21:18:14 +02:00
Rémi Bernon f3bb21e80d dxgi/tests: Add more complete window style checks.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-07 21:17:37 +02:00
Rémi Bernon abced34e67 dxgi/tests: Fix signed integral cast warning.
First cast to LONG, then to DWORD.

Reported by MinGW GCC 10 with -Woverflow.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-03 21:47:52 +02:00
Zhiyi Zhang c84b2f97c1 wined3d: Remove no longer needed output parameter in wined3d_swapchain_state_resize_target().
Current output is stored as part of the swapchain state now.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-18 19:35:07 +02:00
Zhiyi Zhang b80ec595e9 dxgi: Remove dxgi_swapchain_set_fullscreen_state().
dxgi_swapchain_set_fullscreen_state() is a mere wrapper of
wined3d_swapchain_state_set_fullscreen() now.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-18 19:35:00 +02:00
Zhiyi Zhang 6089130da4 wined3d: Remove no longer needed output parameter in wined3d_swapchain_state_set_fullscreen().
struct wined3d_swapchain_desc has already specified a output parameter now.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-18 19:34:57 +02:00
Philip Rebohle 6cd1139691 dxgi: Add stubs for IDXGIFactory7.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-13 22:07:32 +02:00
Philip Rebohle d788ab4c29 dxgi: Implement IDXGIFactory6.
Required by the d3d12 game "Delores: A Thimbleweed Park Mini-Adventure".

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-13 22:07:32 +02:00
Zhiyi Zhang f6d2e03750 wined3d: Get output from swapchain state.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-13 22:07:32 +02:00
Zhiyi Zhang d3e088cc00 wined3d: Specify a wined3d output for swapchain creation.
As tests showed, DirectDraw, Direct3D 8 and 9 always use the adapter
specified in the device creation parameters regardless of the device
window position when creating a swapchain. Whereas DXGI uses the device
window position to determine which DXGI output to use.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-13 22:07:32 +02:00
Zhiyi Zhang f904e9af1b dxgi/tests: Test IDXGISwapChain_GetContainingOutput() after Alt+Enter.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-13 22:07:32 +02:00