Use Reddit? Join us on our very own subreddit: https://www.reddit.com/r/Linuxstuff/
You can sign up to get a daily email of our articles, see the Mailing List page!
Support us on Patreon to keep GamingOnLinux alive. This ensures we have no timed articles and no paywalls. Just good, fresh content! Alternatively, you can support us on Paypal and Liberapay!
  Go to:
The Witcher 3 in Wine
Nasra commented on 25 April 2018 at 8:12 pm UTC

Shmerl
NasraThe game is fully playable [with dxvk].

It's not fully playable. It works for the most part, but rendering issues are quite annoying and there are still some reported freezes in the game. You yourself mention stream output. It's a big hole in dxvk for now, and implementing it requires changes to Vulkan itself.

No freezes for me, my Geralt is level 15.
The big hole of Stream Output slows a little the game on my configuration. I haven't tested on AMD graphics card.

LeopardSuch a bold claim.

If you add even DXVK dev is saying the opposite , that is a very bold claim indeed.

This is my experience, i'm sure there is other experiences that doesn't confirm my experience. Dxvk is in developpement, i know that.

Shmerl commented on 26 April 2018 at 12:51 am UTC

NasraThe big hole of Stream Output slows a little the game on my configuration.

That's how rotfiends look in dxvk because of missing stream output:

image

That's not called fully playable.

ajgp commented on 26 April 2018 at 7:40 am UTC

Shmerl
NasraThe big hole of Stream Output slows a little the game on my configuration.

That's how rotfiends look in dxvk because of missing stream output:

That's not called fully playable.

Here's hoping that the Vulkan spec gains stream output relatively soon, hopefully they will have seen this sort of thing and may add it sooner rather than later.

I do wonder how Feral works around stream output limitations in their ports; because Im sure some of the games they have ported with Vulkan must use that DX feature and so they must have had to resolve somehow.

Shmerl commented on 26 April 2018 at 1:08 pm UTC

ajgpI do wonder how Feral works around stream output limitations in their ports; because Im sure some of the games they have ported with Vulkan must use that DX feature and so they must have had to resolve somehow.

They might implement it in inefficient manner. It's an option, but @YoRHa-2B wants a better one, which is a good thing.

I suppose anyone can implement such thing (Vulkan driver would need to anyway, when the spec will be expanded), it's just probably far from trivial.

ajgp commented on 26 April 2018 at 1:22 pm UTC

Shmerl
ajgpI do wonder how Feral works around stream output limitations in their ports; because Im sure some of the games they have ported with Vulkan must use that DX feature and so they must have had to resolve somehow.

They might implement it in inefficient manner. It's an option, but @YoRHa-2B wants a better one, which is a good thing.

I suppose anyone can implement such thing (Vulkan driver would need to anyway, when the spec will be expanded), it's just probably far from trivial.

Oh for sure the feral solution may not be elegant, we have no way of telling, but if if DXVK could implement a similar method in the short term it can alsways be updated out if/when vulkan supports stream output in the future. Sadly it is beyond my ability to do it myself (wouldnt even know where to start!)

YoRHa-2B commented on 26 April 2018 at 4:25 pm UTC

[quote=Shmerl]

ajgpI do wonder how Feral works around stream output limitations in their ports; because Im sure some of the games they have ported with Vulkan must use that DX feature
Rise of the Tomb Raider doesn't. Not sure about F1 2017 and the earlier Vulkan ports, but it's certainly possible that they just never ran into this issue in the first place.

If the game doesn't care about the ordering guarantees that D3D11 Stream Output provides, a rather efficient workaround is trivial: Just use SSBO writes and an atomic counter. Done.

If the game does care about the ordering guarantees, things get hairy. If the game doesn't use indirect draws and if the geometry shaders unconditionally write data to their output streams and if the game doesn't rely on overflow behaviour, you can still use SSBO stores combined with some gl_PrimitiveID and gl_InstanceID magic.

Feral know what their game needs and can adjust their wrapper accordingly. DXVK can't, it needs to satisfy all possible use cases.

Shmerl commented on 26 April 2018 at 4:30 pm UTC

YoRHa-2BIf the game doesn't care about the ordering guarantees that D3D11 Stream Output provides, a rather efficient workaround is trivial: Just use SSBO writes and an atomic counter. Done.

Theoretically, radv or any Vulkan implementation sits above the kernel driver anyway, so it's userland implementation of the feature. I suppose it means anyone can do it same way as Vulkan implementation would for some potential new spec, or it might require some changes to underlying compilers which makes it a hard task?

rstrube commented on 30 April 2018 at 12:22 am UTC

Hi Everyone,

