Instead of cascading support for various different implementations of GLX, all three options are now mutually exclusive top level options:
--enable-glx : Enable the DRI-based GLX --enable-xlib-glx : Enable the classic Xlib-based GLX --enable-gallium-xlib-glx: Enable the gallium Xlib-based GLX --- configure.ac | 120 ++++++++++++++++++++++++++++-------------------- src/gallium/Makefile.am | 2 +- src/mesa/Makefile.am | 2 +- 3 files changed, 72 insertions(+), 52 deletions(-) diff --git a/configure.ac b/configure.ac index 8c82c43..9c76646 100644 --- a/configure.ac +++ b/configure.ac @@ -857,11 +857,35 @@ AC_ARG_ENABLE([dri3], [enable DRI3 @<:@default=auto@:>@])], [enable_dri3="$enableval"], [enable_dri3="$dri3_default"]) + +if test "x$enable_dri" = xyes; then + glx_default="$enableval" + xlib_glx_default=no + gallium_xlib_glx_default=no +elif test -n "$with_gallium_drivers"; then + glx_default=no + xlib_glx_default=no + gallium_xlib_glx_default="$enableval" +else + glx_default=no + xlib_glx_default="$enableval" + gallium_xlib_glx_default=no +fi AC_ARG_ENABLE([glx], [AS_HELP_STRING([--enable-glx], - [enable GLX library @<:@default=enabled@:>@])], + [enable DRI-based GLX library @<:@default=enabled if dri is enabled@:>@])], [enable_glx="$enableval"], - [enable_glx=yes]) + [enable_glx="$glx_default"]) +AC_ARG_ENABLE([xlib-glx], + [AS_HELP_STRING([--enable-xlib-glx], + [enable classic Xlib-based GLX library @<:@default=enabled if neither dri or gallium is enabled@:>@])], + [enable_xlib_glx="$enableval"], + [enable_xlib_glx="$xlib_glx_default"]) +AC_ARG_ENABLE([gallium-xlib-glx], + [AS_HELP_STRING([--enable-gallium-xlib-glx], + [enable gallium Xlib-based GLX library @<:@default=enabled if gallium without dri is enabled@:>@])], + [enable_gallium_xlib_glx="$enableval"], + [enable_gallium_xlib_glx="$gallium_xlib_glx_default"]) AC_ARG_ENABLE([osmesa], [AS_HELP_STRING([--enable-osmesa], [enable OSMesa library @<:@default=disabled@:>@])], @@ -925,11 +949,6 @@ AC_ARG_ENABLE([opencl_icd], @<:@default=disabled@:>@])], [enable_opencl_icd="$enableval"], [enable_opencl_icd=no]) -AC_ARG_ENABLE([xlib-glx], - [AS_HELP_STRING([--enable-xlib-glx], - [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])], - [enable_xlib_glx="$enableval"], - [enable_xlib_glx=no]) AC_ARG_ENABLE([gallium-tests], [AS_HELP_STRING([--enable-gallium-tests], @@ -988,35 +1007,39 @@ AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \ "x$enable_gles1" = xyes -o \ "x$enable_gles2" = xyes) -if test "x$enable_glx" = xno; then - AC_MSG_WARN([GLX disabled, disabling Xlib-GLX]) - enable_xlib_glx=no -fi -if test "x$enable_dri$enable_xlib_glx" = xyesyes; then - AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together]) -fi - -if test "x$enable_opengl$enable_xlib_glx" = xnoyes; then - AC_MSG_ERROR([Xlib-GLX cannot be built without OpenGL]) -fi +# Error if more than one GLX implementation is specified +case "x$enable_glx$enable_xlib_glx$enable_gallium_xlib_glx" in +xyesyesno) + AC_MSG_ERROR([Only one GLX implementation at a time can be enabled. DRI-based GLX cannot be built with classic Xlib-based GLX.]) ;; +xnoyesyes) + AC_MSG_ERROR([Only one GLX implementation at a time can be enabled. Classic Xlib-based GLX cannot be built with gallium Xlib-based GLX.]) ;; +xyesnoyes) + AC_MSG_ERROR([Only one GLX implementation at a time can be enabled. DRI-based GLX cannot be built with gallium Xlib-based GLX.]) ;; +xyesyesyes) + AC_MSG_ERROR([Only one GLX implementation at a time can be enabled.]) ;; +xyesnono|xnoyesno|xnonoyes) + enable_any_glx=yes + # Error if GLX is enabled but not OpenGL + if test "x$enable_opengl" = xno; then + AC_MSG_ERROR([GLX cannot be built without OpenGL]) + fi + ;; +esac -# Disable GLX if OpenGL is not enabled -if test "x$enable_glx$enable_opengl" = xyesno; then - AC_MSG_WARN([OpenGL not enabled, disabling GLX]) - enable_glx=no +# DRI is incompatible with both Xlib-GLX configurations +if test "x$enable_dri$enable_xlib_glx" = xyesyes -o \ + "x$enable_dri$enable_gallium_xlib_glx" = xyesyes; then + AC_MSG_ERROR([DRI and Xlib-GLX (classic or gallium) cannot be built together]) fi -# Disable GLX if DRI and Xlib-GLX are not enabled -if test "x$enable_glx" = xyes -a \ - "x$enable_dri" = xno -a \ - "x$enable_xlib_glx" = xno; then - AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX]) - enable_glx=no +# DRI-GLX requires DRI +if test "x$enable_dri$enable_glx" = xnoyes; then + AC_MSG_ERROR([DRI-GLX cannot be built without DRI]) fi - -AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xyes -a \ - "x$enable_dri" = xyes) +AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xyes) +AM_CONDITIONAL(HAVE_XLIB_GLX, test "x$enable_xlib_glx" = xyes) +AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, test "x$enable_gallium_xlib_glx" = xyes) # Check for libdrm PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED], @@ -1072,7 +1095,7 @@ dnl dnl Driver specific build directories dnl -if test -n "$with_gallium_drivers" -a "x$enable_glx$enable_xlib_glx" = xyesyes; then +if test -n "$with_gallium_drivers" -a "x$enable_gallium_xlib_glx" = xyesyes; then NEED_WINSYS_XLIB="yes" fi @@ -1268,8 +1291,8 @@ AC_ARG_ENABLE([driglx-direct], dnl dnl libGL configuration per driver dnl -case "x$enable_glx$enable_xlib_glx" in -xyesyes) +case "x$enable_glx$enable_xlib_glx$enable_gallium_glx" in +xnoyesno|xnonoyes) # Xlib-based GLX dri_modules="x11 xext xcb" PKG_CHECK_MODULES([XLIBGL], [$dri_modules]) @@ -1279,7 +1302,7 @@ xyesyes) GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS" GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS" ;; -xyesno) +xyesnono) # DRI-based GLX PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED]) @@ -1368,11 +1391,11 @@ AC_SUBST([HAVE_XF86VIDMODE]) dnl dnl More GLX setup dnl -case "x$enable_glx$enable_xlib_glx" in -xyesyes) +case "x$enable_glx$enable_xlib_glx$enable_gallium_xlib_glx" in +xnoyesno|xnonoyes) DEFINES="$DEFINES -DUSE_XSHM" ;; -xyesno) +xyesnono) DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING" if test "x$driglx_direct" = xyes; then DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" @@ -1547,6 +1570,7 @@ fi AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS") AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \ + "x$enable_gallium_xlib_glx" = xyes \ "x$enable_osmesa" = xyes -o \ -n "$DRI_DIRS") @@ -1561,7 +1585,7 @@ AC_ARG_WITH([osmesa-bits], [osmesa_bits="$withval"], [osmesa_bits=8]) if test "x$osmesa_bits" != x8; then - if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then + if test "x$enable_dri" = xyes -o "x$enable_any_glx" = xyes; then AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver]) osmesa_bits=8 fi @@ -2412,7 +2436,6 @@ if test "x$USE_VC4_SIMULATOR" = xyes -a "x$HAVE_GALLIUM_ILO" = xyes; then fi AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes) -AM_CONDITIONAL(HAVE_X11_DRIVER, test "x$enable_xlib_glx" = xyes) AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes) AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes) @@ -2602,16 +2625,13 @@ if test "x$enable_dri" != xno; then echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR" fi -case "x$enable_glx$enable_xlib_glx" in -xyesyes) - echo " GLX: Xlib-based" - ;; -xyesno) - echo " GLX: DRI-based" - ;; -*) - echo " GLX: $enable_glx" - ;; +case "x$enable_glx$enable_xlib_glx$enable_gallium_glx" in +xyesnono) + echo " GLX: DRI-based" ;; +xnoyesno) + echo " GLX: Xlib-based" ;; +xnonoyes) + echo " GLX: Xlib-based (Gallium)" ;; esac dnl EGL diff --git a/src/gallium/Makefile.am b/src/gallium/Makefile.am index ef2bc10..34671ca 100644 --- a/src/gallium/Makefile.am +++ b/src/gallium/Makefile.am @@ -138,7 +138,7 @@ if HAVE_DRICOMMON SUBDIRS += state_trackers/dri targets/dri endif -if HAVE_X11_DRIVER +if HAVE_GALLIUM_XLIB_GLX SUBDIRS += state_trackers/glx/xlib targets/libgl-xlib endif diff --git a/src/mesa/Makefile.am b/src/mesa/Makefile.am index 3903818..2c77fa8 100644 --- a/src/mesa/Makefile.am +++ b/src/mesa/Makefile.am @@ -21,7 +21,7 @@ SUBDIRS = . main/tests -if HAVE_X11_DRIVER +if HAVE_XLIB_GLX SUBDIRS += drivers/x11 endif -- 2.5.5
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev