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

[Bug]: Proton not able to run apps with WineD3D, missing dependencies #3485

Open
SeongGino opened this issue Aug 29, 2024 · 21 comments
Open

Comments

@SeongGino
Copy link

Describe the bug

When running a prefix using Proton instead of Wine, if an app uses WineD3D (namely anything that uses DirectDraw/ddraw.dll), Proton will not be able to run it due to missing two libraries: libvkd3d-1.dll & libvkd3d-shader-1.dll. The issue is only resolved by falling back to a different version of Wine rather than Proton - alternatively, symlinking/copying the files to $PREFIX/drive_c/windows/[system32/syswow64] resolves the issue for Proton and the application will run.

For what it's worth, the libraries are included in {PROTON}/files/lib[64]/vkd3d

Tested with GE-Proton9-11 downloaded from inside Bottles, and Proton - Experimental symlinked from a working Steam install.

To Reproduce

  1. Create a new Prefix using a version of Proton.
  2. Start a game that uses wined3d.dll rather than DXVK/VKD3D.
  3. Observe the error attached.

Package

Flatpak from Flathub

Distribution

Arch Linux

Debugging Information

Official Package: true
Version: '51.13'
DE/WM: plasma
Display:
    X.org: true
    X.org (port): :1
    Wayland: true
Graphics:
    vendors:
        nvidia:
            vendor: nvidia
            envs:
                __NV_PRIME_RENDER_OFFLOAD: '1'
                __GLX_VENDOR_LIBRARY_NAME: nvidia
                __VK_LAYER_NV_optimus: NVIDIA_only
            icd: /usr/lib/x86_64-linux-gnu/GL/vulkan/icd.d/nvidia_icd.json
            nvngx_path: /usr/lib/x86_64-linux-gnu/GL/nvidia-560-35-03/extra/nvidia/wine
    prime:
        integrated: null
        discrete: null
Kernel:
    Type: Linux
    Version: 6.9.8-273-tkg-pds
Disk:
    Total: 8339234816
    Free: 8339066880
RAM:
    MemTotal: 15.5GiB
    MemAvailable: 9.2GiB
Bottles_envs: null

Troubleshooting Logs

21:59:46 (INFO) Launching with URI: None 
21:59:46 (INFO) [Activate] request received. 
21:59:46 (INFO) Bottles Started! 
21:59:47 (INFO) Performing Bottles checks… 
21:59:47 (INFO) Dxvks found:
         - dxvk-2.4
 
21:59:47 (INFO) Vkd3ds found:
         - vkd3d-proton-2.13
 
21:59:47 (INFO) Nvapis found:
         - dxvk-nvapi-v0.7.1
 
21:59:47 (INFO) Latencyflexs found:
         - latencyflex-v0.1.1
 
21:59:47 (INFO) Runners found:
         - soda-9.0-1
         - ge-proton9-11
         - sys-wine-9.0
 
21:59:47 (INFO) Bottles found:
         - Test
 
21:59:48 (INFO) Catalog installers loaded 
21:59:48 (INFO) Catalog dependencies loaded 
21:59:48 (INFO) Catalog components loaded 
21:59:49 (INFO) Setting Key sync=fsync for bottle Test… 
21:59:49 (INFO) There is no running wineserver. 
21:59:55 (INFO) Launching an executable… 
21:59:55 (INFO) Using EasyAntiCheat runtime 
21:59:55 (INFO) Using BattlEye runtime 
wine: using kernel write watches, use_kernel_writewatch 1.
fsync: up and running.
wine: using kernel write watches, use_kernel_writewatch 1.
wine: using kernel write watches, use_kernel_writewatch 1.
wine: using kernel write watches, use_kernel_writewatch 1.
wine: using kernel write watches, use_kernel_writewatch 1.
wine: using kernel write watches, use_kernel_writewatch 1.
wine: using kernel write watches, use_kernel_writewatch 1.
wine: using kernel write watches, use_kernel_writewatch 1.
wine: using kernel write watches, use_kernel_writewatch 1.
00dc:err:module:import_dll Library libvkd3d-1.dll (which is needed by L"C:\\windows\\system32\\wined3d.dll") not found
00dc:err:module:import_dll Library libvkd3d-shader-1.dll (which is needed by L"C:\\windows\\system32\\wined3d.dll") not found
00dc:err:module:import_dll Library wined3d.dll (which is needed by L"C:\\windows\\system32\\DDRAW.dll") not found
00dc:err:module:import_dll Library DDRAW.dll (which is needed by L"<redacted>") not found
00dc:err:module:loader_init Importing dlls for L"<redacted>" failed, status c0000135

Additional context

I've mostly noticed this with regards to apps using DirectDraw in some form, and it applies to a few different games, mainly older titles (like the 1998 PC port of Final Fantasy VII).

@keenanweaver
Copy link

