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 @@ -49,5 +49,8 @@ if test "x$HAVE_GST" = "xyes"; then fi AM_CONDITIONAL(ENABLE_GST, [test "x$HAVE_GST" = "xyes"]) +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 @@ -148,7 +148,11 @@ int main(int argc, char *argv[]) else if (mode == VIDEO) egl = init_cube_video(gbm, video, samples); else +#if HAVE_GBM_BO_MAP egl = init_cube_tex(gbm, mode, samples); +#else + printf("gbm_bo_map() support missing\n"); +#endif if (!egl) { printf("failed to initialize EGL\n"); -- 2.7.4