Thanks. 1e393bf24d2e7a59f918e40e7e51cb676bfdfa10 implements this directly in d3d11.dll, so that DXVK's own DXGI DLL is no longer needed and does not have to be shipped with Proton. It works with the d3d11-triangle sample, haven't tested this with anything else so far.
I'll be on vacation for the next two weeks, so I won't be able to deal with potential issues during that time.
Update: 4e22e4bc3ad2f8c7f541fbdcc3caa2587f802b1d fixes some issues regarding parameter validation, now it uses the same code for swap chain creation as DXVK's DXGI.
Sweet @doitsujin
Switching between d3d9 (wined3d) and d3d11 (dxvk) with wine dxgi.dll works fine in Unigine Valley atleast. Gonna test some more apps when i get the time to it, and possibly see if d3d12 (vkd3d) and d3d11 (dxvk) works with World of Warcraft and wine dxgi.
Makes it a lot easier for Proton to implement as you dont have to worry about changing config's for games that needs d3d9 and stuff like that tho :) :+1:
@SveSop Pure D3D9 does not rely on DXGI.
@doitsujin Ah thats ofc true :)
Anyway, i tested with WoW, and it worked fine by not symlinking/dll override for dxgi.dll. The battle.net client showed DXVK being used, and WoW started in d3d12 mode worked with vkd3d. Starting WoW with d3d11 also worked fine using DXVK.
So atleast for WoW with being able to switch between d3d11/d3d12 without needing to fiddle with dll-overrides and symlinks it worked fine from the testing i did.
Having the battle.net client show the DXVK osd, and then launch Wow.exe with vkd3d indicates that wine dxgi.dll switches correctly between the d3d11/d3d12 dll's.
Great work, closing.
Hi,
This is a tracker for the IWineDXGISwapChainFactory implementation. IWineDXGISwapChainFactory is introduced in https://source.winehq.org/git/wine.git/commit/8ba075a0592e776b3f4502fce09af207651e8c47
so we can move on to implementing this in dxvk. We can forward it to the dxvk dxgi as in https://github.com/zzhiyi/dxvk/tree/IWineDXGISwapChainFactory, but then this will have some of the issues we talked about. Another approach is to move/duplicate the swapchain creation code into D3D11 device module for example.
And just a head up that LUID support is nearly done and in code review stage, although it will need some changes. I expect it to be merged in wine soon after wine 4.0 code freeze is done. But this shouldn't require any dxvk changes. See https://github.com/zzhiyi/wine/tree/dxgi/luid if you are interested.
Thanks