diff options
author | Eric Anholt <[email protected]> | 2012-07-04 11:58:40 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2012-07-12 12:29:12 -0700 |
commit | 6882381a2efbdf06b7002d11468c94b9964c2bc8 (patch) | |
tree | 05e78c7dc8cb8783d1a471ef207c9bf9a72591c1 | |
parent | f92873be2c7fcb07154282bd0e418a4c88b6507e (diff) |
mesa: Require current libxcb.
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.
Reviewed-by: Kenneth Graunke <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
-rw-r--r-- | configure.ac | 21 | ||||
-rw-r--r-- | src/glx/clientinfo.c | 7 | ||||
-rw-r--r-- | src/glx/create_context.c | 14 | ||||
-rw-r--r-- | src/glx/glxextensions.c | 10 | ||||
-rw-r--r-- | src/glx/tests/Makefile.am | 3 |
5 files changed, 2 insertions, 53 deletions
diff --git a/configure.ac b/configure.ac index b5250f32148..08ea5beb400 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 97d43cea0e3..429e9a3bfa7 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 a1a55b33538..a755e83f448 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 9ddc39d98ca..eb0890e23f1 100644 --- a/src/glx/glxextensions.c +++ b/src/glx/glxextensions.c @@ -71,15 +71,9 @@ 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 }, { GLX(ARB_create_context_robustness), 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 }, - { GLX(ARB_create_context_robustness), 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 }, @@ -87,11 +81,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 b0d1db5c2d6..ad18f85fe01 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 |