[Mesa-dev] [PATCH] glx: Refactor the configure options for glx implementation choice
Chuck Atkins
chuck.atkins at kitware.com
Fri Apr 15 16:18:18 UTC 2016
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.
- Chuck
On Fri, Apr 15, 2016 at 12:08 PM, Brian Paul <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 | 108
>> +++++++++++++++++++++++++-----------------------
>> src/gallium/Makefile.am | 2 +-
>> src/mesa/Makefile.am | 2 +-
>> 3 files changed, 59 insertions(+), 53 deletions(-)
>>
>> diff --git a/configure.ac b/configure.ac
>> index 8c82c43..090b7af 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -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
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160415/4710e3dc/attachment-0001.html>
More information about the mesa-dev
mailing list