D2R attempts to load, crashes a handful of seconds later

Hey folks,

Lutris version: 0.5.13
lutris-GE-Proton8-16-x86_64

My inxi output:

System:
  Host: localhost.localdomain Kernel: 6.5.3-1-default arch: x86_64 bits: 64
    Desktop: Cinnamon v: 5.2.7 Distro: openSUSE Tumbleweed 20230921
Machine:
  Type: Desktop Mobo: ASUSTeK model: TUF GAMING X570-PLUS v: Rev X.0x
    serial: <superuser required> UEFI: American Megatrends v: 4408
    date: 10/28/2022
CPU:
  Info: 8-core AMD Ryzen 7 3700X [MT MCP] speed (MHz): avg: 2489
    min/max: 2200/4426
Graphics:
  Device-1: NVIDIA GP106 [GeForce GTX 1060 3GB] driver: nvidia v: 535.104.05
  Device-2: NVIDIA TU106 [GeForce RTX 2070] driver: nvidia v: 535.104.05
  Display: x11 server: X.org v: 1.21.1.8 with: Xwayland v: 23.2.0 driver: X:
    loaded: nvidia unloaded: fbdev,modesetting,vesa gpu: nvidia,nvidia-nvswitch
    resolution: 1920x1080
  API: OpenGL v: 4.6.0 NVIDIA 535.104.05 renderer: NVIDIA GeForce RTX
    2070/PCIe/SSE2
Network:
  Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
    driver: r8169
Drives:
  Local Storage: total: raw: 37.75 TiB usable: 23.2 TiB
    used: 19.36 TiB (83.5%)
Info:
  Processes: 435 Uptime: N/A Memory: available: 31.23 GiB
  used: 7.83 GiB (25.1%) Shell: Bash inxi: 3.3.27

Here are log outputs:
JSON Submit file - https://pastebin.com/7vYQM3dz
Lutris Debug output - lutris debug output - Pastebin.com


The issue:

  • Attempt to launch Diablo 2 resurrected (d2r.exe) from the Blizzard launcher
  • Window opens briefly with a title and buttons at top, although its contents are black
  • Crashes after approximately 5-10 seconds or so
  • Repeatable every time

Things I have tried:

  • Disabling DXVK
  • Using different wine/GE/Proton variations
  • Using an older version of VKD3D
  • Using an older version of DXVK
  • Screaming at the computer for a little bit

Some caveats:

  • Drivers appear to be installed correctly (NVIDIA OpenSuSE Tweed repo)
  • Other games load fine (Both OpenGL and Vulkan)
  • Other games from within the Blizzard launcher work fine (Tested Starcraft and Warcraft III/TFT)

Tried searching up various threads and forums across the Internet but found nothing being posted recently about any issues so I’m wondering if I’ve stumbled across an actual issue or if it’s something just isolated to me.

I’ve found this tidbit in the logs which is interesting:

429016.729:0668:066c:err:vkd3d-proton:dxgi_vk_swap_chain_create_surface: Surface is not supported for presentation.
err:   DXGI: CreateSwapChainForHwnd: Failed to create swap chain, hr -2147024809
066c:fixme:cryptasn:CryptDecodeObjectEx Unsupported decoder for lpszStructType 1.3.6.1.4.1.311.2.1.4
066c:fixme:cryptasn:CryptDecodeObjectEx Unsupported decoder for lpszStructType 1.3.6.1.4.1.311.2.1.4

Am I missing something here or did I stumble upon a bug/deeper issue? I hope this is just a dumb rtfm moment.

One last link: Wine log output - Pastebin.com

Apparently while posting I am limited to two links at a time.

Something else I’ve noticed…

As part of further testing I just installed World of Warcraft classic, and while it launched, it only displayed the cursor and audio was playing in the background.

I had to follow the instructions in [SOLVED] WOW black screen with sound and cursor - #23 by jhu and apply the -d3d11 argument in the launcher in order for the graphics to show.

I’m wondering if this issue is indeed specific to d3d12/vkd3d?

Pardon the spam, but, some further testing was done. I logged out of my cinnamon session and into Gnome. The game was able to load there although it ran absolutely horridly (choppy, slow, tearing. Basically a powerpoint slideshow).

Restarted, went back into cinnamon, and the game exhibits the same behavior I initially reported (window opens, black, crashes after 5-10 seconds or so).

It’s odd that it works in Wayland but fails in actual X.

What versions of Proton have you tried? Mine runs fine with lutris-GE-Proton8-14-x86_64. I have it setup with DXVK and VKD3D Enabled and then Esync, Fsycn, FSR, Battleye, and EAC all enabled as well.

Multiple versions. 8-12, 8-15, 8-16 and earlier ones. GE-Proton, Wine, fshack, lol, etc. Nothing seems to do the trick.

On the system options tab in lutris (right click game->configure) make sure you have Show advanced enabled and locate the vulkan ICD loader field. If the name in this has unspecified anywhere and unknown gpu, install vulkan-tools package, restart lutris and go to the Global options (three lines on the title bar in lutris->preferences). Enable Advanced on the top of the window and scroll down to the Multi-GPU section. In this area is the global vulkan ICD loader field - change this match your gpu (eg nvidia proprietary or RADV etc) with your gpu name (assuming it is not a Steam Deck) and then save. Confirm for the game that the global change has carried through by checking the System Options tab. If it still says unspecified, you should fix it here and check all games. If it matches what you set as a global option, you should be golden.
The launch option from my previous thread was for that specific point in time. With the latest Mesa (ie 23.1.6 or newer) or nvidia (515 or newer with supported cards), dxvk 2,3 and vkd3d 2.10 should work just fine with lutris-ge-proton 8.14 or the newer (preferred) wine-ge 8.17 as the games selected runner. The 8.17 wine is installed from the wine folder under the runners area on the left hand pane in Lutris.

Hi Jhu,

To clarify: I’ve already done this. vulkan-tools is installed. The ICD loader field is properly populated (it is pointing at the dedicated card I am actually using).

I have tried the various runner versions you’ve listed.

The issue still persists.

Select the game in lutris, at the bottom near the Play button is a wine glass and an up arrow. Click the up arrow and in the menu select Wine Configuration. In Applications tab of the window that opens, make sure Windows Version is set to Windows 7

Wait, Windows 7? Really? I was told that for D2R it should be Windows 10. I’ll try that and let you know.

If that does not work, head over to the discord server from the link on lutris.net - that way we can look at the lutris -d output in real time and not play tag across time and space