All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/12] Enable accelerated OpenGL in qemu
@ 2019-02-08 14:45 Alexander Kanavin
  2019-02-08 14:45 ` [PATCH 01/12] virglrenderer: add a recipe Alexander Kanavin
                   ` (11 more replies)
  0 siblings, 12 replies; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 14:45 UTC (permalink / raw)
  To: openembedded-core

V2 changes: addressed feedback from the first review round
V3 changes:
- better fix for missing qemu X11 include, as discussed with upstream
- maintainers.inc entry for virglrenderer
- egl-headless support (see below for details)
- improvements to kmscube recipe
- fix to vte-native to allow building it with gcc 4.8
V4 changes
- address failures uncovered by yocto autobuilder
V5 changes
- remove patches that have been merged to master
- replace BBCLASSEXTEND_remove with PREFERRED_PROVIDER for mesa
recipe variants
V6 changes
- again rebase to master
- tweak oe-selftest to remove unnecessary re-builds of qemu-native

Why this? Why now?

1. I think we are heading towards a reality where some kind of working
GL is a 'must' for any kind of UI work.
2. Typically people build images and then transfer them to the NUC or
even target boards for testing - using qemu would be less awkward.
3. Current qemu configuration is basically useless here, as it only
provides a very slow software GL driver from mesa.

0. TLDR:

a) Gtk UI frontend

$ . oe-init-build-env build-virgl
$ bitbake core-image-sato-sdk
$ runqemu kvm gl
$$ run glxgears or any other GL-capable binary inside qemu

b) egl-headless

$ . oe-init-build-env build-virgl
$ bitbake core-image-sato-sdk
$ runqemu kvm egl-headless publicvnc
$ <connect with a vnc viewer to 127.0.0.1:5900>
$$ run glxgears or any other GL-capable binary inside qemu

