Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wine+dxvk vs wine vs native benchmarks #67

Closed
pingubot opened this Issue Feb 9, 2018 · 30 comments

Comments

Projects
None yet
@pingubot
Copy link

commented Feb 9, 2018

Hi,

i know dxvk is still at a very early stage of development, but partly it is already working so well that i wanted to open that issue for sharing benchmark numbers where possible.

My System:
Opensuse Tumbleweed
Nivida GTX 970 Nvidia 390.25
Core i5 3570k@4.2ghz
16 GB Ram

Benchmark/Game used:

Unigine Valley (Ultra settings, no antialiasing, 1920x1080)

wine+dxvk: FPS: 68,8, Min FPS 23,2, Max FPS 106,0, Points: 2874
wine : to slow to be tested, ~ 1/10 of wine+dxvk
native: : FPS: 81,1, Min FPS 24,4, Max FPS 131,5, Points:3393

So with only a few month of developement dxvk makes valley usable (on nvidia you need to work around the shader compiliation issue mentioned in #64 ) and has already ~ 85% of the native performance which is a fantastic achievement already. The gpu is not fully loaded (60-90%) , so there still is some overhead but i am sure optimization is still possible.

Edit: Heaven Numbers added

Benchmark/Game used:

Unigine Heaven (Ultra settings, no antialiasing, no tesselation, 1920x1080)

wine+dxvk: FPS: 76,2; Min FPS 18,4; Max FPS 163,8; Points: 1919
wine : fps cap at 60, so the benchmark would be useless
native: : FPS: 90,0; Min FPS 13,8; Max FPS 173,1; Points: 2275

-> Again, roughly 85% of the native speed. The gpu is partly loaded >90%, but dips down to 60%. The native bench keeps it fully busy .

Unigine Heaven (Ultra settings, 8xAA, no tesselation, 1920x1080)

wine+dxvk: FPS: 39,4; Min FPS 23,0; Max FPS 69,7; Points: 993
wine : fps cap at 60, so the benchmark would be useless
native: : FPS: 59,8; Min FPS 13,7; Max FPS 107,2; Points: 1506

-> This time, only roughly 66% of the native speed. The gpu was loaded > 95% all the time, with native it was 99% all the time. Honestly i expected that the perf gap would be decreasing when you run into the gpu limit, but instead the gap increased, don't know why.

Will prove additional numbers continuously.

Thx
Christian

@qwertychouskie

This comment has been minimized.

Copy link

commented Feb 9, 2018

In this case even just using more aggressive compiler optimization flags may help. Also compiling Mesa as described at https://github.com/jjaxse2017/Mainline-Mesa-Expermental may also help. Considering dxvk has ~85% performance of native, and it is only using ~85% of the GPU, things are already looking quite good! I wouldn't be surprised if Linux game ports started using dxvk soon :)

@SveSop

This comment has been minimized.

Copy link
Contributor

commented Feb 9, 2018

What GPU driver are you using?

@qwertychouskie

This comment has been minimized.

Copy link

commented Feb 9, 2018

@SveSop I would assume the standard Nvidia driver, Nouveau doesn't even have Vulkan support yet: https://www.phoronix.com/scan.php?page=news_item&px=FOSDEM2018-Nouveau-Update.

@SveSop

This comment has been minimized.

Copy link
Contributor

commented Feb 9, 2018

@qwertychouskie The "standard" driver could be several, as you are not "forced" to use 390.25 :) Was why i asked :)
I crash at a slightly different spot if i try to use dxvk with heaven.. Then again, i have made no attempts at that spir-v-tool thingy tho...

@qwertychouskie

This comment has been minimized.

Copy link

commented Feb 9, 2018

Ah, driver version, makes sense :)

@Guy1524

This comment has been minimized.

Copy link
Contributor

commented Feb 10, 2018

I am trying to get valley working, and for some reason, even the recompiled shaders crash the NVIDIA driver

Would any of you guys mind sharing your working shaders so that I can confirm I am generating them correctly? Thanks

EDIT: Nevermind, updating both SPIRV-Tools and my NVIDIA driver fixed the issue

@ssorgatem

This comment has been minimized.

