mirror of https://gitlab.freedesktop.org/mesa/mesa
glx: More hacking around versions of XCB that lack GLX_ARB_create_context support
Detect whether a new enough version of XCB is installed at configure time. If it is not, don't enable the extension and don't build the unit tests. v2: Move the AM_CONDIATION outside the case-statement so that it is invoked even for non-GLX builds. This prevents build failures with osmesa, for example. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Tested-by: Robert Hooker <robert.hooker@canonical.com>
This commit is contained in:
parent
c2e537fef2
commit
4becf676e0
22
configure.ac
22
configure.ac
|
@ -1030,12 +1030,34 @@ xyesno)
|
|||
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"
|
||||
;;
|
||||
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)
|
||||
|
||||
GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
|
||||
GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
|
||||
GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
|
||||
|
|
|
@ -123,6 +123,7 @@ __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,
|
||||
|
@ -145,7 +146,9 @@ __glX_send_client_info(struct glx_display *glx_dpy)
|
|||
gl_versions,
|
||||
gl_extension_string,
|
||||
glx_extensions);
|
||||
} else {
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
xcb_glx_client_info(c,
|
||||
GLX_MAJOR_VERSION, GLX_MINOR_VERSION,
|
||||
gl_extension_length,
|
||||
|
|
|
@ -94,7 +94,7 @@ 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 XCB_GLX_CREATE_CONTEXT_ATTRIBS_ARB
|
||||
#ifdef HAVE_XCB_GLX_CREATE_CONTEXT
|
||||
cookie =
|
||||
xcb_glx_create_context_attribs_arb_checked(c,
|
||||
gc->xid,
|
||||
|
|
|
@ -71,7 +71,7 @@ struct extension_info
|
|||
|
||||
/* *INDENT-OFF* */
|
||||
static const struct extension_info known_glx_extensions[] = {
|
||||
#ifdef XCB_GLX_CREATE_CONTEXT_ATTRIBS_ARB
|
||||
#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
|
||||
|
@ -85,7 +85,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 XCB_GLX_CREATE_CONTEXT_ATTRIBS_ARB
|
||||
#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 },
|
||||
|
|
|
@ -4,6 +4,7 @@ AM_CXXFLAGS = -I$(top_builddir)/src/glx -I$(top_builddir)/src/mapi \
|
|||
$(X11_CFLAGS) $(GTEST_CFLAGS)
|
||||
|
||||
if HAVE_GTEST
|
||||
if HAVE_XCB_GLX_CREATE_CONTEXT
|
||||
TESTS = glx_unittest
|
||||
check_PROGRAMS = glx_unittest
|
||||
|
||||
|
@ -13,4 +14,5 @@ glx_unittest_SOURCES = \
|
|||
fake_glx_screen.cpp
|
||||
|
||||
glx_unittest_LDADD = $(top_builddir)/src/glx/libglx.a $(GTEST_LIBS) -lgtest_main
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
|
Loading…
Reference in New Issue