HansKristian-Work / vkd3d-proton

Fork of VKD3D. Development branches for Proton's Direct3D 12 implementation.
GNU Lesser General Public License v2.1
1.87k stars 194 forks source link

Diablo II Resurrected black screen #625

Closed jas0n098 closed 3 years ago

jas0n098 commented 3 years ago

Trying to run this game with VKD3D-Proton (commit c7eb6fd) will always result in a black screen the whole time the game is running, although you can still hear the intros and eventually main menu music. All tested drivers exhibited the same issue.

Tested with Radeon RX 570 (4 GB) Radeon RX 6700 XT Mesa 21.2.0-devel (git-3af12216e3) AMDVLK v-2021.Q2.1 Adrenalin 2020 Edition 21.2.3

VKD3D_DEBUG=trace log vkd3d_trace.zip

apitrace (Recorded from Windows with native D3D12) https://drive.google.com/file/d/1dBayiPY9rxGj3zWI5P_LA0J8EZtLI5gS/view?usp=sharing

Jen0k commented 3 years ago

Any news on this? I have the same issue.

K0bin commented 3 years ago

No one has looked into this yet.

Marcuss2 commented 3 years ago

I tested it as well, the only thing I can add is that I do see the custom cursor that the game uses once I get to the "main menu music"

rinaldus commented 3 years ago

Diablo 2 Resurrected is scheduled to release 23rd of September. Will vkd3d team be able to provide compatibility to play before this date?

K0bin commented 3 years ago

The apitrace doesn't work so they'll need the game to debug it. That means the answer is most likely no.

thejens commented 3 years ago

Same issue in open beta. At least now it's not "impossible" to get a hold of the game to test.

Dehir commented 3 years ago

Same issue in open beta. At least now it's not "impossible" to get a hold of the game to test.

Confirming same issue. AMDGPU Polaris rx480 4gb. Introvideo and maybe menu seems to work at least according to voices heard on backround.

thejens commented 3 years ago

Also brought up here I guess: https://bugs.winehq.org/show_bug.cgi?id=51105

Gordonfreeman882 commented 3 years ago

Same issue for me on rx550 2GB, manjaro x11. If you leave the game running through the starting videos the ingame mouse appears on the black screen. You can try to click some buttons ingame but since you cant see anything i couldnt get into a game to see if ingame engine works.

dvbeato commented 3 years ago

same here: Archlinux X11 NVidia 1070ti

Yankas commented 3 years ago

Same issue here, RX580 8GB, Arch/x11

K0bin commented 3 years ago

Yes, it appears to be a VKD3D-Proton issue, I don't think any more "me too"s are necessary.

If anyone actually wants to help, they could make an apitrace by throwing D3D12 apitrace at it. Found here: https://github.com/Joshua-Ashton/apitrace/releases/tag/d3d12-alpha-3

Has to be done on Windows. Copy over the d3d12.dll, dxgi.dll and dxgitrace.dll into the game directory and run the game. Then upload the .trace file that shouldve been created on your desktop.

Yankas commented 3 years ago

As requested, here is an API trace:

(Game.trace) Google Drive Link Diablo 2 Open Beta Windows 10 21H1 GTX 1070 / 471.68

stonebuckl commented 3 years ago

Is there any benefit in having multiple traces?

Gordonfreeman882 commented 3 years ago

Since i dont know if its making a difference if the system runs on an AMD-card i've also setup the API trace: https://mega.nz/file/ecNwgbxA#YAa4H7ZpWFrY6FZR0Or9lqzRs7YKb2gFfRjL-6UcuU0 (mega.co.nz link -> file size over 3GB) I've started up the game, joined single player and killed some daemons. Saved and exit.

Diablo 2 R Open Beta Windows 10 21H1 RX550 2GB / -> default Windows installed driver version: 27.20.1034.6

As i mentioned earlier one can see the ingame mouse and can click blindly buttons and stuff. As a last hope i clicked my way blind through and started a game to see if the ingame engine does any difference -> Nope it doesnt.

K0bin commented 3 years ago

Try that PR.

Yankas commented 3 years ago

I build the PR version, and it seems to working now. Cinematics, menus and in-game gameplay display fine. Game still has stuttering / frame rate issues (for me at least), but the issue described here seems to be resolved.

