- Published on
Compton backend config optimization
- Authors

- Name
- Jo Guerreiro
What I always used for my configuration through copy-paste from various sources is presented next but the only changes I made to it was when it crashed. Now that I have amdgpu finally working with all of the associated bling, I decided to review the performance situation.
Final file available here
Resources used:
- Performance considerations by chjj found here
$man 1 compton
Original Config
backend = "glx";
glx-no-stencil = true;
glx-copy-from-front = false;
glx-swap-method = 2;
refresh-rate = 0;
vsync = "opengl";
dbe = false;
paint-on-overlay = true;
sw-opti = false;
unredir-if-possible = true;
Turn it on and off again
During these benchmarks I kept normal activity on the screen and an 1080p 8 hour youtube video of a fireplace on 1/4 of the screen. This firefox window was also supposed to be used for the partial update benchmark but --benchmark-wid simply refused everything I threw at it so I decided to postpone such test to a later date.
The benchmark used will be the following to simulate full screen repaint. vblank_mode is set to 0 to disable AMDGPU's default vsync.
seq 5 | xargs -P1 -Iz /usr/bin/time -f "%e" compton --config ~/.compton.conf --benchmark 5000
First thing I did was to remove all backend options except the backend glx to get a baseline then add vsync to check if it impacted performance.
Config 2 - swap method 2
backend = "glx";
vsync="opengl-mswc"
glx-no-stencil = true;
glx-swap-method = 2;
unredir-if-possible = true;
glx-use-gpushader4 = true;
Config 3 - swap method 2 && no-rebind-pixmap
backend = "glx";
vsync="opengl-mswc"
glx-swap-method = 2;
glx-no-stencil = true;
glx-use-gpushader4 = true;
glx-no-rebind-pixmap = true;
unredir-if-possible = true;
Config 4 - swap method 6
backend = "glx";
vsync="opengl-mswc"
glx-swap-method = 6;
glx-no-stencil = true;
glx-use-gpushader4 = true;
unredir-if-possible = true;
Data
| Original | GLX | Vsync-mswc | Config 2 | Config 3 | Config 4 | |
|---|---|---|---|---|---|---|
| 1 | 83.45 | 12.24 | 12.68 | 9.59 | 10.44 | 10.02 |
| 2 | 83.42 | 12.4 | 12.57 | 9.09 | 9.93 | 10.08 |
| 3 | 83.38 | 12.22 | 12.66 | 9.97 | 9.87 | 10.28 |
| 4 | 83.14 | 11.93 | 12.09 | 9.07 | 9.76 | 10.3 |
| 5 | 83.54 | 11.18 | 12.08 | 8.29 | 9.67 | 9.89 |
| Average | 83.386 | 11.994 | 12.416 | 9.202 | 9.934 | 10.114 |
Time in seconds to repaint the screen 5000 times 
Conclusions
- Adding vsync didn't change the results of the benchmark.
- Disabling
gpushader4didn't make much difference, or at least, within the margin error. no-rebind-pixmap appearsto reduce performance but since it's most useful in a specific situation it's still an option to consider.- I'm keeping config 2 for now.