[Mesa-dev] [PATCH] glx: conditionaly build dri3 and present loader (v3)

Armin K. krejzi at email.com
Fri Nov 8 16:46:11 PST 2013


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 <idr at freedesktop.org>
> 
> Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
> 
>> CC: Aaron Watry <awatry at gmail.com>
>> CC: Brian Paul <brianp at 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);
>>     }
>>
> 



More information about the mesa-dev mailing list