[Mesa-dev] [PATCH] glx: Refactor the configure options for glx implementation choice

Brian Paul brianp at vmware.com
Fri Apr 15 16:50:12 UTC 2016


On 04/15/2016 10:18 AM, Chuck Atkins wrote:
> The problem this is trying to solve is that they both get installed and
> create an ambiguous situation for which one get's used:
>
> libGL.so -> libGL.so.1.5.0
> libGL.so.1 -> libGL.so.1.6.0
> libGL.so.1.5.0
> libGL.so.1.6.0
>
> I could adjust it so that you can build both versions and if more than
> one is specified then generate a configure-time warning and leave them
> out of the install target but it seems to me that things should be
> getting built if they can't be safely installed.

No, let's not get too crazy here.  The new approach is fine.
I'm no expert on the autoconf stuff so,

Acked-by: Brian Paul <brianp at vmware.com>


>
> - Chuck
>
> On Fri, Apr 15, 2016 at 12:08 PM, Brian Paul <brianp at vmware.com
> <mailto:brianp at vmware.com>> wrote:
>
>     On 04/15/2016 09:36 AM, Chuck Atkins wrote:
>
>         Instead of cascading support for various different
>         implementations of
>         GLX, all three options are now specified through the --enable-glx
>         option:
>
>             --enable-glx=dri          : Enable the DRI-based GLX
>             --enable-glx=xlib         : Enable the classic Xlib-based GLX
>             --enable-glx=gallium-xlib : Enable the gallium Xlib-based GLX
>             --enable-glx[=yes]        : Defaults to dri if DRI is
>         enabled, else
>                                         gallium-xlib if gallium is
>         enabled, else
>                                         xlib
>
>         This removes the --enable-xlib-glx option and fixes a bug in
>         which both
>         the classic xlib-glx and gallium xlib-glx implementations were
>         getting
>         built causing differnt versioned and conflicting libGL libraries
>         to be
>         installed.
>
>
>     So we'll no longer be able to build both the "xlib" and
>     "gallium-xlib" at the same time, right?  I sometimes switch between
>     the old swrast and gallium libs with LD_LIBRARY_PATH to compare
>     things.  But I guess I can live without that since I don't do that
>     as much as I used to.
>
>     -Brian
>
>
>
>         ---
>         configure.ac
>         <https://urldefense.proofpoint.com/v2/url?u=http-3A__configure.ac&d=BQMFaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=H9WyqeKR0cxyNZp_Th4bYrSTBOjhUIgVYXAah53BVQE&s=Ic44DtXEBxzWJTICqwuDGg2ajpIlEzCz0QNY8d_hZ9Y&e=>
>                    | 108 +++++++++++++++++++++++++-----------------------
>            src/gallium/Makefile.am |   2 +-
>            src/mesa/Makefile.am    |   2 +-
>            3 files changed, 59 insertions(+), 53 deletions(-)
>
>         diff --git a/configure.ac
>         <https://urldefense.proofpoint.com/v2/url?u=http-3A__configure.ac&d=BQMFaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=H9WyqeKR0cxyNZp_Th4bYrSTBOjhUIgVYXAah53BVQE&s=Ic44DtXEBxzWJTICqwuDGg2ajpIlEzCz0QNY8d_hZ9Y&e=>
>         b/configure.ac
>         <https://urldefense.proofpoint.com/v2/url?u=http-3A__configure.ac&d=BQMFaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=H9WyqeKR0cxyNZp_Th4bYrSTBOjhUIgVYXAah53BVQE&s=Ic44DtXEBxzWJTICqwuDGg2ajpIlEzCz0QNY8d_hZ9Y&e=>
>         index 8c82c43..090b7af 100644
>         --- a/configure.ac
>         <https://urldefense.proofpoint.com/v2/url?u=http-3A__configure.ac&d=BQMFaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=H9WyqeKR0cxyNZp_Th4bYrSTBOjhUIgVYXAah53BVQE&s=Ic44DtXEBxzWJTICqwuDGg2ajpIlEzCz0QNY8d_hZ9Y&e=>
>         +++ b/configure.ac
>         <https://urldefense.proofpoint.com/v2/url?u=http-3A__configure.ac&d=BQMFaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=H9WyqeKR0cxyNZp_Th4bYrSTBOjhUIgVYXAah53BVQE&s=Ic44DtXEBxzWJTICqwuDGg2ajpIlEzCz0QNY8d_hZ9Y&e=>
>         @@ -858,8 +858,8 @@ AC_ARG_ENABLE([dri3],
>                [enable_dri3="$enableval"],
>                [enable_dri3="$dri3_default"])
>            AC_ARG_ENABLE([glx],
>         -    [AS_HELP_STRING([--enable-glx],
>         -        [enable GLX library @<:@default=enabled@:>@])],
>         +    [AS_HELP_STRING([--enable-glx[=dri|xlib|gallium-xlib]],
>         +        [enable the GLX library and choose an implementation
>         @<:@default=dri@:>@])],
>                [enable_glx="$enableval"],
>                [enable_glx=yes])
>            AC_ARG_ENABLE([osmesa],
>         @@ -925,11 +925,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 +983,47 @@ 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
>         -
>         -# 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
>         +# Validate GLX options
>         +if test "x$enable_glx" = xyes; then
>         +    if test "x$enable_dri" = xyes; then
>         +        enable_glx=dri
>         +    elif test -n "$with_gallium_drivers"; then
>         +        enable_glx=gallium-xlib
>         +    else
>         +        enable_glx=xlib
>         +    fi
>            fi
>         +case "x$enable_glx" in
>         +xdri | xxlib | xgallium-xlib)
>         +    # GLX requires OpenGL
>         +    if test "x$enable_opengl" = xno; then
>         +        AC_MSG_ERROR([GLX cannot be built without OpenGL])
>         +    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
>         -fi
>         +    # Check individual dependencies
>         +    case "x$enable_glx" in
>         +    xdri)
>         +        if test "x$enable_dri" = xno; then
>         +            AC_MSG_ERROR([DRI-based GLX requires DRI to be
>         enabled])
>         +        fi
>         +        ;;
>         +    xxlib | xgallium-xlib )
>         +        if test "x$enable_dri" = xyes; then
>         +            AC_MSG_ERROR([Xlib-based GLX cannot be built with
>         DRI enabled])
>         +        fi
>         +        ;;
>         +    esac
>         +    ;;
>         +xno)
>         +    ;;
>         +*)
>         +    AC_MSG_ERROR([Illegal value for --enable-dri: $enable_dri])
>         +    ;;
>         +esac
>
>         -AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xyes -a \
>         -                                  "x$enable_dri" = xyes)
>         +AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xdri)
>         +AM_CONDITIONAL(HAVE_XLIB_GLX, test "x$enable_glx" = xxlib)
>         +AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, test "x$enable_glx" =
>         xgallium-xlib)
>
>            # Check for libdrm
>            PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
>         @@ -1072,10 +1079,6 @@ dnl
>            dnl Driver specific build directories
>            dnl
>
>         -if test -n "$with_gallium_drivers" -a
>         "x$enable_glx$enable_xlib_glx"
>         = xyesyes; then
>         -    NEED_WINSYS_XLIB="yes"
>         -fi
>         -
>            if test "x$enable_gallium_osmesa" = xyes; then
>                if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
>                    AC_MSG_ERROR([gallium_osmesa requires the gallium
>         swrast driver])
>         @@ -1268,8 +1271,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" in
>         +xxlib | xgallium-xlib)
>                # Xlib-based GLX
>                dri_modules="x11 xext xcb"
>                PKG_CHECK_MODULES([XLIBGL], [$dri_modules])
>         @@ -1279,7 +1282,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)
>         +xdri)
>                # DRI-based GLX
>                PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
>
>         @@ -1368,11 +1371,11 @@ AC_SUBST([HAVE_XF86VIDMODE])
>            dnl
>            dnl More GLX setup
>            dnl
>         -case "x$enable_glx$enable_xlib_glx" in
>         -xyesyes)
>         +case "x$enable_glx" in
>         +xxlib | xgallium-xlib)
>                DEFINES="$DEFINES -DUSE_XSHM"
>                ;;
>         -xyesno)
>         +xdri)
>                DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
>                if test "x$driglx_direct" = xyes; then
>                    DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
>         @@ -1546,7 +1549,8 @@ if test -n "$with_dri_drivers"; then
>            fi
>
>            AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
>         -AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
>         +AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_glx" = xxlib -o \
>         +                                  "x$enable_glx" =
>         xgallium-xlib -o \
>                                              "x$enable_osmesa" = xyes -o \
>                                              -n "$DRI_DIRS")
>
>         @@ -1561,7 +1565,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_glx" != xno; then
>                    AC_MSG_WARN([Ignoring OSMesa channel bits because of
>         non-OSMesa driver])
>                    osmesa_bits=8
>                fi
>         @@ -2402,7 +2406,7 @@ AM_CONDITIONAL(HAVE_SWRAST_DRI, test
>         x$HAVE_SWRAST_DRI = xyes)
>            AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test
>         "x$HAVE_GALLIUM_R300" = xyes -o \
>
>         "x$HAVE_GALLIUM_R600" = xyes -o \
>
>         "x$HAVE_GALLIUM_RADEONSI" = xyes)
>         -AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$NEED_WINSYS_XLIB" = xyes)
>         +AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$enable_glx" =
>         xgallium-xlib)
>            AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
>            AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
>            AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
>         @@ -2412,7 +2416,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,12 +2605,15 @@ 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)
>         +case "x$enable_glx" in
>         +xdri)
>         +    echo "        GLX:             DRI-based"
>         +    ;;
>         +xxlib)
>                echo "        GLX:             Xlib-based"
>                ;;
>         -xyesno)
>         -    echo "        GLX:             DRI-based"
>         +xgallium-xlib)
>         +    echo "        GLX:             Xlib-based (Gallium)"
>                ;;
>            *)
>                echo "        GLX:             $enable_glx"
>         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
>
>
>



More information about the mesa-dev mailing list