130c79ac03
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. |
||
---|---|---|
.. | ||
clutter-backend-glx.c | ||
clutter-backend-glx.h | ||
clutter-glx-texture-pixmap.c | ||
clutter-glx-texture-pixmap.h | ||
clutter-glx.h | ||
clutter-stage-glx.c | ||
clutter-stage-glx.h |