This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Linux OpenGLES 2.0 emulator Shared pixmap support

Note: This was originally posted on 13th April 2010 at http://forums.arm.com

I created a shared memory pixmap using MIT shm extension on X11 and the used the eglCreatePixmapSurface by passing the shm pixmap. The EGL surface created successfully and all rendering happened without any error.

  Because the pixmap is now the render target for EGL, so the pixmap buffer should get updated by EGL draw calls.  But the pixmap buffer didn't change after EGL draw opertaions. The glReadPixels however returned the correct data. So EGL is correctly writing to some surface but which one? It surely is not the pixmap buffer, because it didn't change.

  The same thing I tried on Win32 OpenGL ES 2.0 emulator, i.e. created a shared memory bitmap and created EGL surface using it. It worked fine in this case and the buffer was properly updated after EGL draw calls.

  Is this a problem with Linux emulator?

Please help.

Thanks in advance.
  • Note: This was originally posted on 14th April 2010 at http://forums.arm.com

    I created a shared memory pixmap using MIT shm extension on X11 and the used the eglCreatePixmapSurface by passing the shm pixmap. The EGL surface created successfully and all rendering happened without any error.

      Because the pixmap is now the render target for EGL, so the pixmap buffer should get updated by EGL draw calls.  But the pixmap buffer didn't change after EGL draw opertaions. The glReadPixels however returned the correct data. So EGL is correctly writing to some surface but which one? It surely is not the pixmap buffer, because it didn't change.

      The same thing I tried on Win32 OpenGL ES 2.0 emulator, i.e. created a shared memory bitmap and created EGL surface using it. It worked fine in this case and the buffer was properly updated after EGL draw calls.

      Is this a problem with Linux emulator?

    Please help.

    Thanks in advance.


    Hi,

    Thanks for your post. If possible, could you share with us the GLES App that you have been using? That would enable us to isolate the problem.

    Regards
    Karthik
  • Note: This was originally posted on 16th April 2010 at http://forums.arm.com

    Pixmap is single-buffered surface. Clients rendering into a single-buffered surface should call eglWaitClient() before accessing the single-buffered surface from the client. [See section 3.8 of EGL 1.4 specification, for more information]

    glReadPixels() flushes the rendering pipeline and hence I guess that the output is correct with it. In any case, please call eglWaitClient() before calling any other EGL or GLES API, whenever those API's want to render to a single-buffered surface

    Let us know if this helps.