GLES multithreading for rgb / yuv on Android

1. If we want to achieve multi-threaded rendering by GLES, what problems may occur ?

Such as following code on Android:

Thread 1 for rendering rgb format:

  • Init
    eglChooseConfig(); //RGBA8888
    context1 = eglCreateContext(dpy1, , ,);
    eglMakeCurrent(dpy1, EGL_NO_SURFACE, EGL_NO_SURFACE, context1);
    
  • ThreadLoop
    Rendering to framebuffer
    

Thread 2 for rendering yuv format:

  • Init

    eglChooseConfig(); //EGL_RECORDABLE_ANDROID for yuv format
    context2 = eglCreateContext(dpy2, , ,);
    eglMakeCurrent(dpy2, EGL_NO_SURFACE, EGL_NO_SURFACE, context2);
    
  • ThreadLoop

    Rendering to framebuffer
    

2. If we achieve multi-threaded rendering by binding / unbinding context, what problems may occur?

Thread 1:

eglMalkeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, context);
rendering to framebuffer
eglMalkeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);

Thread 2:

eglMalkeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, context);
rendering to framebuffer
eglMalkeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);