chjj / compton

A compositor for X11.
Other
2.24k stars 501 forks source link

Tearing with multiple monitors, rotated screen #175

Open tsmithe opened 10 years ago

tsmithe commented 10 years ago

If I use compton with multiple monitors, I get tearing. If I rotate one of the screens, I get even more tearing!

My command line is: compton --opengl --glx-no-stencil --glx-no-rebind-pixmap --backend glx --config $HOME/.config/compton.conf

My config is:

opengl = true;

shadow = true; no-dnd-shadow = true; no-dock-shadow = true; clear-shadow = true; shadow-radius = 2; shadow-offset-x = -2; shadow-offset-y = -2; shadow-opacity = 0.7; shadow-red = 0.17; shadow-green = 0.0; shadow-blue = 0.12; shadow-exclude = [ "n:e:Notification", "name = 'Notification'", "class_g = 'Synapse'", "class_g = 'Cairo-clock'" ]; shadow-ignore-shaped = true;

inactive-opacity = 1.0; frame-opacity = 0.9; alpha-step = 0.06; inactive-dim = 0.0; inactive-dim-fixed = true;

fading = true; fade-delta = 3; fade-in-step = 0.03; fade-out-step = 0.03; no-fading-openclose = false;

mark-wmwin-focused = true; mark-ovredir-focused = true; use-ewmh-active-win = true; detect-rounded-corners = true; detect-client-opacity = true; refresh-rate = 60 vsync = "opengl-mswc"; focus-exclude = [ ]; detect-transient = true; detect-client-leader = true; invert-color-include = [ ];

glx-no-stencil = true; glx-no-rebind-pixmap = true;

wintypes: { tooltip = { fade = true; shadow = false; opacity = 0.75; focus = true; }; };

richardgv commented 10 years ago

Thanks for reporting to us, tsmithe. Unfortunately, multi-head setup is where VSync would often fail upon. Usually you get proper VSync on only one of the screens (unless you have two monitors of identical model, I heard), and the limitation is not what we could control. (It might be easier if you use two separate X screens, instead of combining them with Xinerama, TwinView, or XRandR.) You may look into our VSync guide and issue #7 for possible ways to deal with it -- like, playing with different --vsync methods and driver configuration, or even switching between open-source drivers and binary blobs. I've never owned multiple monitors, so I can't provide much extra suggestions for you.

And you may wish to provide more information when you ask a question next time. Presently, we know nothing about your graphic card, driver, version of compton, whether tearing occurs on one monitor or all monitors, when the tearing appears, how other --vsync methods work, etc., and that is not going to be beneficial if you do wish to get suggestions from us.

unclechu commented 9 years ago

I have multiple screens with open nvidia driver (nouveau), I have no tearing when I using displays without rotation (horizontal position). But when I rotate screens I have tearing, with vsync I have it on specific area on each screen.

James-E-A commented 8 years ago

I'm getting this (or a very similar) bug as well on a Radeon HD 7450 with the open-source drivers (Compton 0.1~beta2 on XFCE 4.12.0; Mint 17.3 XFCE)

All monitors rotated normal or inverted do NOT tear (regardless of the state of any other monitor); all monitors rotated left or right DO tear (regardless of the state of any other monitor).

Like @unclechu, it seems to tear at the same place (all tears are within 2cm of each other).

fice-t commented 8 years ago

I'm also getting this, only on a rotated monitor, on a Radeon HD 7950 (Gallium 0.4/Compton 0.1/XFCE 4.12/Fedora 23). It doesn't matter what vsync or backend settings I use -- they all seem to tear the same.

It's all vertical tearing, but what's perhaps odd is that the tearing constantly (and somewhat slowly) moves from the left to the right side of the monitor. Once it hits the right side, it starts again from the left side.

unclechu commented 8 years ago

Same issue (as https://github.com/chjj/compton/issues/175#issuecomment-122798985) with:

$ glxinfo | filter OpenGL
OpenGL vendor string: X.Org
OpenGL renderer string: Gallium 0.4 on AMD BONAIRE (DRM 2.43.0, LLVM 3.7.0)
OpenGL core profile version string: 4.1 (Core Profile) Mesa 11.1.0 (git-525f3c2)
OpenGL core profile shading language version string: 4.10
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 11.1.0 (git-525f3c2)
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 11.1.0 (git-525f3c2)
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:

Fedora 23 Workstation, MSI Radeon R7 360.

$ lspci | filter VGA
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Tobago PRO [Radeon R7 360 / R9 360 OEM] (rev 81)
cgogolin commented 8 years ago

I also see very noticeable tearing on rotated screens and no tearing on normal or inverted screens. I haven't found any combination of options makes tearing go away on rotated screens. Would be really great if this could be fixed. Somewhat ruins the experience on a convertible...

richardgv commented 8 years ago

For Radeon driver in xf86-video-ati, it seems they have finally fixed tearing on rotated screens in recent versions of the driver and xorg-server, according to a comment in its bug 32789, if you enable the TearFree option. Is it helpful for the problem?

Please let me know if you are using a recent version of a different driver and still experience the issue, and I will look into the direction if possible.

fice-t commented 8 years ago

@richardgv TearFree on xf86-video-ati now indeed solves the issue on my end, thanks! Glad to know that they finally made it work.

unclechu commented 7 years ago

@richardgv thanks a lot for the info! It works, but not just works, I have no tearing anymore even without vsync and even without composite manager at all! That's just perfect!

My xorg.conf Also my 3 displays arrangement with one of them rotated 90 degrees:

$ cat ~/.screenlayout/three-center-rotated.sh
#!/bin/sh
xrandr --output DisplayPort-0 --mode 1440x900 --pos 0x0 --rotate normal --output HDMI-2 --primary --mode 1920x1080 --pos 1440x700 --rotate left --output DVI-0 --mode 1680x1050 --pos 2520x980 --rotate normal
James-E-A commented 7 years ago

Just wanted to confirm (and expand on) what @fice-t said: TearFree now completely eliminates tearing in every context (web, games, movies, file browsers, terminal emulators, etc), even with multiple monitors of different rotations.

It looks like this happened in Nov 2016; anyone on xf86-video-ati ("Radeon") 7.8.0 or xf86-video-amdgpu 1.2.0 may no longer have need of compton's tear evasion features.

jonhoo commented 7 years ago

Unfortunately this issue is still present on Intel IGPs (at least with xf86-video-modesetting). Are there any other known workarounds?

wyatt8740 commented 7 years ago

@jonhoo Not that I'm aware of, other than switching to the intel driver and using its TearFree option. The modesetting driver gives me tearing as long as I have my secondary monitor rotated and the only fix is to switch to the intel driver. xorg.conf snippet:

Section "Device"
        Identifier "Intel"
#       Driver "modesetting"
        Driver "intel"
        Option "TearFree" "true"
EndSection

I don't see anything on the kernel mailing lists to make me think that this is planned for the "modesetting" driver, although admittedly I wasn't sure exactly where to look and may have missed things.

I'm not sure this was reported in the right place, but someone at least has asked about TearFree in the modesetting driver.

James-E-A commented 6 years ago

NB: The existence of the driver-level TearFree feature does not have to do with compton..right?

The whole point of Compton is to composite and coherify screens when people either cannot or do not wish to use the driver to do so

Might be worth putting in a few words on this in the README, and getting some dedicated testing for this bug with TearFree false since with TearFree true Compton is moot