Witko / nvidia-xrun

Utility to run separate X with discrete nvidia graphics with full performance
GNU General Public License v2.0
488 stars 69 forks source link

Issues running Steam on Gentoo #84

Closed JeffLabonte closed 6 years ago

JeffLabonte commented 6 years ago

Description

I am unable to run steam while using nvidia-xrun with openbox on Gentoo. However glxinfo returns the right GPU, I can run glxgears ,and I am able to play some games, i.e albion-online.

I am able to run steam when I use primusrun and also run games without any issues besides performance

Issue encountered

Once I execute the steam command, I am having a unable to load swrast.so drivers and then a pop up menu that says glXChooseVisual failed.

Additional infos

cat /etc/X11/nvidia-xorg.conf find /usr/ -name "*nvidia" find /usr/ -name "*xorg"

JeffLabonte commented 6 years ago

I found the solution, I need to add sudo eselect set 1 when I start nvidia-xrun and then sudo eselect set 2 once I am done!

waltercool commented 5 years ago

@JeffLabonte I personally fixed this issue doing this step:

At start, create a file called /etc/ld.conf.d/99-nvidia.conf with: /usr/lib/opengl/nvidia/lib /usr/lib64/opengl/nvidia/lib

Then run env-update, and should work fine.

When everything is done, just remove that file.

To make a quick context, with this we are overriding Nvidia's libGL.so at ld.so, used by Steam.

Moanrisy commented 5 years ago

@waltercool I have this problem too in Arch linux, I realize there is no eselect in arch (only gentoo)

So I want to ask about your solution walter, I don't have ld.conf.d directory, should I create it? how to do env-update?

but I can open steam fine if I open it without nvidia-xrun (with intel)

waltercool commented 5 years ago

@asamsulfat It seems for Arch should be just adding the file into /etc/ld.so.conf.d/, then remove ld.so.cache and run ldconfig to regenerate it.

At least I done those steps into my raspberry pi (which uses Arch), but those steps may mean nothing:

Can you try some of those steps? Also observe if /etc/ld.so.conf has this line at start include ld.so.conf.d/*.conf

Steps to check if those works, could it be:

In case you obtain diff of ld.so.cache with ld.so.cache.backup, I would Google a bit, and rollback. Because my main machine uses Gentoo, any advice from myself may break your system.

PD: eselect is Gentoo's architectural tool, just like env-update.

LumKitty commented 5 years ago

Having the same issue, only the eselect opengl solution is working for me.

I'm a little uncomfortable with it though. I'm running nvidia-xrun on a separate VT, and can switch between nvidia and intel/kde sessions with ctrl+alt+f1/f7, so if I were to run something else while my gaming session is going on in the background, isn't there a risk of it trying to run on nVidia and failing?

Is there a more elegant way to make Steam use the correct libraries? Currently using this script, but this is a horrible method!

#!/bin/sh
if [ "$DISPLAY" != "" ]; then
        echo Launching TWM + Steam
        LANG=C twm &
        steam
else
        sudo eselect opengl set 1
        (sleep 5 ; sudo eselect opengl set 2) &
        nvidia-xrun $0
        echo $0
fi
Witko commented 5 years ago

This is quite weird, in the script(nvidia-xinitrc) there is a hack for library path:

export LD_LIBRARY_PATH=/usr/lib64/nvidia/:/usr/lib32/nvidia:/usr/lib:${LD_LIBRARY_PATH}

If your paths differ then maybe you should change it. There is a support for custom xinitrc configs in

/etc/X11/xinit/nvidia-xinitrc.d/

directory or you could use the

userxinitrc=$HOME/.nvidia-xinitrc

Hope it helps!

waltercool commented 5 years ago

The main problem about this, is Steam trying to load from ld.conf.so. Currently eselect opengl set nvidia makes a line code inside /etc/ld.conf.so.d/ , so it could make your intel session to be unstable I guess.

Also, as soon Nvidia gets loaded, it gets messy to remove from PRIME_SYNCHRONIZATION of Mesa.

Did you guys solved that problem? For me, as long I load Nvidia module, it gets very hard to remove after that.