Skip to content
  • Thomas Guillem's avatar
    opengl: add PBO support for old OpenGL versions · 8663561d
    Thomas Guillem authored
    Direct rendering is already present using PBO (GL_EXT_pixel_buffer_object) and
    persistent buffers (GL_EXT_buffer_storage). But these extensions are available
    only since OpenGL 4.4.
    
    For older OpenGL versions (OpenGL 2.0 and OpenGL ES3 (or as an extension since
    OpenGL ES2)), we can still improve quite a bit the performances by using a
    non-mapped PBO and updating it via glBufferSubData. This won't be true direct
    rendering since you must copy the data from the decoded picture to the GPU.
    
    By using 2 PBOs (double buffering), we make sure that we can upload to the GPU
    while the previous picture is beeing rendered.
    
    Performances gains measured by playing 4K30fps video during 1 minute: 7 seconds
    spent in vout->prepare() instead of 10 seconds. This result may vary with the
    platform/device/drivers.
    
    Thanks to sesse for the advices.
    8663561d