[Intel-gfx] Modesetting tearing without compositor

moosotc at gmail.com moosotc at gmail.com
Sat Jul 15 22:02:26 UTC 2017

moosotc at gmail.com writes:

> Hello,
> By default tearing is evident when running full-screen OpenGL
> applications such as [1] or playing one of the numerous tearing test
> videos from youtube in mpv (with mpv's xv, opengl or vaapi video output
> drivers, I guess glamor implements xv via OpenGL so no surprise there).
> By accident I've discovered that enabling frame buffer compression
> (i915's enable_fbc parameter) before X is started stops tearing.
> There are ways to get tearing again though, for instance: if full-screen
> OpenGL window is present, being constantly redrawn and window in an
> override redirect state[2] is mapped atop of it. Tear free operation can
> be restored in my setup by playing with xrandr ("xrandr -x; xrandr -x"
> for instance) or switching to a spare VT and then back to X.
> The full-screen+override-redirect way of "enabling tearing" works for
> normal and inverted orientations (xrandr -o [normal|inverted]) but not
> reflected or left|right rotated.

FWIW thea above method of "enabling tearing" does not work if
LIBGL_DRI3_DISABLE was set prior to running offending applications (mpv
or sdl2.c) IOW tearing is defeated.

Leaves big fat "wtf?" question open though.

Several questions are open in fact:

Why tearing avoidance via enable_fbc works and what other effects (other
than tainting kernel) does it have?

Why override-redirect windows cause tearing when DRI3 is used?

Why having the screen reflected, left right rotated defeats tearing even
with DRI3?

Why does "xrandr -y; xrandr -y" after tearing begins brings things back
to normal?


Any insights it would be most appreciated given that using module
parameters that taint kernel and setting environment variables that
"degrade" (at least in numerical value) supported feature set feel.
rather dirty and unscientific as it were.

mailto:moosotc at gmail.com

More information about the Intel-gfx mailing list