A little help with nvidia-prime and xorg configuration

Getting to the point; On the version of Manjaro KDE that I’m running, when I choose to use hybrid graphics with NVIDIA-prime render offloading (named ‘video-hybrid-Intel-nvidia-prime’), MHWD doesn’t generate a file in xorg.conf.d with anything in it, meaning i don’t know how too properly write out my desired settings.

I’ve tried via trial and error to find a usable configuration but everything either results in a black screen or display pass-through which doesn’t really help me, at this point I suspect some kernel parameter somewhere needs to be flicked on or off but I have no way of knowing since all I’ve had to work with so far is a black screen and i have no idea how to format a xorg.conf for NVIDIA-Prime.

Though to be clear, NVIDIA-Prime itself functions just fine, I just can’t add, for example, Options “Coolbits” “8” to a .conf and have it stick.


To give some background, what I’m attempting to do is use NVIDIA-prime render offloading as a means of utilizing the card on the host when it’s not bound to vfio and used for GPU pass-through, essentially it’d mean I wouldn’t have to fiddle with cables every time i passed the GPU around, since i only have and want to have one monitor with one HDMI input.

I should probably also mention I have a dummy HDMI plug which I use for virtualization purposes when the card is passed to the guest, it wasn’t ever plugged in while I was trying xorg configs but I’m pretty sure it’s something I’d have to consider when I finally get a working .conf with settings i can change and have apply.

Thank you

I don’t think I fully got what you’re trying to do but I guess you want to conditionally add nvidia options on top of the system generated ones. That can be achieved by using the OuputClass directive, i.e. cretae a file
/etc/X11/xorg.conf.d/10-nvidia-myoptions.conf

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    (your options go here)
EndSection

then whenever the nvidia kernel driver is loaded, the options set get applied to the Xserver.

I saw this config on reddit yesterday while i was looking for a solution, by itself the .conf doesn’t do anything on my system, (NVIDIA X server settings has no new options) but when I specify a BusID, for example…

Section "OutputClass"
    Identifier  "nvidia"
    BusID       "PCI:01:00.0"
    MatchDriver "nvidia-drm"
    Driver      "nvidia"
    Option      "Coolbits" "8"
Endsection

The display from my iGPU is black (no image,not off).

Manjaro’s hardware detection, MHWD, dosen’t seem to generate a xorg config with anything in it, the nvidia.conf in /etc/X11/mhwd.d is simply blank minus a commented-out note;

##
## Generated by mhwd - Manjaro Hardware Detection
##

(A link to this nvidia.conf is placed in /etc/X11/xorg.conf.d, which is how Manjaro uses the config)

What I’m asking for is how to format a xorg.conf which uses the iGPU as the render-er, until otherwise specified by a prime-run %command%, since Manjaro doesn’t generate one by default with the hybrid drivers which works fine by itself but means I can’t overclock or apply fan curves as normal with coolbits in xorg.conf… since the file is empty and I haven’t found a working config.

I’m somewhat new to Linux so excuse me if I’m missing something obvious,

Thank you for responding

NB: overclocking is rarely ever supported by mobile gpus. The fan on mobile gpus is always controlled by the system bios (previously, the rare case of mxm add-ons existed).
Please run nvidia-bug-report.sh as root and attach the resulting nvidia-bug-report.log.gz file to your post.

Here is a pastebin link, I ran the report with the .conf I mentioned in my last post that resulted in a black screen,

Hopefully that has some valueable information in it,

I should probably explain in more detail what I have and what I’m trying to do;

  • I’m using standard desktop components for display outputs, A i5-9600k and a EVGA 1650 super
  • The reason I’m using Prime is because it allows me to more easily pass the card to VMs and back to the host with only 1 monitor without
    Changing HDMI ports, using multiple xorg.confs with Optimus-manager, or buying a monitor with two display inputs
  • Prime works by itself, works really well infact, I just can’t figure out how to have the card read a .conf correctly

My original post was probably a bit more obtuse than it had to be

The nvidia driver is loading correctly but you’re using the intel driver instead of the standard modesetting driver for the igpu. Don’t know if render offload works with that.
I also can’t spot the config file where you enabled the intel driver…
To have something running on the nvidia, prepend
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia
e.g.
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | grep vendor

I heard the Intel driver had better performance than the modesetting drivers, I don’t see why it wouldn’t work but thats something to try, though I recall using both in my troubleshooting spree

I can confirm that render offloading functions normally, it’s just settings under /etc/X11/ either don’t apply or result in a black screen

heres the output of that command;

server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation

Do you want me to try another .conf? I’m not sure where to start

You can put your options inside the outputclass section of
/usr/share/X11/xorg.conf.d/10-intel-nvidia-drm-outputclass.conf
Don’t use the BusID directive in OutputClass.

I remember hearing somewhere that modifying files from usr/share is a bad idea in general, but sure why not I’ll make a backup quick and see if it does something.

Seems to have not to have done much, no new settings under ‘NVIDIA X server settings’ or ‘gwe’, here is the settings in /usr/share

Section "ServerLayout"
    Identifier "layout"
    Option "AllowNVIDIAGPUScreens"
EndSection

Section "OutputClass"
    Identifier "intel"
    MatchDriver "i915"
    Driver "modesetting"
EndSection

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
    Option "Coolbits" "8"
    ModulePath "/usr/lib/nvidia/xorg"
    ModulePath "/usr/lib/xorg/modules"
EndSection

I set the driver back too modesetting by the way, didn’t seem to do anything…
Do you want me to run another bug-report?

just run
grep -i coolbits /var/log/Xorg.0.log
to check if the setting got accepted. If that’s the case, your gpu doesn’t support overclocking.

Here is the output;

[     3.721] (WW) NVIDIA(G0): Option "Coolbits" is not used

But I know that I can input cool bits normally with xorg.conf if the display is simply passed to the iGPU like i said i could do with optimus-manager or with a specific .conf i.e not using prime, I could do that right now actually since I have a bunch of .confs I was working with yesterday on my desktop, gimme a sec

Yeah see, now that I’ve used this config, without prime, and using the dGPU as the render-er, I get this value…

[     6.544] (**) NVIDIA(0): Option "Coolbits" "28"
[     7.021] (WW) intel(G0): Option "Coolbits" is not used

Heres, what my /etc/X11/xorg.conf looks like by the way,

Section "ServerLayout"
    Identifier "layout"
    Screen 0 "intel"
    Inactive "nvidia1"
EndSection

Section "Device"
    Identifier "nvidia1"
    Driver "nvidia"
    BusID "01:00:0"
    Option "RegistryDwords" "EnableBrightnessControl=1"
EndSection

Section "Screen"
    Identifier "nvidia1"
    Device "nvidia1"
    Option "AllowEmptyInitialConfiguration"
    Option "Coolbits" "28"
EndSection

Section "Device"
    Identifier "intel"
    Driver "intel"
    BusID "00:02.0"
    Option "DRI" "3"
EndSection

Section "Screen"
    Identifier "intel"
    Device "intel"
EndSection

There is probably allot of unnecessary settings in there but it does work just without prime, which is disapointing if prime simply can’t use overclocking settings

Ok, sorry, I forgot:
in a prime setup, the coolbits option doesn’t work at all, no dice.

Ah that would have been helpful too know, and was what I was asking, :)

But thanks anyway man, Its very difficult to find documentation on these things, or at the very least difficult for me to find documentation, guess I’ll have to use optimus for multiple xorg profiles, not as clean as I’d like but oh well

again thanks!