Puttin' on the GL(itz)

Thomas Senyk thomas.senyk at nokia.com
Wed May 16 08:42:36 UTC 2012


On Tuesday, May 15, 2012 10:58:50 AM ext BogDan wrote:
> [,,]
> 
> >>  >
> >>  > So yes, you don't need a EGLSurface!
> >>  > ... all you need is a EGL/GL resource you can map a EGLImage around
> >>  >      ... a texture is the simplest one. pixelbuffer or FBO are other
> >>  > examples.
> >>  Ok, but how do I bind a context to the current rendering thread and to
> >>the
> >>
> >>  EGLImage, I suppose I can not use eglMakeCurrent right ?
> >>
> > Hmm. why not? ... or better: I'm not sure I got your problem :)
> 
> No, believe you didn't :). Please forget OpenMAX for a moment.
> Let's say you have an application with more than one top level widget
> 
> which needs also OpenGL ( for a QGLWidget ), it will need a context and
> 
> surface to paint onto, because the only window EGLSurface can not be used,
> 
> where QGLWidget will paint onto ? I think it will need another EGLSurface,
> right ?

Yes for 2 top level widgets, your right you need native, onscreen surfaces, in 
the EGL case EGLSurface.

But for multimedia you don't need multiple TLW.
All you need is one for you fullscreen/maximized window/application. and some 
other type of buffer/pixmap for openmax to paint into.


> > So I got something like that in mind:
> > 1. a multimediakit object gets a "playThisFile" call (not sure what it
> > 
> > actually named)
> > (for now I assume it's happen in the UI/main thread)
> > 2, maybe: QPlatformGLContext::makeCurrent()
> > 3. he creates a texture, wrappes a EGLImage around it
> > 4. he hands the EGLImage over to openmax al
> > 5. openmax al takes it and startes rendering into this EGLImage/texture in
> > the background*****
> > 6. multimediakit returns from "playThisFile"
> > 
> > 7. some when later:
> > the multimediakit object has a paint() function which is called in the
> > main
> > thread, which does  glDrawArrays  (draws a rect with the video-texture on
> > it)
> > 
> > 
> > 
> > If it's the other way around: OpenMAX AL gives you an EGlImage
> > (I doubt that!...I would bet my money on the first case)
> > 
> > ... it think you just need to call eglMakeCurrent and use:
> > http://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image.txt
> > (again you're in the main thread)
> > 
> > That shouldn't be a problem ... I think :D
> > 
> > 
> > Again I'm very unsure how openmax al actually works, API vice!!
> > I've never looked into it.
> > 
> > 
> > 
> > If you're in another thread ... that could get a bit more complicated, but
> > there are things for that as well (context sharing / shared context)
> > 
> > 
> > *****
> > All my statements are based on the idea that openmax al is doing his work
> > somehow in the background!!
> > This is the case for openmax il ... they have callbacks and all kinds of
> > crazy and ugly stuff to enable that.
> > ... I would be surprised if they gave up such a nice feature (background
> > rendering) for a high level API.
> 
> [...]


More information about the Necessitas-devel mailing list