I've been following this thread for the last several months (with great interest I might add). Recently I was able to purchase a copy of The Witcher 3 GOTY edition from GOG during their last sale. Using Lutris I've setup a Wine-Staging 3.6 prefix and used the GOG installer to install the game.

I'm able to start and run the game fine using Wine-Staging 3.6 (d3d to opengl), but the performance is fairly poor. The next step is for me to try to get DXVK setup. I decided to use the easy approach and simply download the d3d11.dll and dxgi.dll from here: https://haagch.frickel.club/files/dxvk/latest/64/bin/

I placed both DLLs in the c:/Windows/System32 directory (within my prefix) and setup the appropriate library overrides using the Wine configuration tools - setting both the d3d11 and dxgi to native.

Now when I try to launch The Witcher 3, I get a crash (without much useful information). Here are the details:

Unhandled exception: page fault on write access to 0x7f05e3050720 in 64-bit code (0x00007f05e2e5bb52). Register dump: rip:00007f05e2e5bb52 rsp:000000000212dd30 rbp:0000000000000002 eflags:00010202 ( R- -- I - - - ) rax:00007f05e2b165e0 rbx:00007f05e30eab18 rcx:00007f05e2b165e0 rdx:0000000000000008 rsi:00007f05e3050720 rdi:0000000000000000 r8:000000000000ffff r9:00000000000000ff r10:00007f0fef1ea3a0 r11:0000000000000202 r12:00007f05dd52d773 r13:0000000000000014 r14:000000007ce62f90 r15:00007f05dda297e8 Stack dump: 0x000000000212dd30: 000000007d048a60 000000000000000c 0x000000000212dd40: 0000000000000111 00007f05dda296e0 0x000000000212dd50: 000000007ce62f90 000000007ce01430 0x000000000212dd60: 000000007ce008a0 00007f05e2e5c374 0x000000000212dd70: 000000007ce01430 0000000000000000 0x000000000212dd80: 0000000000000007 000000000212de50 0x000000000212dd90: 00007f0f000000c2 00007f050000001f 0x000000000212dda0: 0000000000000106 000000007ce048d0 0x000000000212ddb0: 0000000000000000 00007f05e30ead00 0x000000000212ddc0: 00000007e30e56a0 00007f05e30eab00 0x000000000212ddd0: 000000147cdaa7a0 00007f0fefc9f130 0x000000000212dde0: 00000000efa88d31 000000007d048a60 Backtrace: =>0 0x00007f05e2e5bb52 (0x0000000000000002) 0x00007f05e2e5bb52: movq %rax,(%rsi) Modules: Module Address Debug info Name (42 modules) PE 2130000- 2328000 Deferred physx3common_x64 PE 2330000- 2339000 Deferred nvcamerasdk64 PE 2340000- 2425000 Deferred gfsdk_ssao.win64 PE 6a340000- 6a510000 Deferred d3d11 PE 6f200000- 6f376000 Deferred dxgi PE 7a850000- 7a858000 Deferred opengl32 PE 7b420000- 7b5d5000 Deferred kernel32 PE 7bc40000- 7bc52000 Deferred ntdll PE 140000000- 14354a000 Deferred witcher3 PE 180000000- 180404000 Deferred d3dcompiler_47 PE 7f0fe3b40000- 7f0fe3b45000 Deferred uxtheme PE 7f0fe5720000- 7f0fe5725000 Deferred winex11 PE 7f0fe57c0000- 7f0fe57c5000 Deferred hid PE 7f0fe57e0000- 7f0fe57f6000 Deferred setupapi PE 7f0fe5850000- 7f0fe5855000 Deferred dinput8 PE 7f0fe5870000- 7f0fe5875000 Deferred vcomp PE 7f0fe5890000- 7f0fe5895000 Deferred vcomp110 PE 7f0fe58b0000- 7f0fe58b5000 Deferred xinput1_3 PE 7f0fe58c0000- 7f0fe58c6000 Deferred imm32 PE 7f0fe58f0000- 7f0fe58f4000 Deferred usp10 PE 7f0fe5940000- 7f0fe5992000 Deferred comctl32 PE 7f0fe5a90000- 7f0fe5a9a000 Deferred aclui PE 7f0fe5ac0000- 7f0fe5acf000 Deferred shlwapi PE 7f0fe5b60000- 7f0fe5d44000 Deferred shell32 PE 7f0fe5e80000- 7f0fe5e89000 Deferred wined3d PE 7f0fe5fe0000- 7f0fe5fe5000 Deferred d3d9 PE 7f0fe6050000- 7f0fe6067000 Deferred msvcr110 PE 7f0fe6140000- 7f0fe61ba000 Deferred winmm PE 7f0fe6220000- 7f0fe624c000 Deferred ole32 PE 7f0fe63c0000- 7f0fe63c5000 Deferred dsound PE 7f0fe6430000- 7f0fe6449000 Deferred msvcr120 PE 7f0fe6560000- 7f0fe6588000 Deferred msvcp120 PE 7f0fe6680000- 7f0fe6686000 Deferred ws2_32 PE 7f0fe68e0000- 7f0fe68e7000 Deferred dbghelp PE 7f0fe6950000- 7f0fe695b000 Deferred rpcrt4 PE 7f0fe6a00000- 7f0fe6a10000 Deferred msvcrt PE 7f0fe6ac0000- 7f0fe6ac7000 Deferred winevulkan PE 7f0fe6b00000- 7f0fe6b06000 Deferred vulkan-1 PE 7f0fe6b20000- 7f0fe6b2b000 Deferred advapi32 PE 7f0fe6bc0000- 7f0fe6bcc000 Deferred gdi32 PE 7f0fe6e50000- 7f0fe6f1e000 Deferred user32 PE 7f0fef6a0000- 7f0fef6a5000 Deferred version Threads: process tid prio (all id:s are in hex) 0000000e services.exe [C:\windows\system32\services.exe] 00000022 0 0000001d 0 00000015 0 00000014 0 00000013 0 00000010 0 0000000f 0 00000011 winedevice.exe [C:\windows\system32\winedevice.exe] 0000001a 0 00000019 0 00000018 0 00000017 0 00000016 0 00000012 0 0000001b plugplay.exe [C:\windows\system32\plugplay.exe] 0000001f 0 0000001e 0 0000001c 0 00000020 winedevice.exe [C:\windows\system32\winedevice.exe] 00000027 0 00000026 0 00000025 0 00000024 0 00000023 0 00000021 0 00000028 explorer.exe [C:\windows\system32\explorer.exe /desktop] 0000002c 0 0000002b 0 0000002a 0 00000029 0 0000003d (D) C:\GOG Games\The Witcher 3 Wild Hunt GOTY\bin\x64\witcher3.exe ["C:\GOG Games\The Witcher 3 Wild Hunt GOTY\bin\x64\witcher3.exe"] 0000003e 0 <== 00000041 explorer.exe [C:\windows\system32\explorer.exe /desktop] 00000045 0 00000044 0 00000043 0 00000042 0 System information: Wine build: wine-3.6 (Staging) Platform: x86_64 Version: Windows 7 Host system: Linux Host version: 4.16.3-200.fc27.x86_64

