[Mesa-dev] [PATCH kmscube v2] Detect gst_bo_map/_unmap and use it (or avoid it)
Daniel Díaz Rodríguez
daniel.diaz at linaro.org
Sat Mar 3 00:55:34 UTC 2018
Hello, Rob!
On 14 July 2017 at 10:29, Daniel Díaz <daniel.diaz at linaro.org> wrote:
> 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.
Last time we talked about this patch you mentioned you were hesitant
and deciding whether to do this using this approach or at run time.
Have you, by any chance, had any thoughts on this recently?
Greetings! See you soon.
Daniel Díaz
daniel.diaz at linaro.org
> Signed-off-by: Daniel Díaz <daniel.diaz at linaro.org>
> Cc: Rob Clark <robdclark at gmail.com>
> Reviewed-by: Eric Engestrom <eric.engestrom at imgtec.com>
>
> ---
> v2: Formatting, add informational message.
>
> 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
More information about the mesa-dev
mailing list