[Mesa-dev] [PATCH] mesa: Require current libxcb.

Ian Romanick idr at freedesktop.org
Fri Jul 6 09:30:15 PDT 2012


On 07/05/2012 03:08 PM, Eric Anholt wrote:
> Without that, people with buggy apps that looked at just the server
> string for GLX_ARB_create_context would call this function that just
> threw an error when you tried to make a context.  Google shows plenty
> of complaints about this.

Oh yeah.  I never went back and did this.  I thought the main problem 
was various Unigen demos that only looked at the client string.  Either way,

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

> ---
>   configure.ac              |   21 +--------------------
>   src/glx/clientinfo.c      |    7 +------
>   src/glx/create_context.c  |   14 --------------
>   src/glx/glxextensions.c   |    9 ---------
>   src/glx/tests/Makefile.am |    3 ---
>   5 files changed, 2 insertions(+), 52 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 46265a2..a76515b 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1030,29 +1030,12 @@ xyesno)
>           GL_PC_CFLAGS="$X11_INCLUDES"
>
>           # XCB can only be used from pkg-config
> -        PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
> +        PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx>= 1.8.1])
>           GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
>           X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
>           GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
>       fi
>
> -    # Check to see if the xcb-glx library is new enough to support
> -    # GLX_ARB_create_context.  This bit of hackery is necessary until XCB 1.8
> -    # is released.
> -    save_CPPFLAGS="$CPPFLAGS"
> -    save_LDFLAGS="$LDFLAGS"
> -    CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
> -    LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
> -    AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
> -        [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
> -        [HAVE_XCB_GLX_CREATE_CONTEXT=no])
> -    CPPFLAGS="$save_CPPFLAGS"
> -    LDFLAGS="$save_LDFLAGS"
> -
> -    if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
> -        X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
> -    fi
> -
>       # need DRM libs, -lpthread, etc.
>       GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
>       GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
> @@ -1061,8 +1044,6 @@ esac
>
>   # This is outside the case (above) so that it is invoked even for non-GLX
>   # builds.
> -AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
> -    test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
>   AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
>
>   GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
> diff --git a/src/glx/clientinfo.c b/src/glx/clientinfo.c
> index 97d43ce..429e9a3 100644
> --- a/src/glx/clientinfo.c
> +++ b/src/glx/clientinfo.c
> @@ -39,7 +39,6 @@ __glX_send_client_info(struct glx_display *glx_dpy)
>      Bool any_screen_has_ARB_create_context = False;
>      Bool any_screen_has_ARB_create_context_profile = False;
>      unsigned i;
> -#ifdef HAVE_XCB_GLX_CREATE_CONTEXT
>      static const uint32_t gl_versions[] = {
>         1, 4,
>      };
> @@ -48,7 +47,6 @@ __glX_send_client_info(struct glx_display *glx_dpy)
>      };
>      static const char glx_extensions[] =
>         "GLX_ARB_create_context GLX_ARB_create_context_profile";
> -#endif
>
>      /* There are three possible flavors of the client info structure that the
>       * client could send to the server.  The version sent depends on the
> @@ -125,7 +123,6 @@ __glX_send_client_info(struct glx_display *glx_dpy)
>       * THE ORDER IS IMPORTANT.  We want to send the most recent version of the
>       * protocol that the server can support.
>       */
> -#ifdef HAVE_XCB_GLX_CREATE_CONTEXT
>      if (glx_dpy->majorVersion == 1&&  glx_dpy->minorVersion == 4
>          &&  any_screen_has_ARB_create_context_profile) {
>         xcb_glx_set_client_info_2arb(c,
> @@ -148,9 +145,7 @@ __glX_send_client_info(struct glx_display *glx_dpy)
>   				  gl_versions,
>   				  gl_extension_string,
>   				  glx_extensions);
> -   } else
> -#endif
> -   {
> +   } else {
>         xcb_glx_client_info(c,
>   			  GLX_MAJOR_VERSION, GLX_MINOR_VERSION,
>   			  gl_extension_length,
> diff --git a/src/glx/create_context.c b/src/glx/create_context.c
> index a1a55b3..a755e83 100644
> --- a/src/glx/create_context.c
> +++ b/src/glx/create_context.c
> @@ -99,7 +99,6 @@ glXCreateContextAttribsARB(Display *dpy, GLXFBConfig config,
>       * the protocol error and handle it.  Part of handling the error is freeing
>       * the possibly non-NULL value returned by this function.
>       */
> -#ifdef HAVE_XCB_GLX_CREATE_CONTEXT
>      cookie =
>         xcb_glx_create_context_attribs_arb_checked(c,
>   						 gc->xid,
> @@ -111,19 +110,6 @@ glXCreateContextAttribsARB(Display *dpy, GLXFBConfig config,
>   						 (const uint32_t *)
>   						 attrib_list);
>      err = xcb_request_check(c, cookie);
> -#else
> -   /* This is a hugely ugly hack to make things compile on systems that lack
> -    * the proper XCB version.
> -    */
> -   memset(&cookie, 0, sizeof(cookie));
> -
> -   err = calloc(1, sizeof(*err));
> -   err->error_code = BadRequest;
> -   err->sequence = dpy->request;
> -   err->resource_id = gc->xid;
> -   err->minor_code = gc->majorOpcode;
> -   err->major_code = 34;
> -#endif
>      if (err != NULL) {
>         gc->vtable->destroy(gc);
>         gc = NULL;
> diff --git a/src/glx/glxextensions.c b/src/glx/glxextensions.c
> index 86dc7d0..73b84dc 100644
> --- a/src/glx/glxextensions.c
> +++ b/src/glx/glxextensions.c
> @@ -71,13 +71,8 @@ struct extension_info
>
>   /* *INDENT-OFF* */
>   static const struct extension_info known_glx_extensions[] = {
> -#ifdef HAVE_XCB_GLX_CREATE_CONTEXT
>      { GLX(ARB_create_context),          VER(0,0), Y, N, N, N },
>      { GLX(ARB_create_context_profile),  VER(0,0), Y, N, N, N },
> -#else
> -   { GLX(ARB_create_context),          VER(0,0), N, N, N, N },
> -   { GLX(ARB_create_context_profile),  VER(0,0), N, N, N, N },
> -#endif
>      { GLX(ARB_get_proc_address),        VER(1,4), Y, N, Y, N },
>      { GLX(ARB_multisample),             VER(1,4), Y, Y, N, N },
>      { GLX(ATI_pixel_format_float),      VER(0,0), N, N, N, N },
> @@ -85,11 +80,7 @@ static const struct extension_info known_glx_extensions[] = {
>      { GLX(EXT_visual_info),             VER(0,0), Y, Y, N, N },
>      { GLX(EXT_visual_rating),           VER(0,0), Y, Y, N, N },
>      { GLX(EXT_framebuffer_sRGB),        VER(0,0), Y, Y, N, N },
> -#ifdef HAVE_XCB_GLX_CREATE_CONTEXT
>      { GLX(EXT_create_context_es2_profile), VER(0,0), Y, N, N, Y },
> -#else
> -   { GLX(EXT_create_context_es2_profile), VER(0,0), N, N, N, N },
> -#endif
>      { GLX(MESA_copy_sub_buffer),        VER(0,0), Y, N, N, N },
>      { GLX(MESA_multithread_makecurrent),VER(0,0), Y, N, Y, N },
>      { GLX(MESA_swap_control),           VER(0,0), Y, N, N, Y },
> diff --git a/src/glx/tests/Makefile.am b/src/glx/tests/Makefile.am
> index b0d1db5..ad18f85 100644
> --- a/src/glx/tests/Makefile.am
> +++ b/src/glx/tests/Makefile.am
> @@ -5,7 +5,6 @@ AM_CPPFLAGS = \
>   	-I$(top_builddir)/include \
>   	$(X11_CFLAGS)
>
> -if HAVE_XCB_GLX_CREATE_CONTEXT
>   TESTS = glx-test
>   check_PROGRAMS = glx-test
>
> @@ -20,5 +19,3 @@ glx_test_LDADD = \
>   	$(top_builddir)/src/glx/libglx.la \
>   	$(top_builddir)/src/gtest/libgtest.la \
>   	-lpthread
> -
> -endif



More information about the mesa-dev mailing list