All of lore.kernel.org
 help / color / mirror / Atom feed
From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>, qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH] ui/egl: Reduce required libraries to build with EGL support
Date: Sat, 24 Oct 2015 20:51:19 +0900	[thread overview]
Message-ID: <87lhaso56w.fsf@mail.parknet.co.jp> (raw)

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 <hirofumi@mail.parknet.co.jp>
---

 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	other threads:[~2015-10-24 11:51 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-24 11:51 OGAWA Hirofumi [this message]
2015-10-26 10:16 ` [Qemu-devel] [PATCH] ui/egl: Reduce required libraries to build with EGL support Gerd Hoffmann
2015-10-26 10:39   ` OGAWA Hirofumi
2015-10-26 12:16     ` Gerd Hoffmann
2015-10-26 17:44       ` OGAWA Hirofumi
2015-10-26 17:45         ` [Qemu-devel] [PATCH v2] ui/opengl: Reduce build required libraries for opengl OGAWA Hirofumi
2015-10-28  9:18           ` Gerd Hoffmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87lhaso56w.fsf@mail.parknet.co.jp \
    --to=hirofumi@mail.parknet.co.jp \
    --cc=kraxel@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.