[Intel-gfx] Modesetting tearing without compositor

moosotc at gmail.com moosotc at gmail.com
Fri Jul 14 04:20:11 UTC 2017


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.

$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Grap
hics Controller (rev 09)

$ glxinfo -B
name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel Open Source Technology Center (0x8086)
    Device: Mesa DRI Intel(R) Haswell Mobile  (0xa26)
    Version: 17.1.4
    Accelerated: yes
    Video memory: 1536MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 4.5
    Max compat profile version: 3.0
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.1
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile
OpenGL core profile version string: 4.5 (Core Profile) Mesa 17.1.4
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 3.0 Mesa 17.1.4
OpenGL shading language version string: 1.30
OpenGL context flags: (none)

OpenGL ES profile version string: OpenGL ES 3.1 Mesa 17.1.4
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10

$ modinfo i915 | egrep -v '^(alias|parm)'
filename:       /lib/modules/4.11.9-1-ARCH/kernel/drivers/gpu/drm/i915/i915.ko.g
license:        GPL and additional rights
description:    Intel Graphics
author:         Intel Corporation
author:         Tungsten Graphics, Inc.
firmware:       i915/bxt_dmc_ver1_07.bin
firmware:       i915/skl_dmc_ver1_26.bin
firmware:       i915/kbl_dmc_ver1_01.bin
firmware:       i915/kbl_guc_ver9_14.bin
firmware:       i915/bxt_guc_ver8_7.bin
firmware:       i915/skl_guc_ver6_1.bin
firmware:       i915/kbl_huc_ver02_00_1810.bin
firmware:       i915/bxt_huc_ver01_07_1398.bin
firmware:       i915/skl_huc_ver01_07_1398.bin
depends:        drm_kms_helper,drm,intel-gtt,video,button,i2c-algo-bit
intree:         Y
vermagic:       4.11.9-1-ARCH SMP preempt mod_unload modversions

[1] https://boblycat.org/~malc/sdl2.c
[2] i3bar or some rofi[3] window for instance
    Probably worth noting that having rofi pop up while i3bar is
    mapped is not enough, i3bar has to be unmapped first
[3] https://github.com/DaveDavenport/rofi

mailto:moosotc at gmail.com

More information about the Intel-gfx mailing list