Copy link
Contributor

commented Feb 10, 2018

@qwertychouskie looking at those instructions for building mesa, it looks like most, if not all of it is done in the mesa-git AUR package in Arch Linux (but it also picks up your cofnigured CFLAGS, in my case also with -march=native).

It seems easier to install Manjaro and then mesa-git from the AUR to try benchmarks than the whole process described there.

@Guy1524

This comment has been minimized.

Copy link
Contributor

commented Feb 10, 2018

On windows, lowest settings at 1080p, GTAV runs at 60fps on a GTX 960 with the spirv-opt workaround. On wine, it crashes

@SveSop

This comment has been minimized.

Copy link
Contributor

commented Feb 12, 2018

@Guy1524

EDIT: Nevermind, updating both SPIRV-Tools and my NVIDIA driver fixed the issue

Did you compile the SPIRV-Tools yourself? Cos i could only find the latest binaries from Nov -17.
And what driver are you using? (I'm using 390.25)

@pchome

This comment has been minimized.

Copy link
Contributor

commented Feb 12, 2018

@SveSop

master-tot
Continuous build of the latest master branch by Appveyor and Travis CI

Instead of building manually, you can also download the binaries for your platform directly from the master-tot release on GitHub. Those binaries are automatically uploaded by the buildbots after successful testing and they always reflect the current top of the tree of the master branch.

@SveSop

This comment has been minimized.

Copy link
Contributor

commented Feb 13, 2018

@pchome
Oki, from the looks of:

master-tot
@Khronoswebmaster Khronoswebmaster released this on Nov 9, 2017

I just assumed it was "latest release" nov9, and not a "continous build" :) Will try to update the tools then.

@SveSop

This comment has been minimized.

Copy link
Contributor

commented Feb 13, 2018

Could have told me i had to repeat the spirv-opt tool again and again until it stopped crashing tho :)

After finally getting this to work, i must say i am pleasantly surprised by the performance so far :) Hopefully the nVidia shader compilation thing will be worked out, cos as i (and the rest of you who have gotten this working) saw when doing this for Valley/Heaven, shaders gets compiled several times during the run (and crash until its fixed with the tool). This is "ok" for a static benchmark like those two examples, but games where shaders tend to be build "all the time", its ofc a tad harder :)

Will do some more testing now that i have figured it out.

@SveSop

This comment has been minimized.

Copy link
Contributor

commented Feb 13, 2018

@pingubot
Did some benchies with Unigine Valley/Heaven.
System:
Elementary OS Freya (Ubuntu 14.04)
Kernel: 4.15.2-xanmod3 - Custom
I7 2600K @4.2GHz
16GB Ram
MSI GTX 970 1400core/7200mem (nVidia 390.25)

All benchmarks was at 1920x1080 no tesselation/aa. Ultra quality

wine-vulkan(3.1)+dxvk
Valley - 82.5 fps / 3450 score (32.1 min/115.7 max)
Heaven - 92.2 fps / 2322 score (26.7 min/183.6 max)

wine-staging(2.18)
Valley - 78.7 fps / 3293 score (33.5 min/119.9 max)
Heaven - 88.6 fps / 2232 score (28.7 min/160.4 max)

Linux native (OpenGL)
Valley - 85.1 fps / 3558 score (36.5 min/139 max)
Heaven - 94.7 fps / 2384 score (13.2 min/174.7 max)

--
Very close to the native OpenGL performance. Would have been fun to compare this to DX11 under Windows, but i dont have dualboot atm, so no can do for me.

@dumpsters

This comment has been minimized.

Copy link

commented Feb 14, 2018

I tried on windows now after compiling in arch but it doesn't seem to work anymore, like it won't hook to the game or something, previously it did work like when I posted on #7 (even though I still got weird glitches on skyrim), tried on both Fallout 4 and Skyrim SE and the HUD won't show up even with the env variables (no logs either).

@doitsujin

This comment has been minimized.

Copy link
Owner

commented Mar 8, 2018

Closing due to the lack of activity. Feel free to report performance-rlated issues if a game runs (significantly) worse than on wined3d, since that is kind of the goal here.