This is still an issue on the latest Bottles. I don't believe I ever saw this issue before 51.13/51.12/51.11. However, I did downgrade to 51.10 for testing and still saw the problem. Attempted multiple versions of the Proton-GE runner (with and without the Steam runtime), and it still resolves the above error.

And to clarify, it doesn't need to start as a Proton bottle to experience the problem; swapping an existing Wine runner to a Proton runner will exhibit the problem. Some games I tested: NFS: Underground, The Sims: Complete Edition, LEGO Island.

I also tested a non-Flatpak version of Bottles (nix package), and the same problem was there.

My debugging info:

Official Package: true
Version: '51.14'
DE/WM: plasma
Display:
    X.org: true
    X.org (port): :0
    Wayland: true
Graphics:
    vendors:
        amd:
            vendor: amd
            envs:
                DRI_PRIME: '1'
            icd: /usr/lib/x86_64-linux-gnu/GL/vulkan/icd.d/radeon_icd.x86_64.json:/usr/lib/i386-linux-gnu/GL/vulkan/icd.d/radeon_icd.i686.json
    prime:
        integrated: null
        discrete: null
Kernel:
    Type: Linux
    Version: 6.11.2
Disk:
    Total: 16788467712
    Free: 16788295680
RAM:
    MemTotal: 31.3GiB
    MemAvailable: 23.4GiB
Bottles_envs: null

@james2432
Copy link

explains why ge-proton doesn't launch applications for me but sys-wine does(No vulkan available on laptop, explicitly vulkan disabled via UI options)

@Sturmlocke86
Copy link

This is still an issue on the latest Bottles. I don't believe I ever saw this issue before 51.13/51.12/51.11. However, I did downgrade to 51.10 for testing and still saw the problem. Attempted multiple versions of the Proton-GE runner (with and without the Steam runtime), and it still resolves the above error.

@keenanweaver I'm trying to test something with the ProtonGE runner right now and I can't see the checkbox in any bottle -> settings -> compatibility to enable the additional Steam runtime. Should it just be in there under compatibility or does anything else have to be done for the option to enable / disable the runtime show up? Cheers

@SeongGino
Copy link
Author

I can't see the checkbox in any bottle -> settings -> compatibility to enable the additional Steam runtime.

You mean you don't see this?
2024_11-04 234655-Bottles

@Sturmlocke86
Copy link

Sturmlocke86 commented Nov 5, 2024

I can't see the checkbox in any bottle -> settings -> compatibility to enable the additional Steam runtime.

You mean you don't see this?

Nope, neither the Bottles runtime nor the Steam runtime checkbox is there for me. I just installed bottles freshly on Ubuntu 24.10 and let it install ProtonGE but the two entries in your screenshot are not there. I can see the rest though.

@Sturmlocke86
Copy link

I can't see the checkbox in any bottle -> settings -> compatibility to enable the additional Steam runtime.

You mean you don't see this?

Nope, neither the Bottles runtime nor the Steam runtime checkbox is there for me. I just installed bottles freshly on Ubuntu 24.10 and let it install ProtonGE but the two entries in your screenshot are not there. I can see the rest though.

This is how it looks for me:
bottles, missing entries, sturm, temp

@SeongGino
Copy link
Author

This is the current git version, so no idea why yours would be different unless it was out of date. 🤷

@Sturmlocke86
Copy link

This is the current git version, so no idea why yours would be different unless it was out of date. 🤷

Hm, I'm on version 51.15, which should be the newest stable build on Flathub. I'll install it on my secondary pc with Suse and check if the same thing happens here too.

@Sturmlocke86
Copy link

Ok, tested on Suse and it's the same thing there, both options are missing in my bottles. Does anyone have the current stable version from Flathub installed by any chance? If it's a bug we can file a bug report then.

@keenanweaver
Copy link

At least for me, I needed to install the flatpak version of Steam and launch it once so it downloads the runtime (no need to log in). After that, Steam runtime becomes an option in Bottles. From my experience, a native Steam install won't provide the runtime to Bottles. The Bottles runtime is missing altogether for me.

@james2432
Copy link

51.15 flathub stable, archlinux:
image

