commit f0b352251894becfcec50de1430bda12c314a464 Author: Gwenole Beauchesne Date: Tue Sep 22 13:00:34 2009 +0000 Fix libva-glx pkgconfig dependencies. commit df0953a951d8a2e5e4b0a28a95ae0f1ac735726e Author: Gwenole Beauchesne Date: Tue Sep 8 12:25:14 2009 +0000 Add generic VA/GLX implementation with TFP and FBO. commit f640b1cf9eab4e5d478239b608ed0d8b68f6c5f6 Author: Gwenole Beauchesne Date: Tue Sep 8 12:15:35 2009 +0000 Move GLX VTable to a new file. commit 70d9cb6d1aa2fc2dde6646f3b692433e0d93d431 Author: Gwenole Beauchesne Date: Fri Aug 28 11:15:51 2009 +0000 Add OpenGL extensions (v3). diff --git a/Makefile.am b/Makefile.am index 07385e6..6fb4cae 100644 --- a/Makefile.am +++ b/Makefile.am @@ -32,10 +32,13 @@ endif pcfiles = libva.pc pcfiles += libva-x11.pc +if USE_GLX +pcfiles += libva-glx.pc +endif pkgconfigdir = @pkgconfigdir@ pkgconfig_DATA = $(pcfiles) -EXTRA_DIST = libva.pc.in libva-x11.pc.in +EXTRA_DIST = libva.pc.in libva-x11.pc.in libva-glx.pc.in CLEANFILES = $(pcfiles) diff --git a/configure.ac b/configure.ac index c3aba90..abef435 100644 --- a/configure.ac +++ b/configure.ac @@ -52,6 +55,11 @@ AC_SUBST(LIBVA_MINOR_VERSION) AC_SUBST(LIBVA_LT_VERSION) AC_SUBST(LIBVA_LT_LDFLAGS) +AC_ARG_ENABLE(glx, + [AC_HELP_STRING([--enable-glx], + [build with OpenGL for X11 support])], + [], [enable_glx=yes]) + AC_ARG_ENABLE(dummy-driver, [AC_HELP_STRING([--enable-dummy-driver], [build dummy video driver])], @@ -100,6 +132,23 @@ if test x$enable_i965_driver = xyes && ! $PKG_CONFIG --atleast-version=2.4 libdr AC_DEFINE_UNQUOTED([ATTRIBUTE_HIDDEN], [$ATTRIBUTE_HIDDEN], [Defined to __attribute__((visibility("hidden"))) when available]) +# Check for OpenGL (X11) +USE_GLX="no" +GL_DEPS_CFLAGS="" +GL_DEPS_LIBS="" + +if test x$enable_glx = xyes; then + AC_CHECK_HEADERS([GL/gl.h]) + AC_CHECK_HEADERS([GL/glx.h]) + AC_CHECK_LIB(GL, glXCreateContext, [ + USE_GLX="yes" + GL_DEPS_LIBS="-lX11 -lGL" + ]) +fi +AC_SUBST(GL_DEPS_CFLAGS) +AC_SUBST(GL_DEPS_LIBS) +AM_CONDITIONAL(USE_GLX, test "$USE_GLX" = "yes") + # We only need the headers, we don't link against the DRM libraries LIBVA_CFLAGS="$DRM_CFLAGS" AC_SUBST(LIBVA_CFLAGS) @@ -119,6 +192,7 @@ AC_OUTPUT([ src/Makefile src/va_version.h src/x11/Makefile + src/glx/Makefile dummy_drv_video/Makefile i965_drv_video/Makefile i965_drv_video/shaders/Makefile @@ -128,5 +202,6 @@ AC_OUTPUT([ test/Makefile libva.pc libva-x11.pc + libva-glx.pc ]) diff --git a/libva-glx.pc.in b/libva-glx.pc.in new file mode 100644 index 0000000..20ba20a --- /dev/null +++ b/libva-glx.pc.in @@ -0,0 +1,12 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ +display=glx + +Name: libva-${display} +Description: Userspace Video Acceleration (VA) ${display} interface +Requires: libva +Version: @PACKAGE_VERSION@ +Libs: -L${libdir} -lva-${display} +Cflags: -I${includedir} diff --git a/src/Makefile.am b/src/Makefile.am index 2f4210a..e50a15f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -28,9 +28,17 @@ INCLUDES = \ LDADD = \ $(LIBVA_LT_LDFLAGS) -lib_LTLIBRARIES = \ - libva.la \ - libva-x11.la +libva_x11_backend = libva-x11.la +libva_x11_backenddir = x11 +if USE_GLX +libva_glx_backend = libva-glx.la +libva_glx_backenddir = glx +else +libva_glx_backend = +libva_glx_backenddir = +endif + +lib_LTLIBRARIES = libva.la $(libva_x11_backend) $(libva_glx_backend) libva_ladir = $(libdir) libva_la_LDFLAGS = $(LDADD) -no-undefined @@ -41,7 +49,14 @@ libva_x11_la_LIBADD = $(libvacorelib) x11/libva_x11.la $(LIBVA_LIBS) $(X11_LIBS libva_x11_la_LDFLAGS = $(LDADD) libva_x11_la_DEPENDENCIES = $(libvacorelib) x11/libva_x11.la -SUBDIRS = x11 +libva_glx_la_SOURCES = +libva_glx_la_LIBADD = $(libvacorelib) glx/libva_glx.la libva-x11.la $(GL_DEPS_LIBS) -ldl +libva_glx_la_LDFLAGS = $(LDADD) +libva_glx_la_DEPENDENCIES = $(libvacorelib) glx/libva_glx.la libva-x11.la + +SUBDIRS = $(libva_x11_backenddir) $(libva_glx_backenddir) + +DIST_SUBDIRS = x11 glx libva_la_SOURCES = va.c diff --git a/src/va_backend.h b/src/va_backend.h index 6f858f5..8f722a3 100644 --- a/src/va_backend.h +++ b/src/va_backend.h @@ -32,9 +32,11 @@ #ifdef IN_LIBVA #include "va.h" #include "x11/va_x11.h" +#include "glx/va_backend_glx.h" #else #include #include +#include #endif #include @@ -372,6 +374,9 @@ struct VADriverVTable unsigned int *chroma_v_offset, void **buffer ); + + /* Optional: GLX support hooks */ + struct VADriverVTableGLX glx; }; struct VADriverContext @@ -394,6 +399,7 @@ struct VADriverContext void *handle; /* dlopen handle */ void *dri_state; + void *glx; /* opaque for GLX code */ }; struct VADisplayContext @@ -413,6 +420,8 @@ struct VADisplayContext VADisplayContextP ctx, char **driver_name ); + + void *opaque; /* opaque for display extensions (e.g. GLX) */ }; typedef VAStatus (*VADriverInit) ( diff --git a/src/x11/va_x11.c b/src/x11/va_x11.c index 9de904e..b8c60fa 100644 --- a/src/x11/va_x11.c +++ b/src/x11/va_x11.c @@ -243,6 +243,7 @@ VADisplay vaGetDisplay ( pDisplayContext->vaIsValid = va_DisplayContextIsValid; pDisplayContext->vaDestroy = va_DisplayContextDestroy; pDisplayContext->vaGetDriverName = va_DisplayContextGetDriverName; + pDisplayContext->opaque = NULL; pDisplayContexts = pDisplayContext; pDriverContext->dri_state = dri_state; dpy = (VADisplay)pDisplayContext;