Linux Client?

If you are trying to use WoW’s DX12 backend on WINE, you’re definitely going to want to make WoW think it’s running on Windows 10. If WoW thinks it’s on Windows 7, it’s going to use the special 12on7 code paths and load the special Windows 7 d3d12.dll next to the WoW executable, which is almost certainly want you don’t want to happen for WINE.

5 Likes

I’m gonna try to order my thoughts a little bit, because I spent the better part of today troubleshooting this. Sorry if this post is hectic.

The black screen issue I got once. It’s due to an ‘old’ vkd3d build (1.1 here). There are two patches that fix the black screen and the subsequent flickering. Both patches are attached on Wine bug # 46291 (can’t post links for some reason so I’ll leave it to you to google for it).

Now, it’s tricky to apply both patches to 1.1, and besides the black screen one appears to have been applied upstream, so in order to fix that and the screen flickering bug (you’ll know it when you see it, there’s another bug opened for this on wine), I compiled vkd3d from source. I’m using Gentoo and the ebuild is kind of messed up, so I ended up compiling manually latest source, and copying over the files to /usr/lib*.

After doing all that, I had previously installed (again, Gentoo, compiled) Wine staging 4.1 (wine-vanilla does not seem to work), with support for vkd3d baked in. I created a fresh new WINEPREFIX for it, and launched my fresh 8.1.5 WoW installation from yesterday. That originally gave me the black screen issue, which I fixed when compiling latest source of vkd3d and copying over the libs.

So, again, after doing all that, I can launch WoW, it lets me choose DX12 and it works “fair”. Sometimes my FPS drop as low as 12-17, but it appears to be due to textures loading or something, because a little while later FPS are stuck on 60 as it should be and everything’s smooth. I’ve only so far flew around Suramar/Highmountain/Val’Sharah, but zero issues.

Note that I’m running Wine manually, while also doing other things (like compiling a bunch of packages), so the performance might be affected by that. I had so far been unable to turn off the huge amount of WINEDEBUG messages, even when setting WINEDEBUG=-all (and I believe these debugging messages are also impacting performance).

I am currently trying to see if I can get the latest TKG to work, by creating a fresh prefix in Lutris, enabling esync and hoping it picks up vkd3d support on its own (which I don’t think it will but still). This is because I had better results running it with Lutris in the past (that is, until yesterday).

Couple of things regarding the extra modes:

DX11 Legacy: constant 10-15 FPS in SW. Unplayable.
DX11 (the multithreaded one): <1FPS. I can count them. Seriously.

Error #132 that sometimes can pop up can be due to a number of things:

  • There’s ‘trash’ in your WINEPREFIX. Try with a new one.
  • There is no true DX12 support and you have ‘forced’ it from Config.WTF or the command line. Try with D3D11 or D3D11_LEGACY and see if it goes away.
  • Can also be due to having set Windows 7 instead of Windows 10 in winecfg. Do not overlook that and make sure it’s the first thing you do when creating a fresh WINEPREFIX (Wine 4.1 defaults to 7 IIRC).

Final note is that this issue (when you log in and it locks up, eventually freezing your desktop unless you X11 kill the window right away) does seem to be NVIDIA related (at least I haven’t seen it reported with AMD), and driver versions have no impact as of this writing. Also, this happens only with DXVK and has already been reported in DXVK’s github under issue # 964.

Playing with compiling anything pre sunrise is not my how I like waking up but here we are. I am in game with something useable.

I went straight to git for vkd3d and downloaded the HEAD branch. For those on gentoo the vkd3d-9999 ebuild did not work for me. It was not running autogen.sh to generate configure. To that ebuild I added

src_prepare() {
./autogen.sh
eapply_user
}

and then it compiled. Did have the flickering problem and as a work around for the moment I set SSAO to Disabled. Used wincfg to set win10. My graphics quality is set to 7. Fps is staying capped at 60 with the vsync option in game doing nothing. SW and garrison are sitting at 60fps. Boralus mission table is just under 60 and turning to face the warfront table drops to 45 which is far better than the 19 I had yesterday with vkd3d 1.1 + dx11.

Nice! That was what I was missing. Do make sure to submit a Gentoo bug for that one :wink:

Did you experience frame drops in very open areas? (e.g. when flying from Dalaran -> Suramar)

Teleported to legion Dalaran and fps stayed at 60. Flew to the centre of Suramar and it stayed at 60. Flying around Shadowmoon valley and Suramar there are the occasional flickering textures.

Thanks to both of you. It is still a little flaky, but I am able to play with directx 12 @ 60 fps which is good enough for me.

There’s a lot of info in this thread, but here is how I got it to work on Arch when I got back home. Fwiw to anyone (or maybe no one).

  • Built vkd3d, applying the previously linked reddit descriptor patch. Use the latest from the actual vkd3d repo. I think somebody asked earlier what patches, but this was the only one.

  • Re-built wine from tkg tree on github. Would love to link it but not allowed? Anyway, changed the config to switch out dxvk for vkd3d, described in the customizations.cfg file. This will have what you would get from Lutris (esync etc.) but with vkd3d support.

  • Linked in my previous battle.net install to a new win10 prefix and ran the new wine build. Switched to directx 12 in settings.

  • That’s it. No issues, solid fps. Have not done much in game but I have been afk a while in an area I was crashing last night within 30 seconds, and still good. This is an important point though, should take my low-level experience with a pinch of salt.

