Branch: master

4ec011cd 2018-06-24 12:19:21 Timothy Pearson
Fix kdesktop_lock screensaver stuttering on modern GPUs
M kdesktop/lock/lockprocess.cc

kdesktop/lock/lockprocess.cc

diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
index 5dbc4d1..7d853b0 100644
--- a/kdesktop/lock/lockprocess.cc
+++ b/kdesktop/lock/lockprocess.cc
@@ -872,7 +872,11 @@
 				info = glXGetVisualFromFBConfig(x11Display(), fbc[j]);
 				if( info ) {
 					if (argb_visual) {
-						if (info->depth < 32) {
+						// Xorg can only use GPU compositing for ARGB32 8:8:8:8 visuals
+						// Ensure the selected visual is 8 bits per RGB
+						// Selecting a non-8-bit visual will result in stuttering and high
+						// CPU load, while Xorg tries to composite each frame on the CPU!
+						if ((info->depth < 32) || (info->bits_per_rgb != 8)) {
 							XFree( info );
 							info = NULL;
 							continue;