This forum has been archived. All content is frozen. Please use KDE Discuss instead.

Tearing on KWin with proprietary nVidia driver

Tags: None
(comma "," separated)
nlewis
Registered Member
Posts
4
Karma
0
I've been struggling with tearing (vsync) on KWin.
I previously had trouble with Cinnamon, but resolved that using the ForceCompositionPipeline in xorg.conf. Nothing I do, however, seems to eliminate tearing in KDE/KWin though.

I've found and tried all the possible fixes I could find below (I do not have them all active at the moment)

xorg.conf
Device Section
Option "TripleBuffer" "On"
Option "CoolBits" "1"
Option "ExactModeTimingsDVI" "True"

Screen, Option "metamodes"
ForceCompositionPipeline and ForceFullCompositionPipeline

/etc/profile.d/Tearing.sh
export KWIN_TRIPLE_BUFFER=1
export __GL_YIELD="USLEEP"
export CLUTTER_PAINT=disable-clipped-redraws:disable-culling
export CLUTTER_VBLANK=True
export KWIN_EXPLICIT_SYNC=0

#https://wiki.archlinux.org/index.php/NVIDIA#Vertical_sync_using_TwinView
export __GL_SYNC_TO_VBLANK=1
export __GL_SYNC_DISPLAY_DEVICE=DFP-0
export __VDPAU_NVIDIA_SYNC_DISPLAY_DEVICE=DFP-0

And of course:
nVidia X Server Settings VSync
KDE's SystemSettings -> Desktop Effects -> Advanced Tab
--Compositing type
--Qt graphics system
--Tearing Prevention
Turning compositing on and off (alt-shift-F12)
Using only a single screen
Changing the orientation of my screens to both be landscape
Primary as DVI vs DisplayPort
Different nVidia driver (331 vs 346)

While these settings do have some effect on tearing (how bad it is, whether it is on the whole screen or just the top 1/4 or so) I haven't been able to eliminate it entirely. With the current settings I've got tearing on the top 1/4 of the landscape (DFP-0) screen.

KWin info: https://paste.kde.org/pxbcxwmss
XOrg log: https://paste.kde.org/pizoodejd
/etc/profile.d/Tearing.sh: https://paste.kde.org/pbyezrz0j
xorg.conf: https://paste.kde.org/pshb2m9kj
luebking
Karma
0
You should have
> Option "TripleBuffer" "On"
(which is not, according to the xorg.0.log)

and may convince KWin (so it won't try to detect this - there's unfortunately no reliable way)

> export KWIN_TRIPLE_BUFFER=1

W/o triple buffering, you need
> export __GL_YIELD=USLEEP

Focus on single screen for the beginning.
You'll always ever be able to sync to one screen (and have tearing on the other) - if your clients (an application and the compositor) sync to different screens, you'll get either stutter or tearing.

----------

This
> export KWIN_EXPLICIT_SYNC=0

is lately reported to cause bugs (if it was enabled "=1"), but is not related to tearing

> nVidia X Server Settings VSync
Please do not mess around with globally enforcing swap control - eg. KWin alters the behavior depending on what it "thinks" swap control is set to (by itself) - if you override that "secretly" you'll get bad time estimations, what may/will result in frame losses.

> Turning compositing on and off (alt-shift-F12)
Do you experience tearing in a particular client ("application") - X11 does not have any swap control, so w/o compositing you can experience tearing in everything that's not OpenGL (or xv/vdpau if you make use of the nvidia video texture feature)
nlewis
Registered Member
Posts
4
Karma
0
I turned on TripleBuffer in the xorg.conf and took out the export __GL_YIELD="USLEEP" from the profile.d/Tearing.sh, rebooted and there's no change (still tearing)

I see tearing inside applications (scrolling in Chrome for instance) but the easiest way to test it is just to drag a window left/right on the primary screen and watch for tearing on the edges.

I see tearing with Compositing enabled and disabled.
luebking
Karma
0
Even in the single-screen case?
Stupid question: is flipping allowed in nvidia-settings?
Or is this maybe an "optimus" system (intel + nvidia chip)?
nlewis
Registered Member
Posts
4
Karma
0
luebking wrote:Even in the single-screen case?
Stupid question: is flipping allowed in nvidia-settings?
Or is this maybe an "optimus" system (intel + nvidia chip)?


Yes, even on a single screen, I see tearing. Allow Flipping is enabled in nvidia-settings.

This is not an optimus system, it is a workstation with a discrete Quadro K600 graphics card.
josefr
Registered Member
Posts
4
Karma
0
I see a similar problem with a GTX 960 and Kwin 5.4.2 with the proprietary Nvidia driver: After a system start, vsync is always disabled. I see tearing and frame rates up to 90 fps. Kwin seems to ignore completely what is set up in System Settings > Compositor. But after changing any setting and then clicking 'Apply' tearing disappears completely and the frame rate is fixed to 60 fps. I have to repeat this after each boot.
luebking
Karma
0
luebking
Karma
0
nlewis wrote:it is a workstation with a discrete Quadro K600 graphics card.

You probably don't have a G'Sync compatible screen?

Try
Code: Select all
nvidia-settings -a GLGSYNCAllowed=false


no guarantee that this is respected, though (actually a KWin profile for this should be in place so at least kwin should not tear if this is the problem, while everything else could)
nlewis
Registered Member
Posts
4
Karma
0
luebking wrote:
nlewis wrote:it is a workstation with a discrete Quadro K600 graphics card.

You probably don't have a G'Sync compatible screen?

Try
Code: Select all
nvidia-settings -a GLGSYNCAllowed=false


no guarantee that this is respected, though (actually a KWin profile for this should be in place so at least kwin should not tear if this is the problem, while everything else could)


ERROR: Error parsing assignment 'GLGSYNCAllowed=false' (Unrecognized attribute name).
:(


Bookmarks



Who is online

Registered users: bartoloni, Bing [Bot], Evergrowing, Google [Bot], ourcraft