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

Rendering using OpenGL ES 2.0/3.0 in a zero copy mode on MALI T628

Hi

I am looking for example / articles on how to perform updates to an Open GL ES texture (without using low Performing glTexSubImage2D approach) in a zero copy approach.

I am currently focused on odroid XU3 with MALI  T628 running ubuntu.

I studied and tried eglcreateImageKHR approach without success (I cannot create an eglImage: error EGL_BAD_PARAMETER is returned when using EGL_NATIVE_PIXMAP_KHRas a target).

I read that MALI driver has support for UMP data transfer, but I still need a reference to the inner buffer in a openGL ES texture.

Any help needed

Andrea

Parents
  • I also tried to use a XPixMap but nope....

    instead of performing

    UploadTexture_UsingEGLImage


    I tried the following

    {
    Window root;
    int x, y;
    unsigned int border, d, w, h;
    const EGLint img_attribs[] = {
    EGL_IMAGE_PRESERVED_KHR, EGL_TRUE,
    EGL_NONE
    };
    if (!XGetGeometry(wind.GetXDisplayPtr(), wind.GethWnd(), &root, &x, &y, &w, &h, &border, &d))
    printf("===== error XGetGeometry\n");
    printf("XGetGeometry %d %d %d\n", w, h, d);
    Pixmap XPixMap = XCreatePixmap(wind.GetXDisplayPtr(), wind.GethWnd(), w, h, d);
    EGLImageKHR eglImage = eglCreateImageKHR(m_sEGLDisplay, m_sEGLContext, EGL_NATIVE_PIXMAP_KHR, &XPixMap, img_attribs);
    EGLint eglError = eglGetError();
    if (eglError != EGL_SUCCESS)
    printf("eglGetError() = %i (0x%.8x) at line %i\n", eglError, eglError, __LINE__);
    glActiveTexture(GL_TEXTURE0);
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
    glBindTexture(GL_TEXTURE_2D, iTex);
    glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, eglImage);
    _GLCheck();
    }
Reply
  • I also tried to use a XPixMap but nope....

    instead of performing

    UploadTexture_UsingEGLImage


    I tried the following

    {
    Window root;
    int x, y;
    unsigned int border, d, w, h;
    const EGLint img_attribs[] = {
    EGL_IMAGE_PRESERVED_KHR, EGL_TRUE,
    EGL_NONE
    };
    if (!XGetGeometry(wind.GetXDisplayPtr(), wind.GethWnd(), &root, &x, &y, &w, &h, &border, &d))
    printf("===== error XGetGeometry\n");
    printf("XGetGeometry %d %d %d\n", w, h, d);
    Pixmap XPixMap = XCreatePixmap(wind.GetXDisplayPtr(), wind.GethWnd(), w, h, d);
    EGLImageKHR eglImage = eglCreateImageKHR(m_sEGLDisplay, m_sEGLContext, EGL_NATIVE_PIXMAP_KHR, &XPixMap, img_attribs);
    EGLint eglError = eglGetError();
    if (eglError != EGL_SUCCESS)
    printf("eglGetError() = %i (0x%.8x) at line %i\n", eglError, eglError, __LINE__);
    glActiveTexture(GL_TEXTURE0);
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
    glBindTexture(GL_TEXTURE_2D, iTex);
    glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, eglImage);
    _GLCheck();
    }
Children
No data