kantlivelong commented 3 years ago

Working here as well

thejens commented 3 years ago

All working, good frame rates, just finished Act1 with no issue - thanks!

vegegoku commented 3 years ago

Ok finally I have something to share, the fix didnt work for me and I noticed that on lutris only when I select version 1.7.1L of dxvk the game start with sound and black screen otherwise it just crash.

my system information

[System]
OS:              Ubuntu 20.04 focal
Arch:            x86_64
Kernel:          5.11.0-25-generic
Desktop:         KDE
Display Server:  x11

[CPU]
Vendor:          GenuineIntel
Model:           Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
Physical cores:  4
Logical cores:   8

[Memory]
RAM:             31.3 GB
Swap:            2.0 GB

[Graphics]
Vendor:          NVIDIA Corporation
OpenGL Renderer: Quadro M1000M/PCIe/SSE2
OpenGL Version:  4.6.0 NVIDIA 470.57.02
OpenGL Core:     4.6.0 NVIDIA 470.57.02
OpenGL ES:       OpenGL ES 3.2 NVIDIA 470.57.02
Vulkan:          Supported

nividia-driver-470 image

Is there a possibility that I need the fix applied to that exact version? and if so how it can be applied?

thanks

kantlivelong commented 3 years ago

Ok finally I have something to share, the fix didnt work for me and I noticed that on lutris only when I select version 1.7.1L of dxvk the game start with sound and black screen otherwise it just crash.

Not sure if you did but I needed to copy the dlls to the proton directory as well as within the prefix.

vegegoku commented 3 years ago

Ok finally I have something to share, the fix didnt work for me and I noticed that on lutris only when I select version 1.7.1L of dxvk the game start with sound and black screen otherwise it just crash.

Not sure if you did but I needed to copy the dlls to the proton directory as well as within the prefix.

What is proton directory? what is the path exactly?

kantlivelong commented 3 years ago

What is proton directory? what is the path exactly? In your case it's just the lutris wine path. I used personally Proton wine build.

I used Proton for my wine exec but you're using Lutris. Some of the paths are symlinked but here are the paths where those dlls can be found in my env:

/home/user/.local/share/lutris/runners/wine/Proton-6.14-GE-2-d2r-patch/lib/wine/vkd3d-proton/d3d12.dll
/home/user/.local/share/lutris/runners/wine/Proton-6.14-GE-2-d2r-patch/lib64/wine/vkd3d-proton/d3d12.dll

/home/user/Games/diablo-ii-ressurected/drive_c/windows/system32/d3d12.dll
/home/user/Games/diablo-ii-ressurected/drive_c/windows/syswow64/d3d12.dll

/home/user/.local/share/lutris/runtime/dxvk/v1.9.1L/x64/d3d12.dll
/home/user/.local/share/lutris/runtime/dxvk/v1.9.1L/x32/d3d12.dll
vegegoku commented 3 years ago

What is proton directory? what is the path exactly? In your case it's just the lutris wine path. I used personally Proton wine build.

I used Proton for my wine exec but you're using Lutris. Some of the paths are symlinked but here are the paths where those dlls can be found in my env:

/home/user/.local/share/lutris/runners/wine/Proton-6.14-GE-2-d2r-patch/lib/wine/vkd3d-proton/d3d12.dll
/home/user/.local/share/lutris/runners/wine/Proton-6.14-GE-2-d2r-patch/lib64/wine/vkd3d-proton/d3d12.dll

/home/user/Games/diablo-ii-ressurected/drive_c/windows/system32/d3d12.dll
/home/user/Games/diablo-ii-ressurected/drive_c/windows/syswow64/d3d12.dll

/home/user/.local/share/lutris/runtime/dxvk/v1.9.1L/x64/d3d12.dll
/home/user/.local/share/lutris/runtime/dxvk/v1.9.1L/x32/d3d12.dll

I am pretty sure I am copying the files correctly and they are being picked up, because if for example i keep the folder ~/.local/share/lutris/runtime/dxvk/v1.7.1L/x64/d3d12.dll untouched the game starts with black screen and sound, once I copy the dlls to that folder the game instead crash.

