From 93f0d80572e47a1297dbf1af18a4ef498fa0bfe2 Mon Sep 17 00:00:00 2001 From: Yuxuan Shui Date: Sun, 29 Sep 2019 00:48:01 +0100 Subject: [PATCH] options: enable use-damage by default Since user reports indicate it has real performance benefits. Also add a command line flag for turning use-damage off. Fixes #242 Signed-off-by: Yuxuan Shui --- man/compton.1.asciidoc | 4 ++-- src/config.c | 1 + src/options.c | 12 +++++++++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/man/compton.1.asciidoc b/man/compton.1.asciidoc index dc77fbd..06dafcb 100644 --- a/man/compton.1.asciidoc +++ b/man/compton.1.asciidoc @@ -235,8 +235,8 @@ May also be one of the predefined kernels: `3x3box` (default), `5x5box`, `7x7box *--glx-no-rebind-pixmap*:: GLX backend: Avoid rebinding pixmap on window damage. Probably could improve performance on rapid window content changes, but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.). Recommended if it works. -*--use-damage*:: - Use the damage information to limit rendering to parts of the screen that has actually changed. Potentially improves the performance. +*--no-use-damage*:: + Disable the use of damage information. This cause the whole screen to be redrawn everytime, instead of the part of the screen has actually changed. Potentially degrades the performance, but might fix some artifacts. *--xrender-sync-fence*:: Use X Sync fence to sync clients' draw calls, to make sure all draw calls are finished before compton starts drawing. Needed on nvidia-drivers with GLX backend for some users. diff --git a/src/config.c b/src/config.c index 26de7f0..7906423 100644 --- a/src/config.c +++ b/src/config.c @@ -513,6 +513,7 @@ char *parse_config(options_t *opt, const char *config_file, bool *shadow_enable, .refresh_rate = 0, .sw_opti = false, + .use_damage = true, .shadow_red = 0.0, .shadow_green = 0.0, diff --git a/src/options.c b/src/options.c index 5d62345..8061fcd 100644 --- a/src/options.c +++ b/src/options.c @@ -283,9 +283,11 @@ static void usage(int ret) { " known to break things on some drivers (LLVMpipe, xf86-video-intel,\n" " etc.).\n" "\n" - "--use-damage\n" - " Use the damage information to limit rendering to parts of the screen\n" - " that has actually changed. Potentially improves the performance.\n" + "--no-use-damage\n" + " Disable the use of damage information. This cause the whole screen to\n" + " be redrawn everytime, instead of the part of the screen that has\n" + " actually changed. Potentially degrades the performance, but might fix\n" + " some artifacts.\n" "\n" "--xrender-sync-fence\n" " Additionally use X Sync fence to sync clients' draw calls. Needed\n" @@ -412,6 +414,7 @@ static const struct option longopts[] = { {"log-level", required_argument, NULL, 321}, {"log-file", required_argument, NULL, 322}, {"use-damage", no_argument, NULL, 323}, + {"no-use-damage", no_argument, NULL, 324}, {"experimental-backends", no_argument, NULL, 733}, {"monitor-repaint", no_argument, NULL, 800}, {"diagnostics", no_argument, NULL, 801}, @@ -782,6 +785,9 @@ void get_cfg(options_t *opt, int argc, char *const *argv, bool shadow_enable, } P_CASEBOOL(319, no_x_selection); P_CASEBOOL(323, use_damage); + case 324: + opt->use_damage = false; + break; P_CASEBOOL(733, experimental_backends); P_CASEBOOL(800, monitor_repaint); case 801: opt->print_diagnostics = true; break;