From a80a0b3981d129a945ddd775690963cefa15376a Mon Sep 17 00:00:00 2001 From: Jussi Kukkonen Date: Thu, 6 Jul 2017 10:54:36 +0300 Subject: gstreamer1.0-plugins-bad: Add vulkan PACKAGECONFIG This adds a Vulkan video sink (using xcb and/or wayland). Add a few patches to fix the build. Signed-off-by: Jussi Kukkonen Signed-off-by: Ross Burton --- .../gstreamer/gstreamer1.0-plugins-bad.inc | 4 +- ...y-Use-ifdef-for-platform-specific-defines.patch | 37 +++++++++++++ ...n-Use-the-generated-version-of-vkconfig.h.patch | 64 ++++++++++++++++++++++ .../gstreamer/gstreamer1.0-plugins-bad_1.10.4.bb | 2 + 4 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-vkdisplay-Use-ifdef-for-platform-specific-defines.patch create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-vulkan-Use-the-generated-version-of-vkconfig.h.patch diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc index 0ccfc89a2e..4f6bc854d2 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc @@ -66,6 +66,7 @@ PACKAGECONFIG[srtp] = "--enable-srtp,--disable-srtp,libsrtp" PACKAGECONFIG[uvch264] = "--enable-uvch264,--disable-uvch264,libusb1 libgudev" PACKAGECONFIG[voaacenc] = "--enable-voaacenc,--disable-voaacenc,vo-aacenc" PACKAGECONFIG[voamrwbenc] = "--enable-voamrwbenc,--disable-voamrwbenc,vo-amrwbenc" +PACKAGECONFIG[vulkan] = "--enable-vulkan,--disable-vulkan,vulkan" PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland-native wayland wayland-protocols" PACKAGECONFIG[webp] = "--enable-webp,--disable-webp,libwebp" @@ -78,7 +79,7 @@ PACKAGECONFIG[webp] = "--enable-webp,--disable-webp,libwebp" # openni2 winks direct3d directsound winscreencap acm apple_media # android_media avc bs2b chromaprint daala dts fdkaac gme gsm kate ladspa libde265 # lv2 mimic mpeg2enc mplex musepack nvenc ofa openh264 opensles pvr soundtouch spandsp -# spc teletextdec tinyalsa vdpau vulkan wasapi x265 zbar +# spc teletextdec tinyalsa vdpau wasapi x265 zbar # qt5 support is disabled, because it is not present in OE core, and requires more work than # just adding a packageconfig (it requires access to moc, uic, rcc, and qmake paths). @@ -136,7 +137,6 @@ EXTRA_OECONF += " \ --disable-timidity \ --disable-tinyalsa \ --disable-vdpau \ - --disable-vulkan \ --disable-wasapi \ --disable-wildmidi \ --disable-wininet \ diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-vkdisplay-Use-ifdef-for-platform-specific-defines.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-vkdisplay-Use-ifdef-for-platform-specific-defines.patch new file mode 100644 index 0000000000..caaa62d48a --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-vkdisplay-Use-ifdef-for-platform-specific-defines.patch @@ -0,0 +1,37 @@ +From 1523ab462c1bf19055960ced255f4872b6cf9f5c Mon Sep 17 00:00:00 2001 +From: Jussi Kukkonen +Date: Wed, 5 Jul 2017 11:00:42 +0300 +Subject: [PATCH 1/2] vkdisplay: Use ifdef for platform specific defines + +VK_KHR_*_SURFACE_EXTENSION_NAME are only available when corresponding +WSI is enabled. + +Signed-off-by: Jussi Kukkonen +Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=784539] +--- + ext/vulkan/vkdisplay.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/ext/vulkan/vkdisplay.c b/ext/vulkan/vkdisplay.c +index 550134cd8..ade5d4583 100644 +--- a/ext/vulkan/vkdisplay.c ++++ b/ext/vulkan/vkdisplay.c +@@ -448,11 +448,15 @@ gst_vulkan_display_type_to_extension_string (GstVulkanDisplayType type) + if (type == GST_VULKAN_DISPLAY_TYPE_NONE) + return NULL; + ++#if GST_VULKAN_HAVE_WINDOW_XCB + if (type & GST_VULKAN_DISPLAY_TYPE_XCB) + return VK_KHR_XCB_SURFACE_EXTENSION_NAME; ++#endif + ++#if GST_VULKAN_HAVE_WINDOW_WAYLAND + if (type & GST_VULKAN_DISPLAY_TYPE_WAYLAND) + return VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME; ++#endif + + return NULL; + } +-- +2.13.2 + diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-vulkan-Use-the-generated-version-of-vkconfig.h.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-vulkan-Use-the-generated-version-of-vkconfig.h.patch new file mode 100644 index 0000000000..0df145dd25 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-vulkan-Use-the-generated-version-of-vkconfig.h.patch @@ -0,0 +1,64 @@ +From c23e1dc22deb495561cffb877edb2746b740a1fa Mon Sep 17 00:00:00 2001 +From: Jussi Kukkonen +Date: Wed, 5 Jul 2017 11:07:05 +0300 +Subject: [PATCH 2/2] vulkan: Use the generated version of vkconfig.h + +Build fails in ext/vulkan/xcb and ext/vulkan/wayland when: +* building from tarball +* building out-of-tree +* Only one WSI integration (xcb or wayland) is enabled by configure.ac +This is because vkconfig.h from source directory gets used instead +of the generated one. + +Add the correct build directory to "-I". Use angle bracket +include in vkapi.h so that it actually looks in the include search +path instead of defaulting to the same (source tree) directory. + +Signed-off-by: Jussi Kukkonen +Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=784539] +--- + ext/vulkan/vkapi.h | 2 +- + ext/vulkan/wayland/Makefile.am | 1 + + ext/vulkan/xcb/Makefile.am | 1 + + 3 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/ext/vulkan/vkapi.h b/ext/vulkan/vkapi.h +index e9c23aa92..a37c29d0f 100644 +--- a/ext/vulkan/vkapi.h ++++ b/ext/vulkan/vkapi.h +@@ -23,7 +23,7 @@ + + #define VK_PROTOTYPES + +-#include "vkconfig.h" ++#include + #include "vk_fwd.h" + #include "vkmacros.h" + +diff --git a/ext/vulkan/wayland/Makefile.am b/ext/vulkan/wayland/Makefile.am +index f92d85e2c..10cfb70e6 100644 +--- a/ext/vulkan/wayland/Makefile.am ++++ b/ext/vulkan/wayland/Makefile.am +@@ -14,6 +14,7 @@ noinst_HEADERS = \ + + libgstvulkan_wayland_la_CFLAGS = \ + -I$(top_srcdir)/gst-libs \ ++ -I$(top_builddir)/ext/vulkan \ + -I$(top_srcdir)/ext/vulkan \ + -I$(top_builddir)/gst-libs \ + $(GST_PLUGINS_BASE_CFLAGS) \ +diff --git a/ext/vulkan/xcb/Makefile.am b/ext/vulkan/xcb/Makefile.am +index 7debcff9e..b5103551b 100644 +--- a/ext/vulkan/xcb/Makefile.am ++++ b/ext/vulkan/xcb/Makefile.am +@@ -14,6 +14,7 @@ noinst_HEADERS = \ + + libgstvulkan_xcb_la_CFLAGS = \ + -I$(top_srcdir)/gst-libs \ ++ -I$(top_builddir)/ext/vulkan \ + -I$(top_srcdir)/ext/vulkan \ + -I$(top_builddir)/gst-libs \ + $(GST_PLUGINS_BASE_CFLAGS) \ +-- +2.13.2 + diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.10.4.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.10.4.bb index def03a9b81..a7692304d8 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.10.4.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.10.4.bb @@ -19,6 +19,8 @@ SRC_URI = " \ file://0001-smoothstreaming-use-the-duration-from-the-list-of-fr.patch \ file://0001-mssdemux-improved-live-playback-support.patch \ file://link-with-libvchostif.patch \ + file://0001-vkdisplay-Use-ifdef-for-platform-specific-defines.patch \ + file://0002-vulkan-Use-the-generated-version-of-vkconfig.h.patch \ " SRC_URI[md5sum] = "2757103e57a096a1a05b3ab85b8381af" SRC_URI[sha256sum] = "23ddae506b3a223b94869a0d3eea3e9a12e847f94d2d0e0b97102ce13ecd6966" -- cgit 1.2.3-korg