now for the dxvk version v1.9.1L it crash even when I dont touch the folder and keep it as is.. so my guess there is something else for me that cause the game to crash with version beyond 1.7.1L

intersectRaven commented 3 years ago

@vegegoku Crash might be due to the NVidia driver bug if you're on NVidia. Try issuing a sudo nvidia-modprobe -u -c=0 before starting it.

vegegoku commented 3 years ago

@vegegoku Crash might be due to the NVidia driver bug if you're on NVidia. Try issuing a sudo nvidia-modprobe -u -c=0 before starting it.

Ok did that but I dont know what supposed to happen.!

intersectRaven commented 3 years ago

@vegegoku Crash might be due to the NVidia driver bug if you're on NVidia. Try issuing a sudo nvidia-modprobe -u -c=0 before starting it.

Ok did that but I dont know what supposed to happen.!

It shouldn't crash now with the dll replacements from the pull request mentioned a few posts above. At least on my setup, that was what was causing the crash when I installed the new dlls on my prefix.

bisby commented 3 years ago

For me the 3d rendered parts are having a weird ... history? Buffers not being fully cleared? Not getting black screens, so a huge step forward. but something else is being weird. Intermittent lines of "previous screen" and "new screen"... gets fixed (in the moment, and goes back to broken when something updates) when I full screen then unfullscreen the game.

image

wine 6.15 staging with the patch above for vkd3d. radeon 6900xt on mesa 21.1.6, 1440p on i3wm (edit: and also XFCE)

edit: Went looking at the PR for other information.

export RADV_DEBUG=nohiz to fix the weird black line issue I was dealing with, was already solved over there.

vegegoku commented 3 years ago

@vegegoku Crash might be due to the NVidia driver bug if you're on NVidia. Try issuing a sudo nvidia-modprobe -u -c=0 before starting it.

Ok did that but I dont know what supposed to happen.!

It shouldn't crash now with the dll replacements from the pull request mentioned a few posts above. At least on my setup, that was what was causing the crash when I installed the new dlls on my prefix.

I am saying it crash for me for any version of dxvk beyond 1.7.x that includes the patched dlls from the pull request.. and yes i read the whole thread and I know it works for many people.. but not for me. There is definitely another bug with nvidia drivers and dxvk starting from 1.8.x that causes the crash.

BTW I am ready to share anykind of info required to solve this as long as someone guide me on what he needs and how I can provide it.

thanks

eitch commented 3 years ago

I know this is off topic. but where can i find instructions to run a game like diablo 2 resurrected? If this is running with Lutris, i did install with Lutris over Battle.net, but i can't start the game itself from the battle.net launcher. Is this supposed to work, or do i need to configure a new launcher in Lutris? Thanks for any pointers.

K0bin commented 3 years ago

Lutris ships a VKD3D-PROTON version that already has those changes. I don't use Lutris so I can't tell you more than that.

Gordonfreeman882 commented 3 years ago

To run games like D2R with Lutris install Lutris itself. Download is here: https://lutris.net/downloads/ Then choose this to install battle.net App in Lutris: https://lutris.net/games/battlenet/

After those to steps there should be battle.net App created in lutris which should start as you press the play button. In battle.net choose the game you want to play -> D2R. Make sure to select the beta version of the game since this is the only version you can install right now. Download and let battle.net app do its thing.

After its finished downloading close the battle.net app. Go to folder ~/.local/share/lutris/runtime/dxvk/v1.9.1L/ make a backup and copy over the files you get from: https://github.com/HansKristian-Work/vkd3d-proton/actions/runs/1130860939

Go to back to lutris and do right click on the battle.net icon. Than Configure-> System options-> Scroll down to Enviroment Variables and add RADV_DEBUG=nohiz.

Save and start the Battle.net app -> Start D2R Beta it should work without black screen.

eitch commented 3 years ago

@Gordonfreeman882 Thanks a lot! I was now able to get D2R to run on my PC. Wonderful!

kolAflash commented 3 years ago

To run games like D2R with Lutris install Lutris itself. Download is here: https://lutris.net/downloads/ Then choose this to install battle.net App in Lutris: https://lutris.net/games/battlenet/