1. For the local UI, qemu is switched over to use gtk frontend. I simply 
couldn't get SDL frontend to work properly, it only displays a blank black 
window or doesn't start at all. Same thing happens with qemu binaries provided 
by Fedora and opensuse (Ubuntu's qemu lacks virgl support). Seems like SDL support 
has regressed.

2. What is egl-headless?

In this variant, Qemu does not open a UI window at all. Instead, it renders
all graphics, including GL, into a memory buffer, which can be seen with
a vnc or spice client (over a TCP socket). This has the following advantages:

- no need to be physically present at the host machine, output (including GL bits!) 
can be seen remotely
- no need for the host machine to run an X session

3. While the components are built against the most minimum necessary 
mesa-native set (gbm, egl, dri with no drivers), libepoxy loads and uses the 
host GL implementation (through a chrpath hack). This is both to save build 
times, and because the host is likely to have a set of drivers more 
appropriate for the physical machine (e.g. proprietary nvidia stack, 
although I didn't test that).

4. I tested this with
- glamor X server
- weston compositor with drm backend (build core-image-weston, then edit 
  weston.ini in the image to use drm backed instead of fbdev).
- kmscube
- glxgears
- https://www.geeks3d.com/gputest/

The latter two show FPS that is similar to running them directly on the host.

5. Some things I am not sure about:

 - how much of a 'default' should this be for running qemu. It works for me, 
but other people might find it less stable compared to the existing 
sdl-vmware-swrast setup.

- what other tests and demos could be run

- how could this be tested on the autobuilder. I wrote two oe-selftests for 
this (gtk, egl-headless), but one of them does require an X session, and both 
require ability to create opengl contexts on the host.

The following changes since commit 29099c8a49bf9d35514bbc1e77657655598a80cc:

  maintainers.inc: replace Changhyeok Bae's @lge email address with a personal one (2019-02-08 10:57:19 +0000)

are available in the Git repository at:

  git://git.yoctoproject.org/poky-contrib akanavin/virgl-gtk
  http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=akanavin/virgl-gtk

Alexander Kanavin (12):
  virglrenderer: add a recipe
  qemu: enable virglrenderer and glx options for native/nativesdk builds
  local.conf.sample: adjust the qemu config to enable gtk+ instead of
    sdl
  qemu: build target variant with gtk+, and nativesdk variant without
    sdl
  qemu: remove support for building against host sdl
  qemu: add a gettext-native dependency to gtk option
  qemu: add a patch to avoid a missing definition error
  qemu: add environment variable wrappers to make qemu look good with
    gtk frontend
  qemu: add a backported patch to fix egl-headless support
  runqemu: add options for enabling virgl GL acceleration
  runqemu: do not check for GL libraries
  selftest: add tests for virgl GL acceleration

 meta-poky/conf/local.conf.sample              |  9 +--
 meta-selftest/lib/oeqa/runtime/cases/virgl.py | 28 ++++++++
 meta/conf/distro/include/maintainers.inc      |  1 +
 meta/lib/oeqa/selftest/cases/runtime_test.py  | 52 +++++++++++++++
 meta/recipes-devtools/qemu/qemu.inc           | 41 +++++++-----
 .../qemu/0001-Add-a-missing-X11-include.patch | 65 +++++++++++++++++++
 ...-egl-headless-add-egl_create_context.patch | 50 ++++++++++++++
 ...x-libcap-header-issue-on-some-distro.patch |  2 +-
 ...-messages-when-qemi_cpu_kick_thread-.patch |  2 +-
 meta/recipes-devtools/qemu/qemu_3.1.0.bb      |  2 +
 .../0001-vtest-add-missing-includes.patch     | 38 +++++++++++
 .../virglrenderer/virglrenderer_git.bb        | 19 ++++++
 scripts/runqemu                               | 58 +++++++----------
 13 files changed, 309 insertions(+), 58 deletions(-)
 create mode 100644 meta-selftest/lib/oeqa/runtime/cases/virgl.py
 create mode 100644 meta/recipes-devtools/qemu/qemu/0001-Add-a-missing-X11-include.patch
 create mode 100644 meta/recipes-devtools/qemu/qemu/0001-egl-headless-add-egl_create_context.patch
 create mode 100644 meta/recipes-graphics/virglrenderer/virglrenderer/0001-vtest-add-missing-includes.patch
 create mode 100644 meta/recipes-graphics/virglrenderer/virglrenderer_git.bb

-- 
2.17.1



^ permalink raw reply	[flat|nested] 32+ messages in thread

* [PATCH 01/12] virglrenderer: add a recipe
  2019-02-08 14:45 [PATCH 00/12] Enable accelerated OpenGL in qemu Alexander Kanavin
@ 2019-02-08 14:45 ` Alexander Kanavin
  2019-02-09  9:44   ` Martin Jansa
  2019-02-08 14:45 ` [PATCH 02/12] qemu: enable virglrenderer and glx options for native/nativesdk builds Alexander Kanavin
                   ` (10 subsequent siblings)
  11 siblings, 1 reply; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 14:45 UTC (permalink / raw)
  To: openembedded-core

This component enables hardware-accelerated GL inside QEMU guests.
For more information, see here:

https://lwn.net/Articles/767970/
https://www.collabora.com/news-and-blog/blog/2018/02/12/virtualizing-gpu-access/
https://www.collabora.com/news-and-blog/blog/2018/05/09/gpu-virtualization-update/

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 meta/conf/distro/include/maintainers.inc      |  1 +
 .../0001-vtest-add-missing-includes.patch     | 38 +++++++++++++++++++
 .../virglrenderer/virglrenderer_git.bb        | 19 ++++++++++
 3 files changed, 58 insertions(+)
 create mode 100644 meta/recipes-graphics/virglrenderer/virglrenderer/0001-vtest-add-missing-includes.patch
 create mode 100644 meta/recipes-graphics/virglrenderer/virglrenderer_git.bb

diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index 122fdbcff4b..f7d43d20b7f 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -700,6 +700,7 @@ RECIPE_MAINTAINER_pn-util-macros = "Armin Kuster <akuster808@gmail.com>"
 RECIPE_MAINTAINER_pn-v86d = "Alexander Kanavin <alex.kanavin@gmail.com>"
 RECIPE_MAINTAINER_pn-vala = "Alexander Kanavin <alex.kanavin@gmail.com>"
 RECIPE_MAINTAINER_pn-valgrind = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER_pn-virglrenderer = "Alexander Kanavin <alex.kanavin@gmail.com>"
 RECIPE_MAINTAINER_pn-volatile-binds = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-vte = "Anuj Mittal <anuj.mittal@intel.com>"
 RECIPE_MAINTAINER_pn-vulkan = "Ross Burton <ross.burton@intel.com>"
diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer/0001-vtest-add-missing-includes.patch b/meta/recipes-graphics/virglrenderer/virglrenderer/0001-vtest-add-missing-includes.patch
new file mode 100644
index 00000000000..b565c48ee66
--- /dev/null
+++ b/meta/recipes-graphics/virglrenderer/virglrenderer/0001-vtest-add-missing-includes.patch
@@ -0,0 +1,38 @@
+From 05c5c5f43fbffb3317bd9da27d414890d2ef493c Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 18 Jan 2019 13:47:23 +0100
+Subject: [PATCH] vtest: add missing includes
+
+This fixes build failures with musl C library
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/virgl/virglrenderer/merge_requests/125]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ vtest/util.c         | 1 +
+ vtest/vtest_server.c | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/vtest/util.c b/vtest/util.c
+index 0d3c78f..c605253 100644
+--- a/vtest/util.c
++++ b/vtest/util.c
+@@ -26,6 +26,7 @@
+ #include <stdio.h>
+ #include <string.h>
+ #include <unistd.h>
++#include <sys/select.h>
+ 
+ int vtest_wait_for_fd_read(int fd)
+ {
+diff --git a/vtest/vtest_server.c b/vtest/vtest_server.c
+index bc6c95f..010721f 100644
+--- a/vtest/vtest_server.c
++++ b/vtest/vtest_server.c
+@@ -31,6 +31,7 @@
+ #include <netinet/in.h>
+ #include <sys/un.h>
+ #include <fcntl.h>
++#include <string.h>
+ 
+ #include "util.h"
+ #include "vtest.h"
diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer_git.bb b/meta/recipes-graphics/virglrenderer/virglrenderer_git.bb
new file mode 100644
index 00000000000..93fc35feb8d
--- /dev/null
+++ b/meta/recipes-graphics/virglrenderer/virglrenderer_git.bb
@@ -0,0 +1,19 @@
+SUMMARY = "VirGL virtual OpenGL renderer"
+HOMEPAGE = "https://virgil3d.github.io/"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c81c08eeefd9418fca8f88309a76db10"
+
+DEPENDS = "libdrm mesa libepoxy"
+PV = "0.7.0"
+SRCREV = "402c228861c9893f64cffbbcb4cb23044b8c721c"
+SRC_URI = "git://anongit.freedesktop.org/virglrenderer \
+           file://0001-vtest-add-missing-includes.patch \
+           "
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+BBCLASSEXTEND = "native nativesdk"
+
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 02/12] qemu: enable virglrenderer and glx options for native/nativesdk builds
  2019-02-08 14:45 [PATCH 00/12] Enable accelerated OpenGL in qemu Alexander Kanavin
  2019-02-08 14:45 ` [PATCH 01/12] virglrenderer: add a recipe Alexander Kanavin
@ 2019-02-08 14:45 ` Alexander Kanavin
  2019-02-08 23:12   ` Martin Jansa
  2019-02-08 14:45 ` [PATCH 03/12] local.conf.sample: adjust the qemu config to enable gtk+ instead of sdl Alexander Kanavin
                   ` (9 subsequent siblings)
  11 siblings, 1 reply; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 14:45 UTC (permalink / raw)
  To: openembedded-core

Except for ming32/darwin, which do not support them.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 meta/recipes-devtools/qemu/qemu.inc | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
index c127434b020..95e9e0ede77 100644
--- a/meta/recipes-devtools/qemu/qemu.inc
+++ b/meta/recipes-devtools/qemu/qemu.inc
@@ -74,15 +74,15 @@ PACKAGECONFIG ??= " \
     fdt sdl kvm \
     ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
 "
-PACKAGECONFIG_class-native ??= "fdt alsa kvm"
-PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm"
+PACKAGECONFIG_class-native ??= "fdt alsa kvm virglrenderer glx"
+PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm virglrenderer glx"
 
 # Handle distros such as CentOS 5 32-bit that do not have kvm support
 PACKAGECONFIG_class-native_remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
 
-# Disable kvm on targets that do not support it
-PACKAGECONFIG_remove_darwin = "kvm"
-PACKAGECONFIG_remove_mingw32 = "kvm"
+# Disable kvm/virgl/mesa on targets that do not support it
+PACKAGECONFIG_remove_darwin = "kvm virglrenderer glx gtk+"
+PACKAGECONFIG_remove_mingw32 = "kvm virglrenderer glx gtk+"
 
 PACKAGECONFIG[sdl] = "--enable-sdl --with-sdlabi=2.0,--disable-sdl,libsdl2"
 PACKAGECONFIG[virtfs] = "--enable-virtfs --enable-attr,--disable-virtfs,libcap attr,"
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 03/12] local.conf.sample: adjust the qemu config to enable gtk+ instead of sdl
  2019-02-08 14:45 [PATCH 00/12] Enable accelerated OpenGL in qemu Alexander Kanavin
  2019-02-08 14:45 ` [PATCH 01/12] virglrenderer: add a recipe Alexander Kanavin
  2019-02-08 14:45 ` [PATCH 02/12] qemu: enable virglrenderer and glx options for native/nativesdk builds Alexander Kanavin
@ 2019-02-08 14:45 ` Alexander Kanavin
  2019-02-08 14:45 ` [PATCH 04/12] qemu: build target variant with gtk+, and nativesdk variant without sdl Alexander Kanavin
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 14:45 UTC (permalink / raw)
  To: openembedded-core

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 meta-poky/conf/local.conf.sample | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/meta-poky/conf/local.conf.sample b/meta-poky/conf/local.conf.sample
index cf96598819c..961387acbae 100644
--- a/meta-poky/conf/local.conf.sample
+++ b/meta-poky/conf/local.conf.sample
@@ -236,12 +236,9 @@ BB_DISKMON_DIRS ??= "\
 # Qemu configuration
 #
 # By default qemu will build with a builtin VNC server where graphical output can be
-# seen. The two lines below enable the SDL backend too. By default libsdl2-native will
-# be built, if you want to use your host's libSDL instead of the minimal libsdl built
-# by libsdl2-native then uncomment the ASSUME_PROVIDED line below.
-PACKAGECONFIG_append_pn-qemu-native = " sdl"
-PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
-#ASSUME_PROVIDED += "libsdl2-native"
+# seen. The two lines below enable the Gtk UI frontend.
+PACKAGECONFIG_append_pn-qemu-native = " gtk+"
+PACKAGECONFIG_append_pn-nativesdk-qemu = " gtk+"
 
 # CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to
 # track the version of this file when it was generated. This can safely be ignored if
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 04/12] qemu: build target variant with gtk+, and nativesdk variant without sdl
  2019-02-08 14:45 [PATCH 00/12] Enable accelerated OpenGL in qemu Alexander Kanavin
                   ` (2 preceding siblings ...)
  2019-02-08 14:45 ` [PATCH 03/12] local.conf.sample: adjust the qemu config to enable gtk+ instead of sdl Alexander Kanavin
@ 2019-02-08 14:45 ` Alexander Kanavin
  2019-02-08 15:31   ` Mark Hatle
  2019-02-08 14:45 ` [PATCH 05/12] qemu: remove support for building against host sdl Alexander Kanavin
                   ` (7 subsequent siblings)
  11 siblings, 1 reply; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 14:45 UTC (permalink / raw)
  To: openembedded-core

As sdl is deprecated in favor of gtk+, it should not be the default.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 meta/recipes-devtools/qemu/qemu.inc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
index 95e9e0ede77..07f78058e7b 100644
--- a/meta/recipes-devtools/qemu/qemu.inc
+++ b/meta/recipes-devtools/qemu/qemu.inc
@@ -71,11 +71,11 @@ do_install_append() {
 # END of qemu-mips workaround
 
 PACKAGECONFIG ??= " \
-    fdt sdl kvm \
+    fdt gtk+ kvm \
     ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
 "
 PACKAGECONFIG_class-native ??= "fdt alsa kvm virglrenderer glx"
-PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm virglrenderer glx"
+PACKAGECONFIG_class-nativesdk ??= "fdt kvm virglrenderer glx"
 
 # Handle distros such as CentOS 5 32-bit that do not have kvm support
 PACKAGECONFIG_class-native_remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 05/12] qemu: remove support for building against host sdl
  2019-02-08 14:45 [PATCH 00/12] Enable accelerated OpenGL in qemu Alexander Kanavin
                   ` (3 preceding siblings ...)
  2019-02-08 14:45 ` [PATCH 04/12] qemu: build target variant with gtk+, and nativesdk variant without sdl Alexander Kanavin
@ 2019-02-08 14:45 ` Alexander Kanavin
  2019-02-08 14:45 ` [PATCH 06/12] qemu: add a gettext-native dependency to gtk option Alexander Kanavin
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 14:45 UTC (permalink / raw)
  To: openembedded-core

This hasn't been the default for a long time (as some distros don't
support it), and with gtk+ being the new default shouldn't
be needed at all.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 meta/recipes-devtools/qemu/qemu.inc | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
index 07f78058e7b..dccf9dcb00c 100644
--- a/meta/recipes-devtools/qemu/qemu.inc
+++ b/meta/recipes-devtools/qemu/qemu.inc
@@ -39,14 +39,6 @@ export LIBTOOL="${HOST_SYS}-libtool"
 
 B = "${WORKDIR}/build"
 
-do_configure_prepend_class-native() {
-	# Append build host pkg-config paths for native target since the host may provide sdl
-	BHOST_PKGCONFIG_PATH=$(PATH=/usr/bin:/bin pkg-config --variable pc_path pkg-config || echo "")
-	if [ ! -z "$BHOST_PKGCONFIG_PATH" ]; then
-		export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$BHOST_PKGCONFIG_PATH
-	fi
-}
-
 do_configure() {
     ${S}/configure ${EXTRA_OECONF}
 }
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 06/12] qemu: add a gettext-native dependency to gtk option
  2019-02-08 14:45 [PATCH 00/12] Enable accelerated OpenGL in qemu Alexander Kanavin
                   ` (4 preceding siblings ...)
  2019-02-08 14:45 ` [PATCH 05/12] qemu: remove support for building against host sdl Alexander Kanavin
@ 2019-02-08 14:45 ` Alexander Kanavin
  2019-02-08 14:45 ` [PATCH 07/12] qemu: add a patch to avoid a missing definition error Alexander Kanavin
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 14:45 UTC (permalink / raw)
  To: openembedded-core

xgettext/msgmerge is used during do_install() when gtk is enabled:
https://github.com/qemu/qemu/blob/master/Makefile#L743

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 meta/recipes-devtools/qemu/qemu.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
index dccf9dcb00c..b80b9e131a1 100644
--- a/meta/recipes-devtools/qemu/qemu.inc
+++ b/meta/recipes-devtools/qemu/qemu.inc
@@ -87,7 +87,7 @@ PACKAGECONFIG[vnc-png] = "--enable-vnc --enable-vnc-png,--disable-vnc-png,libpng
 PACKAGECONFIG[libcurl] = "--enable-curl,--disable-curl,libcurl,"
 PACKAGECONFIG[nss] = "--enable-smartcard,--disable-smartcard,nss,"
 PACKAGECONFIG[curses] = "--enable-curses,--disable-curses,ncurses,"
-PACKAGECONFIG[gtk+] = "--enable-gtk --enable-vte,--disable-gtk --disable-vte,gtk+3 vte"
+PACKAGECONFIG[gtk+] = "--enable-gtk --enable-vte,--disable-gtk --disable-vte,gtk+3 vte gettext-native"
 PACKAGECONFIG[libcap-ng] = "--enable-cap-ng,--disable-cap-ng,libcap-ng,"
 PACKAGECONFIG[ssh2] = "--enable-libssh2,--disable-libssh2,libssh2,"
 PACKAGECONFIG[gcrypt] = "--enable-gcrypt,--disable-gcrypt,libgcrypt,"
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 07/12] qemu: add a patch to avoid a missing definition error
  2019-02-08 14:45 [PATCH 00/12] Enable accelerated OpenGL in qemu Alexander Kanavin
                   ` (5 preceding siblings ...)
  2019-02-08 14:45 ` [PATCH 06/12] qemu: add a gettext-native dependency to gtk option Alexander Kanavin
@ 2019-02-08 14:45 ` Alexander Kanavin
  2019-02-08 14:45 ` [PATCH 08/12] qemu: add environment variable wrappers to make qemu look good with gtk frontend Alexander Kanavin
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 14:45 UTC (permalink / raw)
  To: openembedded-core

| In file included from /home/alexander/development/poky/build-virgl-gtk-64/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-qemu/3.1.0-r0/qemu-3.1.0/include/ui/egl-context.h:5,
|                  from /home/alexander/development/poky/build-virgl-gtk-64/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-qemu/3.1.0-r0/qemu-3.1.0/ui/egl-context.c:3:
| /home/alexander/development/poky/build-virgl-gtk-64/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-qemu/3.1.0-r0/qemu-3.1.0/include/ui/egl-helpers.h:46:55: error: unknown type name 'Window'; did you mean 'minor'?
|  EGLSurface qemu_egl_init_surface_x11(EGLContext ectx, Window win);
|                                                        ^~~~~~
|                                                        minor

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 .../qemu/0001-Add-a-missing-X11-include.patch | 65 +++++++++++++++++++
 ...x-libcap-header-issue-on-some-distro.patch |  2 +-
 ...-messages-when-qemi_cpu_kick_thread-.patch |  2 +-
 meta/recipes-devtools/qemu/qemu_3.1.0.bb      |  1 +
 4 files changed, 68 insertions(+), 2 deletions(-)
 create mode 100644 meta/recipes-devtools/qemu/qemu/0001-Add-a-missing-X11-include.patch

diff --git a/meta/recipes-devtools/qemu/qemu/0001-Add-a-missing-X11-include.patch b/meta/recipes-devtools/qemu/qemu/0001-Add-a-missing-X11-include.patch
new file mode 100644
index 00000000000..192936e1e78
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/0001-Add-a-missing-X11-include.patch
@@ -0,0 +1,65 @@
+From eb1a215a4f86dde4493c3e22ad9f6d698850915e Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 20 Dec 2018 18:06:29 +0100
+Subject: [PATCH] egl-helpers.h: do not depend on X11 Window type, use
+ EGLNativeWindowType
+
+It was assumed that mesa provides the necessary X11 includes,
+but it is not always the case, as it can be configured without x11 support.
+
+Upstream-Status: Submitted [http://lists.nongnu.org/archive/html/qemu-devel/2019-01/msg03706.html]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+---
+ include/ui/egl-helpers.h | 2 +-
+ ui/egl-helpers.c         | 4 ++--
+ ui/gtk-egl.c             | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/include/ui/egl-helpers.h b/include/ui/egl-helpers.h
+index 9db7293b..3fc656a7 100644
+--- a/include/ui/egl-helpers.h
++++ b/include/ui/egl-helpers.h
+@@ -43,7 +43,7 @@ void egl_dmabuf_release_texture(QemuDmaBuf *dmabuf);
+ 
+ #endif
+ 
+-EGLSurface qemu_egl_init_surface_x11(EGLContext ectx, Window win);
++EGLSurface qemu_egl_init_surface_x11(EGLContext ectx, EGLNativeWindowType win);
+ 
+ int qemu_egl_init_dpy_x11(EGLNativeDisplayType dpy, DisplayGLMode mode);
+ int qemu_egl_init_dpy_mesa(EGLNativeDisplayType dpy, DisplayGLMode mode);
+diff --git a/ui/egl-helpers.c b/ui/egl-helpers.c
+index 4f475142..5e115b3f 100644
+--- a/ui/egl-helpers.c
++++ b/ui/egl-helpers.c
+@@ -273,14 +273,14 @@ void egl_dmabuf_release_texture(QemuDmaBuf *dmabuf)
+ 
+ /* ---------------------------------------------------------------------- */
+ 
+-EGLSurface qemu_egl_init_surface_x11(EGLContext ectx, Window win)
++EGLSurface qemu_egl_init_surface_x11(EGLContext ectx, EGLNativeWindowType win)
+ {
+     EGLSurface esurface;
+     EGLBoolean b;
+ 
+     esurface = eglCreateWindowSurface(qemu_egl_display,
+                                       qemu_egl_config,
+-                                      (EGLNativeWindowType)win, NULL);
++                                      win, NULL);
+     if (esurface == EGL_NO_SURFACE) {
+         error_report("egl: eglCreateWindowSurface failed");
+         return NULL;
+diff --git a/ui/gtk-egl.c b/ui/gtk-egl.c
+index 5420c236..1f941162 100644
+--- a/ui/gtk-egl.c
++++ b/ui/gtk-egl.c
+@@ -54,7 +54,7 @@ void gd_egl_init(VirtualConsole *vc)
+     }
+ 
+     vc->gfx.ectx = qemu_egl_init_ctx();
+-    vc->gfx.esurface = qemu_egl_init_surface_x11(vc->gfx.ectx, x11_window);
++    vc->gfx.esurface = qemu_egl_init_surface_x11(vc->gfx.ectx, (EGLNativeWindowType)x11_window);
+ 
+     assert(vc->gfx.esurface);
+ }
diff --git a/meta/recipes-devtools/qemu/qemu/0012-fix-libcap-header-issue-on-some-distro.patch b/meta/recipes-devtools/qemu/qemu/0012-fix-libcap-header-issue-on-some-distro.patch
index 690d2717f13..9cbe8388119 100644
--- a/meta/recipes-devtools/qemu/qemu/0012-fix-libcap-header-issue-on-some-distro.patch
+++ b/meta/recipes-devtools/qemu/qemu/0012-fix-libcap-header-issue-on-some-distro.patch
@@ -1,4 +1,4 @@
-From 091a16100a7e1e9e6493663392c5ba2884b99723 Mon Sep 17 00:00:00 2001
+From d3e0b8dac7c2eb20d7fcff747bc98b981f4398ef Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Tue, 12 Mar 2013 09:54:06 +0800
 Subject: [PATCH] fix libcap header issue on some distro
diff --git a/meta/recipes-devtools/qemu/qemu/0013-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch b/meta/recipes-devtools/qemu/qemu/0013-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch
index 2232cb80e29..27e508c5a35 100644
--- a/meta/recipes-devtools/qemu/qemu/0013-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch
+++ b/meta/recipes-devtools/qemu/qemu/0013-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch
@@ -1,4 +1,4 @@
-From 3eeeaa45dd12c9f3942cfc8647a08c93fffe19ea Mon Sep 17 00:00:00 2001
+From 861c522df7791d7e93743d5641f3ef2a5a3c4632 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
 Date: Wed, 12 Aug 2015 15:11:30 -0500
 Subject: [PATCH] cpus.c: Add error messages when qemi_cpu_kick_thread fails.
diff --git a/meta/recipes-devtools/qemu/qemu_3.1.0.bb b/meta/recipes-devtools/qemu/qemu_3.1.0.bb
index 67cebcc8308..cd7cd67a3f0 100644
--- a/meta/recipes-devtools/qemu/qemu_3.1.0.bb
+++ b/meta/recipes-devtools/qemu/qemu_3.1.0.bb
@@ -21,6 +21,7 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
            file://0009-apic-fixup-fallthrough-to-PIC.patch \
            file://0010-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch \
            file://0011-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch \
+           file://0001-Add-a-missing-X11-include.patch \
            "
 UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
 
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 08/12] qemu: add environment variable wrappers to make qemu look good with gtk frontend
  2019-02-08 14:45 [PATCH 00/12] Enable accelerated OpenGL in qemu Alexander Kanavin
                   ` (6 preceding siblings ...)
  2019-02-08 14:45 ` [PATCH 07/12] qemu: add a patch to avoid a missing definition error Alexander Kanavin
@ 2019-02-08 14:45 ` Alexander Kanavin
  2019-02-08 14:45 ` [PATCH 09/12] qemu: add a backported patch to fix egl-headless support Alexander Kanavin
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 14:45 UTC (permalink / raw)
  To: openembedded-core

GTK_THEME instructs gtk to use its built-in theme. Otherwise
gtk attempts to use the theme from the host, which may be from
a totally mismatching gtk version.

On the other hand FONTCONFIG_PATH tells it to use the host fonts,
as providing fonts in the native sysroot and instructing the components
to use them is a lot more tricky.

GDK_PIXBUF_MODULE_FILE is set, because otherwise qemu works but
fills stdout with error messages, which eventually fill the pipe
they go into. That pipe is read from only when qemu exits (to
collect any error messages) by runqemu script. The pipe fill-up
causes the qemu process to lock up.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 meta/recipes-devtools/qemu/qemu.inc | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
index b80b9e131a1..9a989f00b0b 100644
--- a/meta/recipes-devtools/qemu/qemu.inc
+++ b/meta/recipes-devtools/qemu/qemu.inc
@@ -48,6 +48,25 @@ do_install () {
 	oe_runmake 'DESTDIR=${D}' install
 }
 
+make_qemu_wrapper() {
+        gdk_pixbuf_module_file=`pkg-config --variable=gdk_pixbuf_cache_file gdk-pixbuf-2.0`
+
+        for tool in `ls ${D}${bindir}/qemu-system-*`; do
+                create_wrapper $tool \
+                        GDK_PIXBUF_MODULE_FILE=$gdk_pixbuf_module_file \
+                        FONTCONFIG_PATH=/etc/fonts \
+                        GTK_THEME=Adwaita
+        done
+}
+
+do_install_append_class-native() {
+     ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
+}
+
+do_install_append_class-nativesdk() {
+     ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
+}
+
 # The following fragment will create a wrapper for qemu-mips user emulation
 # binary in order to work around a segmentation fault issue. Basically, by
 # default, the reserved virtual address space for 32-on-64 bit is set to 4GB.
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 09/12] qemu: add a backported patch to fix egl-headless support
  2019-02-08 14:45 [PATCH 00/12] Enable accelerated OpenGL in qemu Alexander Kanavin
                   ` (7 preceding siblings ...)
  2019-02-08 14:45 ` [PATCH 08/12] qemu: add environment variable wrappers to make qemu look good with gtk frontend Alexander Kanavin
@ 2019-02-08 14:45 ` Alexander Kanavin
  2019-02-08 14:45 ` [PATCH 10/12] runqemu: add options for enabling virgl GL acceleration Alexander Kanavin
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 14:45 UTC (permalink / raw)
  To: openembedded-core

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 ...-egl-headless-add-egl_create_context.patch | 50 +++++++++++++++++++
 meta/recipes-devtools/qemu/qemu_3.1.0.bb      |  1 +
 2 files changed, 51 insertions(+)
 create mode 100644 meta/recipes-devtools/qemu/qemu/0001-egl-headless-add-egl_create_context.patch

diff --git a/meta/recipes-devtools/qemu/qemu/0001-egl-headless-add-egl_create_context.patch b/meta/recipes-devtools/qemu/qemu/0001-egl-headless-add-egl_create_context.patch
new file mode 100644
index 00000000000..d9326c017ad
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/0001-egl-headless-add-egl_create_context.patch
@@ -0,0 +1,50 @@
+From 952e5d584f5aabe41298c278065fe628f3f7aa7a Mon Sep 17 00:00:00 2001
+From: Gerd Hoffmann <kraxel@redhat.com>
+Date: Thu, 29 Nov 2018 13:35:02 +0100
+Subject: [PATCH] egl-headless: add egl_create_context
+
+We must set the correct context (via eglMakeCurrent) before
+calling qemu_egl_create_context, so we need a thin wrapper and can't
+hook qemu_egl_create_context directly as ->dpy_gl_ctx_create callback.
+
+Reported-by: Frederik Carlier <frederik.carlier@quamotion.mobi>
+Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
+Message-id: 20181129123502.30129-1-kraxel@redhat.com
+
+Upstream-Status: Backport [https://git.qemu.org/?p=qemu.git;a=commit;h=952e5d584f5aabe41298c278065fe628f3f7aa7a]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ ui/egl-headless.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/ui/egl-headless.c b/ui/egl-headless.c
+index 4cf3bbc0e4..519e7bad32 100644
+--- a/ui/egl-headless.c
++++ b/ui/egl-headless.c
+@@ -38,6 +38,14 @@ static void egl_gfx_switch(DisplayChangeListener *dcl,
+     edpy->ds = new_surface;
+ }
+ 
++static QEMUGLContext egl_create_context(DisplayChangeListener *dcl,
++                                        QEMUGLParams *params)
++{
++    eglMakeCurrent(qemu_egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE,
++                   qemu_egl_rn_ctx);
++    return qemu_egl_create_context(dcl, params);
++}
++
+ static void egl_scanout_disable(DisplayChangeListener *dcl)
+ {
+     egl_dpy *edpy = container_of(dcl, egl_dpy, dcl);
+@@ -150,7 +158,7 @@ static const DisplayChangeListenerOps egl_ops = {
+     .dpy_gfx_update          = egl_gfx_update,
+     .dpy_gfx_switch          = egl_gfx_switch,
+ 
+-    .dpy_gl_ctx_create       = qemu_egl_create_context,
++    .dpy_gl_ctx_create       = egl_create_context,
+     .dpy_gl_ctx_destroy      = qemu_egl_destroy_context,
+     .dpy_gl_ctx_make_current = qemu_egl_make_context_current,
+     .dpy_gl_ctx_get_current  = qemu_egl_get_current_context,
+-- 
+2.17.1
+
diff --git a/meta/recipes-devtools/qemu/qemu_3.1.0.bb b/meta/recipes-devtools/qemu/qemu_3.1.0.bb
index cd7cd67a3f0..ea4277eddea 100644
--- a/meta/recipes-devtools/qemu/qemu_3.1.0.bb
+++ b/meta/recipes-devtools/qemu/qemu_3.1.0.bb
@@ -22,6 +22,7 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
            file://0010-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch \
            file://0011-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch \
            file://0001-Add-a-missing-X11-include.patch \
+           file://0001-egl-headless-add-egl_create_context.patch \
            "
 UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
 
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 10/12] runqemu: add options for enabling virgl GL acceleration
  2019-02-08 14:45 [PATCH 00/12] Enable accelerated OpenGL in qemu Alexander Kanavin
                   ` (8 preceding siblings ...)
  2019-02-08 14:45 ` [PATCH 09/12] qemu: add a backported patch to fix egl-headless support Alexander Kanavin
@ 2019-02-08 14:45 ` Alexander Kanavin
  2019-02-08 14:45 ` [PATCH 11/12] runqemu: do not check for GL libraries Alexander Kanavin
  2019-02-08 14:45 ` [PATCH 12/12] selftest: add tests for virgl GL acceleration Alexander Kanavin
  11 siblings, 0 replies; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 14:45 UTC (permalink / raw)
  To: openembedded-core

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 scripts/runqemu | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/scripts/runqemu b/scripts/runqemu
index c4a0ca811d9..50888a532e8 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -74,6 +74,9 @@ of the following environment variables (in any order):
   MACHINE - the machine name (optional, autodetected from KERNEL filename if unspecified)
   Simplified QEMU command-line options can be passed with:
     nographic - disable video console
+    gl - enable virgl-based GL acceleration
+    gl-es - enable virgl-based GL acceleration, using OpenGL ES
+    egl-headless - enable headless EGL output; use vnc or spice to see it
     serial - enable a serial console on /dev/ttyS0
     serialstdio - enable a serial console on the console (regardless of graphics mode)
     slirp - enable user networking, no root privileges is required
@@ -433,6 +436,26 @@ class BaseConfig(object):
             elif arg == 'nographic':
                 self.qemu_opt_script += ' -nographic'
                 self.kernel_cmdline_script += ' console=ttyS0'
+            elif arg == 'gl':
+                self.qemu_opt_script += ' -vga virtio -display gtk,gl=on'
+            elif arg == 'gl-es':
+                self.qemu_opt_script += ' -vga virtio -display gtk,gl=es'
+            elif arg == 'egl-headless':
+                self.qemu_opt_script += ' -vga virtio -display egl-headless'
+                # As runqemu can be run within bitbake (when using testimage, for example),
+                # we need to ensure that we run host pkg-config, and that it does not
+                # get mis-directed to native build paths set by bitbake.
+                try:
+                    del os.environ['PKG_CONFIG_PATH']
+                    del os.environ['PKG_CONFIG_DIR']
+                    del os.environ['PKG_CONFIG_LIBDIR']
+                except KeyError:
+                    pass
+                try:
+                    dripath = subprocess.check_output("PATH=/bin:/usr/bin:$PATH pkg-config --variable=dridriverdir dri", shell=True)
+                except subprocess.CalledProcessError as e:
+                    raise RunQemuError("Could not determine the path to dri drivers on the host via pkg-config.\nPlease install Mesa development files (particularly, dri.pc) on the host machine.")
+                os.environ['LIBGL_DRIVERS_PATH'] = dripath.decode('utf-8').strip()
             elif arg == 'serial':
                 self.kernel_cmdline_script += ' console=ttyS0'
                 self.serialconsole = True
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 11/12] runqemu: do not check for GL libraries
  2019-02-08 14:45 [PATCH 00/12] Enable accelerated OpenGL in qemu Alexander Kanavin
                   ` (9 preceding siblings ...)
  2019-02-08 14:45 ` [PATCH 10/12] runqemu: add options for enabling virgl GL acceleration Alexander Kanavin