Steps are straightforward using Arch. I did not need any of the export or env settings from the Reddit post. I am sure they are helpful but not necessary, and I plan to integrate this as a Lutris runner anyway.

2 Likes

Would anyone mind posting a pastebin of commands needed to run with these changes? Just swapped to linux this week, so I’m super lost. Thanks.

1 Like

github. com/ doitsujin/ dxvk/issues/964

There is a fix available for DXVK.

You might want to look into this, looks like a bug in the game itself that made it crash. If it doesn’t crash in Windows it still looks like a bug in the game that is worked around somehow

4 Likes

Hey I just tried this, it seems to work! Thanks for the heads-up. vkd3d is nice and all but this solution is more automatic and everything else I have (which isn’t much) is using dxvk. I used this through Lutris: Turn dxvk to manual and run the updated dxvk_setup on the game’s prefix. Seems to be crash free so far. I would have crashed by now if it didn’t work.

Within a day I went from unplayable to what looks like having yet another option to run this game.

I can confirm that the latest DXVK patch [1] fixes the freeze for me.

@Rommax, based on author’s comments it sounds like this is a driver/emulation workaround for an issue in WoW. You may want your devs to take a close look at it.

[1] github. com/doitsujin/dxvk/commit/2d39be4e72aca562f73aa771c27333fd70debe8b

Can confirm also that latest commit for DXVK fixes the issue.

If a dev (or a CM that can talk to the devs) is reading this, check the DXVK commit. The comment from the developer was:

" There’s a game bug in some regions which actually triggers validation errors, the above patch seems to fix GPU hangs on my GTX 670."

Howdy, neighbors. The dxvk fix has been implemented in the new Lutris installer. Delete your old prefix, but not before backing up your World of Warcraft game data, then install using the new install script!
lutris[dot]net/games/world-of-warcraft/

I have never used Lutris. Sticking with my simple wine-staging + dxvk. Using my normal wine prefix all I did was run the installer in the dxvk download to replace the the old dvxk.

I’ll give it a proper test tonight but so far initial impression is it works and I have my fps back to normal. At the Boralus mission table facing the warfront table fps still drops (which it also did in 8.1) but is staying higher than the git vkd3d I tried this morning. Currently set to dx11 legacy.

One extra note is 1st time I started the game it came up in full screen instead of windowed.

Thank you so very much! This is why I use Linux :slight_smile:

With the info you provided here, I was able to grab the most recent vkd3d from git, apply the one patch (update descriptors hack) not already incorporated there, and build/install. Running my wine build with the newer vkd3d library enabled a working and flicker-free WoW 8.1.5 on DX12 with even better frame rates than I had been getting before. My Error#132 issue seems to have gone away on its own, so I’m not entirely sure what triggers it.

One pesky issue I’ve noticed in the past, and is still present, is that enabling ESYNC makes copying and pasting only work within Wine - there seems to be no particularly good way to copy text from a non-Wine app (FIrefox, for example) and paste it into a Wine app (the Paste addon window, for example). Since I do this kind of thing routinely, I basically have to leave ESYNC disabled. Fortunately this doesn’t seem to have a drastic effect on performance or fps, but it’s unfortunate that some part of the esync patches ruins cut/paste in and out of WoW. (If anyone knows a fix for that, or has a different experience, I’d like to compare notes.)

Anyway - thanks to your detailed information, I’m finally able to play the game with a decent framerate for the first time since 8.1.5 dropped! My hero :slight_smile:

1 Like

In reply to @evandas, I too would jump to a Linux config rig in a heartbeat. Windows is a major buggy headache. Plus, my system would perform better outside the Windows O/S.

1 Like

I’ve updated Lutris and all the Wine dependencies and its runs just peachy. I am using Legacy 11 instead of Direct X12.

Should try the updated DirectX 11 mode if you can support it. Both give me good performance but in my completely unscientific testing, this does seem to give even better performance and there is nothing stopping Linux uses from benefiting from the new mode as well.

That’s not true anymore. Even corporate workstations/laptops are starting to become Macs as of late.

Cloud, embedded and mobile devices have horrendously slanted the numbers to Linux as of late. Windows is no longer the majority operation system world wide.

As far as the game running on Linux… the CPU scheduler actually doesn’t suck on Linux. The game runs much smoother on Linux.

Actually it is. The marketing site that comes from does not include mobile devices. Or cloud devices. Mac OS is not Linux. While it was based on Linux its not compatible At this point it is a unique OS . Macs hold 10 percent roughly market share. The 1.5 is correct. Chrome books actually hold a higher market share then Linux. Chrome books are also not included on the site. but on another.