<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 13-12-09 04:28 AM, <a class="moz-txt-link-abbreviated" href="mailto:davyaxel@free.fr">davyaxel@free.fr</a>
      wrote:<br>
    </div>
    <blockquote
cite="mid:1934150750.609836578.1386581290610.JavaMail.root@zimbra26-e5.priv.proxad.net"
      type="cite">
      <pre wrap="">If EGLNativePixmapType is a pointer on another structure than gbm_bo, it raises an error, and the helpers are disabled.
However if EGLNativePixmapType is (void *) the compilation works. Perhaps you know how we could have the compilation failing in this case too?
</pre>
    </blockquote>
    <br>
    The concept I tried is to access a data member of the gbm_bo struct
    that we are sure will not be a member of the struct in Android,
    Wayland or what not. . It was not easy as it is an anonymous struct
    in which case AC_CHECK_MEMBERS does not work. I modified your
    program to check for "gbm" which we know will never in other
    structures.<br>
    <blockquote><tt>SAVE_CFLAGS=$CFLAGS</tt><tt><br>
      </tt><tt>CFLAGS="$EGL_CFLAGS -Werror"</tt><tt><br>
      </tt><tt>AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[</tt><tt><br>
      </tt><tt>#include <inttypes.h></tt><tt><br>
      </tt><tt>#include <unistd.h></tt><tt><br>
      </tt><tt>#include <gbm.h></tt><tt><br>
      </tt><tt>struct gbm_bo {</tt><tt><br>
      </tt><tt>   struct gbm_device *gbm;</tt><tt><br>
      </tt><tt>   uint32_t width;</tt><tt><br>
      </tt><tt>   uint32_t height;</tt><tt><br>
      </tt><tt>   uint32_t stride;</tt><tt><br>
      </tt><tt>   uint32_t format;</tt><tt><br>
      </tt><tt>   union gbm_bo_handle  handle;</tt><tt><br>
      </tt><tt>   void *user_data;</tt><tt><br>
      </tt><tt>   void (*destroy_user_data)(struct gbm_bo *, void *);</tt><tt><br>
      </tt><tt>};</tt><tt><br>
      </tt><tt>#include <EGL/egl.h></tt><tt><br>
      </tt><tt>#include <EGL/eglext.h>]],[[</tt><tt><br>
      </tt><tt>    struct gbm_bo *bo = gbm_bo_create
        (gbm_create_device(1), 0, 0,
        GBM_FORMAT_ARGB8888,GBM_BO_USE_RENDERING | GBM_BO_USE_SCANOUT);</tt><tt><br>
      </tt><tt>    EGLNativePixmapType native_pixmap = bo;</tt><tt><br>
      </tt><tt>    native_pixmap->gbm;</tt><tt><br>
      </tt><tt>]])], [], [GLAMOR_DRI3_HELPERS=no])</tt><tt><br>
      </tt><tt>CFLAGS=$SAVE_CFLAGS</tt><tt><br>
      </tt></blockquote>
    We cannot include gbmint.h which holds the definition of the
    structure, so I copied it into the program. I did not test on a
    setup that does not have gbm. I am not totally sure it works, I'll
    you dig into that. At least your program works on all but Symbian
    systems, so it is not that bad. There may be an indirect way of
    adding a check for that system.<br>
    <br>
    <br>
  </body>
</html>