Bottles                                         com.usebottles.bottles                              51.15                              stable                 user
Freedesktop Platform                            org.freedesktop.Platform                            freedesktop-sdk-23.08.25           23.08                  system
i386                                            org.freedesktop.Platform.Compat.i386                                                   23.08                  user
Mesa                                            org.freedesktop.Platform.GL.default                 24.2.5                             23.08                  system
Mesa (Extra)                                    org.freedesktop.Platform.GL.default                 24.2.5                             23.08-extra            system
Mesa                                            org.freedesktop.Platform.GL.default                 24.2.5                             24.08                  user
Mesa (Extra)                                    org.freedesktop.Platform.GL.default                 24.2.5                             24.08extra             user
Mesa                                            org.freedesktop.Platform.GL32.default               24.2.5                             23.08                  user
Mesa                                            org.freedesktop.Platform.GL32.default               24.2.5                             24.08                  user
FFmpeg extension with extra codecs              org.freedesktop.Platform.ffmpeg-full                                                   23.08                  user
FFmpeg extension with extra codecs              org.freedesktop.Platform.ffmpeg-full                                                   24.08                  user
i386                                            org.freedesktop.Platform.ffmpeg_full.i386                                              23.08                  user
i386                                            org.freedesktop.Platform.ffmpeg_full.i386                                              24.08                  user
openh264                                        org.freedesktop.Platform.openh264                   2.1.0                              2.2.0                  system
openh264                                        org.freedesktop.Platform.openh264                   2.4.1                              2.4.1                  user
GNOME Application Platform version 47           org.gnome.Platform                                                                     47                     user
i386                                            org.gnome.Platform.Compat.i386                                                         47                     user
Adwaita dark GTK theme                          org.gtk.Gtk3theme.Adwaita-dark                                                         3.22                   system
Adwaita dark GTK theme                          org.gtk.Gtk3theme.Adwaita-dark                                                         3.22                   user
Wine                                            org.winehq.Wine                                     9.0                                stable-23.08           user
DXVK                                            org.winehq.Wine.DLLs.dxvk                           2.4.1                              stable-23.08           user
Gecko                                           org.winehq.Wine.gecko                                                                  stable-23.08           user
gecko                                           org.winehq.Wine.gecko                                                                  stable-24.08           user
Mono                                            org.winehq.Wine.mono                                                                   stable-23.08           user
mono                                            org.winehq.Wine.mono                                                                   stable-24.08           user

@Sturmlocke86
Copy link

Sturmlocke86 commented Nov 5, 2024

I have Steam Flatpak installed in both cases (Ubuntu and openSUSE), and both have Steam runtime 3.0 sniper installed. So Bottles takes the runtime from a preinstalled Steam installation? I always thought it was bundled and included with the Bottles Flatpak (or that it would download it after enabling it via checkbox). If this is the case, might I need to give Bottles permission to access Steam Flatpak via Flatseal maybe? I ask because checking Bottles -> settings -> Steam Proton prefix it tells me that I can't enable that feature, because it couldn't find Steam due to lacking permissions etc.

Edit: Thanks for checking @james2432

@keenanweaver
Copy link

Yeah, I may be full of it 'cause I just wiped out the Steam flatpak and directory altogether, created a new bottle, and the runtime shows up. No idea why this differs from my previous attempts. It even shows up on runners like Soda, when it didn't before. Still no Bottles runtime, though.

I manage my permissions through NixOS, so no idea why it's different now.

@Sturmlocke86
Copy link

That's interesting. I checked the Bottles doc to see if it has any info on how to enable the runtimes or how it works exactly, but didn't find anything relevant. Maybe @mirkobrombin can help us out here?

@Sturmlocke86
Copy link

Has anyone been able to pin point why the runtime options are missing for some of us on Arch and Suse?

@SeongGino
Copy link
Author

Sounds like a separate issue from the one being discussed right now. If it's a problem, you should write a separate issue about it rather than hijacking this thread.

@CaptainCoward
Copy link

CaptainCoward commented Nov 7, 2024

Same here for me.. Wanted to test some Proton-GE since i have issues with EAC on the Game "Deceive Inc." Epic just gave away. Was searching for where to enable "steam runtime" found this thread, checked compability: Nothing. Just like #3485 (comment) Do you need to enable Steam Proton Prefixes for that to appear?

@mirkobrombin
Copy link
Member

Proton must always be used with the Steam runtime enabled. Bottles show that option only if steam is found in the common paths.

@Sturmlocke86
Copy link

Proton must always be used with the Steam runtime enabled. Bottles show that option only if steam is found in the common paths.

Thanks for taking the time, Mirko. So do we have to grant Bottles access to the Steam Flatpak path via Flatseal or is it done any other way? Or should Bottles auto-detect Steam just by having Steam Flatpak installed?

@mirkobrombin
Copy link
Member

Proton must always be used with the Steam runtime enabled. Bottles show that option only if steam is found in the common paths.

Thanks for taking the time, Mirko. So do we have to grant Bottles access to the Steam Flatpak path via Flatseal or is it done any other way? Or should Bottles auto-detect Steam just by having Steam Flatpak installed?

Correct. You have to give it access to the Steam path, according to its installation method.

@Sturmlocke86
Copy link

Proton must always be used with the Steam runtime enabled. Bottles show that option only if steam is found in the common paths.

Thanks for taking the time, Mirko. So do we have to grant Bottles access to the Steam Flatpak path via Flatseal or is it done any other way? Or should Bottles auto-detect Steam just by having Steam Flatpak installed?

Correct. You have to give it access to the Steam path, according to its installation method.

That worked like a charm, thank you! Steam runtime is available now (checkbox for the Bottles runtime is still missing though). PS: It would be nice if both could be bundled with the Bottles Flatpak for ease of use. Cheers

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants