Bug 379111 - Vertical sync causes flickering on screen capturing
Summary: Vertical sync causes flickering on screen capturing
Status: RESOLVED UPSTREAM
Alias: None
Product: kwin
Classification: Plasma
Component: compositing (other bugs)
Version First Reported In: 5.9.4
Platform: Arch Linux Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-04-23 07:58 UTC by Michał Dybczak
Modified: 2017-06-23 04:23 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michał Dybczak 2017-04-23 07:58:12 UTC
Vertical synchronization causes screen capturing to flicker. I discovered it during tests with OBS and simplescreenrecorder.

Disabling vertical sync stops flickering completely but introduces small, sporadical screen tearing when moving windows so it's desirable to have this option on, however, it conflicts with screen capturing programs.

I already informed OBS developer about it to see if he can do something about it on his end, but the fact that this bug happens in more capturing programs shows a basic problem on kwin end.

I made a video showing how disabling and enabling vertical sync influences the flickering:

https://www.youtube.com/watch?v=XutOV1wffMQ
Comment 1 Martin Flöser 2017-04-23 11:04:36 UTC
Please provide output of
qdbus org.kde.KWin /KWin supportInformation
Comment 2 Michał Dybczak 2017-04-23 20:45:51 UTC
Version
=======
KWin version: 5.9.4
Qt Version: 5.8.0
Qt compile version: 5.8.0
XCB compile version: 1.12

Operation Mode: X11 only

Build Options
=============
KWIN_BUILD_DECORATIONS: yes
KWIN_BUILD_TABBOX: yes
KWIN_BUILD_ACTIVITIES: yes
HAVE_INPUT: yes
HAVE_DRM: yes
HAVE_GBM: yes
HAVE_X11_XCB: yes
HAVE_EPOXY_GLX: yes
HAVE_WAYLAND_EGL: yes

X11
===
Vendor: The X.Org Foundation
Vendor Release: 11903000
Protocol Version/Revision: 11/0
SHAPE: yes; Version: 0x11
RANDR: yes; Version: 0x14
DAMAGE: yes; Version: 0x11
Composite: yes; Version: 0x4
RENDER: yes; Version: 0xb
XFIXES: yes; Version: 0x50
SYNC: yes; Version: 0x31
GLX: yes; Version: 0x0

Decoration
==========
Plugin: org.kde.kwin.aurorae
Theme: __aurorae__svg__Freeze
Blur: 1
onAllDesktopsAvailable: true
alphaChannelSupported: true
closeOnDoubleClickOnMenu: false
decorationButtonsLeft: 0, 5, 3, 4, 2
decorationButtonsRight: 9, 1
borderSize: 3
gridUnit: 10
font: Noto Sans,11,-1,5,50,0,0,0,0,0,Regular
smallSpacing: 2
largeSpacing: 10

Options
=======
focusPolicy: 1
nextFocusPrefersMouse: false
clickRaise: true
autoRaise: false
autoRaiseInterval: 750
delayFocusInterval: 300
shadeHover: false
shadeHoverInterval: 250
separateScreenFocus: false
placement: 4
focusPolicyIsReasonable: true
borderSnapZone: 10
windowSnapZone: 10
centerSnapZone: 0
snapOnlyWhenOverlapping: false
rollOverDesktops: false
focusStealingPreventionLevel: 1
legacyFullscreenSupport: false
operationTitlebarDblClick: 5000
operationMaxButtonLeftClick: 5000
operationMaxButtonMiddleClick: 5015
operationMaxButtonRightClick: 5014
commandActiveTitlebar1: 0
commandActiveTitlebar2: 30
commandActiveTitlebar3: 2
commandInactiveTitlebar1: 4
commandInactiveTitlebar2: 30
commandInactiveTitlebar3: 2
commandWindow1: 7
commandWindow2: 8
commandWindow3: 8
commandWindowWheel: 31
commandAll1: 10
commandAll2: 3
commandAll3: 14
keyCmdAllModKey: 16777251
showGeometryTip: false
condensedTitle: false
electricBorderMaximize: true
electricBorderTiling: true
electricBorderCornerRatio: 0.25
borderlessMaximizedWindows: true
killPingTimeout: 5000
hideUtilityWindowsForInactive: true
inactiveTabsSkipTaskbar: false
autogroupSimilarWindows: false
autogroupInForeground: true
compositingMode: 1
useCompositing: true
compositingInitialized: true
hiddenPreviews: 1
glSmoothScale: 2
xrenderSmoothScale: false
maxFpsInterval: 16666666
refreshRate: 0
vBlankTime: 6000000
glStrictBinding: true
glStrictBindingFollowsDriver: true
glCoreProfile: true
glPreferBufferSwap: 101
glPlatformInterface: 1
windowsBlockCompositing: true

Screen Edges
============
desktopSwitching: false
desktopSwitchingMovingClients: false
cursorPushBackDistance: 1x1
timeThreshold: 20
reActivateThreshold: 350
actionTopLeft: 0
actionTop: 0
actionTopRight: 0
actionRight: 0
actionBottomRight: 0
actionBottom: 0
actionBottomLeft: 0
actionLeft: 0

Screens
=======
Multi-Head: no
Active screen follows mouse:  yes
Number of Screens: 1