After those to steps there should be battle.net App created in lutris which should start as you press the play button. In battle.net choose the game you want to play -> D2R. Make sure to select the beta version of the game since this is the only version you can install right now. Download and let battle.net app do its thing.

After its finished downloading close the battle.net app. Go to folder ~/.local/share/lutris/runtime/dxvk/v1.9.1L/ make a backup and copy over the files you get from: https://github.com/HansKristian-Work/vkd3d-proton/actions/runs/1130860939

Go to back to lutris and do right click on the battle.net icon. Than Configure-> System options-> Scroll down to Enviroment Variables and add RADV_DEBUG=nohiz.

Save and start the Battle.net app -> Start D2R Beta it should work without black screen.

Some additional notes:

 

You must be logged in to GitHub to download "vkd3d-proton-merge-...". https://github.com/HansKristian-Work/vkd3d-proton/suites/3500163104/artifacts/83406375 Here's a copy without the need to log in: vkd3d-proton-merge-953ad0b5989df062ea20b83309e981854cfa1d7a.zip

Instead of v1.9.1L your Lutris may already use v1.9.2L or something newer. It should probably be the newest version folder you can find. (you can see the used version in the configuration of the game inside Lutris -> Runner options -> DXVK version)

About the copying: Exactly these files need to be replaced. Keep all other files.

   

Additionally I had another problem. I could not click any buttons inside Diablo II Resurrected.

Workaround 1: Disable my second monitor.

