Please note: We are aware of an issue affecting replies on the Arm Community forums, which may not be loading as expected.

We apologize for any inconvenience and appreciate your patience while we investigate and work to resolve the issue.

Thank you for your understanding.


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

Getting EGL_BAD_DISPLAY while firing eglquerystring() from application

Hi Community,

I am building test suite for Open GL ES 2.0 with EGL support.When I run app ,i am getting above error while getting EGL extensions with API egl.querystring().

Anything I am missing here OR is it because of libMAli.so/libEGL.so/user-space-driver issue?

My platform is linux with x11 as window manager.

Let me know if you want more information

Thanks,

Vaibhav

Message was edited by: vaibhav

Parents
  • So, after trying to build a minimal eglQueryString example, I found two problems :

    - If eglGetDisplay is not called, eglQueryString will return NULL and an EGL Error will be raised.

    - If eglInitialize is not called, eglQueryString will also return NULL and an EGL Error will be raised.

    Here's a quick working minimal example on how to use of eglQueryString. The example is in C but should be easy to adapt.

    /* Compile with gcc -g3 -o example example.c -lX11 -lEGL */
    
    #include <assert.h>
    #include <stdio.h>
    #include <EGL/egl.h>
    #include <EGL/eglplatform.h>
    
    void printEGLError();
    
    int main(void) {
      Display* x_display = XOpenDisplay(NULL);
      EGLDisplay display = eglGetDisplay(x_display);
      assert(display != EGL_NO_DISPLAY);
    
      EGLint major, minor;
      eglInitialize(display, &major, &minor);
      char *string = eglQueryString(display, EGL_CLIENT_APIS);
      assert(string);
    
      printf("%s\n", string);
    
      return 0;
    }
    
    /* Use printEGLError to show a description of the last EGL Error.
      The descriptions are taken from the eglGetError manual */
    #define ERROR_DESC(...) fprintf(stderr, "%s\n", __VA_ARGS__); break
    
    void printEGLError() {
    
      switch(eglGetError()) {
    
      case(EGL_SUCCESS):
        ERROR_DESC("The last function succeeded without error.");
      case(EGL_NOT_INITIALIZED):
        ERROR_DESC("EGL is not initialized, or could not be initialized, for the specified EGL display connection.");
      case(EGL_BAD_ACCESS):
        ERROR_DESC("EGL cannot access a requested resource (for example a context is bound in another thread).");
      case(EGL_BAD_ALLOC):
        ERROR_DESC("EGL failed to allocate resources for the requested operation.");
      case(EGL_BAD_ATTRIBUTE):
        ERROR_DESC("An unrecognized attribute or attribute value was passed in the attribute list.");
      case(EGL_BAD_CONTEXT):
        ERROR_DESC("An EGLContext argument does not name a valid EGL rendering context.");
      case(EGL_BAD_CONFIG):
        ERROR_DESC("An EGLConfig argument does not name a valid EGL frame buffer configuration.");
      case(EGL_BAD_CURRENT_SURFACE):
        ERROR_DESC("The current surface of the calling thread is a window, pixel buffer or pixmap that is no longer valid.");
      case(EGL_BAD_DISPLAY):
        ERROR_DESC("An EGLDisplay argument does not name a valid EGL display connection.");
      case(EGL_BAD_SURFACE):
        ERROR_DESC("An EGLSurface argument does not name a valid surface (window, pixel buffer or pixmap) configured for GL rendering.");
      case(EGL_BAD_MATCH):
        ERROR_DESC("Arguments are inconsistent (for example, a valid context requires buffers not supplied by a valid surface).");
      case(EGL_BAD_PARAMETER):
        ERROR_DESC("One or more argument values are invalid.");
      case(EGL_BAD_NATIVE_PIXMAP):
        ERROR_DESC("A NativePixmapType argument does not refer to a valid native pixmap.");
      case(EGL_BAD_NATIVE_WINDOW):
        ERROR_DESC("A NativeWindowType argument does not refer to a valid native window.");
      case(EGL_CONTEXT_LOST):
        ERROR_DESC("A power management event has occurred. The application must destroy all contexts and reinitialise OpenGL ES state and objects to continue rendering. ");
      }
    }
    
Reply
  • So, after trying to build a minimal eglQueryString example, I found two problems :

    - If eglGetDisplay is not called, eglQueryString will return NULL and an EGL Error will be raised.

    - If eglInitialize is not called, eglQueryString will also return NULL and an EGL Error will be raised.

    Here's a quick working minimal example on how to use of eglQueryString. The example is in C but should be easy to adapt.

    /* Compile with gcc -g3 -o example example.c -lX11 -lEGL */
    
    #include <assert.h>
    #include <stdio.h>
    #include <EGL/egl.h>
    #include <EGL/eglplatform.h>
    
    void printEGLError();
    
    int main(void) {
      Display* x_display = XOpenDisplay(NULL);
      EGLDisplay display = eglGetDisplay(x_display);
      assert(display != EGL_NO_DISPLAY);
    
      EGLint major, minor;
      eglInitialize(display, &major, &minor);
      char *string = eglQueryString(display, EGL_CLIENT_APIS);
      assert(string);
    
      printf("%s\n", string);
    
      return 0;
    }
    
    /* Use printEGLError to show a description of the last EGL Error.
      The descriptions are taken from the eglGetError manual */
    #define ERROR_DESC(...) fprintf(stderr, "%s\n", __VA_ARGS__); break
    
    void printEGLError() {
    
      switch(eglGetError()) {
    
      case(EGL_SUCCESS):
        ERROR_DESC("The last function succeeded without error.");
      case(EGL_NOT_INITIALIZED):
        ERROR_DESC("EGL is not initialized, or could not be initialized, for the specified EGL display connection.");
      case(EGL_BAD_ACCESS):
        ERROR_DESC("EGL cannot access a requested resource (for example a context is bound in another thread).");
      case(EGL_BAD_ALLOC):
        ERROR_DESC("EGL failed to allocate resources for the requested operation.");
      case(EGL_BAD_ATTRIBUTE):
        ERROR_DESC("An unrecognized attribute or attribute value was passed in the attribute list.");
      case(EGL_BAD_CONTEXT):
        ERROR_DESC("An EGLContext argument does not name a valid EGL rendering context.");
      case(EGL_BAD_CONFIG):
        ERROR_DESC("An EGLConfig argument does not name a valid EGL frame buffer configuration.");
      case(EGL_BAD_CURRENT_SURFACE):
        ERROR_DESC("The current surface of the calling thread is a window, pixel buffer or pixmap that is no longer valid.");
      case(EGL_BAD_DISPLAY):
        ERROR_DESC("An EGLDisplay argument does not name a valid EGL display connection.");
      case(EGL_BAD_SURFACE):
        ERROR_DESC("An EGLSurface argument does not name a valid surface (window, pixel buffer or pixmap) configured for GL rendering.");
      case(EGL_BAD_MATCH):
        ERROR_DESC("Arguments are inconsistent (for example, a valid context requires buffers not supplied by a valid surface).");
      case(EGL_BAD_PARAMETER):
        ERROR_DESC("One or more argument values are invalid.");
      case(EGL_BAD_NATIVE_PIXMAP):
        ERROR_DESC("A NativePixmapType argument does not refer to a valid native pixmap.");
      case(EGL_BAD_NATIVE_WINDOW):
        ERROR_DESC("A NativeWindowType argument does not refer to a valid native window.");
      case(EGL_CONTEXT_LOST):
        ERROR_DESC("A power management event has occurred. The application must destroy all contexts and reinitialise OpenGL ES state and objects to continue rendering. ");
      }
    }
    
Children
No data