@ 2019-02-08 14:45 ` Alexander Kanavin
  2019-02-08 14:45 ` [PATCH 12/12] selftest: add tests for virgl GL acceleration Alexander Kanavin
  11 siblings, 0 replies; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 14:45 UTC (permalink / raw)
  To: openembedded-core

qemu has been using libepoxy for a long time, and libepoxy loads GL via dlopen()
only when instructed to.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 scripts/runqemu | 35 -----------------------------------
 1 file changed, 35 deletions(-)

diff --git a/scripts/runqemu b/scripts/runqemu
index 50888a532e8..586f8700c94 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -118,39 +118,6 @@ def check_tun():
     if not os.access(dev_tun, os.W_OK):
         raise RunQemuError("TUN control device %s is not writable, please fix (e.g. sudo chmod 666 %s)" % (dev_tun, dev_tun))
 
-def check_libgl(qemu_bin):
-    cmd = ('ldd', qemu_bin)
-    logger.debug('Running %s...' % str(cmd))
-    need_gl = subprocess.check_output(cmd).decode('utf-8')
-    if re.search('libGLU', need_gl):
-        # We can't run without a libGL.so
-        libgl = False
-        check_files = (('/usr/lib/libGL.so', '/usr/lib/libGLU.so'), \
-            ('/usr/lib64/libGL.so', '/usr/lib64/libGLU.so'), \
-            ('/usr/lib/*-linux-gnu/libGL.so', '/usr/lib/*-linux-gnu/libGLU.so'))
-
-        for (f1, f2) in check_files:
-            if re.search('\*', f1):
-                for g1 in glob.glob(f1):
-                    if libgl:
-                        break
-                    if os.path.exists(g1):
-                        for g2 in glob.glob(f2):
-                            if os.path.exists(g2):
-                                libgl = True
-                                break
-                if libgl:
-                    break
-            else:
-                if os.path.exists(f1) and os.path.exists(f2):
-                    libgl = True
-                    break
-        if not libgl:
-            logger.error("You need libGL.so and libGLU.so to exist in your library path to run the QEMU emulator.")
-            logger.error("Ubuntu package names are: libgl1-mesa-dev and libglu1-mesa-dev.")
-            logger.error("Fedora package names are: mesa-libGL-devel mesa-libGLU-devel.")
-            raise RunQemuError('%s requires libGLU, but not found' % qemu_bin)
-
 def get_first_file(cmds):
     """Return first file found in wildcard cmds"""
     for cmd in cmds:
