FBO with shared texture

Hi, I’m working on accelerating 2D vector graphics using OpenGL ES.
You can think that of CairoGL, QPainterGL, SkiaGL.

Our off-screen rendering surface should meet following conditions.

  1. Support OpenGL ES rendering
  2. Can be bound to OpenGL ES texture with zero copy overhead
  3. Render target switch must be fast
  4. Support multi-thread OpenGL ES rendering

What can be render target of OpenGL ES are…

  • EGL Window, PBuffer, NativePixmap Surface
  • FBO

For off-screen rendering, candidates are PBuffer, FBO.

PBuffer

  • Render : eglCreateContext and then eglMakeCurrent
  • Texture : eglBindTexture

FBO

  • Render : FBO
  • Texture : glBindTexture

PBuffer meets condition 1,2, 4 but not 3
So I tested some example for FBO.

  1. There is one EGL context per thread.
  2. All EGL context is shared.
  3. There are one compositor thread and several client thread.
  4. Create textures from context of compositor thread.
  5. Each client thread generate FBO and attach texture(from compositor thread) to it.
  6. Each client thread renders something on that texture.
  7. Compositor thread map the textures on 3D geometry periodically.

In step 5, glCheckFramebufferStatus report errors.
I concluded that textures which are shared across multiple contexts cannot be bound to FBO.
Thus, FBO meets condition 1, 2, 3 but not 4
Is this true?
Does anyone have better idea on this problem?

Please help me :smiley:
Thank you!!

I’m working on OpenGL ES 2.0 and EGL 1.4

The EGL image extensions can provide an efficient zero copy solution cross process solution, but it would only work on platforms which support the extension.

The IMG SGX stack supports all the EGL image extensions, so if you’re targeting SGX platforms, I’d strongly suggest taking a peek at the extension spec. The extension does require some OS specific bits to be implemented in order to make use of the extension, so you should also ensure your targeted OS properly implements the extension as well.

-Joel

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.