xpra icon
Bug tracker and wiki

This bug tracker and wiki are being discontinued
please use https://github.com/Xpra-org/xpra instead.

Changes between Initial Version and Version 1 of Ticket #679

09/14/14 11:25:47 (7 years ago)
Antoine Martin


  • Ticket #679

    • Property Owner changed from Antoine Martin to Antoine Martin
    • Property Status changed from new to assigned
    • Property Summary changed from opengl improvements: double buffering, limited repaints to opengl improvements: double buffering, limited repaints, paint state
  • Ticket #679 – Description

    initial v1  
    33At the moment, only win32 uses double-buffering by default.
    4 Is it required? Useful?
    5 Does it limit the number of paints we can do per second because of the synchronization that happens when we {{{swap_buffers}}}?
     4Is it required? Useful? The PBO is a bit like our own double buffering already.
     5Does double buffering limit the number of paints we can do per second because of the synchronization that happens when we {{{swap_buffers}}}? (if there is any!)
    77This needs testing with:
     11And maybe a dedicated test app to trigger the paint refresh pattern needed for testing.
    1213Same for Linux, do we want to enable double buffering there?
    1516Also, when not using double buffering, we can optimize repaints to only paste the fbo contents on the area of the window that needs updating instead of the whole window.
     18As per [http://www.mesa3d.org/brianp/sig97/perfopt.htm]: ''SwapBuffer calls and graphics pipe blocking: On systems with 3-D graphics hardware the SwapBuffers call is synchronized to the monitor's vertical retrace. Input to the OpenGL command queue may be blocked until the buffer swap has completed. Therefore, don't put more OpenGL calls immediately after SwapBuffers. Instead, put application computation instructions which can overlap with the buffer swap delay.''
     19See also [http://www.opengl.org/wiki/Swap_Interval]
     20We should try to ensure we don't make any GL calls after {{{swap_buffers}}}.
     21For example, the whole {{{set_rgb_paint_state}}} / {{{unset_rgb_paint_state}}} logic should be changed to be done on-demand before each paint rather than assuming a specific state is the default.
     22This can also cause problems if we have many windows: they will all consume  synchronization time. Or will they? See [http://stackoverflow.com/questions/18854366/swap-buffer-synchronization Swap buffer synchronization] and [http://stackoverflow.com/questions/18747902/using-swapbuffers-with-multiple-opengl-canvases-and-vertical-sync Using SwapBuffers() with multiple OpenGL canvases and vertical sync?]