Code Monkey home page Code Monkey logo

nvidia-xrun's Introduction

nvidia-xrun

These utility scripts aim to make the life easier for nvidia cards users. It started with a revelation that bumblebee in current state offers very poor performance. This solution offers a bit more complicated procedure but offers a full GPU utilization(in terms of linux drivers)

Usage:

  1. switch to free tty
  2. login
  3. run nvidia-xrun [app]
  4. enjoy

Currently sudo is required as the script needs to wake up GPU, modprobe the nvidia driver and perform cleanup afterwards. For this we use bbswitch.

Structure

  • nvidia-xrun - uses following dir structure:
  • /usr/bin/nvidia-xrun - the executable script
  • /etc/X11/nvidia-xorg.conf - the main X confing file
  • /etc/X11/xinit/nvidia-xinitrc - xinitrc config file. Contains the setting of provider output source
  • /etc/X11/xinit/nvidia-xinitrc.d - custom xinitrc scripts directory
  • /etc/X11/nvidia-xorg.conf.d - custom X config directory
  • /usr/share/xsessions/nvidia-xrun-openbox.desktop - xsession file for openbox
  • /usr/share/xsessions/nvidia-xrun-plasma.desktop - xsession file for plasma
  • [OPTIONAL] ~/.nvidia-xinitrc - user-level custom xinit script file. You can put here your favourite window manager for example

Setting the right bus id

Usually the 1:0:0 bus is correct. If this is not your case(you can find out through lspci or bbswitch output mesages) you can create a conf script for example nano /etc/X11/nvidia-xorg.conf.d/30-nvidia.conf to set the proper bus id:

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "PCI:2:0:0"
EndSection

You can use this command to get the bus id:

lspci | grep -i nvidia | awk '{print $1}'

Also this way you can adjust some nvidia settings if you encounter issues:

Section "Screen"
    Identifier "nvidia"
    Device "nvidia"
    #  Option "AllowEmptyInitialConfiguration" "Yes"
    #  Option "UseDisplayDevice" "none"
EndSection

Automatically run window manager

For convenience you can create nano ~/.nvidia-xinitrc and put there your favourite window manager:

if [ $# -gt 0 ]; then
    $*
else
    openbox-session
#   startkde
fi

With this you do not need to specify the app and you can simply run:

nvidia-xrun

Aur package

The aur package can be found here: https://aur.archlinux.org/packages/nvidia-xrun/

COPR Repo for Fedora 27+

To Install from COPR

  • dnf copr enable axeld/nvidia-xrun
  • dnf install nvidia-xrun

OBS Repo for OpenSUSE, Fedora 27+ and RHEL7

The OBS Repo can be found here

Troubleshooting

Steam issues

Yes unfortunately running Steam directly with nvidia-xrun does not work well - I recommend to use some window manager like openbox.

HiDPI issue

When using openbox on a HiDPI (i.e. 4k) display, everything could be so small that is difficult to read. To fix, you can change the DPI settings in ~/.Xresources (~/.Xdefaults) file by adding/changing Xft.dpi setting. For example :

Xft.dpi: 192

nouveau driver conflict

nouveau driver should be automatically blacklisted by nvidia but in case it is not, nvidia might not get access to GPU. Then you need to manually blacklist nouveau following Arch wiki https://wiki.archlinux.org/index.php/kernel_modules#Blacklisting.

avoid nvidia driver to load on boot

nvidia driver may load itself on boot, then nvidia-xrun will fail to start Xorg session. To avoid that, you should blacklist it (see link above). Also sometimes, blacklisting is not enough and you should use some hack to really avoid it to load. For example, adding install nvidia /bin/false to /etc/modprobe.d/nvidia.conf will make every load to fail. In that case, you should add --ignore-install to modprobe calls in nvidia-xrun script.

Vulkan does not work

Check https://wiki.archlinux.org/index.php/Vulkan

  • remove package vulkan-intel
  • set VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json

nvidia-xrun's People

Contributors

witko avatar axelsilverdew avatar avilleret avatar pro-pra avatar andrebrait avatar srzstephen avatar

Watchers

James Cloos avatar Hazel Victoria Campbell avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.