@dumpsters if you don't get logs, that means that DXVK is not used at all.

@doitsujin doitsujin closed this Mar 8, 2018

@pingubot

This comment has been minimized.

Copy link
Author

commented Mar 16, 2018

Hi,

just wanting to add another benchmark, the Dirt 2 Demo.

Everything maxed out, 4xMSAA, vsync off:

DXVK (Image-optimized build, 14.03): Avg 34fps, minimum 27fps
Wine 3.3-dev: Avg 24 fps, minimum 18 fps

So dxvk is much faster again, but it is also heavily bottleneced somewhere, cause the gpu is loaded max 50% here..

Cu,
Christia

@TRPB

This comment has been minimized.

Copy link

commented Apr 3, 2018

Has anyone done a comparison between DXVK and wine-pba? Would be interesting to see which is better.

@SveSop

This comment has been minimized.

Copy link
Contributor

commented Apr 3, 2018

@TomBZombie I have done some benchmarks with Unigine benchmarks (Valley & Heaven), and PBA is a bit better in terms of fps (typically 85 with dxvk and 92 with pba for my system). CPU load is a lot lower with dxvk tho, so for cpu intensive games, i would think that DXVK would be a better solution.

The only "problem" atm with DXVK i guess is compatibility with other DX versions, as DXVK only works with "pure" directx11 programs. I say "pure", as there are games/apps that is DX11, that still uses other DX functions not compatible with dxvk. A example of this would be World of Warcraft as it is now, cos it will use DX10 functions (i guess some shaders.. not sure) when initializing even tho it is set to DX11. This may ofc change in the future with an update to the game engine. (There are other games too that spits out some DX10 errors when starting without me doing any tests of that).

Having almost the same fps with less cpu usage would absolutely be preferred when it comes to wine, and DXVK keeps improving all the time :)

@SveSop

This comment has been minimized.

Copy link
Contributor

commented Apr 3, 2018

Did some tests today. Not sure what i should make of this tho... With latest DXVK build i pulled earlier today.
Tests were done with "Ultra" settings, "MSAA=None" and "1080p Fullscreen". Compared with wine-staging-3.5, wine-staging-3.5+PBA patches, and wine-staging-3.5+DXVK .dll's.

Valley:
PBA  - 92.5 fps (3870) 34.6/170.5
DXVK - 84.6 fps (3540) 35.4/157.8
Wine - 74.1 fps (3102) 29.4/111.4

Heaven:
PBA  - 91.5 fps (2305) 29.6/170.0
Wine - 85.4 fps (2150) 20.1/159.8
DXVK - 78.1 fps (1968) 28.7/156.7

Heaven Extreme tesselation:
PBA  - 72.9 fps (1835) 24.8/165.3
Wine - 68.7 fps (1729) 18.5/150.8
DXVK - 63.8 fps (1607) 22.7/146.3

Been a while since i did some comparison benchmarks, but seems as regular wine-staging beats DXVK in Unigine Heaven for some reason. Difference between wine-staging vs "PBA" is still around 10 fps, almost 20 in Valley.

@FlyingWombat

This comment has been minimized.

Copy link

commented May 19, 2018

I did some benchmarks with Anti-Aliasing today, and DXVK turned out significantly worse than everything else. No AA wasn't a big difference, but still worse. Has anyone else gotten results like this recently? Or is my system screwed up somehow?

First, some system info:

GeForce GTX 970:
info:    Driver: 396.18.11
info:    Vulkan: 1.1.73
linux-4.16.9
wine-staging-git 3.8.r9.g41b4cfa2+wine.3.8.r108.g48aeef69fc-1 
dxvk-git 20180517.3d9f7c7-1

All tests were on Ultra quality at 1920x1080
Heaven had Tessellation disabled.
Valley:

test               - Av FPS; score; min/max
8xAA:
Linux OpenGL       - 49.1; 2055; 27.9/83.3
Wine OpenGL        - 49.1; 2055; 25.9/83.3
Wine DX11-builtin  - 49.5; 2070; 17.2/87.9
Wine DX11-dxvk     - 24.1; 1007; 12.6/51.1

