summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2012-12-27 10:51:02 +0100
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2013-01-09 12:58:32 +0100
commit1108acfcacaa74099dcfd1eb048ea89d1fe11320 (patch)
tree155394adc42642b3ecd60beba4ee1f04dee43ed8
parent4522909af2a6a0ec04eed06f3ee7ab224a58ee51 (diff)
eglglessink: Add configure parameter to chose the EGL window system
Only needed for creating native windows. Conflicts: ext/eglgles/Makefile.am
-rw-r--r--configure.ac92
-rw-r--r--ext/eglgles/Makefile.am5
-rw-r--r--ext/eglgles/video_platform_wrapper.c20
3 files changed, 82 insertions, 35 deletions
diff --git a/configure.ac b/configure.ac
index c3d915a5c..a2100054e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1624,38 +1624,90 @@ AG_GST_CHECK_FEATURE(RSVG, [rsvg decoder], rsvg, [
])
dnl *** eglgles ***
+AC_ARG_WITH([egl-window-system],
+ AS_HELP_STRING([--with-egl-window-system],[EGL window system to use (x11, mali-fb, none)]),
+ [EGL_WINDOW_SYSTEM="$withval"],
+ [EGL_WINDOW_SYSTEM="none"])
+
translit(dnm, m, l) AM_CONDITIONAL(USE_EGLGLES, true)
AG_GST_CHECK_FEATURE(EGLGLES, [eglgles sink], eglgles, [
HAVE_EGLGLES="no"
- PKG_CHECK_MODULES(EGLGLES, egl glesv2, HAVE_EGLGLES="yes", [
- HAVE_EGLGLES="no"
- old_LIBS=$LIBS
- old_CFLAGS=$CFLAGS
- AC_CHECK_LIB([GLESv2], [glEnable],
- [
- AC_CHECK_HEADER([GLES2/gl2.h],
+
+ case "$EGL_WINDOW_SYSTEM" in
+ x11|none)
+ PKG_CHECK_MODULES(EGLGLES, egl glesv2, HAVE_EGLGLES="yes", [
+ HAVE_EGLGLES="no"
+ old_LIBS=$LIBS
+ old_CFLAGS=$CFLAGS
+ AC_CHECK_LIB([GLESv2], [glEnable],
[
- AC_CHECK_LIB([EGL], [eglGetProcAddress],
+ AC_CHECK_HEADER([GLES2/gl2.h],
[
- AC_CHECK_HEADER([EGL/egl.h],
+ AC_CHECK_LIB([EGL], [eglGetProcAddress],
[
- HAVE_EGLGLES="yes"
- EGLGLES_LIBS="-lGLESv2 -lEGL"
- EGLGLES_CFLAGS=""
+ AC_CHECK_HEADER([EGL/egl.h],
+ [
+ HAVE_EGLGLES="yes"
+ EGLGLES_LIBS="-lGLESv2 -lEGL"
+ EGLGLES_CFLAGS=""
+ ])
])
])
])
+ LIBS=$old_LIBS
+ CFLAGS=$old_CFLAGS
])
- LIBS=$old_LIBS
- CFLAGS=$old_CFLAGS
- ])
+
+ if test x"$HAVE_EGLGLES" = x"yes" -a x"$EGL_WINDOW_SYSTEM" = x"x11"; then
+ if test x"$HAVE_X11" != x"yes"; then
+ AC_MSG_ERROR([libX11 not found and is required for EGL X11 window system])
+ else
+ AC_DEFINE(USE_EGL_X11, [1], [Use X11 EGL window system])
+ EGLGLES_CFLAGS="$EGLGLES_CFLAGS $X11_CFLAGS"
+ EGLGLES_LIBS="$EGLGLES_LIBS $X11_LIBS"
+ fi
+ fi
+ ;;
+ mali-fb)
+ HAVE_EGLGLES="no"
+ AC_CHECK_HEADER([EGL/fbdev_window.h],
+ [
+ old_LIBS=$LIBS
+ old_CFLAGS=$CFLAGS
+
+ LIBS="$LIBS -lUMP"
+ AC_CHECK_LIB([Mali], [mali_image_create],
+ [
+ LIBS="$LIBS -lMali"
+ AC_CHECK_LIB([GLESv2], [glEnable],
+ [
+ AC_CHECK_HEADER([GLES2/gl2.h],
+ [
+ AC_CHECK_LIB([EGL], [eglGetProcAddress],
+ [
+ AC_CHECK_HEADER([EGL/egl.h],
+ [
+ HAVE_EGLGLES="yes"
+ EGLGLES_LIBS="-lGLESv2 -lEGL -lMali -lUMP"
+ EGLGLES_CFLAGS=""
+ AC_DEFINE(USE_EGL_MALI_FB, [1], [Use Mali FB EGL window system])
+ ])
+ ])
+ ])
+ ])
+ ])
+
+ LIBS=$old_LIBS
+ CFLAGS=$old_CFLAGS
+ ])
+ ;;
+ *)
+ AC_MSG_ERROR([invalid EGL window system specified])
+ ;;
+ esac
+
AC_SUBST(EGLGLES_CFLAGS)
AC_SUBST(EGLGLES_LIBS)
-
- AC_CHECK_HEADER([EGL/fbdev_window.h], HAVE_FBDEV_EGL="yes", HAVE_FBDEV_EGL="no")
- if test x"$HAVE_FBDEV_EGL" = "xyes"; then
- AC_DEFINE(HAVE_FBDEV_EGL, [1], [Have EGL/fbdev_window.h])
- fi
])
dnl *** timidity ***
diff --git a/ext/eglgles/Makefile.am b/ext/eglgles/Makefile.am
index 2573247ab..0ce49cff6 100644
--- a/ext/eglgles/Makefile.am
+++ b/ext/eglgles/Makefile.am
@@ -5,11 +5,10 @@ libgsteglglessink_la_SOURCES = gsteglglessink.c video_platform_wrapper.c
libgsteglglessink_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \
$(GST_BASE_CFLAGS) \
$(GST_CFLAGS) \
- $(EGLGLES_CFLAGS) \
- $(X11_CFLAGS)
+ $(EGLGLES_CFLAGS)
libgsteglglessink_la_LIBADD = $(GST_LIBS) $(GST_BASE_LIBS) \
- $(GST_PLUGINS_BASE_LIBS) $(EGLGLES_LIBS) $(X11_LIBS) \
+ $(GST_PLUGINS_BASE_LIBS) $(EGLGLES_LIBS) \
-lgstvideo-$(GST_MAJORMINOR) \
-lgstinterfaces-$(GST_MAJORMINOR)
diff --git a/ext/eglgles/video_platform_wrapper.c b/ext/eglgles/video_platform_wrapper.c
index 2fea231c3..85f438493 100644
--- a/ext/eglgles/video_platform_wrapper.c
+++ b/ext/eglgles/video_platform_wrapper.c
@@ -55,14 +55,6 @@
#include <gst/gst.h>
#include "video_platform_wrapper.h"
-#ifdef HAVE_X11
-#include <X11/Xlib.h>
-#endif
-
-#ifdef HAVE_FBDEV_EGL
-#include <EGL/fbdev_window.h>
-#endif
-
GST_DEBUG_CATEGORY_STATIC (eglgles_platform_wrapper);
#define GST_CAT_DEFAULT eglgles_platform_wrapper
@@ -76,7 +68,9 @@ platform_wrapper_init (void)
return TRUE;
}
-#ifdef HAVE_X11
+#ifdef USE_EGL_X11
+#include <X11/Xlib.h>
+
typedef struct
{
Display *display;
@@ -126,11 +120,13 @@ platform_destroy_native_window (EGLNativeDisplayType display,
}
#endif
-#if defined(HAVE_FBDEV_EGL) && !defined(HAVE_X11)
+#ifdef USE_EGL_MALI_FB
+#include <EGL/fbdev_window.h>
+
EGLNativeWindowType
platform_create_native_window (gint width, gint height, gpointer * window_data)
{
- fbdev_window * w = g_slice_new0 (fbdev_window);
+ fbdev_window *w = g_slice_new0 (fbdev_window);
w->width = width;
w->height = height;
@@ -148,7 +144,7 @@ platform_destroy_native_window (EGLNativeDisplayType display,
}
#endif
-#if !defined(HAVE_X11) && !defined(HAVE_FBDEV_EGL)
+#if !defined(USE_EGL_X11) && !defined(USE_EGL_MALI_FB)
/* Dummy functions for creating a native Window */
EGLNativeWindowType
platform_create_native_window (gint width, gint height, gpointer * window_data)