Clutter Stage repaints even if updating actor is hidden behind an opaque actor with fractional scaling
To reproduce:
- enable fraction scaling (125% or so)
- run GS with
CLUTTER_SHOW_FPS=1
orCLUTTER_PAINT=damage-region
or enable the frame HUD via looking glass - open a terminal and run
weston-simple-damage
(or some other constantly updating app) - move it behind the terminal (or some other opaque application)
Expected result:
- Mutter should stop updating / FPS should go very low
Observed behaviour:
- Mutter updates at 60/full FPS
This is especially bad as many applications, e.g. firefox, still refresh their whole content on updates. Having a maximized firefox running with some animation like a gif makes almost the whole stage constantly repaint, even if firefox is completely covered by some other program.
Fixing this should hold substantial power-usage-reduction-potential in certain scenarios.
Update:
This only happens with fractional scaling because we hit https://gitlab.gnome.org/GNOME/mutter/blob/2f4a68c8c3690663c7f0dbdd7aaa55ee9963a231/src/compositor/meta-cullable.c#L103
Edited by Robert Mader