On 11/09/2013 01:15 AM, Ian Romanick wrote: > On 11/08/2013 03:06 PM, Armin K wrote: >> This patch makes it possible to disable DRI3 if desired. > > Should we squash this with Jose's patch? >
Yes, that would be nice. They do the same thing but for different build systems. >> v2: >> >> Incorporated changes from Ian Romanick and Aaron Watry >> Unified libudev check and made libGL link to it only >> when DRI3 was enabled. >> >> v3: >> >> Correct misspelled Ian's last name in commit message. >> >> Adding Brian Paul to CC since he asked if DRI3 stuff >> can be put behind some sort of config option. >> >> Tested with: >> >> ./configure --disable-dri3 --with-dri-drivers=i965 \ >> --with-gallium-drivers= --disable-vdpau --disable-egl \ >> --disable-gbm --disable-xvmc >> >> CC: Ian Romanick <i...@freedesktop.org> > > Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> > >> CC: Aaron Watry <awa...@gmail.com> >> CC: Brian Paul <bri...@vmware.com> >> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71397 >> --- >> configure.ac | 44 ++++++++++++++++++++++++++++++++++---------- >> src/glx/Makefile.am | 8 ++++++-- >> src/glx/glxext.c | 4 ++++ >> 3 files changed, 44 insertions(+), 12 deletions(-) >> >> diff --git a/configure.ac b/configure.ac >> index 8fb5e0d..f756b73 100644 >> --- a/configure.ac >> +++ b/configure.ac >> @@ -536,6 +536,11 @@ AC_ARG_ENABLE([dri], >> [enable DRI modules @<:@default=enabled@:>@])], >> [enable_dri="$enableval"], >> [enable_dri=yes]) >> +AC_ARG_ENABLE([dri3], >> + [AS_HELP_STRING([--enable-dri3], >> + [enable DRI3 @<:@default=enabled@:>@])], >> + [enable_dri3="$enableval"], >> + [enable_dri3=yes]) >> AC_ARG_ENABLE([glx], >> [AS_HELP_STRING([--enable-glx], >> [enable GLX library @<:@default=enabled@:>@])], >> @@ -702,6 +707,7 @@ fi >> AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xyes -a \ >> "x$enable_dri" = xyes) >> AM_CONDITIONAL(HAVE_DRI, test "x$enable_dri" = xyes) >> +AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes) >> >> AC_ARG_ENABLE([shared-glapi], >> [AS_HELP_STRING([--enable-shared-glapi], >> @@ -756,6 +762,9 @@ AC_SUBST([MESA_LLVM]) >> PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED], >> [have_libdrm=yes], [have_libdrm=no]) >> >> +PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED], >> + have_libudev=yes, have_libudev=no) >> + >> if test "x$enable_dri" = xyes; then >> # DRI must be shared, I think >> if test "$enable_static" = yes; then >> @@ -811,13 +820,21 @@ xyesno) >> fi >> PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED]) >> GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED" >> - PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED]) >> - PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= >> $PRESENTPROTO_REQUIRED]) >> - PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED]) >> + if test x"$enable_dri3" = xyes; then >> + if test x"$have_libudev" != xyes; then >> + AC_MSG_ERROR([DRI3 requires libudev >= $LIBUDEV_REQUIRED]) >> + fi >> + PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= >> $DRI3PROTO_REQUIRED]) >> + PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= >> $PRESENTPROTO_REQUIRED]) >> + fi >> fi >> >> # find the DRI deps for libGL >> - dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >> >= 1.8 xcb-dri3 xcb-present xcb-sync xshmfence" >> + dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >> >= 1.8" >> + >> + if test x"$enable_dri3" = xyes; then >> + dri_modules="$dri_modules xcb-dri3 xcb-present xcb-sync xshmfence" >> + fi >> >> # add xf86vidmode if available >> PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, >> HAVE_XF86VIDMODE=no) >> @@ -827,8 +844,13 @@ xyesno) >> >> PKG_CHECK_MODULES([DRIGL], [$dri_modules]) >> GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules" >> - X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS $LIBUDEV_CFLAGS" >> - GL_LIB_DEPS="$DRIGL_LIBS $LIBUDEV_LIBS" >> + X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS" >> + GL_LIB_DEPS="$DRIGL_LIBS" >> + >> + if test x"$enable_dri3$have_libudev" = xyesyes; then >> + X11_INCLUDES="$X11_INCLUDES $LIBUDEV_CFLAGS" >> + GL_LIB_DEPS="$GL_LIB_DEPS $LIBUDEV_LIBS" >> + fi >> >> # need DRM libs, $PTHREAD_LIBS, etc. >> GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS" >> @@ -947,6 +969,9 @@ if test "x$enable_dri" = xyes; then >> linux*) >> DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1" >> DEFINES="$DEFINES -DHAVE_ALIAS" >> + if test "x$enable_dri3" = xyes; then >> + DEFINES="$DEFINES -DHAVE_DRI3" >> + fi >> >> case "$host_cpu" in >> x86_64|amd64) >> @@ -1142,8 +1167,9 @@ if test "x$enable_gbm" = xauto; then >> esac >> fi >> if test "x$enable_gbm" = xyes; then >> - PKG_CHECK_MODULES([LIBUDEV], [libudev], [], >> - AC_MSG_ERROR([gbm needs udev])) >> + if test x"$have_libudev" != xyes; then >> + AC_MSG_ERROR([gbm needs udev]) >> + fi >> >> if test "x$enable_dri" = xyes; then >> GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri" >> @@ -1170,8 +1196,6 @@ if test "x$enable_egl" = xyes; then >> >> if test "$enable_static" != yes; then >> # build egl_glx when libGL is built >> - PKG_CHECK_MODULES([LIBUDEV], [libudev > 150], >> - [have_libudev=yes],[have_libudev=no]) >> if test "$have_libudev" = yes; then >> DEFINES="$DEFINES -DHAVE_LIBUDEV" >> fi >> diff --git a/src/glx/Makefile.am b/src/glx/Makefile.am >> index ae296b9..0aec2aa 100644 >> --- a/src/glx/Makefile.am >> +++ b/src/glx/Makefile.am >> @@ -94,10 +94,14 @@ libglx_la_SOURCES = \ >> dri2_glx.c \ >> dri2.c \ >> dri2_query_renderer.c \ >> - dri3_glx.c \ >> - dri3_common.c \ >> applegl_glx.c >> >> +if HAVE_DRI3 >> +libglx_la_SOURCES += \ >> + dri3_glx.c \ >> + dri3_common.c >> +endif >> + >> GL_LIBS = \ >> libglx.la \ >> $(SHARED_GLAPI_LIBS) \ >> diff --git a/src/glx/glxext.c b/src/glx/glxext.c >> index c6e4d9f..2711e57 100644 >> --- a/src/glx/glxext.c >> +++ b/src/glx/glxext.c >> @@ -770,8 +770,10 @@ AllocAndFetchScreenConfigs(Display * dpy, struct >> glx_display * priv) >> for (i = 0; i < screens; i++, psc++) { >> psc = NULL; >> #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) >> +#if defined(HAVE_DRI3) >> if (priv->dri3Display) >> psc = (*priv->dri3Display->createScreen) (i, priv); >> +#endif >> if (psc == NULL && priv->dri2Display) >> psc = (*priv->dri2Display->createScreen) (i, priv); >> if (psc == NULL && priv->driDisplay) >> @@ -865,8 +867,10 @@ __glXInitialize(Display * dpy) >> ** (e.g., those called in AllocAndFetchScreenConfigs). >> */ >> if (glx_direct && glx_accel) { >> +#if defined(HAVE_DRI3) >> if (!getenv("LIBGL_DRI3_DISABLE")) >> dpyPriv->dri3Display = dri3_create_display(dpy); >> +#endif >> dpyPriv->dri2Display = dri2CreateDisplay(dpy); >> dpyPriv->driDisplay = driCreateDisplay(dpy); >> } >> > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev