Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Auto Install/Update DXVK on Prefix setting is not compatible with 32-bit prefixes #3705

Closed
casasfernando opened this issue Apr 19, 2024 · 3 comments · Fixed by #3749
Closed
Labels
bug:unconfirmed Someone works on identifying the issue

Comments

@casasfernando
Copy link
Contributor

casasfernando commented Apr 19, 2024

Describe the bug

When checking the Auto Install/Update DXVK on Prefix in the game settings options Heroic tries to install DXVK to the Wine prefix, but is not checking if the prefix is 32-bit or 64-bit before doing so.
As a result, when using this option with a 32-bit Wine prefix, DXVK 64-bit libraries are copied to the system32 directory inside the prefix and an error is logged while trying to copy the 32-bit libraries to syswow64, because obviously this directory doesn't exist on 32-bit prefixes:

(19:52:37) ERROR:   [DXVKInstaller]:    Error when copying d3d9.dll Error: ENOENT: no such file or directory, copyfile '/home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/tools/dxvk/dxvk-2.3.1/x32/d3d9.dll' -> '/home/deck/Games/Heroic/Prefixes/default/Call of Duty 2/drive_c/windows/syswow64/d3d9.dll'
(19:52:37) ERROR:   [DXVKInstaller]:    Error when copying dxgi.dll Error: ENOENT: no such file or directory, copyfile '/home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/tools/dxvk/dxvk-2.3.1/x32/dxgi.dll' -> '/home/deck/Games/Heroic/Prefixes/default/Call of Duty 2/drive_c/windows/syswow64/dxgi.dll'
(19:52:37) ERROR:   [DXVKInstaller]:    Error when copying d3d10core.dll Error: ENOENT: no such file or directory, copyfile '/home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/tools/dxvk/dxvk-2.3.1/x32/d3d10core.dll' -> '/home/deck/Games/Heroic/Prefixes/default/Call of Duty 2/drive_c/windows/syswow64/d3d10core.dll'
(19:52:37) ERROR:   [DXVKInstaller]:    Error when copying d3d11.dll Error: ENOENT: no such file or directory, copyfile '/home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/tools/dxvk/dxvk-2.3.1/x32/d3d11.dll' -> '/home/deck/Games/Heroic/Prefixes/default/Call of Duty 2/drive_c/windows/syswow64/d3d11.dll'

Additionally since the wrong architecture libraries are copied to the system32 directory the game will not be able to start, showing an error while trying to load d3d*.dll.

Add logs

(19:41:37) INFO:    [Legendary]:        Legendary location: /app/bin/heroic/resources/app.asar.unpacked/build/bin/linux/legendary
(19:41:37) INFO:    [Gog]:              GOGDL location: /app/bin/heroic/resources/app.asar.unpacked/build/bin/linux/gogdl
(19:41:37) INFO:    [Connection]:       Connectivity: check-online
(19:41:37) INFO:    [Connection]:       Pinging external endpoints
(19:41:37) INFO:    [Gog]:              Checking for existing gog manifests
(19:41:37) INFO:    [Backend]:          DRM module staus {
  "oimompecagnajdejgnnjijobebaeigek": {
    "status": "new",
    "title": "Widevine Content Decryption Module",
    "version": "4.10.2710.0"
  }
}
(19:41:37) WARNING: [Backend]:          Failed to register protocol with OS.
(19:41:37) INFO:    [Legendary]:        Running command: LEGENDARY_CONFIG_PATH=/home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/legendaryConfig/legendary /app/bin/heroic/resources/app.asar.unpacked/build/bin/linux/legendary --version
(19:41:37) INFO:    [Gog]:              Running command: GOGDL_CONFIG_PATH=/home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/gogdlConfig /app/bin/heroic/resources/app.asar.unpacked/build/bin/linux/gogdl --auth-config-path /home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/gog_store/auth.json --version
(19:41:37) INFO:    [Nile]:             Running command: NILE_CONFIG_PATH=/home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/nile_config /app/bin/heroic/resources/app.asar.unpacked/build/bin/linux/nile --version
(19:41:37) INFO:    [Connection]:       Connectivity: online
(19:41:37) INFO:    [Gog]:              Running command: GOGDL_CONFIG_PATH=/home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/gogdlConfig /app/bin/heroic/resources/app.asar.unpacked/build/bin/linux/gogdl --auth-config-path /home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/gog_store/auth.json auth
(19:41:37) INFO:    [Backend]:          User Not Found, removing it from Store
(19:41:37) ERROR:   [Gog]:              Unable to syncQueued playtime, userData not present
(19:41:37) INFO:    [Backend]:          AreWeAntiCheatYet data downloaded
(19:41:37) INFO:    [Backend]:          
System Information:
CPU: 8x AMD Custom APU 0932
Memory: 15.53 GB (used: 5.65 GB)
GPUs:
  GPU 0:
    Name: Advanced Micro Devices, Inc. [AMD/ATI] Sephiroth [AMD Custom GPU 0405]
    IDs: D=1435 V=1002 SD=0123 SV=1002
    Driver: amdgpu