noAA:
Linux OpenGL       - 82.6; 3458; 36.4/138.8
Wine OpenGL        - 79.8; 3340; 27.6/128.9
Wine DX11-builtin  - 68.3; 2859; 26.6/107.3
Wine DX11-dxvk     - 77.8; 3254; 28.3/123.8

Heaven:

8xAA:
Wine OpenGL        - 63.8; 1607; 11.9/113.9
Wine DX11-builtin  - 63.3; 1594; 16.8/114.0
Wine DX11-dxvk     - 32.3;  813; 16.3/ 52.0

noAA:
Wine OpenGL        - 91.4; 2303; 12.0/171.9
Wine DX11-builtin  - 83.8; 2111; 25.5/170.7
Wine DX11-dxvk     - 78.1; 1966; 27.0/148.8

DXVK logs:
Heaven_d3d11_8xAA_dxvk.log
Heaven_d3d11_dxvk.log
Heaven_dxgi_8xAA_dxvk.log
Heaven_dxgi_dxvk.log
Valley_d3d11_8xAA_dxvk.log
Valley_d3d11_dxvk.log
Valley_dxgi_8xAA_dxvk.log
Valley_dxgi_dxvk.log

@SveSop

This comment has been minimized.

Copy link
Contributor

commented May 19, 2018

@FlyingWombat Scores look somewhat similar to mine, but i did not test AA. DXVK probably does not do too well with Unigine engine. Not sure what's up with that horrible AA performance tho, but i might give it a test too.

If you have the time, you could check out the PBA patchset for comparison :)
https://github.com/SveSop/wine-pba-rebased (Patches on top of wine-staging)

@SveSop

This comment has been minimized.

Copy link
Contributor

commented May 19, 2018

@FlyingWombat Hmm.. odd..
I am using 396.24 and tried 8xAA on Valley with wine-staging-3.8, but that was a slideshow with 4'ish fps. Not sure what happened with that tbh. Trying PBA patchset crashed with heap memory problems, but DXVK got 20-25 fps'ish. Did not run the full benchmark tho, due to me not being able to run this with 8xAA on wine-staging.

Some strange setting for my part perhaps? Gonna do some investigating :)

EDIT:
Oki. Found that wine-git (8e9ea7a8a163147012908bad696a539454654d8f) fixed AA issues that wine-3.8 had.. so that was the reason Valley was useless with wine-3.8. Not sure what wine commit that did this, but definitely worth some investigation. Wined3d seems to be slightly ahead of DXVK in those Unigine Benchmarks... xept for Unigine Superposition tho, cos that is just a blurry mess with wined3d still.

@zaps166

This comment has been minimized.

Copy link

commented May 19, 2018

My results (GTX 1080, 3840x2160, DXVK 5cc3afc)

Linux + Wine + NVIDIA 396.18.11 (Flipping OFF, Compositor OFF):

  • Tomb Raider DXVK (maximum graphics preset except Tesselation)
    • Menu - 45 FPS
    • Some scene - 45 FPS
    • Graphics test - 38 FPS (33 FPS - 44 FPS)
  • Unigine Valley DXVK - 44.7 FPS (25.9 FPS - 74.1 FPS)
  • Unigine Valley OpenGL - 48.9 FPS (31.4 FPS - 79.8 FPS)

Linux (native apps) + NVIDIA 396.18.11 (Flipping ON, Compositor OFF):

  • Unigine Valley OpenGL - 48.8 FPS (32.6 FPS - 79.5 FPS)
  • Vulkan Examples, Terrain Tesselation - 1016 FPS
  • Vulkan Examples, Subpasses - 169 FPS
  • Vulkan Examples, Texture - 2143 FPS
  • Vulkan Examples, Indirect draw - 106 FPS