Workaround 2: Battle.net configuration in Lutris: Configure another Wine installation (compiled with ESync) and enable "Windowed (virtual desktop". (if I enabled virtual desktop with the default lutris-fshack-6.14-3_x86_64 Wine, the Battle.net GUI didn't show up)

   

Also most of the 3D graphics didn't show up (mostly just black), because Lutris <= v0.5.8.3 didn't set RADV_DEBUG=nohiz as configured. It's a bug in Lutris which may only happen on AMD Radeon GPUs: https://github.com/lutris/lutris/issues/3419 I case, you may need to update Lutris to >= v0.5.8.4, for example by installing it via FlatPak: https://github.com/flathub/net.lutris.Lutris Or patch Lutris yourself:

--- a/lutris/runners/wine.py
+++ b/lutris/runners/wine.py
@@ -893,8 +893,13 @@ def get_env(self, os_env=False):
         # On AMD, mimic the video memory management behavior of Windows DX12
         # drivers more closely, otherwise d3d12 games will crash and have other
         # funky issues.
+        # RADV_DEBUG is a comma separated list. If it is already set, we want to
+        # append to it.
         if self.runner_config.get("dxvk") and drivers.is_amd():
-            env["RADV_DEBUG"] = "zerovram"
+            if "RADV_DEBUG" not in env or not env["RADV_DEBUG"]:
+                env["RADV_DEBUG"] = "zerovram"
+            elif "zerovram" not in env["RADV_DEBUG"]:
+                env["RADV_DEBUG"] += ",zerovram"

         overrides = self.get_dll_overrides()
         if overrides:

   

P.S. Works too without Lutris (tested WIne-Staging-6.18). Simply install DXVK (e.g. winetricks dxvk, to get dxgi.dll), copy the x64/d3d12.dll (see above) to C:\windows\system32 (respectively x86-dll into syswow64) and add d3d12=native setting via winecfg. And don't forget to set RADV_DEBUG=nohiz and maybe enable virtual desktop (both see above).

K0bin commented 3 years ago

I think Lutris already ships a version of VKD3D-Proton that has the fix. If it doesn't, you should just grab a build of master, doesn't have to be my old PR.

bejinxed commented 3 years ago

@vegegoku Crash might be due to the NVidia driver bug if you're on NVidia. Try issuing a sudo nvidia-modprobe -u -c=0 before starting it.

This worked for me. I did all the other stuff, would get a black window with a wierd driver / display error.

r9 5900x / 2080ti / manjaro 5.10.63-1

inverimus commented 3 years ago

@vegegoku Crash might be due to the NVidia driver bug if you're on NVidia. Try issuing a sudo nvidia-modprobe -u -c=0 before starting it.

This fixed it for me. The weird thing is it was working for 2 days after release before it started crashing immediately.

Jackfritt commented 3 years ago

@kolAflash Works here on Debian Buster on NVIDIA with wine-6.0.1 also perfect... Thx for hints..

ZmicierGT commented 3 years ago

@kolAflash Unfortunately, it did not help me and I still have a black screen issue. I tried to run it on Intel 520.

pparik commented 3 years ago

I am also unable to get rid of the black screen on Intel 620. Setting d3d12.dll to native in winecfg results in a crash on startup.

ZmicierGT commented 3 years ago

I am also unable to get rid of the black screen on Intel 620. Setting d3d12.dll to native in winecfg results in a crash on startup. I saw a report that D2R works on Intel 620 on Windows (however, on minimal graphics).

rinaldus commented 3 years ago

D2R opens black screen with background music on NVidia GTX 660, however GTX 660 meets minimal system requirements published on Blizzard site. Why? D2R works very well on my other computer with NVidia RTX 2060 SUPER.

Geoplegatill commented 3 years ago

This seems mostly related to NVIDIA, is someone still having problem with AMD cards? I have also tried every step/tweak I can find with no difference always black screen with sound, no crashes. Have tried reinstalling lutris/wine. Even tried a fresh install on Garuda Linux, lutris/wine, no success. GPU: NVIDIA GeForce GTX 780

"NOTE: The part at the end about RADV_DEBUG=nohiz only applies if your GPU is AMD." https://diablo2.io/forums/info-regarding-d2r-on-linux-easy-t8706.html - First post from 'moonlit'

doitsujin commented 3 years ago

D2R opens black screen with background music on NVidia GTX 660, however GTX 660 meets minimal system requirements published on Blizzard site. Why?

Kepler is a bit wonky when it comes to Vulkan support and I don't think we'll support that, given that driver support is ending soon as well.

LucasBeyak commented 3 years ago

This seems mostly related to NVIDIA, is someone still having problem with AMD cards? I have also tried every step/tweak I can find with no difference always black screen with sound, no crashes. Have tried reinstalling lutris/wine. Even tried a fresh install on Garuda Linux, lutris/wine, no success. GPU: NVIDIA GeForce GTX 780

"NOTE: The part at the end about RADV_DEBUG=nohiz only applies if your GPU is AMD." https://diablo2.io/forums/info-regarding-d2r-on-linux-easy-t8706.html - First post from 'moonlit'

I am in the same situation as you. I have tried the patch, various Wine versions, newest 1.9.2L DXVK version, that nvidia-modprobe command and always a black screen, and no crashes. I am running a GTX 770. It issue does seem to be with possibly older Nvidia cards.

I saw this also, and that poster has an even older than us GTX 670. https://github.com/HansKristian-Work/vkd3d-proton/issues/818

samweisgamdschie commented 2 years ago

Has anyone else the blackscreen problem with intel GPU (here CometLake-U GT2, with Subsystem: Hewlett-Packard Company Device 8723)?

Or better, has anyone a solution for Intel graphics? I am a bloody newbie according to linux gaming and all the stuff around it...

pparik commented 2 years ago

Has anyone else the blackscreen problem with intel GPU (here CometLake-U GT2, with Subsystem: Hewlett-Packard Company Device 8723)?

Or better, has anyone a solution for Intel graphics? I am a bloody newbie according to linux gaming and all the stuff around it...

Yep, I have not been able to get it work on i7-8550U, HP laptop :(

muawijhe commented 2 years ago

There is an issue open for the mesa regarding intel igpu...

graygrotesque commented 2 years ago

Hey, sorry to continue an old thread but I just bought D2R yesterday and I'm facing a black screen hard lock when playing, even with this fix. Is there any new or updated method to get D2R running without issues? Running Arch, plasma-wayland on R9 3900X and RX 6700 XT

LucasBeyak commented 2 years ago

Hey, sorry to continue an old thread but I just bought D2R yesterday and I'm facing a black screen hard lock when playing, even with this fix. Is there any new or updated method to get D2R running without issues? Running Arch, plasma-wayland on R9 3900X and RX 6700 XT

As far as I know there are no additional fixes needed (besides possibly the above "export RADV_DEBUG=nohiz" thing for AMD cards, although I'm not sure if that is still required?).

Have you tried on Xorg also, or only Wayland?