qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH] ui/egl: Reduce required libraries to build with EGL


From: OGAWA Hirofumi
Subject: [Qemu-devel] [PATCH] ui/egl: Reduce required libraries to build with EGL support
Date: Sat, 24 Oct 2015 20:51:19 +0900
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux)

To support EGL (sdl2-gl, gtk-egl, egl-helpers, etc.), we don't need to
install "gl" or "glesv" packages. (Those are used only for milkymist-tmu2).

So, this move check from opengl to egl.

Signed-off-by: OGAWA Hirofumi <address@hidden>
---

 configure            |   34 ++++++++++++++++++++++++++++++++--
 include/ui/console.h |    6 +++---
 include/ui/gtk.h     |    4 ++--
 ui/Makefile.objs     |   20 ++++++++++----------
 ui/gtk.c             |    8 ++++----
 ui/sdl2.c            |    8 ++++----
 vl.c                 |    4 ++--
 7 files changed, 57 insertions(+), 27 deletions(-)

diff -puN configure~separate-egl configure
--- qemu2/configure~separate-egl        2015-10-24 20:45:57.526328468 +0900
+++ qemu2-hirofumi/configure    2015-10-24 20:45:57.546328445 +0900
@@ -306,6 +306,7 @@ smartcard=""
 libusb=""
 usb_redir=""
 opengl=""
+egl=""
 zlib="yes"
 lzo=""
 snappy=""
@@ -1031,6 +1032,10 @@ for opt do
   ;;
   --enable-opengl) opengl="yes"
   ;;
+  --disable-egl) egl="no"
+  ;;
+  --enable-egl) egl="yes"
+  ;;
   --disable-rbd) rbd="no"
   ;;
   --enable-rbd) rbd="yes"
@@ -3209,7 +3214,7 @@ fi
 libs_softmmu="$libs_softmmu $fdt_libs"
 
 ##########################################
-# opengl probe (for sdl2, milkymist-tmu2)
+# opengl probe (for milkymist-tmu2)
 
 # GLX probe, used by milkymist-tmu2
 # this is temporary, code will be switched to egl mid-term.
@@ -3226,7 +3231,7 @@ else
 fi
 
 if test "$opengl" != "no" ; then
-  opengl_pkgs="gl glesv2 epoxy egl"
+  opengl_pkgs="gl glesv2"
   if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then
     opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
     opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
@@ -3241,6 +3246,24 @@ if test "$opengl" != "no" ; then
   fi
 fi
 
+##########################################
+# egl probe (for sdl2/gtk egl)
+
+if test "$egl" != "no" ; then
+  egl_pkgs="epoxy egl"
+  if $pkg_config $egl_pkgs; then
+    egl_cflags="$($pkg_config --cflags $egl_pkgs)"
+    egl_libs="$($pkg_config --libs $egl_pkgs)"
+    egl=yes
+  else
+    if test "$egl" = "yes" ; then
+      feature_not_found "egl" "Please install egl (mesa) devel pkgs: $egl_pkgs"
+    fi
+    egl_cflags=""
+    egl_libs=""
+    egl=no
+  fi
+fi
 
 ##########################################
 # archipelago probe
@@ -4639,6 +4662,7 @@ echo "smartcard support $smartcard"
 echo "libusb            $libusb"
 echo "usb net redir     $usb_redir"
 echo "OpenGL support    $opengl"
+echo "EGL support       $egl"
 echo "libiscsi support  $libiscsi"
 echo "libnfs support    $libnfs"
 echo "build guest agent $guest_agent"
@@ -5030,6 +5054,12 @@ if test "$opengl" = "yes" ; then
   echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
 fi
 
+if test "$egl" = "yes" ; then
+  echo "CONFIG_EGL=y" >> $config_host_mak
+  echo "EGL_CFLAGS=$egl_cflags" >> $config_host_mak
+  echo "EGL_LIBS=$egl_libs" >> $config_host_mak
+fi
+
 if test "$lzo" = "yes" ; then
   echo "CONFIG_LZO=y" >> $config_host_mak
 fi
diff -puN include/ui/console.h~separate-egl include/ui/console.h
--- qemu2/include/ui/console.h~separate-egl     2015-10-24 20:45:57.526328468 
+0900
+++ qemu2-hirofumi/include/ui/console.h 2015-10-24 20:45:57.546328445 +0900
@@ -9,7 +9,7 @@
 #include "qapi-types.h"
 #include "qapi/error.h"
 
