Skip to content

egl_pbuffer: use eglMakeCurrent directly

Ensure that the default framebuffer is setup during MakeCurrent(), so that any vlc_gl_t client can expect the state to be correct after calling vlc_gl_MakeCurrent() and without changing it.

It seems that the default framebuffer was not always kept, leading to GL_INVALID_FRAMEBUFFER errors on Linux with a MESA egl_pbuffer (GBM backend) GLES2 implementation.

With the work allowing to use the opengl filter with a gles2 provider on Linux with OpenGL available (not merged, !2934 (merged)), it leads to:

$ MESA_DEBUG=1 ./vlc -vv ~/Video/dog_meme.mp4 --video-filter='opengl{filter=mock{mask},gles=any}'
...
Mesa: User error: GL_INVALID_FRAMEBUFFER_OPERATION in glClear(incomplete framebuffer)
Mesa: User error: GL_INVALID_FRAMEBUFFER_OPERATION in glDrawArrays
vlc: ../../modules/video_output/opengl/filter_draw.c:112: Draw: Assertion `!"GL_INVALID_FRAMEBUFFER_OPERATION"' failed.

To achieve that, we first remove the direct usage to MakeCurrent() when the framebuffer is not ready yet.

Merge request reports