[Mesa-dev] [PATCH 1/2] glx: Fix build in GLX_DIRECT_RENDERING !GLX_USE_APPLEGL !GLX_USE_DRM case
Aaron Watry
awatry at gmail.com
Tue Jun 3 07:19:18 PDT 2014
On Tue, Jun 3, 2014 at 8:14 AM, Jon TURNEY <jon.turney at dronecode.org.uk> wrote:
> Some untangling to fix building in the dri_platform=none, --enable-driglx-direct
> case, where only driswast can be used.
>
> Turn the test for including the glXGetScreenDriver()/glXGetScreenDriver()
> interface used by xdriinfo from !GLX_USE_APPLEGL into a positive form, as it is
> only useful when dri_platform=drm
>
> Add additional GLX_USE_DRM tests so DRI[123] renderers are only used when
> dri_platform=drm
>
> Note that swrast and indirect must still be disabled in the APPLEGL case at the
> moment, which makes things more complex than they need to be. More untangling
> is needed to allow that
>
> Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
> ---
> configure.ac | 1 +
> src/glx/glxcmds.c | 2 +-
> src/glx/glxext.c | 17 ++++++++++++-----
> 3 files changed, 14 insertions(+), 6 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 9c64400..d2adb15 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -939,6 +939,7 @@ xyesno)
>
> if test x"$driglx_direct" = xyes; then
> if test x"$dri_platform" = xdrm ; then
> + DEFINES="$DEFINES -DGLX_USE_DRM"
> if test "x$have_libdrm" != xyes; then
> AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
> fi
> diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
> index c8de792..04d8db1 100644
> --- a/src/glx/glxcmds.c
> +++ b/src/glx/glxcmds.c
> @@ -2581,7 +2581,7 @@ static const struct name_address_pair GLX_functions[] = {
> GLX_FUNCTION2(glXReleaseTexImageEXT, __glXReleaseTexImageEXT),
> #endif
>
> -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
> +#if defined(GLX_DIRECT_RENDERING) && defined(GLX_USE_DRM)
> /*** DRI configuration ***/
> GLX_FUNCTION(glXGetScreenDriver),
> GLX_FUNCTION(glXGetDriverConfig),
> diff --git a/src/glx/glxext.c b/src/glx/glxext.c
> index 8528e88..94582f6 100644
> --- a/src/glx/glxext.c
> +++ b/src/glx/glxext.c
> @@ -242,6 +242,7 @@ glx_display_free(struct glx_display *priv)
> (*priv->driswDisplay->destroyDisplay) (priv->driswDisplay);
> priv->driswDisplay = NULL;
>
> +#if defined (GLX_USE_DRM)
> if (priv->driDisplay)
> (*priv->driDisplay->destroyDisplay) (priv->driDisplay);
> priv->driDisplay = NULL;
> @@ -253,7 +254,8 @@ glx_display_free(struct glx_display *priv)
> if (priv->dri3Display)
> (*priv->dri3Display->destroyDisplay) (priv->dri3Display);
> priv->dri3Display = NULL;
> -#endif
> +#endif /* GLX_USE_DRM */
> +#endif /* GLX_DIRECT_RENDERING && !GLX_USE_APPLEGL */
I'm assuming that you meant GLX_DIRECT_RENDERING && GLX_USE_DRM,
right? The other #endif comment changes in the patch look correct,
but this one seems wrong.
--Aaron
>
> free((char *) priv);
> }
> @@ -779,17 +781,20 @@ 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(GLX_USE_DRM)
> #if defined(HAVE_DRI3)
> if (priv->dri3Display)
> psc = (*priv->dri3Display->createScreen) (i, priv);
> -#endif
> +#endif /* HAVE_DRI3 */
> if (psc == NULL && priv->dri2Display)
> psc = (*priv->dri2Display->createScreen) (i, priv);
> if (psc == NULL && priv->driDisplay)
> psc = (*priv->driDisplay->createScreen) (i, priv);
> +#endif /* GLX_USE_DRM */
> if (psc == NULL && priv->driswDisplay)
> psc = (*priv->driswDisplay->createScreen) (i, priv);
> -#endif
> +#endif /* GLX_DIRECT_RENDERING && !GLX_USE_APPLEGL */
> +
> #if defined(GLX_USE_APPLEGL)
> if (psc == NULL)
> psc = applegl_create_screen(i, priv);
> @@ -873,17 +878,19 @@ __glXInitialize(Display * dpy)
> ** Note: This _must_ be done before calling any other DRI routines
> ** (e.g., those called in AllocAndFetchScreenConfigs).
> */
> +#if defined(GLX_USE_DRM)
> if (glx_direct && glx_accel) {
> #if defined(HAVE_DRI3)
> if (!getenv("LIBGL_DRI3_DISABLE"))
> dpyPriv->dri3Display = dri3_create_display(dpy);
> -#endif
> +#endif /* HAVE_DRI3 */
> dpyPriv->dri2Display = dri2CreateDisplay(dpy);
> dpyPriv->driDisplay = driCreateDisplay(dpy);
> }
> +#endif /* GLX_USE_DRM */
> if (glx_direct)
> dpyPriv->driswDisplay = driswCreateDisplay(dpy);
> -#endif
> +#endif /* GLX_DIRECT_RENDERING && !GLX_USE_APPLEGL */
>
> #ifdef GLX_USE_APPLEGL
> if (!applegl_create_display(dpyPriv)) {
> --
> 1.8.5.5
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list