You are not logged in.
Hello, I use Xorg with NVIDIA hybrid graphics. I've ran into this problem which does not stop to confuse me.
When running any game on steam through any version of proton (at least the ones I've checked) causes a screen tear diagonally across the entire screen.
Where it seems that one half is behind the other half.
The issue only occurs when playing games through proton. Native games execute without problem.
I've looked online, and I haven't been able to find anything regarding the problem, short from switching to Wayland. Which I prefer to avoid for the time being.
Most of the things I've tried, I have also reverted. Except the modifications to my Xorg.conf file, but those were pretty minor either-way.
Strangely enough, this only occurs when v-sync is enabled. Disabling v-sync solves the problem, even when capping the frame rate at the refresh rate of my monitor.
Then, what baffled me even more was when I plug in my external monitor via HDMI, the issue resolves on both screens. (I was testing whether the issue was also occurring on the second monitor)
Now, how much I'd love to carry a second monitor around to solve this problem. It's not really viable. ![]()
Thanks a lot in advance! :3
Last edited by thepigeongenerator (2024-12-15 16:59:37)
Offline
What's your general environment? Proton contains code to disable e.g. the compositor on KDE in which case you could see tearing from that, you can disallow applications suspending the compositor in system settings to check whether that is the problem.
Also generally vsync and proper syncing behaviour mandates nvidia-drm.modeset=1 to be enabled which should be the default. What's a xorg log/the contents of the xorg.conf FWIW? I could also see some Tearfree mechansims in some of the xf86-video drivers causing an issue here for example.
Offline
I am running the cinnamon desktop environment.
Below is the contents of my xorg.conf file. nvidia-drm.modeset is enabled, as reading the contents of /sys/module/nvidia_drm/parameters/modeset returns "Y".
The NVIDIA drivers I have installed is nvidia-open
Section "ServerLayout"
Identifier "layout"
Screen 0 "nvidia"
Inactive "intel"
EndSection
Section "Device"
Identifier "NVIDIA"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "nvidia"
Device "nvidia"
Option "AllowEmptyInitialConfiguration"
EndSection
Section "Device"
Identifier "Intel"
Driver "modesetting"
BusID "PCI:0:2:0"
Option "AccelMethod" "none"
EndSection
Section "Screen"
Identifier "intel"
Device "intel"
EndSectionI don't use the integrated graphics on my computer, as I find it too much of a hassle to manually configure it on a per-application basis.
This shouldn't cause this problem, I believe, as I've run things like this before and never encountered an issue like this.
Though, if it does end up causing the issue, I guess I'll have to create some desktop files.
Offline
Please post your Xorg log, https://wiki.archlinux.org/title/Xorg#General
Offline
Here you go:
https://0x0.st/XFyy.0.log
Offline
[ 6.831] (II) NVIDIA(0): "NULL"
…
[ 6.852] (II) modeset(G0): EDID for output eDP-1-1
[ 6.852] (II) modeset(G0): Manufacturer: CMN Model: 1552 Serial#: 0
[ 6.852] (II) modeset(G0): Year: 2021 Week: 48
[ 6.852] (II) modeset(G0): EDID Version: 1.4
[ 6.852] (II) modeset(G0): Digital Display Input
[ 6.852] (II) modeset(G0): 8 bits per channel
[ 6.852] (II) modeset(G0): Digital interface is DisplayPort
[ 6.852] (II) modeset(G0): Max Image Size [cm]: horiz.: 34 vert.: 19
[ 6.852] (II) modeset(G0): Gamma: 2.20
[ 6.852] (II) modeset(G0): No DPMS capabilities specified
[ 6.852] (II) modeset(G0): Supported color encodings: RGB 4:4:4
[ 6.852] (II) modeset(G0): First detailed timing is preferred mode
[ 6.852] (II) modeset(G0): Preferred mode is native pixel format and refresh rate
[ 6.852] (II) modeset(G0): Display is continuous-frequency
[ 6.852] (II) modeset(G0): redX: 0.590 redY: 0.350 greenX: 0.330 greenY: 0.555
[ 6.852] (II) modeset(G0): blueX: 0.153 blueY: 0.119 whiteX: 0.313 whiteY: 0.329
[ 6.852] (II) modeset(G0): Manufacturer's mask: 0
[ 6.852] (II) modeset(G0): Supported detailed timing:
[ 6.852] (II) modeset(G0): clock: 138.8 MHz Image Size: 344 x 193 mm
[ 6.852] (II) modeset(G0): h_active: 1920 h_sync: 1988 h_sync_end 2033 h_blank_end 2080 h_border: 0
[ 6.852] (II) modeset(G0): v_active: 1080 v_sync: 1083 v_sync_end 1088 v_blanking: 1112 v_border: 0
[ 6.852] (II) modeset(G0): Ranges: V min: 40 V max: 60 Hz, H min: 67 H max: 67 kHz, PixClock max 145 MHz
[ 6.852] (II) modeset(G0): CMN
[ 6.852] (II) modeset(G0): N156HCA-EAC
[ 6.852] (II) modeset(G0): EDID (in hex):
[ 6.852] (II) modeset(G0): 00ffffffffffff000dae521500000000You're running on the GPU but the (only) output is attached to the IGP, so in reverse prime.
Unless you can disable the IGP in the formware: Don't. Remove optimus-manager (i guess) and prime-run the game the normal way.
You'll *always* display via the IGP on this setup and rely on prime-sync to avoid tearing.
Offline
I tried moving xorg.conf to xorg.conf.bak and installed nvidia-prime.
Games ran through proton automatically use my dGPU, but native steam games still use the iGPU.
My whole reason of using this particular xorg configuration was to just run everything on the dGPU and not have to think about it any further. But it's clear this has now run into some trouble.
I still don't fancy overriding the desktop files of the applications that I need my dGPU for. (eg. blender) Is there any way that I could handle this automatically? Or at least for the most part?
Offline
prime-run only exports some environment variables, you can export those to the session or at least parts of it.
No chance to disable the IGP in the firmware (that's the ideal way to only run on the GPU)
Offline
What happens if you drop the explicit accelmode none definition from your config? That shouldn't be necessary and as mentioned, you cannot avoid the igpu being involved in any case.
Afaik there doesn't exist a tool that would automatically reconfig stuff for the PRIME usecase. At least in e.g. Blender I'm fairly certain you can just select the GPU to be used in it's UI so it shouldn't need an override. Otherwise you can locally override desktop files and it's a one time effort. but it shouldn't be too hard to script this.
Offline
It's a bit sad that it doesn't switch automatically yet.
But, I shall mark the issue as "SOLVED", as using prime-run seems to be the way forward.
I wrote a script which would generate the desktop file for me. (thx for the suggestion) But I think I can figure things out on my own from here, thanks a lot!
Offline