NVIDIA Optimus without bumbleebee

Hi

I have seen in the forum people are seeking a solution for NVIDIA Optimus without bumblebee. I like the X-Plane Flight Simulator and it runs horrible using optimus/primus so I needed to use NVIDIAs solution of using the nvidia card directly in the X session. It took me around 4 hours to get working, but finally got it. I created a package for Fedora (https://github.com/paltas/FedoraPrime) will try to create a similar package for OpenSUSE. See a screenshot here

https://drive.google.com/file/d/0B-XzV1WxKN20UWo3UGthdm0zaTA/view?usp=sharing

Hope atleast some is interested in such a package.

Bo

Nice performance. What is your GPU? (I might be blind, can’t see it :stuck_out_tongue: )

GT840M nothing fancy. :slight_smile:

I haven’t done benchmarks but this way is definitely the fastest.

Bo

lol! I am interested in that package.

Bumblebee is running quite well on my system with 42.1, but I am very interested in any way to squeeze the best out of the optimus configuration, also being a X-Plane fan.There were lots of rumors about optimus with prime, but this would be the first time it becomes real for SUSE. Great!

If you guys are up for testing here you can get the package

https://drive.google.com/file/d/0B-XzV1WxKN20Z3h2WFIxbWlEc3M/view?usp=sharing

Please follow the instructions given in the README file, and let me know if it works.

Bo

Very interested. But … it would be nice if you made an rpm package ( current download isn’t a package but a gzipped bunch of files ) in the openSUSE Build Service. That way you could build a package for all openSUSE releases in one go ( and for other distros :slight_smile: ). Here is where it’s all happening, you can login with the same credentials you use for the forums: http://build.opensuse.org, if you need help, there’s a separate subforums here, and the ones who know how to use the buildservice hang around on the factory mailing list. Search for “openSUSE Mailing lists”.

IMHO the openSUSE community should welcome efforts like this with open arms.

Sure, for the fedora package it is in COPR, so will make RPM package. Just if somebody was very curious i provided the tgz package.

How hard is it getting stuff into upstream for X11 config? It would be nice to have Xsetup.d similar to xinitrc.d, I don’t like my RPM package should overwrite/patch the one provided by OpenSUSE. And manual changes i don’t really like…

Do you have any recommendations on what to do?

Bo

Post on the factory mailinglist. State your plans, ask for guidance.
Of course you will meet issues, f.e. openSUSE doesn’t use xorg.conf anymore, but uses xorg.conf.d/…conf files. If your package creates an xorg.conf that one will be used, but my guess/bet is that you want your package to change as little as possible to the system’s ones. Actually, that’s one of the thing I don’t like about the nvidia-bumblebee packages ( at least in the past ), which replaced files that belonged to other packages, without removal of the packages.

I have an Optimus laptop by ASUS, can test any packages on TW and Leap before publishing, keep me posted if you like to have some feedback on testing versions.

Maybe a wise thing to do is to create a topic in https://forums.opensuse.org/forumdisplay.php/692-Open-Build-Service-(OBS)

Well I am going to add xorg.conf.d entry instead of xorg.conf, but it is only used when the nvidia card is enabled (and it worked fine). What is critical in order to create a “generic” rpm package is to get the Xsetup.d feature. Will try to post the request on factory mailinglist.

Bo

Initial commit to github:

https://github.com/paltas/SUSEPrime

Bo

Can you elaborate on this?
I see you unpack in /root, but I don’t see what it’s doing there? Is a step of copying the unpacked stuff to /etc/X11/xinit/xinitrc.d/prime-offload.sh missing?

prime-select.sh does this. It sets up libglx.so, links over prime-offload.sh, xorg.conf, and add nividia liberies to ld.so.conf. Swtiching back to intel will simply remove them.

I have a RPM package working, will push to the buildservice very soon.

Bo

Here is the OBS

https://build.opensuse.org/package/show/home:bosim:suse-prime/suse-prime

Bo

Clean (re. bumblebee) Leap 42.1, updated, Plasma5 desktop
Installed the nvidia blob through the ymp
Installed the package
Applied the changes to /etc/X11/xdm/Xsetup
What works:

  • Switching to the Intel, running a desktop on it.
  • Switching to the NVIDIA, running a desktop on it
    What doesn’t work:
    On NVIDIA: cursor is on the right side off of the screen. Programs also start off-screen on the right.

Good news! Here it works without such behavior

Are you able to do a screenshot?

This script is equivalent to prime-offload.sh FedoraPrime/xinitrc.nvidia at master · bosim/FedoraPrime · GitHub I suspect a bit we would
need the last lines (l. 38 to 41).

Bo

Well, I spoke to soon. Found out the user account wasn’t a clean one, got doubts about the Leap install, so reinstalled, creating a brand new user account.
Now sddm is off-screen too when using the nvidia. If I ignore the absence of the GUI, and blindly enter the password the desktop actually starts ( hail the bug in the updater, on logout/relogin it throws an error with a sound ), but it all is off screen.

Output, when using the Intel:


> xrandr -q
Screen 0: minimum 8 x 8, current 1600 x 900, maximum 32767 x 32767
LVDS1 connected primary 1600x900+0+0 (normal left inverted right x axis y axis) 382mm x 214mm
   1600x900       60.3*+
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
DP1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
VGA1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

It seems, the 90-nvidia.conf needs an extra parameter to tell the nvidia which one to use.

Addendum: when performing a clean install, no bumblebee, no nvidia I needed to disable a second screen through Systemsettings - Display & Monitor, otherwise all programs would “go there”.

OK, I think I’ve got some output that matters: xrandr -q on the NVIDIA ( done “blind”, redirected to file )


Screen 0: minimum 8 x 8, current 2624 x 900, maximum 16384 x 16384
VGA-0 connected 1024x768+1600+0 (normal left inverted right x axis y axis) 0mm x 0mm panning 1024x900+1600+0 tracking 2624x900+0+0 border 0/0/0/0
   1024x768       60.0*+
   800x600        72.2     60.3     56.2  
   640x480        59.9  
   512x384        60.0  
   400x300        72.2  
   320x240        60.1  
LVDS1 connected primary 1600x900+0+0 (normal left inverted right x axis y axis) 382mm x 214mm
   1600x900       60.3*+
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
DP1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
VGA1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
  1024x768 (0x2c6)   65.0MHz
        h: width  1024 start 1048 end 1184 total 1344 skew    0 clock   48.4KHz
        v: height  768 start  771 end  777 total  806           clock   60.0Hz
  800x600 (0x2c8)   40.0MHz
        h: width   800 start  840 end  968 total 1056 skew    0 clock   37.9KHz
        v: height  600 start  601 end  605 total  628           clock   60.3Hz
  800x600 (0x2c9)   36.0MHz
        h: width   800 start  824 end  896 total 1024 skew    0 clock   35.2KHz
        v: height  600 start  601 end  603 total  625           clock   56.2Hz
  640x480 (0x2ca)   25.2MHz
        h: width   640 start  656 end  752 total  800 skew    0 clock   31.5KHz
        v: height  480 start  490 end  492 total  525           clock   59.9Hz

Will try to connect my machine to a monitor later today and see how the results are. Can you confirm
it works as expected without monitor connected?

Bo