@@ -1178,8 +1145,6 @@ class BaseConfig(object):
         if not os.access(qemu_bin, os.X_OK):
             raise OEPathError("No QEMU binary '%s' could be found" % qemu_bin)
 
-        check_libgl(qemu_bin)
-
         self.qemu_opt = "%s %s %s %s" % (qemu_bin, self.get('NETWORK_CMD'), self.get('ROOTFS_OPTIONS'), self.get('QB_OPT_APPEND'))
 
         for ovmf in self.ovmf_bios:
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 12/12] selftest: add tests for virgl GL acceleration
  2019-02-08 14:45 [PATCH 00/12] Enable accelerated OpenGL in qemu Alexander Kanavin
                   ` (10 preceding siblings ...)
  2019-02-08 14:45 ` [PATCH 11/12] runqemu: do not check for GL libraries Alexander Kanavin
@ 2019-02-08 14:45 ` Alexander Kanavin
  11 siblings, 0 replies; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 14:45 UTC (permalink / raw)
  To: openembedded-core

Note that the tests require that the host machine has a X display,
has mesa development files installed and is able to create OpenGL contexts.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 meta-selftest/lib/oeqa/runtime/cases/virgl.py | 28 ++++++++++
 meta/lib/oeqa/selftest/cases/runtime_test.py  | 52 +++++++++++++++++++
 2 files changed, 80 insertions(+)
 create mode 100644 meta-selftest/lib/oeqa/runtime/cases/virgl.py

diff --git a/meta-selftest/lib/oeqa/runtime/cases/virgl.py b/meta-selftest/lib/oeqa/runtime/cases/virgl.py
new file mode 100644
index 00000000000..cc25e77d9c0
--- /dev/null
+++ b/meta-selftest/lib/oeqa/runtime/cases/virgl.py
@@ -0,0 +1,28 @@
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+import subprocess
+import oe
+
+class VirglTest(OERuntimeTestCase):
+
+    @OETestDepends(['ssh.SSHTest.test_ssh'])
+    def test_kernel_driver(self):
+        status, output = self.target.run('dmesg|grep virgl')
+        self.assertEqual(status, 0, "Checking for virgl driver in dmesg returned non-zero: %d\n%s" % (status, output))
+        self.assertIn("virgl 3d acceleration enabled", output, "virgl acceleration seems to be disabled:\n%s" %(output))
+
+    @OETestDepends(['virgl.VirglTest.test_kernel_driver'])
+    def test_kmscube(self):
+        from fnmatch import fnmatch
+
+        try:
+            distro = oe.lsb.distro_identifier()
+        except Exception:
+            distro = None
+
+        if distro and fnmatch(distro, 'centos-7'):
+            self.skipTest('kmscube is not working when centos 7 is the host OS')
+
+        status, output = self.target.run('kmscube', timeout=30)
+        self.assertEqual(status, 0, "kmscube exited with non-zero status %d and output:\n%s" %(status, output))
+        self.assertIn('renderer: "virgl"', output, "kmscube does not seem to use virgl:\n%s" %(output))
diff --git a/meta/lib/oeqa/selftest/cases/runtime_test.py b/meta/lib/oeqa/selftest/cases/runtime_test.py
index 906e460d4f8..3cecdc8e42b 100644
--- a/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -168,6 +168,58 @@ class TestImage(OESelftestTestCase):
         # remove the oeqa-feed-sign temporal directory
         shutil.rmtree(self.gpg_home, ignore_errors=True)
 
+    @OETestID(1883)
+    def test_testimage_virgl_gtk(self):
+        """
+        Summary: Check host-assisted accelerate OpenGL functionality in qemu with gtk frontend
+        Expected: 1. Check that virgl kernel driver is loaded and 3d acceleration is enabled
+                  2. Check that kmscube demo runs without crashing.
+        Product: oe-core
+        Author: Alexander Kanavin <alex.kanavin@gmail.com>
+        """
+        if "DISPLAY" not in os.environ:
+            self.skipTest("virgl gtk test must be run inside a X session")
+        qemu_packageconfig = get_bb_var('PACKAGECONFIG', 'qemu-native')
+        features = 'INHERIT += "testimage"\n'
+        if 'gtk+' not in qemu_packageconfig:
+            features += 'PACKAGECONFIG_append_pn-qemu-native = " gtk+"\n'
+        features += 'TEST_SUITES = "ping ssh virgl"\n'
+        features += 'IMAGE_FEATURES_append = " ssh-server-dropbear"\n'
+        features += 'IMAGE_INSTALL_append = " kmscube"\n'
+        features += 'TEST_RUNQEMUPARAMS = "gl"\n'
+        self.write_config(features)
+        bitbake('core-image-minimal')
+        bitbake('-c testimage core-image-minimal')
+
+    @OETestID(1883)
+    def test_testimage_virgl_headless(self):
+        """
+        Summary: Check host-assisted accelerate OpenGL functionality in qemu with egl-headless frontend
+        Expected: 1. Check that virgl kernel driver is loaded and 3d acceleration is enabled
+                  2. Check that kmscube demo runs without crashing.
+        Product: oe-core
+        Author: Alexander Kanavin <alex.kanavin@gmail.com>
+        """
+        import subprocess, os
+        try:
+            content = os.listdir("/dev/dri")
+            if len([i for i in content if i.startswith('render')]) == 0:
+                self.skipTest("No render nodes found in /dev/dri: %s" %(content))
+        except FileNotFoundError:
+            self.skipTest("/dev/dri directory does not exist; no render nodes available on this machine.")
+        try:
+            dripath = subprocess.check_output("pkg-config --variable=dridriverdir dri", shell=True)
+        except subprocess.CalledProcessError as e:
+            self.skipTest("Could not determine the path to dri drivers on the host via pkg-config.\nPlease install Mesa development files (particularly, dri.pc) on the host machine.")
+        features = 'INHERIT += "testimage"\n'
+        features += 'TEST_SUITES = "ping ssh virgl"\n'
+        features += 'IMAGE_FEATURES_append = " ssh-server-dropbear"\n'
+        features += 'IMAGE_INSTALL_append = " kmscube"\n'
+        features += 'TEST_RUNQEMUPARAMS = "egl-headless"\n'
+        self.write_config(features)
+        bitbake('core-image-minimal')
+        bitbake('-c testimage core-image-minimal')
+
 class Postinst(OESelftestTestCase):
     @OETestID(1540)
     @OETestID(1545)
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* Re: [PATCH 04/12] qemu: build target variant with gtk+, and nativesdk variant without sdl
  2019-02-08 14:45 ` [PATCH 04/12] qemu: build target variant with gtk+, and nativesdk variant without sdl Alexander Kanavin
