Thinking more about this, would it be better to implement as a single --enable-glx=dri|xlib|gallium-xlib option instead of three separate conflicting options? Most of the implementation would remain the same but it would certainly simplify the set of configure options a bit.
- Chuck On Thu, Apr 14, 2016 at 3:44 PM, Chuck Atkins <[email protected]> wrote: > 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 [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