Have I missed any steps that are neccessary to get DXVK setup? I know in the past you needed to install the Vulkan SDK (in the wine prefix) and add add a winevulkan.json file. This is no longer necessary correct?

Thanks!

Shmerl commented on 30 April 2018 at 1:04 am UTC

Welcome to the thread!

You can use provided script that creates symlinks and overrides. See here. I think what you did manually looks very similar, so not sure why it's crashing. How exactly are you launching the game? If manually, make sure you are in the directory where the binary is located.

And you don't need Wine staging with TW3. Regular Wine works just as well.

Also, note that neither wined3d nor dxvk provide perfect solution now. winde3d as you noted, still has poor performance (Wine developers are working on it), and dxvk is missing features like stream output, that results in various broken graphics.

rstrube commented on 30 April 2018 at 2:30 am UTC

Hey Shmerl!

Thanks for the reply. I'm currently using Lutris to manage my Wine installations, so I'm launching the application through the Lutris UI. That being said, I believe this translates to:

WINEPREFIX=~/Games/Lutris/witcher-3; ~/.local/share/lutris/runners/wine/3.7-x86_64/bin/wine ./witcher3.exe

From within the following directory:

/home/robert/Games/Lutris/witcher-3/drive_c/GOG Games/The Witcher 3 Wild Hunt GOTY/bin/x64

I did run the scripts you mentioned, and they appeared to do same thing as I had manually done previously (albeit using symlinks instead of copying the .dll files into the c:\windows\system32 directory directly).

I've also tried using Wine 3.7 (as opposed to Wine-Staging 3.6). I do receive a different error, but it still results in a register dump.

One thing worth mentioning is that I'm using a Nvidia GTX 1060 with driver 390.48. Are there some additional environment variables that I need to set? I seem to remember something with shaders changing with the later versions of the Nvidia drivers.

Thanks again for the help!

Man I can't wait to move to Vega, I've had it with this binary driver bullshit...

  Go to:

Due to spam you need to Register and Login to comment.


Or login with...

Livestreams & Videos
Community Livestreams
  • Puzzle Tiles: „Botanicula“
  • Date:
See more!
Popular this week
View by Category
Contact
Latest Comments
Latest Forum Posts