From eee3ee5c5b719b65fe50a000d501c2f1c9c27767 Mon Sep 17 00:00:00 2001 From: Daniel Díaz Date: Fri, 2 Mar 2018 18:51:54 -0600 Subject: kmscube: Add patch for missing GBM function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some implementations of GBM, like the one included with libMali, do not have gbm_bo_map() nor gbm_bo_unmap(). This patch enables kmscube to work with those implementations even if it doesn't work as great. (From OE-Core rev: 54615151da5e8c77c803947ce5760d06c1691c58) Signed-off-by: Daniel Díaz Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- ...-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch | 116 +++++++++++++++++++++ meta/recipes-graphics/kmscube/kmscube_git.bb | 3 +- 2 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch (limited to 'meta/recipes-graphics') diff --git a/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch b/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch new file mode 100644 index 0000000000..3605446e44 --- /dev/null +++ b/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch @@ -0,0 +1,116 @@ +From 761bf993ca55095f46380c0238583791c1797295 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Daniel=20D=C3=ADaz?= +Date: Tue, 11 Jul 2017 14:50:37 -0500 +Subject: [PATCH kmscube] Detect gst_bo_map/_unmap and use it (or avoid it) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Those functions are not available on libMali, thus breaking +builds and creating havoc. + +Removing the specific parts of the code that deal with +gbm_bo_map() and gbm_bo_unmap() renders the kmscube utility +a little less useful, but still valuable. + +Signed-off-by: Daniel Díaz +Cc: Rob Clark +Reviewed-by: Eric Engestrom + +Upstream-Status: Submitted [https://lists.freedesktop.org/archives/mesa-dev/2017-July/163020.html] +--- + Makefile.am | 5 ++++- + configure.ac | 3 +++ + gst-decoder.c | 7 ++++++- + kmscube.c | 4 ++++ + 4 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index a36087d..ab4adbf 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -43,7 +43,6 @@ kmscube_SOURCES = \ + common.c \ + common.h \ + cube-smooth.c \ +- cube-tex.c \ + drm-atomic.c \ + drm-common.c \ + drm-common.h \ +@@ -59,3 +58,7 @@ kmscube_LDADD += $(GST_LIBS) + kmscube_CFLAGS += $(GST_CFLAGS) + kmscube_SOURCES += cube-video.c gst-decoder.c + endif ++ ++if ENABLE_GBM_MAP ++kmscube_SOURCES += cube-tex.c ++endif +diff --git a/configure.ac b/configure.ac +index 8397f7b..c7f1f4d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -65,5 +65,8 @@ if test "x$enable_gbm_modifiers" = xyes; then + AC_DEFINE(HAVE_GBM_MODIFIERS, 1, [Define if you can use GBM properties.]) + fi + ++AC_CHECK_LIB([gbm], [gbm_bo_map], [HAVE_GBM_BO_MAP=yes], []) ++AM_CONDITIONAL(ENABLE_GBM_MAP, [test "x$HAVE_GBM_BO_MAP" = "xyes"]) ++ + AC_CONFIG_FILES([Makefile]) + AC_OUTPUT +diff --git a/gst-decoder.c b/gst-decoder.c +index 2d6d581..b84980e 100644 +--- a/gst-decoder.c ++++ b/gst-decoder.c +@@ -332,6 +332,7 @@ set_last_frame(struct decoder *dec, EGLImage frame, GstSample *samp) + dec->last_samp = samp; + } + ++#if HAVE_GBM_BO_MAP + // TODO this could probably be a helper re-used by cube-tex: + static int + buf_to_fd(const struct gbm *gbm, int size, void *ptr) +@@ -357,6 +358,7 @@ buf_to_fd(const struct gbm *gbm, int size, void *ptr) + + return fd; + } ++#endif + + static EGLImage + buffer_to_image(struct decoder *dec, GstBuffer *buf) +@@ -410,12 +412,15 @@ buffer_to_image(struct decoder *dec, GstBuffer *buf) + + if (is_dmabuf_mem) { + dmabuf_fd = dup(gst_dmabuf_memory_get_fd(mem)); +- } else { ++ } ++#if HAVE_GBM_BO_MAP ++ else { + GstMapInfo map_info; + gst_buffer_map(buf, &map_info, GST_MAP_READ); + dmabuf_fd = buf_to_fd(dec->gbm, map_info.size, map_info.data); + gst_buffer_unmap(buf, &map_info); + } ++#endif + + if (dmabuf_fd < 0) { + GST_ERROR("could not obtain DMABUF FD"); +diff --git a/kmscube.c b/kmscube.c +index 3a2c4dd..276dc55 100644 +--- a/kmscube.c ++++ b/kmscube.c +@@ -142,7 +142,11 @@ int main(int argc, char *argv[]) + else if (mode == VIDEO) + egl = init_cube_video(gbm, video); + else ++#if HAVE_GBM_BO_MAP + egl = init_cube_tex(gbm, mode); ++#else ++ printf("gbm_bo_map() support missing\n"); ++#endif + + if (!egl) { + printf("failed to initialize EGL\n"); +-- +2.7.4 + diff --git a/meta/recipes-graphics/kmscube/kmscube_git.bb b/meta/recipes-graphics/kmscube/kmscube_git.bb index 4265f8a8dc..5b64ed6438 100644 --- a/meta/recipes-graphics/kmscube/kmscube_git.bb +++ b/meta/recipes-graphics/kmscube/kmscube_git.bb @@ -7,7 +7,8 @@ DEPENDS = "virtual/libgles2 virtual/egl libdrm gstreamer1.0 gstreamer1.0-plugins LIC_FILES_CHKSUM = "file://kmscube.c;beginline=1;endline=23;md5=8b309d4ee67b7315ff7381270dd631fb" SRCREV = "0d8de4ce3a03f36af1817f9b0586d132ad2c5d2e" -SRC_URI = "git://anongit.freedesktop.org/mesa/kmscube;branch=master;protocol=git" +SRC_URI = "git://anongit.freedesktop.org/mesa/kmscube;branch=master;protocol=git \ + file://detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch" UPSTREAM_CHECK_COMMITS = "1" S = "${WORKDIR}/git" -- cgit v1.2.3-54-g00ecf