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 Version 1 and Version 2 of Ticket #679


Ignore:
Timestamp:
09/14/14 12:03:20 (7 years ago)
Author:
Antoine Martin
Comment:

Improvements:

  • r7600 + r7608: only repaints what is needed in single-buffer mode
  • r7601: paint debugging via XPRA_OPENGL_PAINT_BOX env var
  • r7602: adds GL_PERSPECTIVE_CORRECTION_HINT hint
  • r7603: removes the glClear after swap_buffers

No matter how many small glxgears window I start, I seem to only get ~60fps, which is my monitor refresh rate... So we are capped.

Whilst we're here, it would be good to deal with #478 too.

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #679 – Description

    v1 v2  
    44Is it required? Useful? The PBO is a bit like our own double buffering already.
    55Does 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!)
     6This 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?]
    67
    78This needs testing with:
     
    910XPRA_OPENGL_DOUBLE_BUFFERED=0
    1011}}}
    11 And maybe a dedicated test app to trigger the paint refresh pattern needed for testing.
     12And maybe a dedicated test app to trigger the paint refresh pattern needed for testing. (many windows? fast refresh? hard!)
    1213
    1314Same for Linux, do we want to enable double buffering there?
    14 Does it work reliably?
     15Does it work reliably? (works here)
    1516
    1617Also, 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.
     
    1920See also [http://www.opengl.org/wiki/Swap_Interval]
    2021We should try to ensure we don't make any GL calls after {{{swap_buffers}}}.
    21 For 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.
    22 This 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?]
     22For 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. There is also a {{{glClear}}} there, not sure what to do with it: it doesn't really do anything, but I can only find conflicting information on the performance implications.