doitsujin / dxvk

Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine
zlib License
13.07k stars 839 forks source link

Mass Effect Andromeda: Corruption in SSR #885

Closed Lastique closed 5 years ago

Lastique commented 5 years ago

In Mass Effect Andromeda, screen space reflections (SSR) seem corrupted, with flickering horizontal stripes.

me_andromeda

This problem can be seen on any reflective surfaces in the game.

Software information

Mass Effect Andromeda 1.10. I reproduced this on the default (Auto) and Ultra in-game presets, but it seems the corruption is present on any settings, at least I haven't found a config that doesn't show the corruption. On some (lower quality) presets the stripes may be wider.

System information

Apitrace file(s)

I couldn't save an apitrace as the game would freeze before getting into the main menu. When DXVK is enabled, the game would not load from the save, hanging in the loading screen.

Log files

doitsujin commented 5 years ago

Works fine here unless I'm blind: bildschirmfoto-548

Will throw this at my Nvidia card tomorrow and see what it does.

Please also test whether you can reproduce the problem with 0.72.

Lastique commented 5 years ago

I have tested multiple DXVK versions and the last version that did not have the problem was 0.92. With 0.93 the SSR corruption appears. Unfortunately, though, the game hangs on exit with 0.92 and older versions, but that is a separate (less of a) problem, which was, apparently, solved.

Lastique commented 5 years ago

I'm attaching my game config. You can ungzip and place it into your $WINEPREFIX/drive_c/users/$USER/My Documents/BioWare/Mass Effect Andromeda/Save. ProfOpts_profile.gz

doitsujin commented 5 years ago

I cannot test this on my GTX 670 system right now because Origin refuses to log in for some reason. Are you able to compile DXVK on your system? If so, please bisect it.

Lastique commented 5 years ago

Umm, no I've never compiled Wine stuff, so it'll be rather difficult for me.

Lastique commented 5 years ago

I managed to setup the build environment and bisect. The first problematic commit is 5d49644cdc071866c5556997a35bd946d7724457.

doitsujin commented 5 years ago

Thank you. This is strange since that commit only reports your GPU as an AMD card to the game, but the game works fine on actual AMD cards.

I guess the correct solution is to disable that vendor ID hack then, Frostbite Engine should not need it anyway. With DXVK 0.95 (not the older versions), you can do that manually by setting dxgi.nvapiHack = False in dxvk.conf as described in the Wiki.

Lastique commented 5 years ago

Thanks. I can confirm that dxgi.nvapiHack = False fixes the corruption with 0.95, although now the game freezes on exit. I can terminate it with Ctrl+C in the console it is running in. Would you like a separate bug for it?

As for the corruption, I suspect the game may be using a different shader or something depending on the GPU vendor.

doitsujin commented 5 years ago

Yes, but why would that one shader work on AMD but not Nvidia GPUs?

I'll investigate the hang on exit, but those issues tend to be next to impossible to debug properly and I'm really not sure why changing the reported vendor would trigger that of all things. Do you have nvapi64 set to disabled for your wine prefix?

Lastique commented 5 years ago

Do you have nvapi64 set to disabled for your wine prefix?

Yes, both nvapi and nvapi64.

doitsujin commented 5 years ago

The corruption issue is fixed as of af92bc9d9bac40be3d9014ead85d7295b023308d.

Lastique commented 5 years ago

Thanks!