@ 2019-02-08 15:31   ` Mark Hatle
  2019-02-08 15:43     ` Alexander Kanavin
  0 siblings, 1 reply; 32+ messages in thread
From: Mark Hatle @ 2019-02-08 15:31 UTC (permalink / raw)
  To: Alexander Kanavin, openembedded-core

I may be nitpicking slightly, but this patch 4 and 3 should probably be
combined.. I looked at '3' and went "this looks wrong, I have no idea why"..
then saw '4' and it became clear.  Since they're both tied together (same
purpose) it may make sense to combine them...

On 2/8/19 8:45 AM, Alexander Kanavin wrote:
> As sdl is deprecated in favor of gtk+, it should not be the default.

At a minimum the commit message above should be included in 3/12.

--Mark

> Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> ---
>  meta/recipes-devtools/qemu/qemu.inc | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
> index 95e9e0ede77..07f78058e7b 100644
> --- a/meta/recipes-devtools/qemu/qemu.inc
> +++ b/meta/recipes-devtools/qemu/qemu.inc
> @@ -71,11 +71,11 @@ do_install_append() {
>  # END of qemu-mips workaround
>  
>  PACKAGECONFIG ??= " \
> -    fdt sdl kvm \
> +    fdt gtk+ kvm \
>      ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
>  "
>  PACKAGECONFIG_class-native ??= "fdt alsa kvm virglrenderer glx"
> -PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm virglrenderer glx"
> +PACKAGECONFIG_class-nativesdk ??= "fdt kvm virglrenderer glx"
>  
>  # Handle distros such as CentOS 5 32-bit that do not have kvm support
>  PACKAGECONFIG_class-native_remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
> 



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 04/12] qemu: build target variant with gtk+, and nativesdk variant without sdl
  2019-02-08 15:31   ` Mark Hatle
@ 2019-02-08 15:43     ` Alexander Kanavin
  2019-02-08 15:55       ` Mark Hatle
  0 siblings, 1 reply; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 15:43 UTC (permalink / raw)
  To: Mark Hatle; +Cc: OE-core

Patch 3 changes things in meta-poky/, and patch 4 changes things in
meta/, so they cannot be combined unfortunately. I can however swap
their order, so that there is less confusion.

Alex

On Fri, 8 Feb 2019 at 16:31, Mark Hatle <mark.hatle@windriver.com> wrote:
>
> I may be nitpicking slightly, but this patch 4 and 3 should probably be
> combined.. I looked at '3' and went "this looks wrong, I have no idea why"..
> then saw '4' and it became clear.  Since they're both tied together (same
> purpose) it may make sense to combine them...
>
> On 2/8/19 8:45 AM, Alexander Kanavin wrote:
> > As sdl is deprecated in favor of gtk+, it should not be the default.
>
> At a minimum the commit message above should be included in 3/12.
>
> --Mark
>
> > Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> > ---
> >  meta/recipes-devtools/qemu/qemu.inc | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
> > index 95e9e0ede77..07f78058e7b 100644
> > --- a/meta/recipes-devtools/qemu/qemu.inc
> > +++ b/meta/recipes-devtools/qemu/qemu.inc
> > @@ -71,11 +71,11 @@ do_install_append() {
> >  # END of qemu-mips workaround
> >
> >  PACKAGECONFIG ??= " \
> > -    fdt sdl kvm \
> > +    fdt gtk+ kvm \
> >      ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
> >  "
> >  PACKAGECONFIG_class-native ??= "fdt alsa kvm virglrenderer glx"
> > -PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm virglrenderer glx"
> > +PACKAGECONFIG_class-nativesdk ??= "fdt kvm virglrenderer glx"
> >
> >  # Handle distros such as CentOS 5 32-bit that do not have kvm support
> >  PACKAGECONFIG_class-native_remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
> >
>


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 04/12] qemu: build target variant with gtk+, and nativesdk variant without sdl
  2019-02-08 15:43     ` Alexander Kanavin
@ 2019-02-08 15:55       ` Mark Hatle
  2019-02-08 15:58         ` Alexander Kanavin
  0 siblings, 1 reply; 32+ messages in thread
From: Mark Hatle @ 2019-02-08 15:55 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: OE-core

On 2/8/19 9:43 AM, Alexander Kanavin wrote:
> Patch 3 changes things in meta-poky/, and patch 4 changes things in
> meta/, so they cannot be combined unfortunately. I can however swap
> their order, so that there is less confusion.

Swap the order and add a copy of the commit message (from 4 to 3) then.  That
should lesson anyone's questions if they need to figure out why it changed in
the future.

Thanks!
--Mark

> Alex
> 
> On Fri, 8 Feb 2019 at 16:31, Mark Hatle <mark.hatle@windriver.com> wrote:
>>
>> I may be nitpicking slightly, but this patch 4 and 3 should probably be
>> combined.. I looked at '3' and went "this looks wrong, I have no idea why"..
>> then saw '4' and it became clear.  Since they're both tied together (same
>> purpose) it may make sense to combine them...
>>
>> On 2/8/19 8:45 AM, Alexander Kanavin wrote:
>>> As sdl is deprecated in favor of gtk+, it should not be the default.
>>
>> At a minimum the commit message above should be included in 3/12.
>>
>> --Mark
>>
>>> Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
>>> ---
>>>  meta/recipes-devtools/qemu/qemu.inc | 4 ++--
>>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
>>> index 95e9e0ede77..07f78058e7b 100644
>>> --- a/meta/recipes-devtools/qemu/qemu.inc
>>> +++ b/meta/recipes-devtools/qemu/qemu.inc
>>> @@ -71,11 +71,11 @@ do_install_append() {
>>>  # END of qemu-mips workaround
>>>
>>>  PACKAGECONFIG ??= " \
>>> -    fdt sdl kvm \
>>> +    fdt gtk+ kvm \
>>>      ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
>>>  "
>>>  PACKAGECONFIG_class-native ??= "fdt alsa kvm virglrenderer glx"
>>> -PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm virglrenderer glx"
>>> +PACKAGECONFIG_class-nativesdk ??= "fdt kvm virglrenderer glx"
>>>
>>>  # Handle distros such as CentOS 5 32-bit that do not have kvm support
>>>  PACKAGECONFIG_class-native_remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
>>>
>>



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 04/12] qemu: build target variant with gtk+, and nativesdk variant without sdl
  2019-02-08 15:55       ` Mark Hatle
@ 2019-02-08 15:58         ` Alexander Kanavin
  2019-02-12 10:20           ` Mark Hatle
  0 siblings, 1 reply; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 15:58 UTC (permalink / raw)
  To: Mark Hatle; +Cc: OE-core

On Fri, 8 Feb 2019 at 16:56, Mark Hatle <mark.hatle@windriver.com> wrote:
> > Patch 3 changes things in meta-poky/, and patch 4 changes things in
> > meta/, so they cannot be combined unfortunately. I can however swap
> > their order, so that there is less confusion.
>
> Swap the order and add a copy of the commit message (from 4 to 3) then.  That
> should lesson anyone's questions if they need to figure out why it changed in
> the future.

Currently the commits are:

commit 341ab87cf326dc1f1d7a3b83d624cde04047f43e
Author: Alexander Kanavin <alex.kanavin@gmail.com>
Date:   Thu Dec 27 15:17:26 2018 +0100

    local.conf.sample: adjust the qemu config to enable gtk+ instead of sdl

    Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>

commit 1170d353029dfb3f1a5ed9bab567e353bd034dfa
Author: Alexander Kanavin <alex.kanavin@gmail.com>
Date:   Thu Dec 27 15:33:27 2018 +0100

    qemu: build target variant with gtk+, and nativesdk variant without sdl

    As sdl is deprecated in favor of gtk+, it should not be the default.

    Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>

I'm confused, what should go where?

Alex


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 02/12] qemu: enable virglrenderer and glx options for native/nativesdk builds
  2019-02-08 14:45 ` [PATCH 02/12] qemu: enable virglrenderer and glx options for native/nativesdk builds Alexander Kanavin
@ 2019-02-08 23:12   ` Martin Jansa
  2019-02-08 23:32     ` Alexander Kanavin
  0 siblings, 1 reply; 32+ messages in thread
From: Martin Jansa @ 2019-02-08 23:12 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: openembedded-core

[-- Attachment #1: Type: text/plain, Size: 1931 bytes --]

On Fri, Feb 08, 2019 at 03:45:43PM +0100, Alexander Kanavin wrote:
> Except for ming32/darwin, which do not support them.
> 
> Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> ---
>  meta/recipes-devtools/qemu/qemu.inc | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
> index c127434b020..95e9e0ede77 100644
> --- a/meta/recipes-devtools/qemu/qemu.inc
> +++ b/meta/recipes-devtools/qemu/qemu.inc
> @@ -74,15 +74,15 @@ PACKAGECONFIG ??= " \
>      fdt sdl kvm \
>      ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
>  "
> -PACKAGECONFIG_class-native ??= "fdt alsa kvm"
> -PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm"
> +PACKAGECONFIG_class-native ??= "fdt alsa kvm virglrenderer glx"
> +PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm virglrenderer glx"

Didn't you want to enable gtk+ here as well?

>  # Handle distros such as CentOS 5 32-bit that do not have kvm support
>  PACKAGECONFIG_class-native_remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
>  
> -# Disable kvm on targets that do not support it
> -PACKAGECONFIG_remove_darwin = "kvm"
> -PACKAGECONFIG_remove_mingw32 = "kvm"
> +# Disable kvm/virgl/mesa on targets that do not support it
> +PACKAGECONFIG_remove_darwin = "kvm virglrenderer glx gtk+"
> +PACKAGECONFIG_remove_mingw32 = "kvm virglrenderer glx gtk+"
>  
>  PACKAGECONFIG[sdl] = "--enable-sdl --with-sdlabi=2.0,--disable-sdl,libsdl2"
>  PACKAGECONFIG[virtfs] = "--enable-virtfs --enable-attr,--disable-virtfs,libcap attr,"
> -- 
> 2.17.1
> 
> -- 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 201 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 02/12] qemu: enable virglrenderer and glx options for native/nativesdk builds
  2019-02-08 23:12   ` Martin Jansa
@ 2019-02-08 23:32     ` Alexander Kanavin
  2019-02-09  9:32       ` Martin Jansa
  0 siblings, 1 reply; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-08 23:32 UTC (permalink / raw)
  To: Martin Jansa; +Cc: OE-core

On Sat, 9 Feb 2019 at 00:12, Martin Jansa <martin.jansa@gmail.com> wrote:
> >  "
> > -PACKAGECONFIG_class-native ??= "fdt alsa kvm"
> > -PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm"
> > +PACKAGECONFIG_class-native ??= "fdt alsa kvm virglrenderer glx"
> > +PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm virglrenderer glx"
>
> Didn't you want to enable gtk+ here as well?

Nope; it's enabled in a separate patch in meta-poky/local.conf
template, in the same way as sdl is enabled there currently.

On the other hand... maybe we can just simplify it all, and enable gtk
directly in the recipe.

Alex


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 02/12] qemu: enable virglrenderer and glx options for native/nativesdk builds
  2019-02-08 23:32     ` Alexander Kanavin
@ 2019-02-09  9:32       ` Martin Jansa
  2019-02-09 10:04         ` Alexander Kanavin
  0 siblings, 1 reply; 32+ messages in thread
From: Martin Jansa @ 2019-02-09  9:32 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: OE-core

