From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51150) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZZdR3-00044R-0Y for qemu-devel@nongnu.org; Wed, 09 Sep 2015 07:21:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZZdR2-00053C-2T for qemu-devel@nongnu.org; Wed, 09 Sep 2015 07:21:04 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35298) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZZdR1-000534-Ur for qemu-devel@nongnu.org; Wed, 09 Sep 2015 07:21:04 -0400 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id 897628EA2F for ; Wed, 9 Sep 2015 11:21:03 +0000 (UTC) From: Gerd Hoffmann Date: Wed, 9 Sep 2015 13:20:52 +0200 Message-Id: <1441797654-15350-8-git-send-email-kraxel@redhat.com> In-Reply-To: <1441797654-15350-1-git-send-email-kraxel@redhat.com> References: <1441797654-15350-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PATCH 7/9] opengl: add egl-context.[ch] helpers List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Gerd Hoffmann Add helper functions to manage opengl contexts using egl. Signed-off-by: Gerd Hoffmann --- include/ui/egl-context.h | 14 ++++++++++++++ ui/Makefile.objs | 1 + ui/egl-context.c | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 include/ui/egl-context.h create mode 100644 ui/egl-context.c diff --git a/include/ui/egl-context.h b/include/ui/egl-context.h new file mode 100644 index 0000000..a1c8007 --- /dev/null +++ b/include/ui/egl-context.h @@ -0,0 +1,14 @@ +#ifndef EGL_CONTEXT_H +#define EGL_CONTEXT_H + +#include "ui/console.h" +#include "ui/egl-helpers.h" + +qemu_gl_context qemu_egl_create_context(DisplayChangeListener *dcl, + struct qemu_gl_params *params); +void qemu_egl_destroy_context(DisplayChangeListener *dcl, qemu_gl_context ctx); +int qemu_egl_make_context_current(DisplayChangeListener *dcl, + qemu_gl_context ctx); +qemu_gl_context qemu_egl_get_current_context(DisplayChangeListener *dcl); + +#endif /* EGL_CONTEXT_H */ diff --git a/ui/Makefile.objs b/ui/Makefile.objs index c62d4d9..9bc64a0 100644 --- a/ui/Makefile.objs +++ b/ui/Makefile.objs @@ -31,6 +31,7 @@ ifeq ($(CONFIG_OPENGL),y) common-obj-y += shader.o common-obj-y += console-gl.o common-obj-y += egl-helpers.o +common-obj-y += egl-context.o common-obj-$(CONFIG_GTK) += gtk-egl.o endif diff --git a/ui/egl-context.c b/ui/egl-context.c new file mode 100644 index 0000000..233ed37 --- /dev/null +++ b/ui/egl-context.c @@ -0,0 +1,34 @@ +#include "qemu-common.h" +#include "ui/egl-context.h" + +qemu_gl_context qemu_egl_create_context(DisplayChangeListener *dcl, + struct qemu_gl_params *params) +{ + EGLContext ctx; + EGLint ctx_att[] = { + EGL_CONTEXT_CLIENT_VERSION, params->major_ver, + EGL_CONTEXT_MINOR_VERSION_KHR, params->minor_ver, + EGL_NONE + }; + + ctx = eglCreateContext(qemu_egl_display, qemu_egl_config, + eglGetCurrentContext(), ctx_att); + return ctx; +} + +void qemu_egl_destroy_context(DisplayChangeListener *dcl, qemu_gl_context ctx) +{ + eglDestroyContext(qemu_egl_display, ctx); +} + +int qemu_egl_make_context_current(DisplayChangeListener *dcl, + qemu_gl_context ctx) +{ + return eglMakeCurrent(qemu_egl_display, + EGL_NO_SURFACE, EGL_NO_SURFACE, ctx); +} + +qemu_gl_context qemu_egl_get_current_context(DisplayChangeListener *dcl) +{ + return eglGetCurrentContext(); +} -- 1.8.3.1