AC_SUBST(GBM_CFLAGS)
AC_SUBST(GBM_LIBS)
-PKG_CHECK_MODULES([OPENGL], [gl])
+AC_MSG_CHECKING([whether to use OpenGLES2 instead of OpenGL])
+AC_ARG_ENABLE([gles2],
+ [AS_HELP_STRING([--enable-gles2], [whether to use OpenGLES2 instead of OpenGL])],
+ [force_gles2="$enableval";
+ AC_DEFINE([USE_GLES2], [1], [Define if OpenGLES2 should be used])],
+ [force_gles2=no])
+AC_MSG_RESULT([$force_gles2])
+
+if test x$force_gles2 = xyes ; then
+ PKG_CHECK_MODULES([OPENGLES2], [glesv2])
+ OPENGL_CFLAGS=$OPENGLES2_CFLAGS
+ OPENGL_LIBS=$OPENGLES2_LIBS
+else
+ PKG_CHECK_MODULES([OPENGL], [gl])
+fi
+
AC_SUBST(OPENGL_CFLAGS)
AC_SUBST(OPENGL_LIBS)
#include <EGL/egl.h>
#include <EGL/eglext.h>
-#include <GL/gl.h>
-#include <GL/glext.h>
+
+#ifdef USE_GLES2
+ #include <GLES2/gl2.h>
+ #include <GLES2/gl2ext.h>
+#else
+ #include <GL/gl.h>
+ #include <GL/glext.h>
+#endif
#include "log.h"
#include "output.h"
EGLint major, minor;
int ret;
const char *ext;
+ EGLenum api;
+
+#ifdef USE_GLES2
+ static const EGLint ctx_attribs[] =
+ { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE };
+#else
+ static const EGLint *ctx_attribs = NULL;
+#endif
if (!out || !gbm)
return -EINVAL;
goto err_display;
}
- if (!eglBindAPI(EGL_OPENGL_API)) {
+#ifdef USE_GLES2
+ api = EGL_OPENGL_ES_API;
+#else
+ api = EGL_OPENGL_API;
+#endif
+
+ if (!eglBindAPI(api)) {
log_warning("context: cannot bind EGL OpenGL API\n");
ret = -EFAULT;
goto err_display;
}
ctx->context = eglCreateContext(ctx->display, NULL, EGL_NO_CONTEXT,
- NULL);
+ ctx_attribs);
if (!ctx->context) {
log_warning("context: cannot create EGL context\n");
ret = -EFAULT;