-#ifdef CONFIG_OPENGL
+#ifdef CONFIG_EGL
 # include <epoxy/gl.h>
 #endif
 
@@ -121,7 +121,7 @@ struct DisplaySurface {
     pixman_format_code_t format;
     pixman_image_t *image;
     uint8_t flags;
-#ifdef CONFIG_OPENGL
+#ifdef CONFIG_EGL
     GLenum glformat;
     GLenum gltype;
     GLuint texture;
@@ -335,7 +335,7 @@ DisplaySurface *qemu_console_surface(Qem
 
 /* console-gl.c */
 typedef struct ConsoleGLState ConsoleGLState;
-#ifdef CONFIG_OPENGL
+#ifdef CONFIG_EGL
 ConsoleGLState *console_gl_init_context(void);
 void console_gl_fini_context(ConsoleGLState *gls);
 bool console_gl_check_format(DisplayChangeListener *dcl,
diff -puN include/ui/gtk.h~separate-egl include/ui/gtk.h
--- qemu2/include/ui/gtk.h~separate-egl 2015-10-24 20:45:57.530328464 +0900
+++ qemu2-hirofumi/include/ui/gtk.h     2015-10-24 20:45:57.546328445 +0900
@@ -18,7 +18,7 @@
 #include <X11/XKBlib.h>
 #endif
 
-#if defined(CONFIG_OPENGL)
+#if defined(CONFIG_EGL)
 #include "ui/egl-helpers.h"
 #endif
 
@@ -41,7 +41,7 @@ typedef struct VirtualGfxConsole {
     cairo_surface_t *surface;
     double scale_x;
     double scale_y;
-#if defined(CONFIG_OPENGL)
+#if defined(CONFIG_EGL)
     ConsoleGLState *gls;
     EGLContext ectx;
     EGLSurface esurface;
diff -puN ui/Makefile.objs~separate-egl ui/Makefile.objs
--- qemu2/ui/Makefile.objs~separate-egl 2015-10-24 20:45:57.534328459 +0900
+++ qemu2-hirofumi/ui/Makefile.objs     2015-10-24 20:45:57.546328445 +0900
@@ -21,13 +21,13 @@ sdl.mo-objs := sdl.o sdl_zoom.o
 endif
 ifeq ($(CONFIG_SDLABI),2.0)
 sdl.mo-objs := sdl2.o sdl2-input.o sdl2-2d.o
-ifeq ($(CONFIG_OPENGL),y)
+ifeq ($(CONFIG_EGL),y)
 sdl.mo-objs += sdl2-gl.o
 endif
 endif
 sdl.mo-cflags := $(SDL_CFLAGS)
 
-ifeq ($(CONFIG_OPENGL),y)
+ifeq ($(CONFIG_EGL),y)
 common-obj-y += shader.o
 common-obj-y += console-gl.o
 common-obj-y += egl-helpers.o
@@ -35,12 +35,12 @@ common-obj-$(CONFIG_GTK) += gtk-egl.o
 endif
 
 gtk.o-cflags := $(GTK_CFLAGS) $(VTE_CFLAGS)
-gtk-egl.o-cflags := $(GTK_CFLAGS) $(VTE_CFLAGS) $(OPENGL_CFLAGS)
-shader.o-cflags += $(OPENGL_CFLAGS)
-console-gl.o-cflags += $(OPENGL_CFLAGS)
-egl-helpers.o-cflags += $(OPENGL_CFLAGS)
+gtk-egl.o-cflags := $(GTK_CFLAGS) $(VTE_CFLAGS) $(EGL_CFLAGS)
+shader.o-cflags += $(EGL_CFLAGS)
+console-gl.o-cflags += $(EGL_CFLAGS)
+egl-helpers.o-cflags += $(EGL_CFLAGS)
 
-gtk-egl.o-libs += $(OPENGL_LIBS)
-shader.o-libs += $(OPENGL_LIBS)
-console-gl.o-libs += $(OPENGL_LIBS)
-egl-helpers.o-libs += $(OPENGL_LIBS)
+gtk-egl.o-libs += $(EGL_LIBS)
+shader.o-libs += $(EGL_LIBS)
+console-gl.o-libs += $(EGL_LIBS)
+egl-helpers.o-libs += $(EGL_LIBS)
diff -puN ui/gtk.c~separate-egl ui/gtk.c
--- qemu2/ui/gtk.c~separate-egl 2015-10-24 20:45:57.534328459 +0900
+++ qemu2-hirofumi/ui/gtk.c     2015-10-24 20:45:57.546328445 +0900
@@ -603,7 +603,7 @@ static const DisplayChangeListenerOps dc
 };
 
 
-#if defined(CONFIG_OPENGL)
+#if defined(CONFIG_EGL)
 
 /** DisplayState Callbacks (opengl version) **/
 
@@ -675,7 +675,7 @@ static gboolean gd_draw_event(GtkWidget
     int ww, wh;
     int fbw, fbh;
 
-#if defined(CONFIG_OPENGL)
+#if defined(CONFIG_EGL)
     if (vc->gfx.gls) {
         gd_egl_draw(vc);
         return TRUE;
@@ -1754,7 +1754,7 @@ static GSList *gd_vc_gfx_init(GtkDisplay
     gtk_notebook_append_page(GTK_NOTEBOOK(s->notebook),
                              vc->tab_item, gtk_label_new(vc->label));
 
-#if defined(CONFIG_OPENGL)
+#if defined(CONFIG_EGL)
     if (display_opengl) {
         /*
          * gtk_widget_set_double_buffered() was deprecated in 3.14.
@@ -2058,7 +2058,7 @@ void early_gtk_display_init(int opengl)
     case 0:  /* off */
         break;
     case 1: /* on */
-#if defined(CONFIG_OPENGL)
+#if defined(CONFIG_EGL)
         gtk_egl_init();
 #endif
         break;
diff -puN ui/sdl2.c~separate-egl ui/sdl2.c
--- qemu2/ui/sdl2.c~separate-egl        2015-10-24 20:45:57.538328455 +0900
+++ qemu2-hirofumi/ui/sdl2.c    2015-10-24 20:45:57.546328445 +0900
@@ -118,7 +118,7 @@ void sdl2_window_resize(struct sdl2_cons
 static void sdl2_redraw(struct sdl2_console *scon)
 {
     if (scon->opengl) {
-#ifdef CONFIG_OPENGL
+#ifdef CONFIG_EGL
         sdl2_gl_redraw(scon);
 #endif
     } else {
@@ -691,7 +691,7 @@ static const DisplayChangeListenerOps dc
     .dpy_cursor_define    = sdl_mouse_define,
 };
 
-#ifdef CONFIG_OPENGL
+#ifdef CONFIG_EGL
 static const DisplayChangeListenerOps dcl_gl_ops = {
     .dpy_name                = "sdl2-gl",
     .dpy_gfx_update          = sdl2_gl_update,
@@ -710,7 +710,7 @@ void sdl_display_early_init(int opengl)
     case 0:  /* off */
         break;
     case 1: /* on */
-#ifdef CONFIG_OPENGL
+#ifdef CONFIG_EGL
         display_opengl = 1;
 #endif
         break;
@@ -766,7 +766,7 @@ void sdl_display_init(DisplayState *ds,
             sdl2_console[i].hidden = true;
         }
         sdl2_console[i].idx = i;
-#ifdef CONFIG_OPENGL
+#ifdef CONFIG_EGL
         sdl2_console[i].opengl = display_opengl;
         sdl2_console[i].dcl.ops = display_opengl ? &dcl_gl_ops : &dcl_2d_ops;
 #else
diff -puN vl.c~separate-egl vl.c
--- qemu2/vl.c~separate-egl     2015-10-24 20:45:57.538328455 +0900
+++ qemu2-hirofumi/vl.c 2015-10-24 20:45:57.550328440 +0900
@@ -4221,10 +4221,10 @@ int main(int argc, char **argv, char **e
     }
 #endif
     if (request_opengl == 1 && display_opengl == 0) {
-#if defined(CONFIG_OPENGL)
+#if defined(CONFIG_EGL)
         fprintf(stderr, "OpenGL is not supported by the display.\n");
 #else
-        fprintf(stderr, "QEMU was built without opengl support.\n");
+        fprintf(stderr, "QEMU was built without egl support.\n");
 #endif
         exit(1);
     }
_



reply via email to

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