|
From: | Max Reitz |
Subject: | Re: [Qemu-devel] [PATCH 4/4] gtk: add opengl support, using egl |
Date: | Wed, 20 May 2015 15:29:05 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 |
On 19.05.2015 16:29, Gerd Hoffmann
wrote:
This adds opengl rendering support to the gtk ui, using egl. It's off by default for now, use 'qemu -display gtk,gl=on' to play with this. Note that gtk got native opengl support with release 3.16. There most likely will be a separate implementation for 3.16+, using the native gtk opengl support. This patch covers older versions (and for the time being 3.16 too, hopefully without rendering quirks). Signed-off-by: Gerd Hoffmann <address@hidden> --- include/ui/console.h | 2 +- include/ui/gtk.h | 23 +++++++++ ui/Makefile.objs | 3 ++ ui/gtk-egl.c | 141 +++++++++++++++++++++++++++++++++++++++++++++++++++ ui/gtk.c | 77 ++++++++++++++++++++++------ vl.c | 11 +++- 6 files changed, 240 insertions(+), 17 deletions(-) create mode 100644 ui/gtk-egl.c I can't give any R-b, because that would require really digging into Gtk... The code is pretty similar to the SDL code, though (not by chance I guess), so it looks fine to me. If it would compile, that is, see below. (It does work with Gtk 2, though) ((at least on my laptop with mesa; on my desktop with fglrx, creating the shader fails, which may or may not have to do something with "libEGL warning: DRI2: failed to authenticate" (which is probably in turn my own fault for using a proprietary driver))) [snip] diff --git a/ui/gtk.c b/ui/gtk.c index c58028f..bf66014 100644 --- a/ui/gtk.c +++ b/ui/gtk.c [snip] @@ -1713,7 +1737,16 @@ static GSList *gd_vc_gfx_init(GtkDisplayState *s, VirtualConsole *vc, gtk_notebook_append_page(GTK_NOTEBOOK(s->notebook), vc->tab_item, gtk_label_new(vc->label)); - vc->gfx.dcl.ops = &dcl_ops; +#if defined(CONFIG_OPENGL) + if (display_opengl) { + gtk_widget_set_double_buffered(vc->gfx.drawing_area, FALSE); gcc said: > (yes, the mix of German and English is gcc's doing) But then again it didn't compile before, either: qemu/ui/gtk.c:1927:5: Fehler: »gdk_cursor_new« is deprecated (declared at /usr/include/gtk-3.0/gdk/gdkcursor.h:223) [-Werror=deprecated-declarations] But that function was deprecated in 3.16, gtk_widget_set_double_buffered() was deprecated in 3.14 already (as far as I can see from the header file alone). Max |
[Prev in Thread] | Current Thread | [Next in Thread] |