Linux Client?

Which patches did you try and which wine version? Are the patches the ones at wine bug # 46410 ?

Looks like somebody opened a bug to DXVK (github DXVK issue # 964). Fingers crossed that it gets looked at. Problem seems specific to NVIDIA.

Still haven’t managed to run it with vkd3d. It starts, but there is nothing going on (no image, no music, just an empty window).

Tried changing my emulated OS in winecfg to windows 10, got an error 132 on loading screen ;(

Tried a new WINEPREFIX, still fails to start. Fails the exact same way.

Now I’m seeing something that I didn’t see before, reporting that it couldn’t get IPSFactory buffer… uh … weird.

But next I tried changing the emulation to Windows 10 – Now it at least starts! Unfortunately it’s down to 1FPS which is unplayable except for possibly playing Shell Game. Turtles won’t make it to the water like this!

But oh no… Seems like Win7 emulation in Wine has problems? I was able to use WoW on my uncomfortable-to-use box that has native Win7 on it.

— Edit again —

Switched back to DX11-legacy instead of using the new DX11 code, the frame rate has returned back to normal. Looks like things are working again, but this does foreshadow a bad omen.

I’m on wine 4.3 (with staging, esync, and tkg patches) with libvkd3d 1.1, running nvidia 418.43 for a GTX 1060.

Starting from a clean WINEPREFIX and no dxvk, I run winecfg and set to Windows 10, and nothing else. With this setup I am able to get into the game. (My original wineprefix would throw Err#132 if I disabled dxvk),

With -d3d11Legacy the game is playable, though low fps (low teens in Boralus, and in the 20s elsewhere).
With -d3d11 the game technically works but fps is 1, so is unplayable.
With -d3d12 I hear music and see the WoW cursor, but otherwise it’s a black screen.

Adding in dxvk-1.0 …
With -d3d11Legacy I get fps>90 … until it freezes, and tries to take the window manager with it. (“err: DxvkDevice: Command buffer submission failed: VK_ERROR_DEVICE_LOST” and it’s game over.)
With -d3d11 it’s exactly the same.
With -d3d12 it’s exactly the same (dxvk overrides vkd3d, is my understanding).
Time to freeze is usually 30 to 60 seconds on a level 1 standing in SW Trade District. In Boralus it seems to be pretty nearly immediate.
When it freezes, the kernel thread “irq/30-nvidia” goes 100% cpu for several seconds, and seems to drop off about the same time as the first “DEVICE LOST” message appears.

Using --without-gxdi on the dxvk setup doesn’t make a difference in -d3d12 behavior.

If the best I can do for now is d3d11legacy with dxvk, then I guess that’ll have to do, but … I keep hearing some people are having great results with vkd3d.

To the folks who are successfully running wow with d3d12 - what is your setup? what version of wine? , what version of vkd3d and which patches (if any), and where did it come from? Are you using nvidia, and if so, which driver? I’ve made multiple attempts on multiple versions of, well, everything since 8.1 dropped, and have never gotten wow to work with DirectX12. Any pointers would be most appreciated.

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