OS: SteamOS 3.5.17 holo (linux)

The current system is a Steam Deck (model: OLED) in desktop mode
We are running inside a Flatpak container

Software Versions:
  Heroic: 2.14.1 Flame Emperor Sabo
  Legendary: 0.20.34 Direct Intervention
  gogdl: 1.0.1
  Nile: 1.0.2 Jonathan Joestar

(19:41:37) INFO:    [Backend]:          Frontend Ready
(19:41:37) INFO:    [Backend]:          Checking for current version changelog
(19:41:39) INFO:    [Winetricks]:       Downloading Winetricks
(19:41:41) INFO:    [ExtraGameInfo]:    Using cached ExtraGameInfo data for Need for Speed - Underground
(19:41:41) INFO:    [ExtraGameInfo]:    Using cached ExtraGameInfo data for Need for Speed - Underground
(19:41:41) WARNING: [Backend]:          getExtraInfo not implemented on Sideload Game Manager. called for appName = wxAMvKUo2ME3V811tZsW6j
(19:41:42) INFO:    [WineDownloader]:   Updating wine versions info
(19:41:42) INFO:    [WineDownloader]:   Fetching upstream information...
(19:41:42) INFO:    [Backend]:          Starting the Download Queue
(19:41:43) INFO:    [WineDownloader]:   wine versions updated
(19:45:56) INFO:    [Legendary]:        Running command: LEGENDARY_CONFIG_PATH=/home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/legendaryConfig/legendary /app/bin/heroic/resources/app.asar.unpacked/build/bin/linux/legendary --version
(19:45:56) INFO:    [Gog]:              Running command: GOGDL_CONFIG_PATH=/home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/gogdlConfig /app/bin/heroic/resources/app.asar.unpacked/build/bin/linux/gogdl --auth-config-path /home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/gog_store/auth.json --version
(19:45:56) INFO:    [Nile]:             Running command: NILE_CONFIG_PATH=/home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/nile_config /app/bin/heroic/resources/app.asar.unpacked/build/bin/linux/nile --version
(19:52:29) INFO:    [ExtraGameInfo]:    Using cached ExtraGameInfo data for Call of Duty 2
(19:52:29) INFO:    [ExtraGameInfo]:    Using cached ExtraGameInfo data for Call of Duty 2
(19:52:29) WARNING: [Backend]:          getExtraInfo not implemented on Sideload Game Manager. called for appName = a451x32iDGTtxjFBSgw93k
(19:52:37) INFO:    [DXVKInstaller]:    installing dxvk on... /home/deck/Games/Heroic/Prefixes/default/Call of Duty 2
(19:52:37) INFO:    [Backend]:          Checking if wine version exists: Wine - Wine-GE-Proton8-26
(19:52:37) INFO:    [Backend]:          Checking if wine version exists: Wine - Wine-GE-Proton8-26
(19:52:37) INFO:    [Backend]:          Checking if wine version exists: Wine - Wine-GE-Proton8-26
(19:52:37) INFO:    [Backend]:          Checking if wine version exists: Wine - Wine-GE-Proton8-26
(19:52:37) INFO:    [Backend]:          Checking if wine version exists: Wine - Wine-GE-Proton8-26
(19:52:37) INFO:    [Backend]:          Checking if wine version exists: Wine - Wine-GE-Proton8-26
(19:52:37) INFO:    [Backend]:          Checking if wine version exists: Wine - Wine-GE-Proton8-26
(19:52:37) INFO:    [Backend]:          Checking if wine version exists: Wine - Wine-GE-Proton8-26
(19:52:37) DEBUG:   [Backend]:          Running Wine command: reg add HKEY_CURRENT_USER\Software\Wine\DllOverrides /v d3d10core /d native,builtin /f
(19:52:37) DEBUG:   [Backend]:          Running Wine command: reg add HKEY_CURRENT_USER\Software\Wine\DllOverrides /v d3d11 /d native,builtin /f
(19:52:37) DEBUG:   [Backend]:          Running Wine command: reg add HKEY_CURRENT_USER\Software\Wine\DllOverrides /v d3d9 /d native,builtin /f
(19:52:37) DEBUG:   [Backend]:          Running Wine command: reg add HKEY_CURRENT_USER\Software\Wine\DllOverrides /v dxgi /d native,builtin /f
(19:52:37) DEBUG:   [Backend]:          Running Wine command: reg add HKEY_CURRENT_USER\Software\Wine\DllOverrides /v d3d10core /d native,builtin /f
(19:52:37) DEBUG:   [Backend]:          Running Wine command: reg add HKEY_CURRENT_USER\Software\Wine\DllOverrides /v d3d11 /d native,builtin /f
(19:52:37) DEBUG:   [Backend]:          Running Wine command: reg add HKEY_CURRENT_USER\Software\Wine\DllOverrides /v d3d9 /d native,builtin /f
(19:52:37) DEBUG:   [Backend]:          Running Wine command: reg add HKEY_CURRENT_USER\Software\Wine\DllOverrides /v dxgi /d native,builtin /f
(19:52:37) ERROR:   [DXVKInstaller]:    Error when copying d3d9.dll Error: ENOENT: no such file or directory, copyfile '/home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/tools/dxvk/dxvk-2.3.1/x32/d3d9.dll' -> '/home/deck/Games/Heroic/Prefixes/default/Call of Duty 2/drive_c/windows/syswow64/d3d9.dll'
(19:52:37) ERROR:   [DXVKInstaller]:    Error when copying dxgi.dll Error: ENOENT: no such file or directory, copyfile '/home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/tools/dxvk/dxvk-2.3.1/x32/dxgi.dll' -> '/home/deck/Games/Heroic/Prefixes/default/Call of Duty 2/drive_c/windows/syswow64/dxgi.dll'
(19:52:37) ERROR:   [DXVKInstaller]:    Error when copying d3d10core.dll Error: ENOENT: no such file or directory, copyfile '/home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/tools/dxvk/dxvk-2.3.1/x32/d3d10core.dll' -> '/home/deck/Games/Heroic/Prefixes/default/Call of Duty 2/drive_c/windows/syswow64/d3d10core.dll'
(19:52:37) ERROR:   [DXVKInstaller]:    Error when copying d3d11.dll Error: ENOENT: no such file or directory, copyfile '/home/deck/.var/app/com.heroicgameslauncher.hgl/config/heroic/tools/dxvk/dxvk-2.3.1/x32/d3d11.dll' -> '/home/deck/Games/Heroic/Prefixes/default/Call of Duty 2/drive_c/windows/syswow64/d3d11.dll'
(19:52:37) INFO:    [Backend]:          a451x32iDGTtxjFBSgw93k: Setting autoInstallDxvk to true