[-- Attachment #1: Type: text/plain, Size: 1064 bytes --]

On Sat, Feb 09, 2019 at 12:32:13AM +0100, Alexander Kanavin wrote:
> On Sat, 9 Feb 2019 at 00:12, Martin Jansa <martin.jansa@gmail.com> wrote:
> > >  "
> > > -PACKAGECONFIG_class-native ??= "fdt alsa kvm"
> > > -PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm"
> > > +PACKAGECONFIG_class-native ??= "fdt alsa kvm virglrenderer glx"
> > > +PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm virglrenderer glx"
> >
> > Didn't you want to enable gtk+ here as well?
> 
> Nope; it's enabled in a separate patch in meta-poky/local.conf
> template, in the same way as sdl is enabled there currently.
> 
> On the other hand... maybe we can just simplify it all, and enable gtk
> directly in the recipe.

Does enabling virglrenderer and glx do anything useful without any UI?
If not then I guess it should be enabled directly here or all 3 enabled
only in the poky's local.conf.

I haven't tried egl-headless+spice on this patchset yet, maybe that's
the combination I'm looking for.

Regards,
-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 201 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 01/12] virglrenderer: add a recipe
  2019-02-08 14:45 ` [PATCH 01/12] virglrenderer: add a recipe Alexander Kanavin
@ 2019-02-09  9:44   ` Martin Jansa
  2019-02-09 10:06     ` Alexander Kanavin
  0 siblings, 1 reply; 32+ messages in thread
From: Martin Jansa @ 2019-02-09  9:44 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: openembedded-core

[-- Attachment #1: Type: text/plain, Size: 5069 bytes --]

On Fri, Feb 08, 2019 at 03:45:42PM +0100, Alexander Kanavin wrote:
> This component enables hardware-accelerated GL inside QEMU guests.
> For more information, see here:
> 
> https://lwn.net/Articles/767970/
> https://www.collabora.com/news-and-blog/blog/2018/02/12/virtualizing-gpu-access/
> https://www.collabora.com/news-and-blog/blog/2018/05/09/gpu-virtualization-update/
> 
> Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> ---
>  meta/conf/distro/include/maintainers.inc      |  1 +
>  .../0001-vtest-add-missing-includes.patch     | 38 +++++++++++++++++++
>  .../virglrenderer/virglrenderer_git.bb        | 19 ++++++++++
>  3 files changed, 58 insertions(+)
>  create mode 100644 meta/recipes-graphics/virglrenderer/virglrenderer/0001-vtest-add-missing-includes.patch
>  create mode 100644 meta/recipes-graphics/virglrenderer/virglrenderer_git.bb
> 
> diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
> index 122fdbcff4b..f7d43d20b7f 100644
> --- a/meta/conf/distro/include/maintainers.inc
> +++ b/meta/conf/distro/include/maintainers.inc
> @@ -700,6 +700,7 @@ RECIPE_MAINTAINER_pn-util-macros = "Armin Kuster <akuster808@gmail.com>"
>  RECIPE_MAINTAINER_pn-v86d = "Alexander Kanavin <alex.kanavin@gmail.com>"
>  RECIPE_MAINTAINER_pn-vala = "Alexander Kanavin <alex.kanavin@gmail.com>"
>  RECIPE_MAINTAINER_pn-valgrind = "Alexander Kanavin <alex.kanavin@gmail.com>"
> +RECIPE_MAINTAINER_pn-virglrenderer = "Alexander Kanavin <alex.kanavin@gmail.com>"
>  RECIPE_MAINTAINER_pn-volatile-binds = "Chen Qi <Qi.Chen@windriver.com>"
>  RECIPE_MAINTAINER_pn-vte = "Anuj Mittal <anuj.mittal@intel.com>"
>  RECIPE_MAINTAINER_pn-vulkan = "Ross Burton <ross.burton@intel.com>"
> diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer/0001-vtest-add-missing-includes.patch b/meta/recipes-graphics/virglrenderer/virglrenderer/0001-vtest-add-missing-includes.patch
> new file mode 100644
> index 00000000000..b565c48ee66
> --- /dev/null
> +++ b/meta/recipes-graphics/virglrenderer/virglrenderer/0001-vtest-add-missing-includes.patch
> @@ -0,0 +1,38 @@
> +From 05c5c5f43fbffb3317bd9da27d414890d2ef493c Mon Sep 17 00:00:00 2001
> +From: Alexander Kanavin <alex.kanavin@gmail.com>
> +Date: Fri, 18 Jan 2019 13:47:23 +0100
> +Subject: [PATCH] vtest: add missing includes
> +
> +This fixes build failures with musl C library
> +
> +Upstream-Status: Submitted [https://gitlab.freedesktop.org/virgl/virglrenderer/merge_requests/125]
> +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> +---
> + vtest/util.c         | 1 +
> + vtest/vtest_server.c | 1 +
> + 2 files changed, 2 insertions(+)
> +
> +diff --git a/vtest/util.c b/vtest/util.c
> +index 0d3c78f..c605253 100644
> +--- a/vtest/util.c
> ++++ b/vtest/util.c
> +@@ -26,6 +26,7 @@
> + #include <stdio.h>
> + #include <string.h>
> + #include <unistd.h>
> ++#include <sys/select.h>
> + 
> + int vtest_wait_for_fd_read(int fd)
> + {
> +diff --git a/vtest/vtest_server.c b/vtest/vtest_server.c
> +index bc6c95f..010721f 100644
> +--- a/vtest/vtest_server.c
> ++++ b/vtest/vtest_server.c
> +@@ -31,6 +31,7 @@
> + #include <netinet/in.h>
> + #include <sys/un.h>
> + #include <fcntl.h>
> ++#include <string.h>
> + 
> + #include "util.h"
> + #include "vtest.h"
> diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer_git.bb b/meta/recipes-graphics/virglrenderer/virglrenderer_git.bb
> new file mode 100644
> index 00000000000..93fc35feb8d
> --- /dev/null
> +++ b/meta/recipes-graphics/virglrenderer/virglrenderer_git.bb
> @@ -0,0 +1,19 @@
> +SUMMARY = "VirGL virtual OpenGL renderer"
> +HOMEPAGE = "https://virgil3d.github.io/"
> +
> +LICENSE = "MIT"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=c81c08eeefd9418fca8f88309a76db10"
> +
> +DEPENDS = "libdrm mesa libepoxy"

Does it need to depend on mesa directly instead of one of virtual/*
providers?

It fails to build for targets which use different mesa, e.g. mesa-gl:

ERROR: Nothing PROVIDES 'mesa' (but /OE/build/luneos-master/webos-ports/openembedded-core/meta/recipes-graphics/virglrenderer/virglrenderer_git.bb DEPENDS on or otherwise requires it)
mesa was skipped: PREFERRED_PROVIDER_virtual/libgl set to mesa-gl, not mesa
ERROR: Required build target 'virglrenderer' has no buildable providers.
Missing or unbuildable dependency chain was: ['virglrenderer', 'mesa']

Regards,

> +PV = "0.7.0"
> +SRCREV = "402c228861c9893f64cffbbcb4cb23044b8c721c"
> +SRC_URI = "git://anongit.freedesktop.org/virglrenderer \
> +           file://0001-vtest-add-missing-includes.patch \
> +           "
> +
> +S = "${WORKDIR}/git"
> +
> +inherit autotools pkgconfig
> +
> +BBCLASSEXTEND = "native nativesdk"
> +
> -- 
> 2.17.1
> 
> -- 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 201 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 02/12] qemu: enable virglrenderer and glx options for native/nativesdk builds
  2019-02-09  9:32       ` Martin Jansa
@ 2019-02-09 10:04         ` Alexander Kanavin
  0 siblings, 0 replies; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-09 10:04 UTC (permalink / raw)
  To: Martin Jansa; +Cc: OE-core

On Sat, 9 Feb 2019 at 10:32, Martin Jansa <martin.jansa@gmail.com> wrote:

> Does enabling virglrenderer and glx do anything useful without any UI?
> If not then I guess it should be enabled directly here or all 3 enabled
> only in the poky's local.conf.

Yes, absolutely. You can instruct qemu to render to an off-screen
buffer, and access that with vnc, even across the network (and maybe
spice will work too, I didn't try :). I explained this in the cover
letter...

Alex


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 01/12] virglrenderer: add a recipe
  2019-02-09  9:44   ` Martin Jansa
@ 2019-02-09 10:06     ` Alexander Kanavin
  2019-02-09 13:19       ` Martin Jansa
  0 siblings, 1 reply; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-09 10:06 UTC (permalink / raw)
  To: Martin Jansa; +Cc: OE-core

On Sat, 9 Feb 2019 at 10:44, Martin Jansa <martin.jansa@gmail.com> wrote:
> Does it need to depend on mesa directly instead of one of virtual/*
> providers?
>
> It fails to build for targets which use different mesa, e.g. mesa-gl:
>
> ERROR: Nothing PROVIDES 'mesa' (but /OE/build/luneos-master/webos-ports/openembedded-core/meta/recipes-graphics/virglrenderer/virglrenderer_git.bb DEPENDS on or otherwise requires it)
> mesa was skipped: PREFERRED_PROVIDER_virtual/libgl set to mesa-gl, not mesa
> ERROR: Required build target 'virglrenderer' has no buildable providers.
> Missing or unbuildable dependency chain was: ['virglrenderer', 'mesa']

Yes, mesa-gl isn't going to work. Virgl needs the following bits (set
in mesa recipe):
PACKAGECONFIG_class-native ?= "gbm dri-native egl"

dri-native is same as dri, but without drivers to save build time.

Alex


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 01/12] virglrenderer: add a recipe
  2019-02-09 10:06     ` Alexander Kanavin
@ 2019-02-09 13:19       ` Martin Jansa
  2019-02-09 16:43         ` Alexander Kanavin
  2019-02-09 17:23         ` Khem Raj
  0 siblings, 2 replies; 32+ messages in thread
From: Martin Jansa @ 2019-02-09 13:19 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: OE-core

[-- Attachment #1: Type: text/plain, Size: 8411 bytes --]

On Sat, Feb 09, 2019 at 11:06:47AM +0100, Alexander Kanavin wrote:
> On Sat, 9 Feb 2019 at 10:44, Martin Jansa <martin.jansa@gmail.com> wrote:
> > Does it need to depend on mesa directly instead of one of virtual/*
> > providers?
> >
> > It fails to build for targets which use different mesa, e.g. mesa-gl:
> >
> > ERROR: Nothing PROVIDES 'mesa' (but /OE/build/luneos-master/webos-ports/openembedded-core/meta/recipes-graphics/virglrenderer/virglrenderer_git.bb DEPENDS on or otherwise requires it)
> > mesa was skipped: PREFERRED_PROVIDER_virtual/libgl set to mesa-gl, not mesa
> > ERROR: Required build target 'virglrenderer' has no buildable providers.
> > Missing or unbuildable dependency chain was: ['virglrenderer', 'mesa']
> 
> Yes, mesa-gl isn't going to work. Virgl needs the following bits (set
> in mesa recipe):
> PACKAGECONFIG_class-native ?= "gbm dri-native egl"
> 
> dri-native is same as dri, but without drivers to save build time.

OK, then with mesa used in qemux86* it still fails with:

| Making all in vtest
| make[2]: Entering directory '/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/build/vtest'
| i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -DHAVE_CONFIG_H -I. -I../../git/vtest -I..    -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -c -o util.o ../../git/vtest/util.c
| i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -DHAVE_CONFIG_H -I. -I../../git/vtest -I..    -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -c -o vtest_server.o ../../git/vtest/vtest_server.c
| i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -DHAVE_CONFIG_H -I. -I../../git/vtest -I..    -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -c -o vtest_renderer.o ../../git/vtest/vtest_renderer.c
| ../i586-webos-linux-libtool  --tag=CC   --mode=link i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast  -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o virgl_test_server util.o vtest_server.o vtest_renderer.o ../src/libvirglrenderer.la
| i586-webos-linux-libtool: link: i586-webos-linux-gcc -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0 -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot= -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native= -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o .libs/virgl_test_server util.o vtest_server.o vtest_renderer.o  ../src/.libs/libvirglrenderer.so -lm -lgbm -lepoxy -pthread
| ../src/.libs/libvirglrenderer.so: error: undefined reference to 'drmPrimeHandleToFD'
| collect2: error: ld returned 1 exit status
| Makefile:429: recipe for target 'virgl_test_server' failed
| make[2]: *** [virgl_test_server] Error 1
| make[2]: Leaving directory '/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/build/vtest'
| Makefile:510: recipe for target 'all-recursive' failed
| make[1]: *** [all-recursive] Error 1
| make[1]: Leaving directory '/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/build'
| Makefile:419: recipe for target 'all' failed
| make: *** [all] Error 2
| ERROR: oe_runmake failed

The fix from
http://git.openembedded.org/openembedded-core-contrib/commit/?h=jansa/qemu&id=c29d4ccfe0a5f53c49883e55c2c2bb444997b1cf
is still applicable and fixes this.
-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 201 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 01/12] virglrenderer: add a recipe
  2019-02-09 13:19       ` Martin Jansa
@ 2019-02-09 16:43         ` Alexander Kanavin
  2019-02-09 17:09           ` Martin Jansa
  2019-02-09 17:23         ` Khem Raj
  1 sibling, 1 reply; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-09 16:43 UTC (permalink / raw)
  To: Martin Jansa; +Cc: OE-core

On Sat, 9 Feb 2019 at 14:19, Martin Jansa <martin.jansa@gmail.com> wrote:
> The fix from
> http://git.openembedded.org/openembedded-core-contrib/commit/?h=jansa/qemu&id=c29d4ccfe0a5f53c49883e55c2c2bb444997b1cf
> is still applicable and fixes this.

Somehow the issue does not show up in plain poky, but the fix seems
right. Can you send it upstream via
https://gitlab.freedesktop.org/virgl/virglrenderer/merge_requests
please?

Alex


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 01/12] virglrenderer: add a recipe
  2019-02-09 16:43         ` Alexander Kanavin
@ 2019-02-09 17:09           ` Martin Jansa
  2019-02-09 17:16             ` Alexander Kanavin
  0 siblings, 1 reply; 32+ messages in thread
From: Martin Jansa @ 2019-02-09 17:09 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: OE-core

[-- Attachment #1: Type: text/plain, Size: 798 bytes --]

It was sent to upstream (somewhere) by the original author, I haven't found
it on gitlab, so I've asked original author in:
https://bugs.gentoo.org/571124#c5

Plain poky probably doesn't use gold, that's why you're not seeing it there.

On Sat, Feb 9, 2019 at 5:43 PM Alexander Kanavin <alex.kanavin@gmail.com>
wrote:

> On Sat, 9 Feb 2019 at 14:19, Martin Jansa <martin.jansa@gmail.com> wrote:
> > The fix from
> >
> http://git.openembedded.org/openembedded-core-contrib/commit/?h=jansa/qemu&id=c29d4ccfe0a5f53c49883e55c2c2bb444997b1cf
> > is still applicable and fixes this.
>
> Somehow the issue does not show up in plain poky, but the fix seems
> right. Can you send it upstream via
> https://gitlab.freedesktop.org/virgl/virglrenderer/merge_requests
> please?
>
> Alex
>

[-- Attachment #2: Type: text/html, Size: 1578 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 01/12] virglrenderer: add a recipe
  2019-02-09 17:09           ` Martin Jansa
@ 2019-02-09 17:16             ` Alexander Kanavin
  0 siblings, 0 replies; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-09 17:16 UTC (permalink / raw)
  To: Martin Jansa; +Cc: OE-core

On Sat, 9 Feb 2019 at 18:10, Martin Jansa <martin.jansa@gmail.com> wrote:
>
> It was sent to upstream (somewhere) by the original author, I haven't found it on gitlab, so I've asked original author in:
> https://bugs.gentoo.org/571124#c5

Maybe a new merge request is the quickest way to sort this. The patch
was probably sent to the virgl mailing list or privately to airlied
years ago and fell through.

Alex


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 01/12] virglrenderer: add a recipe
  2019-02-09 13:19       ` Martin Jansa
  2019-02-09 16:43         ` Alexander Kanavin
@ 2019-02-09 17:23         ` Khem Raj
  2019-02-11 15:24           ` Khem Raj
  1 sibling, 1 reply; 32+ messages in thread
From: Khem Raj @ 2019-02-09 17:23 UTC (permalink / raw)
  To: Martin Jansa; +Cc: OE-core

dump ld.bfd generated .so and see if this symbol is present

On Sat, Feb 9, 2019 at 5:20 AM Martin Jansa <martin.jansa@gmail.com> wrote:
>
> On Sat, Feb 09, 2019 at 11:06:47AM +0100, Alexander Kanavin wrote:
> > On Sat, 9 Feb 2019 at 10:44, Martin Jansa <martin.jansa@gmail.com> wrote:
> > > Does it need to depend on mesa directly instead of one of virtual/*
> > > providers?
> > >
> > > It fails to build for targets which use different mesa, e.g. mesa-gl:
> > >
> > > ERROR: Nothing PROVIDES 'mesa' (but /OE/build/luneos-master/webos-ports/openembedded-core/meta/recipes-graphics/virglrenderer/virglrenderer_git.bb DEPENDS on or otherwise requires it)
> > > mesa was skipped: PREFERRED_PROVIDER_virtual/libgl set to mesa-gl, not mesa
> > > ERROR: Required build target 'virglrenderer' has no buildable providers.
> > > Missing or unbuildable dependency chain was: ['virglrenderer', 'mesa']
> >
> > Yes, mesa-gl isn't going to work. Virgl needs the following bits (set
> > in mesa recipe):
> > PACKAGECONFIG_class-native ?= "gbm dri-native egl"
> >
> > dri-native is same as dri, but without drivers to save build time.
>
> OK, then with mesa used in qemux86* it still fails with:
>
> | Making all in vtest
> | make[2]: Entering directory '/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/build/vtest'
> | i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -DHAVE_CONFIG_H -I. -I../../git/vtest -I..    -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -c -o util.o ../../git/vtest/util.c
> | i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -DHAVE_CONFIG_H -I. -I../../git/vtest -I..    -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -c -o vtest_server.o ../../git/vtest/vtest_server.c
> | i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -DHAVE_CONFIG_H -I. -I../../git/vtest -I..    -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -c -o vtest_renderer.o ../../git/vtest/vtest_renderer.c
> | ../i586-webos-linux-libtool  --tag=CC   --mode=link i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast  -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o virgl_test_server util.o vtest_server.o vtest_renderer.o ../src/libvirglrenderer.la
> | i586-webos-linux-libtool: link: i586-webos-linux-gcc -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0 -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot= -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native= -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o .libs/virgl_test_server util.o vtest_server.o vtest_renderer.o  ../src/.libs/libvirglrenderer.so -lm -lgbm -lepoxy -pthread
> | ../src/.libs/libvirglrenderer.so: error: undefined reference to 'drmPrimeHandleToFD'
> | collect2: error: ld returned 1 exit status
> | Makefile:429: recipe for target 'virgl_test_server' failed
> | make[2]: *** [virgl_test_server] Error 1
> | make[2]: Leaving directory '/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/build/vtest'
> | Makefile:510: recipe for target 'all-recursive' failed
> | make[1]: *** [all-recursive] Error 1
> | make[1]: Leaving directory '/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/build'
> | Makefile:419: recipe for target 'all' failed
> | make: *** [all] Error 2
> | ERROR: oe_runmake failed
>
> The fix from
> http://git.openembedded.org/openembedded-core-contrib/commit/?h=jansa/qemu&id=c29d4ccfe0a5f53c49883e55c2c2bb444997b1cf
> is still applicable and fixes this.
> --
> Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 01/12] virglrenderer: add a recipe
  2019-02-09 17:23         ` Khem Raj
@ 2019-02-11 15:24           ` Khem Raj
  2019-02-12 11:33             ` Alexander Kanavin
  0 siblings, 1 reply; 32+ messages in thread
From: Khem Raj @ 2019-02-11 15:24 UTC (permalink / raw)
  To: Martin Jansa; +Cc: OE-core

here is a build failure with -fuse-ld=gold

https://errors.yoctoproject.org/Errors/Details/222046/

On Sat, Feb 9, 2019 at 9:23 AM Khem Raj <raj.khem@gmail.com> wrote:
>
> dump ld.bfd generated .so and see if this symbol is present
>
> On Sat, Feb 9, 2019 at 5:20 AM Martin Jansa <martin.jansa@gmail.com> wrote:
> >
> > On Sat, Feb 09, 2019 at 11:06:47AM +0100, Alexander Kanavin wrote:
> > > On Sat, 9 Feb 2019 at 10:44, Martin Jansa <martin.jansa@gmail.com> wrote:
> > > > Does it need to depend on mesa directly instead of one of virtual/*
> > > > providers?
> > > >
> > > > It fails to build for targets which use different mesa, e.g. mesa-gl:
> > > >
> > > > ERROR: Nothing PROVIDES 'mesa' (but /OE/build/luneos-master/webos-ports/openembedded-core/meta/recipes-graphics/virglrenderer/virglrenderer_git.bb DEPENDS on or otherwise requires it)
> > > > mesa was skipped: PREFERRED_PROVIDER_virtual/libgl set to mesa-gl, not mesa
> > > > ERROR: Required build target 'virglrenderer' has no buildable providers.
> > > > Missing or unbuildable dependency chain was: ['virglrenderer', 'mesa']
> > >
> > > Yes, mesa-gl isn't going to work. Virgl needs the following bits (set
> > > in mesa recipe):
> > > PACKAGECONFIG_class-native ?= "gbm dri-native egl"
> > >
> > > dri-native is same as dri, but without drivers to save build time.
> >
> > OK, then with mesa used in qemux86* it still fails with:
> >
> > | Making all in vtest
> > | make[2]: Entering directory '/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/build/vtest'
> > | i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -DHAVE_CONFIG_H -I. -I../../git/vtest -I..    -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -c -o util.o ../../git/vtest/util.c
> > | i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -DHAVE_CONFIG_H -I. -I../../git/vtest -I..    -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -c -o vtest_server.o ../../git/vtest/vtest_server.c
> > | i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -DHAVE_CONFIG_H -I. -I../../git/vtest -I..    -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -c -o vtest_renderer.o ../../git/vtest/vtest_renderer.c
> > | ../i586-webos-linux-libtool  --tag=CC   --mode=link i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast  -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o virgl_test_server util.o vtest_server.o vtest_renderer.o ../src/libvirglrenderer.la
> > | i586-webos-linux-libtool: link: i586-webos-linux-gcc -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0 -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot= -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native= -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o .libs/virgl_test_server util.o vtest_server.o vtest_renderer.o  ../src/.libs/libvirglrenderer.so -lm -lgbm -lepoxy -pthread
> > | ../src/.libs/libvirglrenderer.so: error: undefined reference to 'drmPrimeHandleToFD'
> > | collect2: error: ld returned 1 exit status
> > | Makefile:429: recipe for target 'virgl_test_server' failed
> > | make[2]: *** [virgl_test_server] Error 1
> > | make[2]: Leaving directory '/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/build/vtest'
> > | Makefile:510: recipe for target 'all-recursive' failed
> > | make[1]: *** [all-recursive] Error 1
> > | make[1]: Leaving directory '/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/build'
> > | Makefile:419: recipe for target 'all' failed
> > | make: *** [all] Error 2
> > | ERROR: oe_runmake failed
> >
> > The fix from
> > http://git.openembedded.org/openembedded-core-contrib/commit/?h=jansa/qemu&id=c29d4ccfe0a5f53c49883e55c2c2bb444997b1cf
> > is still applicable and fixes this.
> > --
> > Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com
> > --
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core@lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 04/12] qemu: build target variant with gtk+, and nativesdk variant without sdl
  2019-02-08 15:58         ` Alexander Kanavin
@ 2019-02-12 10:20           ` Mark Hatle
  2019-02-12 10:58             ` Alexander Kanavin
  0 siblings, 1 reply; 32+ messages in thread
From: Mark Hatle @ 2019-02-12 10:20 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: OE-core

On 2/8/19 9:58 AM, Alexander Kanavin wrote:
> On Fri, 8 Feb 2019 at 16:56, Mark Hatle <mark.hatle@windriver.com> wrote:
>>> Patch 3 changes things in meta-poky/, and patch 4 changes things in
>>> meta/, so they cannot be combined unfortunately. I can however swap
>>> their order, so that there is less confusion.
>>
>> Swap the order and add a copy of the commit message (from 4 to 3) then.  That
>> should lesson anyone's questions if they need to figure out why it changed in
>> the future.
> 
> Currently the commits are:
> 
> commit 341ab87cf326dc1f1d7a3b83d624cde04047f43e
> Author: Alexander Kanavin <alex.kanavin@gmail.com>
> Date:   Thu Dec 27 15:17:26 2018 +0100
> 
>     local.conf.sample: adjust the qemu config to enable gtk+ instead of sdl

Reading the above, I didn't know why you changed the qemu config to enable gtk+.

The commit below has the magic line:

'As sdl is deprecated in favor of gtk+, it should not be the default.'

Once you add that, it's clear to me why the change was made if I ever look at
the local.conf.sample (using git log or git blame).

(Sorry my reply had been delayed, I missed this earlier.)

--Mark

>     Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> 
> commit 1170d353029dfb3f1a5ed9bab567e353bd034dfa
> Author: Alexander Kanavin <alex.kanavin@gmail.com>
> Date:   Thu Dec 27 15:33:27 2018 +0100
> 
>     qemu: build target variant with gtk+, and nativesdk variant without sdl
> 
>     As sdl is deprecated in favor of gtk+, it should not be the default.
> 
>     Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> 
> I'm confused, what should go where?
> 
> Alex
> 



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 04/12] qemu: build target variant with gtk+, and nativesdk variant without sdl
  2019-02-12 10:20           ` Mark Hatle
@ 2019-02-12 10:58             ` Alexander Kanavin
  0 siblings, 0 replies; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-12 10:58 UTC (permalink / raw)
  To: Mark Hatle; +Cc: OE-core

On Tue, 12 Feb 2019 at 11:20, Mark Hatle <mark.hatle@windriver.com> wrote:
> Reading the above, I didn't know why you changed the qemu config to enable gtk+.
>
> The commit below has the magic line:
>
> 'As sdl is deprecated in favor of gtk+, it should not be the default.'
>
> Once you add that, it's clear to me why the change was made if I ever look at
> the local.conf.sample (using git log or git blame).
>
> (Sorry my reply had been delayed, I missed this earlier.)

Thanks, I fixed this now.

Alex


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 01/12] virglrenderer: add a recipe
  2019-02-11 15:24           ` Khem Raj
@ 2019-02-12 11:33             ` Alexander Kanavin
  0 siblings, 0 replies; 32+ messages in thread
From: Alexander Kanavin @ 2019-02-12 11:33 UTC (permalink / raw)
  To: Khem Raj; +Cc: OE-core

Anyway, I sent it upstream:
https://gitlab.freedesktop.org/virgl/virglrenderer/merge_requests/153
and added to my branch on poky-contrib.
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=akanavin/virgl-gtk

Alex

On Mon, 11 Feb 2019 at 16:24, Khem Raj <raj.khem@gmail.com> wrote:
>
> here is a build failure with -fuse-ld=gold
>
> https://errors.yoctoproject.org/Errors/Details/222046/
>
> On Sat, Feb 9, 2019 at 9:23 AM Khem Raj <raj.khem@gmail.com> wrote:
> >
> > dump ld.bfd generated .so and see if this symbol is present
> >
> > On Sat, Feb 9, 2019 at 5:20 AM Martin Jansa <martin.jansa@gmail.com> wrote:
> > >
> > > On Sat, Feb 09, 2019 at 11:06:47AM +0100, Alexander Kanavin wrote:
> > > > On Sat, 9 Feb 2019 at 10:44, Martin Jansa <martin.jansa@gmail.com> wrote:
> > > > > Does it need to depend on mesa directly instead of one of virtual/*
> > > > > providers?
> > > > >
> > > > > It fails to build for targets which use different mesa, e.g. mesa-gl:
> > > > >
> > > > > ERROR: Nothing PROVIDES 'mesa' (but /OE/build/luneos-master/webos-ports/openembedded-core/meta/recipes-graphics/virglrenderer/virglrenderer_git.bb DEPENDS on or otherwise requires it)
> > > > > mesa was skipped: PREFERRED_PROVIDER_virtual/libgl set to mesa-gl, not mesa
> > > > > ERROR: Required build target 'virglrenderer' has no buildable providers.
> > > > > Missing or unbuildable dependency chain was: ['virglrenderer', 'mesa']
> > > >
> > > > Yes, mesa-gl isn't going to work. Virgl needs the following bits (set
> > > > in mesa recipe):
> > > > PACKAGECONFIG_class-native ?= "gbm dri-native egl"
> > > >
> > > > dri-native is same as dri, but without drivers to save build time.
> > >
> > > OK, then with mesa used in qemux86* it still fails with:
> > >
> > > | Making all in vtest
> > > | make[2]: Entering directory '/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/build/vtest'
> > > | i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -DHAVE_CONFIG_H -I. -I../../git/vtest -I..    -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -c -o util.o ../../git/vtest/util.c
> > > | i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -DHAVE_CONFIG_H -I. -I../../git/vtest -I..    -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -c -o vtest_server.o ../../git/vtest/vtest_server.c
> > > | i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -DHAVE_CONFIG_H -I. -I../../git/vtest -I..    -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -c -o vtest_renderer.o ../../git/vtest/vtest_renderer.c
> > > | ../i586-webos-linux-libtool  --tag=CC   --mode=link i586-webos-linux-gcc  -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src   -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS   -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native=  -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast  -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o virgl_test_server util.o vtest_server.o vtest_renderer.o ../src/libvirglrenderer.la
> > > | i586-webos-linux-libtool: link: i586-webos-linux-gcc -m32 -march=i586 --sysroot=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot -I../../git/src/gallium/drivers/virgl -I../../git/src/gallium/include -I../../git/src/gallium/auxiliary -I../../git/src/gallium/drivers -I../../git/include -I../../git/src -I/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot/usr/include/libdrm -DMESA_EGL_NO_X11_HEADERS -O -fno-omit-frame-pointer -g -feliminate-unused-debug-types -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0=/usr/src/debug/virglrenderer/0.7.0-r0 -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot= -fdebug-prefix-map=/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/recipe-sysroot-native= -pipe -Wall -Wextra -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -Werror=int-to-pointer-cast -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o .libs/virgl_test_server util.o vtest_server.o vtest_renderer.o  ../src/.libs/libvirglrenderer.so -lm -lgbm -lepoxy -pthread
> > > | ../src/.libs/libvirglrenderer.so: error: undefined reference to 'drmPrimeHandleToFD'
> > > | collect2: error: ld returned 1 exit status
> > > | Makefile:429: recipe for target 'virgl_test_server' failed
> > > | make[2]: *** [virgl_test_server] Error 1
> > > | make[2]: Leaving directory '/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/build/vtest'
> > > | Makefile:510: recipe for target 'all-recursive' failed
> > > | make[1]: *** [all-recursive] Error 1
> > > | make[1]: Leaving directory '/OE/build/luneos-master/webos-ports/tmp-glibc/work/i586-webos-linux/virglrenderer/0.7.0-r0/build'
> > > | Makefile:419: recipe for target 'all' failed
> > > | make: *** [all] Error 2
> > > | ERROR: oe_runmake failed
> > >
> > > The fix from
> > > http://git.openembedded.org/openembedded-core-contrib/commit/?h=jansa/qemu&id=c29d4ccfe0a5f53c49883e55c2c2bb444997b1cf
> > > is still applicable and fixes this.
> > > --
> > > Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com
> > > --
> > > _______________________________________________
> > > Openembedded-core mailing list
> > > Openembedded-core@lists.openembedded.org
> > > http://lists.openembedded.org/mailman/listinfo/openembedded-core


^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2019-02-12 11:34 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-08 14:45 [PATCH 00/12] Enable accelerated OpenGL in qemu Alexander Kanavin
2019-02-08 14:45 ` [PATCH 01/12] virglrenderer: add a recipe Alexander Kanavin
2019-02-09  9:44   ` Martin Jansa
2019-02-09 10:06     ` Alexander Kanavin
2019-02-09 13:19       ` Martin Jansa
2019-02-09 16:43         ` Alexander Kanavin
2019-02-09 17:09           ` Martin Jansa
2019-02-09 17:16             ` Alexander Kanavin
2019-02-09 17:23         ` Khem Raj
2019-02-11 15:24           ` Khem Raj
2019-02-12 11:33             ` Alexander Kanavin
2019-02-08 14:45 ` [PATCH 02/12] qemu: enable virglrenderer and glx options for native/nativesdk builds Alexander Kanavin
2019-02-08 23:12   ` Martin Jansa
2019-02-08 23:32     ` Alexander Kanavin
2019-02-09  9:32       ` Martin Jansa
2019-02-09 10:04         ` Alexander Kanavin
2019-02-08 14:45 ` [PATCH 03/12] local.conf.sample: adjust the qemu config to enable gtk+ instead of sdl Alexander Kanavin
2019-02-08 14:45 ` [PATCH 04/12] qemu: build target variant with gtk+, and nativesdk variant without sdl Alexander Kanavin
2019-02-08 15:31   ` Mark Hatle
2019-02-08 15:43     ` Alexander Kanavin
2019-02-08 15:55       ` Mark Hatle
2019-02-08 15:58         ` Alexander Kanavin
2019-02-12 10:20           ` Mark Hatle
2019-02-12 10:58             ` Alexander Kanavin
2019-02-08 14:45 ` [PATCH 05/12] qemu: remove support for building against host sdl Alexander Kanavin
2019-02-08 14:45 ` [PATCH 06/12] qemu: add a gettext-native dependency to gtk option Alexander Kanavin
2019-02-08 14:45 ` [PATCH 07/12] qemu: add a patch to avoid a missing definition error Alexander Kanavin
2019-02-08 14:45 ` [PATCH 08/12] qemu: add environment variable wrappers to make qemu look good with gtk frontend Alexander Kanavin
2019-02-08 14:45 ` [PATCH 09/12] qemu: add a backported patch to fix egl-headless support Alexander Kanavin
2019-02-08 14:45 ` [PATCH 10/12] runqemu: add options for enabling virgl GL acceleration Alexander Kanavin
2019-02-08 14:45 ` [PATCH 11/12] runqemu: do not check for GL libraries Alexander Kanavin
2019-02-08 14:45 ` [PATCH 12/12] selftest: add tests for virgl GL acceleration Alexander Kanavin

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.