Screen 0:
---------
Name: eDP1
Geometry: 0,0,1920x1080
Refresh Rate: 60.0204


Compositing
===========
Compositing is active
Compositing Type: OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2) 
OpenGL version string: 4.5 (Core Profile) Mesa 17.0.3
OpenGL platform interface: GLX
OpenGL shading language version string: 4.50
Driver: Intel
GPU class: Unknown
OpenGL version: 4.5
GLSL version: 4.50
Mesa version: 17.0.3
X server version: 1.19.3
Linux kernel version: 4.10.10
Direct rendering: Requires strict binding: yes
GLSL shaders:  yes
Texture NPOT support:  yes
Virtual Machine:  no
OpenGL 2 Shaders are used
Painting blocks for vertical retrace:  no

Loaded Effects:
---------------
zoom
slidingpopups
kwin4_effect_login
wobblywindows
screenshot
kwin4_effect_translucency
magiclamp
kwin4_effect_windowaperture
desktopgrid
cubeslide
coverswitch
colorpicker
kwin4_effect_fade
kwin4_effect_morphingpopups
kwin4_effect_maximize
presentwindows
highlightwindow
kwin4_effect_dialogparent
contrast
startupfeedback
screenedge
kscreen

Currently Active Effects:
-------------------------
contrast

Effect Settings:
----------------
zoom:
zoomFactor: 1.2
mousePointer: 0
mouseTracking: 0
enableFocusTracking: false
followFocus: true
focusDelay: 350
moveFactor: 20
targetZoom: 1

slidingpopups:
fadeInTime: 150
fadeOutTime: 250

kwin4_effect_login:

wobblywindows:
stiffness: 0.01
drag: 0.76
moveFactor: 0.25
xTesselation: 20
yTesselation: 20
minVelocity: 0
maxVelocity: 1000
stopVelocity: 0.5
minAcceleration: 0
maxAcceleration: 1000
stopAcceleration: 0.5
moveEffectEnabled: true
openEffectEnabled: false
closeEffectEnabled: false
moveWobble: true
resizeWobble: true

screenshot:

kwin4_effect_translucency:

magiclamp:
animationDuration: 250

kwin4_effect_windowaperture:

desktopgrid:
zoomDuration: 300
border: 10
desktopNameAlignment: 0
layoutMode: 0
customLayoutRows: 2
usePresentWindows: true

cubeslide:
rotationDuration: 500
dontSlidePanels: true
dontSlideStickyWindows: false
usePagerLayout: true
useWindowMoving: false

coverswitch:
animationDuration: 200
animateSwitch: true
animateStart: true
animateStop: true
reflection: true
windowTitle: true
zPosition: 900
primaryTabBox: true
secondaryTabBox: false

colorpicker:

kwin4_effect_fade:

kwin4_effect_morphingpopups:

kwin4_effect_maximize:

presentwindows:
layoutMode: 0
showCaptions: true
showIcons: true
doNotCloseWindows: false
ignoreMinimized: false
accuracy: 20
fillGaps: true
fadeDuration: 150
showPanel: false
leftButtonWindow: 1
rightButtonWindow: 2
middleButtonWindow: 0
leftButtonDesktop: 2
middleButtonDesktop: 0
rightButtonDesktop: 0

highlightwindow:

kwin4_effect_dialogparent:

contrast:

startupfeedback:
type: 1

screenedge:

kscreen:
Comment 3 Martin Flöser 2017-04-24 16:38:57 UTC
Try using OpenGL 2. Also ich you are not using xorg modesettings ddx give it a try.
Comment 4 Michał Dybczak 2017-04-24 19:36:29 UTC
OpenGL 2 didn't help, although it seems to cause a bit less flickering but that's hard to assess really, because flicker can get erratic.

About xorg modesettings ddx, I have no idea about it. I found that's some sort of alternative driver? I would rather not mess with gpu drivers. I use none-free bumblebee with intel and nvidia. Flickering happens on both GPUs, no difference here.

Can't you reproduce this bug? Is it happening only for me?

I might try to run a system in a live version, add OBS and see if the problem occurs under such circumstance.
Comment 5 Michał Dybczak 2017-04-24 21:24:08 UTC
Look at this video of another arch user (Antergos KDE):

https://www.youtube.com/watch?v=ZIpO2NcTkvw&index=55&list=WL

Can you notice panel flickering? That's EXACTLY the same bug. I'm not the only one. People just accepted and ignored it but it exists.
Comment 6 Michał Dybczak 2017-06-22 21:45:04 UTC
I was given some kind of solution to this problem, I checked it and it realy works:

create file /home/user/.config/plasma-workspace/env/kwin.sh with:

#!/bin/sh
export __GL_YIELD="USLEEP"
export KWIN_TRIPLE_BUFFER=0
export KWIN_USE_BUFFER_AGE=0

add to /etc/X11/xorg.conf.d/20-intel.conf:

Option "AccelMethod" "SNA"
Option "TearFree" "true"
Option "DRI" "3"
Option "TripleBuffer" "False"

Reboot.
Comment 7 Martin Flöser 2017-06-23 04:23:10 UTC
Given the update it looks like a problem with driver.