Windows + NVIDIA 397.76 (exclusive full screen):

  • Tomb Raider DXVK (maximum graphics preset except Tesselation)
    • Menu - 60 FPS
    • Some scene - 61 FPS
    • Graphics test - 45 FPS (35 FPS - 56 FPS)
  • Tomb Raider DX11 (maximum graphics preset except Tesselation)
    • Menu - 70 FPS
    • Some scene - 82 FPS
    • Graphics test - 62 FPS (48 FPS - 74 FPS)
  • Unigine Valley DXVK - 52.5 FPS (32.5 FPS - 88.5 FPS)
  • Unigine Valley OpenGL - 51.3 FPS (30.1 FPS - 84.9 FPS)
  • Unigine Valley DX11 - 58.1 FPS (32.7 FPS - 97.2 FPS)
  • Vulkan Examples, Terrain Tesselation - 1220 FPS
  • Vulkan Examples, Subpasses - 228 FPS
  • Vulkan Examples, Texture - 3333 FPS
  • Vulkan Examples, Indirect draw - 108 FPS

Unigine Valley is slower on Vulkan that OpenGL on Linux, but faster on Windows than OpenGL. Generally all Vulkan apps which I tested on Linux runs slower. In one UE4 4.19 app I've got ~200 FPS on OpenGL on Linux, ~190 FPS on OpenGL and Vulkan on Windows and ~120 FPS on Vulkan on Linux.

@SveSop

This comment has been minimized.

Copy link
Contributor

commented May 19, 2018

@zaps166 Lets hope this is due to the nVidia team tweaking stuff on their Vulkan compiler.. If not, its kind of bad news i must say :(

@FlyingWombat Did some more testing, and for my GTX970 w/396.24 driver i came up with:

Unigine Valley 8xAA
Staging: 48.1 fps (2011) 26.6/87.9
PBA:      48.2 fps (2015) 26.4/87.4
DXVK:   24.6 fps (1030) 12.8/51.6

REMARK: As this is about DXVK issues, and not "PBA" issues, but for testing and comparing:

I had to use FireRat's patch to tweak the GEO_HEAP and CB_HEAP values for PBA, but that kind of had a detriment in performance for some reason, as using the same values i describe below scored a lot less with noAA.
With 8xAA i was not able to run Unigine Valley with __PBA_GEO_HEAP=512, but had to up it to 1536. (512 is default, and crashed with a error immediately, while 1024 just got a black screen with no error) I also tested __PBA_CB_HEAP=128 but got a slightly worse result than upping that to 256.

@random2324

This comment has been minimized.

Copy link

commented Sep 16, 2018

Radeon 7970
LLVM 8.0.0 svn
Mesa Git

Dirt 3:
All settings maxed out
DXVK 0.72 23fps
Windows 10 132fps

Setting Shadows to High instead of Very High gives a good boost 68fps, where it has just a small impact in Windows 10.
MSAA 4x instead of 8x restores performance to 100fps. Again just a small impact in Win10.

@doitsujin

This comment has been minimized.

Copy link
Owner

commented Sep 16, 2018

Mesa doesn't support DCC in combination with MSAA, so a large performance impact is to be expected.

@random2324

This comment has been minimized.

Copy link

commented Sep 17, 2018

So this is worth opening a mesa bug?

Further testing using the integrated benchmark shows the following results:
MSAA OFF, Shadows very high: 29fps
MSAA OFF, Shadows high: 134fps
MSAA 2x, Shadows high: 117fps
MSAA 4x, Shadows high: 96fps
MSAA 8x, Shadows high: 66fps

So very high shadows causing a major performance drop. Should I open an extra bug ticket for this?

@doitsujin

This comment has been minimized.

Copy link
Owner

commented Sep 17, 2018

They are aware of the MSAA issue, so no. As for the shadows, please let me take a look at it first, I don't know what the game is doing on very high settings.

@lieff

This comment has been minimized.

Copy link

commented Sep 17, 2018

May be it's GPU mem pressure? With GTX980/4GB and SOTTR I need to drop texture quality Ultra->High to make it stable.
Does dxvk supports some kind of GPU mem de-fragmentaion?
Not sure if it's hard to implement, but gpuopen allocator have this feature https://gpuopen.com/gaming-product/vulkan-memory-allocator/ .

@doitsujin

This comment has been minimized.

Copy link
Owner

commented Sep 17, 2018

It doesn't. And it's not as easy as just replacing the memory allocator, it's a huge amount of work because all affected resource need to be copied, all affected views need to be recreated, and all that has to happen in a thread-safe manner.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.