Support us on Patreon to keep GamingOnLinux alive. This ensures all of our main content remains free for everyone. Just good, fresh content! Alternatively, you can donate through PayPal. You can also buy games using our partner links for GOG and Humble Store.
The Witcher 3 in Wine
Page: «96/176»
  Go to:
Nasra Apr 25, 2018
Quoting: Shmerl
Quoting: 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.

Quoting: 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 Apr 26, 2018
Quoting: 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.
Cmdr_Iras Apr 26, 2018
Quoting: Shmerl
Quoting: 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 Apr 26, 2018
Quoting: 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.
Cmdr_Iras Apr 26, 2018
Quoting: Shmerl
Quoting: 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 Apr 26, 2018
[quote=Shmerl]
Quoting: 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 Apr 26, 2018
Quoting: 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 Apr 30, 2018
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 Apr 30, 2018
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 Apr 30, 2018
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...
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register


Or login with...
Sign in with Steam Sign in with Google
Social logins require cookies to stay logged in.