[Mesa-dev] [Mesa-stable] [PATCH v3] egl: add HAVE_LIBDRM define, fix EGL X11 platform

Chad Versace chad.versace at linux.intel.com
Mon Dec 2 13:06:18 PST 2013


On 12/01/2013 01:53 AM, Tapani Pälli wrote:
> Commit a594cec broke EGL X11 backend by adding dependency between
> X11 and DRM backends requiring HAVE_EGL_PLATFORM_DRM defined for X11.
>
> This patch fixes the issue by adding additional define for libdrm
> detection independent of which backend is being compiled. Tested by
> compiling Mesa with '--with-egl-platforms=x11' and running es2gears_x11
> + glbenchmark2.7 successfully.
>
> v2: return true for dri2_auth if running without libdrm (Samuel)
> v3: check libdrm when building EGL drm platform + AM_CFLAGS fix (Emil)
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=72062
> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> Reviewed-by: Emil Velikov <emil.l.velikov at gmail.com>
> Cc: Samuel Thibault <samuel.thibault at ens-lyon.org>
> Cc: mesa-stable at lists.freedesktop.org


I tested this patch with --with-egl-platforms=x11, and it works
for me.

But, why return true from dri2_authenticate() when building
without libdrm? I expected dri2_authenticate() to return false
in that case, because the function never authenticates with the
Xserver without drmGetMagic().




> ---
>   configure.ac                        | 5 +++++
>   src/egl/drivers/dri2/platform_x11.c | 9 +++------
>   2 files changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 8c52535..91a5817 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -761,6 +761,9 @@ AC_SUBST([MESA_LLVM])
>   # Check for libdrm
>   PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
>                     [have_libdrm=yes], [have_libdrm=no])
> +if test "x$have_libdrm" = xyes; then
> +	DEFINES="$DEFINES -DHAVE_LIBDRM"
> +fi
>
>   PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED],
>                     have_libudev=yes, have_libudev=no)
> @@ -1439,6 +1442,8 @@ for plat in $egl_platforms; do
>   	drm)
>   		test "x$enable_gbm" = "xno" &&
>   			AC_MSG_ERROR([EGL platform drm needs gbm])
> +		test "x$have_libdrm" != xyes &&
> +			AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
>   		;;
>
>   	android|fbdev|gdi|null)
> diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c
> index c56a413..04cb62b 100644
> --- a/src/egl/drivers/dri2/platform_x11.c
> +++ b/src/egl/drivers/dri2/platform_x11.c
> @@ -33,7 +33,7 @@
>   #include <fcntl.h>
>   #include <errno.h>
>   #include <unistd.h>
> -#ifdef HAVE_DRM_PLATFORM
> +#ifdef HAVE_LIBDRM
>   #include <xf86drm.h>
>   #endif
>   #include <sys/types.h>
> @@ -608,7 +608,7 @@ dri2_x11_authenticate(_EGLDisplay *disp, uint32_t id)
>   static EGLBoolean
>   dri2_authenticate(_EGLDisplay *disp)
>   {
> -#ifdef HAVE_DRM_PLATFORM
> +#ifdef HAVE_LIBDRM
>      struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
>      drm_magic_t magic;
>
> @@ -621,11 +621,8 @@ dri2_authenticate(_EGLDisplay *disp)
>         _eglLog(_EGL_WARNING, "DRI2: failed to authenticate");
>         return EGL_FALSE;
>      }
> -
> -   return EGL_TRUE;
> -#else
> -   return EGL_FALSE;
>   #endif
> +   return EGL_TRUE;
>   }
>
>   static EGLBoolean
>



More information about the mesa-dev mailing list