mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
gtk: add opengl support, using egl
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 <kraxel@redhat.com>
This commit is contained in:
parent
7ced9e9f6d
commit
97edf3bd5e
6 changed files with 253 additions and 17 deletions
|
@ -22,6 +22,10 @@
|
|||
#include <X11/XKBlib.h>
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_OPENGL)
|
||||
#include "ui/egl-helpers.h"
|
||||
#endif
|
||||
|
||||
/* Compatibility define to let us build on both Gtk2 and Gtk3 */
|
||||
#if GTK_CHECK_VERSION(3, 0, 0)
|
||||
static inline void gdk_drawable_get_size(GdkWindow *w, gint *ww, gint *wh)
|
||||
|
@ -41,6 +45,12 @@ typedef struct VirtualGfxConsole {
|
|||
cairo_surface_t *surface;
|
||||
double scale_x;
|
||||
double scale_y;
|
||||
#if defined(CONFIG_OPENGL)
|
||||
ConsoleGLState *gls;
|
||||
EGLContext ectx;
|
||||
EGLSurface esurface;
|
||||
int glupdates;
|
||||
#endif
|
||||
} VirtualGfxConsole;
|
||||
|
||||
#if defined(CONFIG_VTE)
|
||||
|
@ -73,4 +83,17 @@ typedef struct VirtualConsole {
|
|||
};
|
||||
} VirtualConsole;
|
||||
|
||||
/* ui/gtk.c */
|
||||
void gd_update_windowsize(VirtualConsole *vc);
|
||||
|
||||
/* ui/gtk-egl.c */
|
||||
void gd_egl_init(VirtualConsole *vc);
|
||||
void gd_egl_draw(VirtualConsole *vc);
|
||||
void gd_egl_update(DisplayChangeListener *dcl,
|
||||
int x, int y, int w, int h);
|
||||
void gd_egl_refresh(DisplayChangeListener *dcl);
|
||||
void gd_egl_switch(DisplayChangeListener *dcl,
|
||||
DisplaySurface *surface);
|
||||
void gtk_egl_init(void);
|
||||
|
||||
#endif /* UI_GTK_H */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue