aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYong-iL Joh <yong-il.joh@windriver.com>2015-09-30 17:04:26 +0900
committerYong-iL Joh <yong-il.joh@windriver.com>2015-09-30 17:08:55 +0900
commitf997a4b0ced1b5e25d05f4b1fa7c47abf2f49c94 (patch)
tree743cce39b234ddb056f78c7c13076ae9e9eeb725
parentd24a9ca12f8492c2acecba9dfa6d5b1222eea686 (diff)
downloadmeta-ivi-f997a4b0ced1b5e25d05f4b1fa7c47abf2f49c94.tar.gz
meta-ivi-f997a4b0ced1b5e25d05f4b1fa7c47abf2f49c94.tar.bz2
meta-ivi-f997a4b0ced1b5e25d05f4b1fa7c47abf2f49c94.zip
mesa: enable the EGL state tracker for egl on qemux86, qemux86-64
Signed-off-by: Yong-iL Joh <yong-il.joh@windriver.com>
-rw-r--r--meta-ivi/recipes-graphics/mesa/mesa/README.gallium66
-rw-r--r--meta-ivi/recipes-graphics/mesa/mesa/revert-363b53f00069af718f64cf047f19ad5681a8bf6d.patch31
-rw-r--r--meta-ivi/recipes-graphics/mesa/mesa/revert-c46c551c56f78c6bf9e63524c89478695fc4f525.patch147
-rw-r--r--meta-ivi/recipes-graphics/mesa/mesa_10.%.bbappend28
-rw-r--r--meta-ivi/recipes-graphics/wayland/weston_1.6.0.bbappend4
5 files changed, 275 insertions, 1 deletions
diff --git a/meta-ivi/recipes-graphics/mesa/mesa/README.gallium b/meta-ivi/recipes-graphics/mesa/mesa/README.gallium
new file mode 100644
index 0000000..6bc7787
--- /dev/null
+++ b/meta-ivi/recipes-graphics/mesa/mesa/README.gallium
@@ -0,0 +1,66 @@
+these files
+ revert-363b53f00069af718f64cf047f19ad5681a8bf6d.patch
+ revert-c46c551c56f78c6bf9e63524c89478695fc4f525.patch
+are the reverts of following commit of mesa:
+ 363b53f00069af718f64cf047f19ad5681a8bf6d
+ c46c551c56f78c6bf9e63524c89478695fc4f525
+
+the reason of two patches is described at
+ http://lists.freedesktop.org/archives/mesa-dev/2014-November/070204.html
+
+
+[Mesa-dev] [PATCH 0/2] Disable the EGL state tracker for Linux/DRI builds
+
+Marek Olšák maraeo at gmail.com
+Tue Nov 4 14:42:43 PST 2014
+
+Hi everybody,
+
+I'm about to address this long-standing issue: The EGL state tracker is
+redundant. It duplicates what st/dri does and it also duplicates what
+the common loader egl_dri2 does, which is used by all classic drivers
+and even works better with gallium drivers.
+
+Let's compare EGL extensions for both backends:
+
+st/egl:
+EGL version string: 1.4 (Gallium)
+EGL client APIs: OpenGL OpenGL_ES OpenGL_ES2 OpenVG
+EGL extensions string:
+ EGL_WL_bind_wayland_display EGL_KHR_image_base EGL_KHR_image_pixmap
+ EGL_KHR_image EGL_KHR_reusable_sync EGL_KHR_fence_sync
+ EGL_KHR_surfaceless_context EGL_NOK_swap_region
+ EGL_NV_post_sub_buffer
+
+egl_dri2:
+EGL version string: 1.4 (DRI2)
+EGL client APIs: OpenGL OpenGL_ES OpenGL_ES2 OpenGL_ES3
+EGL extensions string:
+ EGL_MESA_drm_image EGL_MESA_configless_context EGL_KHR_image_base
+ EGL_KHR_image_pixmap EGL_KHR_image EGL_KHR_gl_texture_2D_image
+ EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image
+ EGL_KHR_surfaceless_context EGL_KHR_create_context
+ EGL_NOK_swap_region EGL_NOK_texture_from_pixmap
+ EGL_CHROMIUM_sync_control EGL_EXT_image_dma_buf_import
+ EGL_NV_post_sub_buffer
+
+egl_dri2 also supports MSAA on the window framebuffer (through st/dri).
+It's really obvious which one is better.
+
+I'm aware of 2 features that we will lose:
+- swrast on Wayland - I'm not sure about this. Perhaps kms-swrast has
+addressed this already.
+- OpenVG - It has never taken off. If people want this on Linux, it should
+use egl_dri2 and st/dri, like OpenGL does.
+
+This series removes st/egl and st/gbm support from the autoconf build
+(the latter depends on the former and is probably just as redundant).
+The next step is to remove all Linux-specific backends from st/egl.
+Windows, Android, and other platform backends will be kept intact,
+therefore st/egl won't be removed completely.
+
+Please comment.
+
+Thanks,
+
+Marek
diff --git a/meta-ivi/recipes-graphics/mesa/mesa/revert-363b53f00069af718f64cf047f19ad5681a8bf6d.patch b/meta-ivi/recipes-graphics/mesa/mesa/revert-363b53f00069af718f64cf047f19ad5681a8bf6d.patch
new file mode 100644
index 0000000..3c91cc5
--- /dev/null
+++ b/meta-ivi/recipes-graphics/mesa/mesa/revert-363b53f00069af718f64cf047f19ad5681a8bf6d.patch
@@ -0,0 +1,31 @@
+diff -urN Mesa-10.4.4.orig/src/egl/main/egldriver.c Mesa-10.4.4/src/egl/main/egldriver.c
+--- Mesa-10.4.4.orig/src/egl/main/egldriver.c 2015-02-07 09:09:51.000000000 +0900
++++ Mesa-10.4.4/src/egl/main/egldriver.c 2015-09-26 11:36:43.938445294 +0900
+@@ -518,6 +518,19 @@
+
+
+ /**
++ * Add egl_gallium to the module array.
++ */
++static void
++_eglAddGalliumDriver(void)
++{
++#ifndef _EGL_BUILT_IN_DRIVER_GALLIUM
++ void *external = (void *) "egl_gallium";
++ _eglPreloadForEach(_eglGetSearchPath(), _eglLoaderFile, external);
++#endif
++}
++
++
++/**
+ * Add built-in drivers to the module array.
+ */
+ static void
+@@ -549,6 +562,7 @@
+ * Add other drivers only when EGL_DRIVER is not set. The order here
+ * decides the priorities.
+ */
++ _eglAddGalliumDriver();
+ _eglAddBuiltInDrivers();
+ }
+
diff --git a/meta-ivi/recipes-graphics/mesa/mesa/revert-c46c551c56f78c6bf9e63524c89478695fc4f525.patch b/meta-ivi/recipes-graphics/mesa/mesa/revert-c46c551c56f78c6bf9e63524c89478695fc4f525.patch
new file mode 100644
index 0000000..b417249
--- /dev/null
+++ b/meta-ivi/recipes-graphics/mesa/mesa/revert-c46c551c56f78c6bf9e63524c89478695fc4f525.patch
@@ -0,0 +1,147 @@
+diff -urN Mesa-10.4.4.orig/configure.ac Mesa-10.4.4/configure.ac
+--- Mesa-10.4.4.orig/configure.ac 2015-09-26 10:15:23.382322385 +0900
++++ Mesa-10.4.4/configure.ac 2015-09-26 10:15:49.578323045 +0900
+@@ -720,6 +720,20 @@
+ [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
+ [enable_xlib_glx="$enableval"],
+ [enable_xlib_glx=no])
++AC_ARG_ENABLE([gallium-egl],
++ [AS_HELP_STRING([--enable-gallium-egl],
++ [enable optional EGL state tracker (not required
++ for EGL support in Gallium with OpenGL and OpenGL ES)
++ @<:@default=disabled@:>@])],
++ [enable_gallium_egl="$enableval"],
++ [enable_gallium_egl=no])
++AC_ARG_ENABLE([gallium-gbm],
++ [AS_HELP_STRING([--enable-gallium-gbm],
++ [enable optional gbm state tracker (not required for
++ gbm support in Gallium)
++ @<:@default=auto@:>@])],
++ [enable_gallium_gbm="$enableval"],
++ [enable_gallium_gbm=auto])
+
+ AC_ARG_ENABLE([r600-llvm-compiler],
+ [AS_HELP_STRING([--enable-r600-llvm-compiler],
+@@ -1324,6 +1338,51 @@
+ AC_SUBST([EGL_LIB_DEPS])
+
+ dnl
++dnl EGL Gallium configuration
++dnl
++if test "x$enable_gallium_egl" = xyes; then
++ if test -z "$with_gallium_drivers"; then
++ AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
++ fi
++ if test "x$enable_egl" = xno; then
++ AC_MSG_ERROR([cannot enable egl_gallium without EGL])
++ fi
++ if test "x$have_libdrm" != xyes; then
++ AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
++ fi
++# XXX: Uncomment once converted to use static/shared pipe-drivers
++# enable_gallium_loader=$enable_shared_pipe_drivers
++fi
++AM_CONDITIONAL(HAVE_GALLIUM_EGL, test "x$enable_gallium_egl" = xyes)
++
++dnl
++dnl gbm Gallium configuration
++dnl
++if test "x$enable_gallium_gbm" = xauto; then
++ case "$enable_gbm$enable_gallium_egl$enable_dri$with_egl_platforms" in
++ yesyesyes*drm*)
++ enable_gallium_gbm=yes ;;
++ *)
++ enable_gallium_gbm=no ;;
++ esac
++fi
++if test "x$enable_gallium_gbm" = xyes; then
++ if test -z "$with_gallium_drivers"; then
++ AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
++ fi
++ if test "x$enable_gbm" = xno; then
++ AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
++ fi
++
++ if test "x$enable_gallium_egl" != xyes; then
++ AC_MSG_ERROR([gbm_gallium is only used by egl_gallium])
++ fi
++
++ enable_gallium_loader=$enable_shared_pipe_drivers
++fi
++AM_CONDITIONAL(HAVE_GALLIUM_GBM, test "x$enable_gallium_gbm" = xyes)
++
++dnl
+ dnl XA configuration
+ dnl
+ if test "x$enable_xa" = xyes; then
+@@ -1351,9 +1410,9 @@
+ if test -z "$with_gallium_drivers"; then
+ AC_MSG_ERROR([cannot enable OpenVG without Gallium])
+ fi
+-
+- AC_MSG_ERROR([Cannot enable OpenVG, because egl_gallium has been removed and
+- OpenVG hasn't been integrated into standard libEGL yet])
++ if test "x$enable_gallium_egl" = xno; then
++ AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
++ fi
+
+ EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
+ VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS $PTHREAD_LIBS"
+@@ -2165,6 +2224,8 @@
+ src/gallium/drivers/vc4/kernel/Makefile
+ src/gallium/state_trackers/clover/Makefile
+ src/gallium/state_trackers/dri/Makefile
++ src/gallium/state_trackers/egl/Makefile
++ src/gallium/state_trackers/gbm/Makefile
+ src/gallium/state_trackers/glx/xlib/Makefile
+ src/gallium/state_trackers/nine/Makefile
+ src/gallium/state_trackers/omx/Makefile
+@@ -2303,7 +2364,12 @@
+ egl_drivers="$egl_drivers builtin:egl_dri2"
+ fi
+
+- echo " EGL drivers: $egl_drivers"
++ if test "x$enable_gallium_egl" = xyes; then
++ echo " EGL drivers: ${egl_drivers} egl_gallium"
++ echo " EGL Gallium STs:$EGL_CLIENT_APIS"
++ else
++ echo " EGL drivers: $egl_drivers"
++ fi
+ fi
+
+ echo ""
+diff -urN Mesa-10.4.4.orig/docs/egl.html Mesa-10.4.4/docs/egl.html
+--- Mesa-10.4.4.orig/docs/egl.html 2015-09-26 10:15:23.386322385 +0900
++++ Mesa-10.4.4/docs/egl.html 2015-09-26 10:15:49.578323045 +0900
+@@ -77,6 +77,13 @@
+
+ </dd>
+
++<dt><code>--enable-gallium-egl</code></dt>
++<dd>
++
++<p>Enable the optional <code>egl_gallium</code> driver.</p>
++
++</dd>
++
+ <dt><code>--with-egl-platforms</code></dt>
+ <dd>
+
+diff -urN Mesa-10.4.4.orig/src/gallium/Makefile.am Mesa-10.4.4/src/gallium/Makefile.am
+--- Mesa-10.4.4.orig/src/gallium/Makefile.am 2015-09-26 10:15:23.386322385 +0900
++++ Mesa-10.4.4/src/gallium/Makefile.am 2015-09-26 10:15:49.578323045 +0900
+@@ -138,6 +138,14 @@
+ SUBDIRS += state_trackers/vega
+ endif
+
++if HAVE_GALLIUM_EGL
++SUBDIRS += state_trackers/egl targets/egl-static
++endif
++
++if HAVE_GALLIUM_GBM
++SUBDIRS += state_trackers/gbm targets/gbm
++endif
++
+ if HAVE_X11_DRIVER
+ SUBDIRS += state_trackers/glx/xlib targets/libgl-xlib
+ endif
diff --git a/meta-ivi/recipes-graphics/mesa/mesa_10.%.bbappend b/meta-ivi/recipes-graphics/mesa/mesa_10.%.bbappend
index 2561585..72c2b6f 100644
--- a/meta-ivi/recipes-graphics/mesa/mesa_10.%.bbappend
+++ b/meta-ivi/recipes-graphics/mesa/mesa_10.%.bbappend
@@ -1 +1,27 @@
-PACKAGECONFIG_append = " gallium gallium-egl gallium-llvm"
+PR = "r1"
+
+#
+# please, read mesa/READM.gallium about an issue when using gallium
+#
+PACKAGES =+ " \
+ libegl-gallium libgbm-gallium \
+ "
+
+FILESEXTRAPATHS_append := "${THISDIR}/${PN}"
+SRC_URI_append = " \
+ file://revert-c46c551c56f78c6bf9e63524c89478695fc4f525.patch \
+ "
+SRC_URI_append_qemux86 = " \
+ file://revert-363b53f00069af718f64cf047f19ad5681a8bf6d.patch \
+ "
+SRC_URI_append_qemux86-64 = " \
+ file://revert-363b53f00069af718f64cf047f19ad5681a8bf6d.patch \
+ "
+
+PACKAGECONFIG[gallium-egl] = "--enable-gallium-egl, --disable-gallium-egl"
+
+FILES_libegl-gallium = "${libdir}/egl/egl_gallium.so*"
+FILES_libgbm-gallium = "${libdir}/gbm/gbm_gallium_drm.so*"
+
+PACKAGECONFIG_append_qemux86 = " gallium gallium-egl gallium-llvm"
+PACKAGECONFIG_append_qemux86-64 = " gallium gallium-egl gallium-llvm"
diff --git a/meta-ivi/recipes-graphics/wayland/weston_1.6.0.bbappend b/meta-ivi/recipes-graphics/wayland/weston_1.6.0.bbappend
index 1f78696..3f09534 100644
--- a/meta-ivi/recipes-graphics/wayland/weston_1.6.0.bbappend
+++ b/meta-ivi/recipes-graphics/wayland/weston_1.6.0.bbappend
@@ -8,6 +8,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=275efac2559a224527bd4fd593d38466"
# Weston ivi shell needs libinput backend
PACKAGECONFIG_append += "libinput"
+# support EGL on qemu[x86,x86-64]
+RDEPENDS_${PN}_append_qemux86 += " libegl-gallium "
+RDEPENDS_${PN}_append_qemux86-64 += " libegl-gallium "
+
# Use git repository because we want to use 'git' for applying patches
SRC_URI_remove = "http://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz"
SRC_URI_append = "git://anongit.freedesktop.org/wayland/${PN}"