1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-31 00:39:46 +00:00

kmscube: Add patch for missing GBM function

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 <daniel.diaz@linaro.org>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Daniel Díaz
2018-03-02 18:51:54 -06:00
committed by Richard Purdie
parent d1e6aa57f7
commit eee3ee5c5b
2 changed files with 118 additions and 1 deletions
@@ -0,0 +1,116 @@
From 761bf993ca55095f46380c0238583791c1797295 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20D=C3=ADaz?= <daniel.diaz@linaro.org>
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 <daniel.diaz@linaro.org>
Cc: Rob Clark <robdclark@gmail.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
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
+2 -1
View File
@@ -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"