Registered Member
|
There is currently a window rule available that blocks compositing when a specific window is started. While that's nice, but due to an issue with NVIDIA drivers uncomposited desktop causes a lot of tearing. So my question is, is there a way to have something similar, except instead of disabling compositing as a whole, simply disable/suspend all the KWin effects and re-enable them afterwards?
That's probably something relevant to Wayland as well, since it requires compositing, but the effects could be turned off to get a boost in performance. Oh, and I'm using KWin 5 with Plasma 5, if that makes a difference. |
|
No. Maybe. Depends....
What kind of effect do you think of in particular? - Eg. presentwindows or desktopgrid are triggered on demand. If you want to deactivate active screen edges, that's sth. different than disabling effects. - Fade in etc. could skip certain windows - and do so on "request" by those. - Showing the window geometry acutally also happens w/o "effects" by may be a candidate for a white list (konsole) - Or is this about blurring? Ie. if you keep compositing enabled and just omit all effects, major overhead (on X11) remains, so -> what do you seek to gain by this? FYI: X11 cannot really sync to the display (yes, I know the recent intel & ati hacks in that regard) so whenever you observe uncomposited tearing, you observe the plain X11 behavior. If this happens on a) OpenGL clients (cames) b) X Overlay clients (videos) this is either a bug a) in the driver b) the particular client (not using Xv or VDPAU, resp. not enabling GL swapInterval) c) your config. Run "nvidia-settings"; one used to be able to de/activate syncing for videos, for OGL "flipping" should be enabled (but that would hit kwin as well) and you can also enforce syncing against the GL client - but that can make some of them crash! Try to enable triple buffering, in case) |
Registered Member
|
To minimise the performance overhead without disabling compositing itself. Not in a traditional manner when there is one fullscreen game on one monitor, but rather when both there are more than one monitor and the game is in windowed mode. It's true that a lot of effects are "on request", the problem is that those requests happen quite often, at least given what I'm doing. I'm recording the games, so I have to switch between all sorts of windows during play. And that causes all those animations, glows around screen edges, desaturation, blur effects etc. to trigger. When compositing is off, my recordings end up with a smooth framerate (but I get to see tearing), while when compositing is on, lots of frames get dropped. If there isn't an easy way to toggle the effects, then I'll probably try and test manually disabling all the effects to see if it helps. It could be that KWin's VSync strategy is what is causing the frame drops in the first place.
It's a driver bug. Nouveau has no such problems at all (however, it has the problem of randomly locking the GPU altogether, which is worse). And yes, disabling flipping makes it tear even despite KWin VSync strategies. NVIDIA is aware of this bug but their answer was something akin to "tearing prevention on modern hardware is hard, if anything at all goes wrong you get tearing, we can't do anything about it right now". |
|
Switching windows is slow on oxygen and aurorae (most themes you download from the internet) decorations due to decoration side animations.
The overlay display of uncomposited GL contexts should be unaffected by this, but under compositing, it will stall the entire screen. -> I'd try whether just disabling effects will help you at all If OpenGL does not tear with kwin compositing, but does tear with random games (any particular to look into?) this can actually only be due to the game not syncing to screen. Unlike the nouveau driver you've to explicitly enable V'Sync for _all_ applications in nvidia settings and also enable triple buffering (which is afair default for MESA) in some Xorg.conf snippet
Instead of globally enabling VSync you may want to make use of
and pot.
where "DVI-I-1" should be the id of the device you want to run the game on (compare "xrandr -q") Those environment variables will affect the game only for:
or the entire shell and all subprocesses
|
Registered Member
|
Just tried it, but I don't have the time to look over the recording just yet. I'll report back once I do.
Yeap, that's exactly what happens. A testcase I used is UFO: Alien Invasion, in battlescape map edges are black and diagonal, so moving the camera along them makes tearing very easy to see. Whether or not it's a screen syncing problem I don't know.
Yes, I had triple buffering enabled in xorg.conf, but it didn't help. Didn't try ExactModeTimingsDVI, but then the monitor is connected through HDMI, not DVI. I also tried __GL_SYNC_TO_VBLANK, which IIRC made it better, but didn't completely solve the issue. Didn't know about __GL_SYNC_DISPLAY_DEVICE, though. I'll try those out. |
Registered users: bartoloni, Bing [Bot], Evergrowing, Google [Bot], q.ignora, watchstar