### Steps to reproduce

1. Go to 'Library -> Click on Settings of a game in a 32-bit Wine prefix'
2. Click on 'Auto Install/Update DXVK on Prefix'
3. See errors logged in Heroic's log and confirm that the wrong architecture DXVK libraries where copied to the system32 directory (e.g.: hash the DLLs and compare the results)

### Expected behavior

Heroic checks if the Wine prefix is 32-bit or 64-bit and install DXVK libraries accordingly:
- 32-bit prefixes: DXVK x32 libraries into system32 directory
- 64-bit prefixes: DXVK x64 libraries into system32 and x32 libraries into syswow64

### Screenshots

_No response_

### Heroic Version

Latest Stable

### System Information

CPU: 8x AMD Custom APU 0932
Memory: 15.53 GB (used: 5.86 GB)
GPUs:
  GPU 0:
    Name: Advanced Micro Devices, Inc. [AMD/ATI] Sephiroth [AMD Custom GPU 0405]
    IDs: D=1435 V=1002 SD=0123 SV=1002
    Driver: amdgpu
OS: SteamOS 3.5.17 holo (linux)

The current system is a Steam Deck (model: OLED) in desktop mode
We are running inside a Flatpak container

Software Versions:
  Heroic: 2.14.1 Flame Emperor Sabo
  Legendary: 0.20.34 Direct Intervention
  gogdl: 1.0.1
  Nile: 1.0.2 Jonathan Joestar

### Additional information

_No response_
@casasfernando casasfernando added the bug:unconfirmed Someone works on identifying the issue label Apr 19, 2024
@imLinguin
Copy link
Member

Is there a reason you are using a 32bit prefix in the first place? 64 bit one should work just fine

@casasfernando
Copy link
Contributor Author

casasfernando commented Apr 19, 2024

Yes. I'm using Heroic to run old 32-bit Windows games (Windows 98 - Windows XP era installed from original media -not GOG-) mainly and had problems in the past with Windows XP 64-bit prefixes, albeit setting the prefix to Windows 98 is not possible on a 64-bit prefix.

@casasfernando
Copy link
Contributor Author

Just submitted a PR to fix this. Hope it will be approved and merged soon.

Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug:unconfirmed Someone works on identifying the issue
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants