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 > --- > 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))) Konsole output [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: > Konsole output qemu/ui/gtk.c:1742:9: Fehler: »gtk_widget_set_double_buffered« is deprecated (declared at /usr/include/gtk-3.0/gtk/gtkwidget.h:896) [-Werror=deprecated-declarations] (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