qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 4/4] gtk: add opengl support, using egl


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:
> 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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]