DX12 for EVE on Linux

Looks like DirectX 12 will make it’s way to EVE. Was anyone able to try it out? I tried but could not get it to work with my GTX 1060, which has support for DirectX 12_1. Could not even check the box in the launcher :frowning:

Running the native Windows launcher under Wine 7.10 on a Ubuntu 21.10 System with Vulcan drivers

4 Likes

OK so it’s a little more complicated this time. Your Wine doesn’t support DX12, so you have to use GloriousEggroll’s WINE fork. You may use ProtonUp to install that. Notice that this fork only works with either Steam or Lutris, so you’ll have to do a new install if you don’t use any of those.
Also, you will need Mesa 22.0 or bigger, so check your packages (mesa-vulkan-drivers).
The thing is, I haven’t tested any of this as I’m on 20.04LTS and won’t upgrade anytime soon, so good luck!

1 Like

There is a d3d12 to Vulkan translation library, vkd3d, available through winehq. I have it installed. However, the launcher does not detect it.

I absolutely cannot use the Steam EVE client on my machine. Same with Proton. It completely freezes.

Are there plans in the future to get a version of wine(-staging) and/or the Vulkan libraries that can actually work with EVE’s DX12 implementation?

From reading around this, then as I understand it:

The Directx12 implementation library is VKD3D which is supported by Wine as an option but not built into the distributed packages. If you install the VKD3D libraries locally, then recompile Wine then it should recognise the existence of those libraries during the build and bring them in giving Directx12 support - or support for those elements that VKD3D has implemented.

I’ve not done a VKD3D enabled re-build of Wine - basically time and a wish not to break the only thing I use Wine for: playing Eve. So tackle this at your own risk. Directx11 support isn’t going away soon so it’s not a pressing issue.

Now, I suspect there are very good reasons for not implementing Directx directly into the Wine build - Directx implementation is hard and probably a source of failures and incompatibilities.

Before people go “Wine is for playing games” - remember it is only one thing it can do. It also supports those weird old business applications that only run on Windows and are stopping migrations. Quite often in a headless server environment (heaven help us) - reliability there is critically important for folks moving off Windows to Linux. There are “Wine Builds” with all the add-ons needed for playing games using 3D hardware support - things such as Proton.

I am no expert when it comes to DX12 or DirectX or Windows in general. But I wanted to participate in the DX12 test and was not able to so I did some research however I have to repeat that I am not an expert on the subject and maybe my anaysis is flawed.
There is actually a difference between Directx 11 and 12 AND “Feature levels 11” and “Feature level 12” in DirectX.
I am still not sure how the launcher detects which DX version is supported. But from my logs EVE tries to create a DirectX11 object which has the DX12 feature level. Which is plausible if you look here:

However DX11 and DX12 implementations within Linux are different. Which means that checking the feature level of DX11 will not tell you the actual feature level of your DX12 implementation.
So if EVE uses DX11 to check DX12 feature levels then it could take a while until the DX11 implementation implements the feature level “12_0”. Although your DX12 implementation actually supports it.
But if dxvk implements the “feature level 12_0” for DX11 then probably everything would work as expected although none of the actual implementations of feature level “12_0” will be used in the DirectX 11 implementation.

I have similar problem, (videocard also 1060 GTX 6GB), but i have support vkd3d in wine, because wine compiled with it (Gentoo distro):

# equery u wine-vanilla
...
 + + vkd3d          : Use app-emulation/vkd3d to provide Direct3D 12 support
...

and checkbox in launcher incative too.

Another test tomorrow

wine-staging on gentoo does not seem to have the vkd3d use flag available.

but it is in wine-vanilla

# emerge -pv wine-vanilla

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] app-emulation/wine-vanilla-7.0-r2:7.0::gentoo  USE="X alsa fontconfig gecko gstreamer mono mp3 nls openal opencl opengl pcap run-exes ssl threads truetype udev udisks unwind usb v4l vkd3d vulkan xcomposite xinerama -capi -crossdev-mingw -cups -custom-cflags -dos -gphoto2 -gssapi -kerberos -ldap -mingw -netapi -odbc -osmesa -oss -perl -pulseaudio -realtime -samba -scanner -sdl (-selinux) -test" ABI_X86="32 64 (-x32)" 26 544 KiB

Total: 1 package (1 reinstall), Size of downloads: 26 544 KiB

so, vkd3d supprted in my installed wine, but launcher thinks otherwise

I figured out how to make it work, at least when you’re using DXVK for DX11 translation.
In the same folder as eve.exe create dxvk.conf and add the following line

d3d11.maxFeatureLevel = 12_1

I can confirm it was running DX12 through vkd3d.

4 Likes

i created ~/.wine/eve/drive_c/EVE/dxvk.conf with this line but launcher still ignore and thinking about my video card don’t support dx12.

lol, it worked when i move this file to launcher subdirectory

Hmm, moving the dxvk.conf to the launcher subdirectory lets me check the DX12 box, but the FPS Monitor still reports dx11 :neutral_face:

confirm. i save this file in launcher directory and in directory with eve.exe, and fps monitor show dx11.

The FPS monitor may be wrong (CCP may not have updated the line IDK) but if you have MangoHud you can confirm it’s running on DX12 if says vkd3d and DX11 if it says dxvk

1 Like

MangoHud (thanks for showing me that hud, was not aware it existed) shows DXVK for me, so EVE is reporting correctly at least :neutral_face:

any new tests about dx12?

Gonna wait for mesa 22. I hope DX12 improves performance during stress.

1 Like

Tested it on Fedora 36 (mesa 22.1.2) and Proton-GE 7.20 on a AMD Radeon RX 6800M.

All looks great!

I had to apply QuantumLight Uchonela’s tip creating a dxvk.conf in the eve.exe folder with:

d3d11.maxFeatureLevel = 12_1

Thank you for the suggestion!

The launcher auto-selected dx12 (and I was finally able to toggle it).
The FPS monitor also reports dx12.
Don’t mind the FPS drop in the screenshot, it’s just because the window went out of focus, which is excellent feature by the way.
Normally runs at >60FPS with max settings on a 4k screen.

evedx12

4 Likes

I put the file in the launcher folder, Lutris GE Proton 7-19, and it worked perfectly (including dx12 show in FPS monitor)

Operating System: Kubuntu 22.04
KDE Plasma Version: 5.24.4
KDE Frameworks Version: 5.92.0
Qt Version: 5.15.3
Kernel Version: 5.15.0-40-generic (64-bit)
Graphics Platform: X11
Processors: 12 × Intel® Core™ i7-8750H CPU @ 2.20GHz
Memory: 31.2 GiB of RAM
Graphics Processor: NVIDIA GeForce GTX 1050 Ti/PCIe/SSE2

Try tested on clean prefix. Without dxvk directx12 option unavailable (but wine compiled with vkd3d suppot). installed last dxvk through winetricks, put file in launcher / eve.exe file directory, run. Launcher say “dx12 is ok” but in game fps monitor still show dx11.

i read about app-emulation/vkd3d-proton, as i understood it not required re-compiling wine and worked “out of box”, any testing?

HW: Nvidia 1060 GTX, 510.73.5 driver.