- 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
gpushader4
didn't make much difference, or at least, within the margin error. no-rebind-pixmap appears
to 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.