opengl: add PBO support for old OpenGL versions
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.
Showing with 157 additions and 4 deletions