Skip to content

Commit

Permalink
options: enable use-damage by default
Browse files Browse the repository at this point in the history
Since user reports indicate it has real performance benefits.

Also add a command line flag for turning use-damage off.

Fixes yshui#242

Signed-off-by: Yuxuan Shui <[email protected]>
  • Loading branch information
yshui committed Sep 28, 2019
1 parent a69ed89 commit 93f0d80
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 5 deletions.
4 changes: 2 additions & 2 deletions man/compton.1.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
1 change: 1 addition & 0 deletions src/config.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
12 changes: 9 additions & 3 deletions src/options.c
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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},
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 93f0d80

Please sign in to comment.