mutter/clutter/glx
Robert Bragg 130c79ac03 glx: throttle clipped redraws
When we come to presenting the result of a clipped redraw to the front
buffer with a blit we need to ensure that all the rendering is done,
otherwise redraw operations that are slower than the framerate can queue
up in the pipeline during a heavy animation, causing a larger and larger
backlog of rendering visible as lag to the user.

Note: Since calling glFinish() and sycnrhonizing the CPU with the GPU is
far from ideal, we hope that this is only a short term solution.

One idea is to using sync objects to track render completion so we can
throttle the backlog (ideally with an additional extension that lets us
get notifications in our mainloop instead of having to busy wait for the
completion.)

Another option is to support clipped redraws by reusing the contents of
old back buffers such that we can flip instead of using a blit and then
we can use GLX_INTEL_swap_events to throttle. For this though we would
still probably want an additional extension so we can report the limited
region of the window damage to X/compositors.

Thanks to Owen Taylor and Alexander Larsson for reporting the problem.
2011-04-01 18:50:55 +01:00
..
clutter-backend-glx.c glx: Use g_set_error_literal() where appropriate 2011-03-04 23:58:12 +00:00
clutter-backend-glx.h Hide internal glx and egl(x) backend symbols. 2010-08-23 11:49:07 +01:00
clutter-glx-texture-pixmap.c glx: Deprecate ClutterGLXTexturePixmap 2011-01-20 13:21:50 +00:00
clutter-glx-texture-pixmap.h glx: Deprecate ClutterGLXTexturePixmap 2011-01-20 13:21:50 +00:00
clutter-glx.h Remove mentions of the FSF address 2010-03-01 12:56:10 +00:00
clutter-stage-glx.c glx: throttle clipped redraws 2011-04-01 18:50:55 +01:00
clutter-stage-glx.h stage/glx: Code clean ups 2011-02-14 12:00:31 +00:00