compiz paint clock needs to be smarter

Bug #797741 reported by Sam Spilsbury
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Compiz
Fix Released
Medium
Unassigned
compiz (Ubuntu)
Fix Released
Undecided
Unassigned

Bug Description

Looking into http://blog.fishsoup.net/2011/06/13/benchmarking-compositor-performance/ it seems as though we are doing a few things on damage events in compiz:

 * handle damage
 * reset paint clock to process next redraw at 1/framerate interval
 * repaint scene
 * wait for vblank
 * glXSwapBuffers

My guess is that we want to be able to do sane frame limiting while also hitting the vblank on time. The frame limiting stuff is rather primitive in that we wait for the 1/framelimit interval before redrawing the screen. It might be more useful to immediately redraw the screen in antcipation of the next vblank and keep the timer running to *cap* these redraws if they're going over the frame limit.

Tags: compiz
Changed in unity (Ubuntu):
status: New → Confirmed
Changed in unity:
milestone: 4.2.0 → 4.4.0
Changed in unity:
milestone: 4.4.0 → 4.6.0
Changed in unity:
milestone: 4.6.0 → 4.8.0
Omer Akram (om26er)
Changed in unity:
milestone: 4.8.0 → none
affects: unity → compiz
affects: unity (Ubuntu) → compiz (Ubuntu)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

For compiz, this is really two bugs:

1. The delay was much too long, causing frames to be skipped. Fixed in 0.9.7.0 (bug 880707 et al).

2. Waiting for vblank. "Hitting vblank on time" is a non-issue once we have glXSwapBuffers always on --> bug 901097.
Because there is no client-side wait for vblank once we can use GLX_SGI_swap_control instead.

Changed in compiz:
status: Confirmed → Fix Released
Changed in compiz (Ubuntu):
status: Confirmed → Fix Released
Changed in compiz:
assignee: Sam Spilsbury (smspillaz) → nobody
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.