After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 706156 - Windows that update in another workspace cause the entire screen to be redrawn
Windows that update in another workspace cause the entire screen to be redrawn
Status: RESOLVED OBSOLETE
Product: gnome-shell
Classification: Core
Component: general
3.6.x
Other Linux
: Normal normal
: ---
Assigned To: gnome-shell-maint
gnome-shell-maint
Depends on:
Blocks:
 
 
Reported: 2013-08-16 18:13 UTC by Federico Mena Quintero
Modified: 2021-07-05 14:21 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Federico Mena Quintero 2013-08-16 18:13:00 UTC
I've been playing with COGL_DEBUG=rectangles.  Do this:

1. export COGL_DEBUG=rectangles

2. gnome-shell --replace

3. Open a second workspace

4. In that second workspace, run glxgears (i.e. something that continuously updates its window).

5. Switch to the first workspace, which should be mostly empty and quiet.

6. Watch the flickering rectangles, which indicate that everything is being repainted.

Gnome-shell should not need to repaint everything if a window outside the current workspace updates itself.

For contrast, switch to the workspace where the glxgears window is.  You'll see that only its window's client area is updated, as expected.  I don't know why going away from the current workspace would make a difference.
Comment 1 Federico Mena Quintero 2013-08-16 18:20:21 UTC
Also happens for non-GL windows, e.g. "xclock -update 1".
Comment 2 drago01 2013-08-16 18:46:46 UTC
We do queue a redraw in response to damage events. We should and can optimize that out in such cases (also for obscured windows). I do have patches in the works that do exactly that see: https://bugzilla.gnome.org/show_bug.cgi?id=703332 

Still need to fix them up, planning to do that in the coming days.
Comment 3 Federico Mena Quintero 2013-08-16 20:34:07 UTC
Thanks, this is good news.

I'm rather ignorant of how frame synchronization works or how the whole compositing pipeline works, so please bear with me.

Does throttling offscreen windows to 100ms mean that "the whole screen will only repaint every 100ms" for those busy offscreen windows?  This would be a bit unfortunate for remote displays like VNC (we have plans to make VNC and similar be smart about not sending data on the wire for screen areas that didn't actually change, but in the meantime...).

... or is it possible to get the windows' frame counters synchronized, without actually dealing with their damage data?
Comment 4 drago01 2013-08-16 22:43:23 UTC
(In reply to comment #3)
> Thanks, this is good news.
> 
> I'm rather ignorant of how frame synchronization works or how the whole
> compositing pipeline works, so please bear with me.
> 
> Does throttling offscreen windows to 100ms mean that "the whole screen will
> only repaint every 100ms" for those busy offscreen windows? 

No. It means that they will get the FRAME_DRAWN / FRAME_TIMINGS messages every 100ms. That means that the windows will redraw their contents (offscreen) at that interval but as long as they are obscured nothing changes on the screen.
Comment 5 Federico Mena Quintero 2013-08-16 23:04:09 UTC
Excellent - this is reassuring, thanks :)
Comment 6 drago01 2013-08-17 17:31:54 UTC
Lets mark this as a dupe ... there is no reason to have two bugs for the same thing.

*** This bug has been marked as a duplicate of bug 703332 ***
Comment 7 Jasper St. Pierre (not reading bugmail) 2013-08-17 18:08:42 UTC
I would still like some investigation into why we're queueing redraws for unmapped actors. The Clutter code should fizzle out redraws for unmapped actors, and actors on other workspaces should be hidden.

It does check that we have no active clones, so perhaps we're leaking clones in alt-tab / overview / workspace animation switch? That's a much more serious problem.
Comment 8 drago01 2013-08-17 19:18:28 UTC
(In reply to comment #7)
> I would still like some investigation into why we're queueing redraws for
> unmapped actors. The Clutter code should fizzle out redraws for unmapped
> actors, and actors on other workspaces should be hidden.
> 
> It does check that we have no active clones, so perhaps we're leaking clones in
> alt-tab / overview / workspace animation switch? That's a much more serious
> problem.

Running with CLUTTER_DEBUG=paint should tell you what's going on.
Comment 9 GNOME Infrastructure Team 2021-07-05 14:21:29 UTC
GNOME is going to shut down bugzilla.gnome.org in favor of  gitlab.gnome.org.
As part of that, we are mass-closing older open tickets in bugzilla.gnome.org
which have not seen updates for a longer time (resources are unfortunately
quite limited so not every ticket can get handled).

If you can still reproduce the situation described in this ticket in a recent
and supported software version, then please follow
  https://wiki.gnome.org/GettingInTouch/BugReportingGuidelines
and create a new ticket at
  https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/

Thank you for your understanding and your help.