Dear dxvk team, thank you for your hard work on this project, i hope you keep this up :)!
I'm visiting this place in search of help.
I'm running World Of Warcraft Classic with Lutris
lutris-wf-nofshack-4.15_x86_64 (default)
DXVK 1.34 D9VK and Esync activated.
The game runs perfectly smooth (Ubuntu 19.04) - BUT compared to Windows 10 im having an fps loss of about 100 fps. I want to investigate why this happens.
The video settings on both OSes are identical - important: VSync Off - triple buffer off to have the gpu running at max usage.
On both OSes the GPU (2080 RTX TI) runs at 99% usage and about 1900 mhz core clock. Usage and clocks are the same on both OSes. Still 100 fps loss.
CPU is an Intel Core-I9 9900K @ 5.1 ghz with 32GB RAM.
Im running the proprietary Nvidia drivers 430.40 from:
http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu
Native and in game resolution is 5120x1440.
I'm using 3 displays - 2 connected to the iGPU of the intel cpu both 1920x1080 and the 3rd big one to the nvidia gpu 5120x1440.
I hope you can help me. If you'd like me to test some stuff let me know.
This is not an issue, lower performance than Windows is to be expected especially at crazy resolutions like this.
Also, "100 FPS" is pretty meaningless figure since you didn't give the absolute frame rate that you're getting on either OS.
Hi - thanks for your reply. Before i post more test stuff id like to answer your question about absolute framerates.
I took this framerates at orgrimmar
windows: 250 fps and 100% gpu usage
linux: 150 fps and 100% gpu usage (60% of windows fps)
I tried lower Resolutions on both operating systems, to see if the performance loss shrinks, i came up with this results at another place in wow world:
1080p resolution:
windows 215 fps and 55% gpu usage.
linux 170 fps and 100% gpu usage. (79% of windows fps)
For me it looks like that something in the direct3d11 to vulkan translation process lets the gpu work much more to render the same scene on linux.
I asked myself some questions:
(1) Are direct3d11 calls translated directly one to one to vulkan calls?
Or is more than 1 call required to translate 1 direct3d11 call.
This would cause overhead - i guess.
(2) Considering question (1) i asked myself about the performance of the API's themselves. Does Direct3d11 use the gpu more efficient?
To make one thing clear - im not here to criticize your teams work or want to make it look back, im very happy this and other projects exist! - i just want to investigate and understand what causes this, i think drastic, difference in performance and maybe how to improve it.
Also tested Furmark windows executable (native OpenGL)
same settings for both OSes
Windows about 380 fps
Linux about 300 fps 79% of windows
To answer your questions:
(1) No.
(2) No.
There's nothing I can do here right now. First of all, I don't the game or an apitrace of it so I don't have the slightest clue what it might be doing; second, if the GPU utilization is so much higher it's likely that it's not dxvk's fault but that of the driver. There's also the chance that something else on your system is dragging it down (e.g. compositor), so make sure to rule that out first.
Given the complex setup you have, there are many possibilities for the reported difference in performance. The Linux OS itself, the Nvidia driver, compositor, etc.
I also play WoW on Linux and I would point out that Orgrimmar is not the best place to do a comparison due to the variable number of players in the area at any one time.
Try to use a standard test, as far as that is possible in the game. e.g. Type /timetest 1 and do a flight from say Orgrimmar to Crossroads. The game will report the min/max/average fps at the end of the flight.
@darkalpha84
WoW Classic vs. WoW retail, the game engine afaik does NOT use multithreaded d3d11 rendering with WoW classic..
WoW retail utilizes a newer and updated graphics engine since some time ago (8.1 i think) that have a significant fps boost for d3d11 as it allowes for multithreaded support with d3d11. You could compare WoW retail with -d3d11 and the -d3d11legacy flag and see the difference.
I believe WoW classic is using the d3d11 "legacy" engine, and quite possibly it may be the case that the difference between Windows and Linux/dxvk is greater without multithreaded rendering when using DXVK?
Fyi: wined3d does NOT work with WoW retail d3d11 "multithreaded" rendering engine (or atleast did not when i tested last), and needs to set the -d3d11legacy flag to be able to play. (Unless you enjoy <1 fps gameplay).
Multithreaded vs Legacy should make no difference at all when GPU-bound.
When I tried the free WoW retail trial some weeks or months ago, there definitely was a drop in GPU bound performance when switching between DX11 "legacy" and "modern". This was with radv Polaris. D3DVK performance matched the higher GPU bound performance of the "legacy" renderer.
However, I did not check how the situation is on Windows.
I did some benchies comparing d3d11 vs d3d11legacy when running WoW Retail. This was with lutris-4.16 and dxvk@48417c7. nVidia RTX2070, nVidia 435.24.02 driver.
/timetest 1 and camera in 1st person view + alt+z to hide whatever ui elements i have from addons and whatnot. Settings is 1080p all on "Ultra" xept shadows and water that are respectively on their recommended setting High/Good. No MSAA.
D3D11 flying from A -> B:
Gpu load: 96-98%
Min: 50.7 / Max: 335.0 / Avg: 193.6
From B -> A:
Gpu load: 96-98%
Min: 49.5 / Max: 282.5 / Avg: 182.8
Testing D3D11legacy:
From A -> B:
Gpu load: 65-70%
Min: 44.2 / Max: 235.9 / Avg: 155.1
From B -> A:
Gpu load: 62-65%
Min: 11.8 / Max: 186.8 / Avg: 131.0
So for me using d3d11legacy engine the gpu usage went down, and fps went down.
Kid tested Windows 10 with RTX2080Ti all on Ultra. He tends to have a lot other stuff up like browsers, skype, whatever, so i cannot really vouch on consistency of results, but of average it turned out like this:
D3D11:
A -> B:
Gpu load: 30-40%
Min: 60 / Max: 269 / Avg: 144
B -> A:
Gpu load: (same)
Min: 80 / Max: 320 / Avg: 144
D3D11legacy:
A -> B:
Gpu load: 35-50%
Min: 66 / Max: 214 / Avg: 144
B -> A:
Gpu load: (same)
Min: 69 / Max: 270 / Avg: 144
Not really a huge difference i guess between D3D11 and D3D11legacy for him, although the gpu load seemed a bit higher for D3D11legacy for him in contrary to my experience with wine/dxvk.
I will see if i can make some sort of comparison with WoW Classic for this, but i do not have any good flightpoints to test.
@darkalpha84
For me it looks like that something in the direct3d11 to vulkan translation process lets the gpu work much more to render the same scene on linux.
The overhead of Linux running d3d11 -> Vulkan translation will most of the time produce a hefty overhead doing that, but sometimes the added benefit of using vulkan makes up for it with comparably fps. And as others have pointed out, standing in a city with a good number of entities will most likely not be a good test as WoW (or any online mmo like that) uses a huge chunk of fps and networks sync data to show the entities, sacrificing fps in the process. (No point in having 300+ fps if ppl warps around and whatnot). The/timetest 1 flightpoint test skips some rendering and player sync stuff like npc's/birds/weather or something like that, so it is better for testing the graphics engine vs. hanging around town :)
Managed to test some with WoW Classic.
Standing around AH in Stormwind with quite a few peeps around:
Gpu load: 40-44%
Fps: 170-190
Gpu load and fps goes down in Windows aswell, and this is not a "graphics issue" but rather a "mmo issue". You will never get "first person shooter" fps in a mmo when loads of other players is hanging around.
Flightpath from Stormwind -> Sentinel Hill (closest):
Gpu load: 96-97%
Min: 44.4 / Max: 706.7 / Avg: 294.9
The "WoW Classic" client uses the WoW 7.2.5 "engine" with D3D11. This engines does not (afaik) have the multithreaded capabilities and performance that the new engine that came with WoW retail in 8.1 patch. However, the performance in the "world" is still high because of the relatively low effects and stuff compared to eg. Nazjatar in WoW retail.
I dunno what to call this issue. Ideally one would want the same gpu usage in Linux to do the same job as in Windows, but doing d3d11 -> vulkan translation kinda HAS to cost something :)
PS. In case you are setting everything to "ultra" + 8MSAA, you should consider dropping MSAA to 0, as this tends to not work too well with DXVK in every game.
You should also consider that the Windows driver might implement specific optimizations for WoW as it is such a popular game. To reliably measure the overhead added by dxvk you should ideally make an d3d11 apitrace and run it on Windows with and without dxvk. I understand this is not always possible with online games.
Out of curiosity, did someone try to measure the cpu, gpu, ram and vram usage under dxvk? I've seen that it increases memory and gpu usage significantly, but approximately how big is this increase? And what about cpu/ram?
i wonder how is dxvk performance under windows?
Lutris automaticaly updated DXVK from 1.3.4 to 1.4 and performace dropped from 100FPS to 34-40 FPS (standing in UC) with major stutters.
Using lutris-wf-nofshack-4.15_x86_64 with GTX 1080.
Downgrading fixes the performace drop.
Please record an apitrace or at least bisect the regression. I can't do very much about games that I don't have access to otherwise. Also, please provide more info, such as whether or not you're GPU-bound.
For the record, regular WoW still works fine on my end with both the "Direct3D 11" and "Direct3D 11 Legacy" options.
@doitsujin Is it possible to do a apitrace of wow now?
@WeaponMan I logged into WoW Classic with a new character in Thunder Bluff (since i cba to wait 20+ minutes to queue on another server i have a character), but cant say i had any direct issues. Had 250-300+ fps there. Is there a "remote" place you can stand out in the wild and confirm the same issue?
I used DXVK f498e742ec6fb2c3face037f6a22a726be257106 and lutris-4.16 with RTX2070.
Can't reproduce low fps with 1.4 either. Tested 1.3.4 vs 1.4.0 on lutris-4.16-nofshack with fsync enabled.
GTX 1070, 435.24.02
If I try the new version (1.4) its CPU bound one thread goes to 100% and GPU Util is 0%, this doesn't happen on 1.3.4.
On lutris-4.16-nofshack its even worse.
I will try the new nvidia driver if it doesn't help I will try to provide apitrace.
kernel 5.2.14.arch2-1, nvidia 435.21-4, R7 [email protected]
If I try the new version (1.4) its CPU bound one thread goes to 100% and GPU Util is 0%, this doesn't happen on 1.3.4.
That does not sound... uhm.. even possible. Are you sure there is no bugged download of something? 0% gpu utilization?
Try to set DXVK_LOG_LEVEL=debug and check what the logs says, cos that sounds like something major is up :)
@WeaponMan can you please post the DXVK log files?
Finally I had time to debug it.
It didn't made any logs with 1.4 selected in lutris so it was runing wined3d.
Found the downloaded packages of DXVK in ~/.local/share/lutris/dxvk and x64 folder for version 1.4 was missing.
Deleted the packages restarted and lutris and it works now (solid 100FPS on 1.4)
Sorry for bothering you all with a simple fix I should made the in first place (new to lutris so).
EDIT: typos
@WeaponMan
Please set the issue to "Solved" i guess :)
@SveSop
I am not the one who made this issue so I can't do anything to "Solved/Closed" its up to @darkalpha84
@WeaponMan
Oops... You are absolutely true :) Sorry for that.
Dear community - I'm sorry I've been absent for a while now - got little time on my end. Thanks for all that replied here and submitted test results.
I did some testing with wow classic but gained no new information.
@pga256 - Orgrimmar was empty, because I'm playing on a new fresh server. Differences caused by loads of players didn't happen :).
I tried to investigate the "power" of the nvidia drivers on linux as bno1 stated above they may not be as optimized as the windows drivers.
I tried furmark windows version in native resolution (5120x1440) full screen on win and ubuntu and when it comes to native OpenGL apps ubuntu just had 5 fps less performance.
I still don't know how well the vulkan api is implemented in the linux drivers.
@doitsujin i monitored the gpu usage when nothing is running to see if and how much the compositor is influencing it and it's the same usage as in windows. Usage<10% @300 mhz coreclock. That's the lowest clock rate the gpu supports. I don't know how much this tells us.....
Would a trace log or something like this help?
Would a vulkan benchmark in win and ubuntu also help?
Best regards.
You are comparing a native application designed to run on Linux against a translation layer that translates DX11 calls to Vulkan. This is not even apples-to-oranges, it's apples-to-cars. Besides the obvious CPU overhead of transforming DX11 calls to appropriate Vulkan calls, you are dealing with completely different drivers. And, considering Vulkan is a much more recent API, Vulkan implementations are much more recent, therefore not as well optimized.
Also, it's very likely that the DX11 drivers have app-specific optimizations that gets, quite literally, lost in translation.
@darkalpha84
You could benchmark Unigine Valley or Unigine Heaven. Those are available for windows and linux.
Linux version ofc only benchmarks OpenGL. So to compare stuff you could do the following:
Another D3D11 benchmark that can be tested is https://www.guru3d.com/files-details/monster-hunter-official-benchmark-download.html
There is something called "GFXBench", but i have not tested it. https://gfxbench.com/benchmark.jsp
Does not run under Wine atm - Network error.
I assume you have run WoW Classic completely free of addons just to weed out any weirdness due to addons having loads of bugs in them? And as i said above, i cannot say i am experiencing the same issues here with WoW Classic. And just out of interest, what does dxvk log files say if you log with DXVK_LOG_LEVEL=debug?
I still don't see any problem here, the game runs fine and even if it's over 30% slower than on Windows, there's not much I can do here. Lower performance is expected (especially if MSAA is involved).
Most helpful comment
Finally I had time to debug it.
It didn't made any logs with 1.4 selected in lutris so it was runing wined3d.
Found the downloaded packages of DXVK in ~/.local/share/lutris/dxvk and x64 folder for version 1.4 was missing.
Deleted the packages restarted and lutris and it works now (solid 100FPS on 1.4)
Sorry for bothering you all with a simple fix I should made the in first place (new to lutris so).
EDIT: typos