Patch 3/7 is failing for me; I'm currently trying to determine why.
It fails because creating a d3d12 swapchain initially in the fullscreen state doesn't actually work. It works with the following diff, to match d3d11. It'd probably be nicer to just call wined3d_swapchain_state_set_fullscreen() inside of wined3d_swapchain_state_init(), but it's not immediately clear to me if that's possible.
Stefan, do the tests succeed for you without this diff?
diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c index 9677142e0af..5dd6846d541 100644 --- a/dlls/dxgi/swapchain.c +++ b/dlls/dxgi/swapchain.c @@ -2889,6 +2889,7 @@ static HRESULT d3d12_swapchain_init(struct d3d12_swapchain *swapchain, IWineDXGI VkBool32 supported; VkDevice vk_device; VkFence vk_fence; + bool fullscreen; VkResult vr; HRESULT hr;
@@ -2933,6 +2934,9 @@ static HRESULT d3d12_swapchain_init(struct d3d12_swapchain *swapchain, IWineDXGI return hr; }
+ fullscreen = !wined3d_desc.windowed; + wined3d_desc.windowed = TRUE; + dxgi_factory = unsafe_impl_from_IDXGIFactory((IDXGIFactory *)factory); if (FAILED(hr = wined3d_swapchain_state_create(&wined3d_desc, window, dxgi_factory->wined3d, &swapchain->state_parent, &swapchain->state))) @@ -2941,8 +2945,9 @@ static HRESULT d3d12_swapchain_init(struct d3d12_swapchain *swapchain, IWineDXGI return hr; }
- if (!fullscreen_desc->Windowed) + if (fullscreen) { + wined3d_desc.windowed = FALSE; hr = wined3d_swapchain_state_set_fullscreen(swapchain->state, &wined3d_desc, NULL); if (FAILED(hr)) {