From: "Daniel P. Berrangé" <berrange@redhat.com>
To: dongwon.kim@intel.com
Cc: qemu-devel@nongnu.org, marcandre.lureau@redhat.com, philmd@linaro.org
Subject: Re: [PATCH v10 2/6] ui/console: new dmabuf.h and dmabuf.c for QemuDmaBuf struct and helpers
Date: Tue, 23 Apr 2024 15:06:45 +0100 [thread overview]
Message-ID: <ZifAdRBCndQeOAwh@redhat.com> (raw)
In-Reply-To: <20240423022253.1003295-3-dongwon.kim@intel.com>
On Mon, Apr 22, 2024 at 07:22:49PM -0700, dongwon.kim@intel.com wrote:
> From: Dongwon Kim <dongwon.kim@intel.com>
>
> New header and source files are added for containing QemuDmaBuf struct
> definition and newly introduced helpers for creating/freeing the struct
> and accessing its data.
>
> v10: Change the license type for both dmabuf.h and dmabuf.c from MIT to
> GPL to be in line with QEMU's default license
> (Daniel P. Berrangé <berrange@redhat.com>)
>
> Suggested-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> Cc: Philippe Mathieu-Daudé <philmd@linaro.org>
> Cc: Daniel P. Berrangé <berrange@redhat.com>
> Cc: Vivek Kasireddy <vivek.kasireddy@intel.com>
> Signed-off-by: Dongwon Kim <dongwon.kim@intel.com>
> ---
> include/ui/console.h | 20 +----
> include/ui/dmabuf.h | 64 +++++++++++++++
> ui/dmabuf.c | 189 +++++++++++++++++++++++++++++++++++++++++++
> ui/meson.build | 1 +
> 4 files changed, 255 insertions(+), 19 deletions(-)
> create mode 100644 include/ui/dmabuf.h
> create mode 100644 ui/dmabuf.c
>
> diff --git a/include/ui/console.h b/include/ui/console.h
> index 0bc7a00ac0..a208a68b88 100644
> --- a/include/ui/console.h
> +++ b/include/ui/console.h
> @@ -7,6 +7,7 @@
> #include "qapi/qapi-types-ui.h"
> #include "ui/input.h"
> #include "ui/surface.h"
> +#include "ui/dmabuf.h"
>
> #define TYPE_QEMU_CONSOLE "qemu-console"
> OBJECT_DECLARE_TYPE(QemuConsole, QemuConsoleClass, QEMU_CONSOLE)
> @@ -185,25 +186,6 @@ struct QEMUGLParams {
> int minor_ver;
> };
>
> -typedef struct QemuDmaBuf {
> - int fd;
> - uint32_t width;
> - uint32_t height;
> - uint32_t stride;
> - uint32_t fourcc;
> - uint64_t modifier;
> - uint32_t texture;
> - uint32_t x;
> - uint32_t y;
> - uint32_t backing_width;
> - uint32_t backing_height;
> - bool y0_top;
> - void *sync;
> - int fence_fd;
> - bool allow_fences;
> - bool draw_submitted;
> -} QemuDmaBuf;
> -
> enum display_scanout {
> SCANOUT_NONE,
> SCANOUT_SURFACE,
> diff --git a/include/ui/dmabuf.h b/include/ui/dmabuf.h
> new file mode 100644
> index 0000000000..7a60116ee6
> --- /dev/null
> +++ b/include/ui/dmabuf.h
> @@ -0,0 +1,64 @@
> +/*
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + *
> + * QemuDmaBuf struct and helpers used for accessing its data
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or later.
> + * See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef DMABUF_H
> +#define DMABUF_H
> +
> +typedef struct QemuDmaBuf {
> + int fd;
> + uint32_t width;
> + uint32_t height;
> + uint32_t stride;
> + uint32_t fourcc;
> + uint64_t modifier;
> + uint32_t texture;
> + uint32_t x;
> + uint32_t y;
> + uint32_t backing_width;
> + uint32_t backing_height;
> + bool y0_top;
> + void *sync;
> + int fence_fd;
> + bool allow_fences;
> + bool draw_submitted;
> +} QemuDmaBuf;
> +
> +QemuDmaBuf *qemu_dmabuf_new(uint32_t width, uint32_t height,
> + uint32_t stride, uint32_t x,
> + uint32_t y, uint32_t backing_width,
> + uint32_t backing_height, uint32_t fourcc,
> + uint64_t modifier, int32_t dmabuf_fd,
Should be 'int' not 'int32_t' for FDs.
> + bool allow_fences, bool y0_top);
> +void qemu_dmabuf_free(QemuDmaBuf *dmabuf);
> +
> +G_DEFINE_AUTOPTR_CLEANUP_FUNC(QemuDmaBuf, qemu_dmabuf_free);
> +
> +int32_t qemu_dmabuf_get_fd(QemuDmaBuf *dmabuf);
Again should be 'int' not 'int42_t'
I think there ought to also be a
int qemu_dmabuf_dup_fd(QemuDmaBuf *dmabuf);
to do the dup() call in one go too
> diff --git a/ui/dmabuf.c b/ui/dmabuf.c
> new file mode 100644
> index 0000000000..f447cce4fe
> --- /dev/null
> +++ b/ui/dmabuf.c
> +
> +void qemu_dmabuf_free(QemuDmaBuf *dmabuf)
> +{
> + if (dmabuf == NULL) {
> + return;
> + }
> +
I think this method should be made to call
qemu_dmabuf_close()
to release the FD, if not already released, otherwise
this method could be a resource leak.
> + g_free(dmabuf);
> +}
> +
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2024-04-23 14:08 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-23 2:22 [PATCH v10 0/6] ui/console: Private QemuDmaBuf struct dongwon.kim
2024-04-23 2:22 ` [PATCH v10 1/6] ui/gtk: Check if fence_fd is equal to or greater than 0 dongwon.kim
2024-04-23 13:54 ` Daniel P. Berrangé
2024-04-23 2:22 ` [PATCH v10 2/6] ui/console: new dmabuf.h and dmabuf.c for QemuDmaBuf struct and helpers dongwon.kim
2024-04-23 13:55 ` Daniel P. Berrangé
2024-04-23 14:06 ` Daniel P. Berrangé [this message]
2024-04-23 19:05 ` Kim, Dongwon
2024-04-23 19:08 ` Daniel P. Berrangé
2024-04-24 3:11 ` Kim, Dongwon
2024-04-23 2:22 ` [PATCH v10 3/6] ui/console: Use qemu_dmabuf_get_..() helpers instead dongwon.kim
2024-04-23 14:23 ` Daniel P. Berrangé
2024-04-23 2:22 ` [PATCH v10 4/6] ui/console: Use qemu_dmabuf_set_..() " dongwon.kim
2024-04-23 2:22 ` [PATCH v10 5/6] ui/console: Use qemu_dmabuf_new() and free() " dongwon.kim
2024-04-23 2:22 ` [PATCH v10 6/6] ui/console: move QemuDmaBuf struct def to dmabuf.c dongwon.kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZifAdRBCndQeOAwh@redhat.com \
--to=berrange@redhat.com \
--cc=dongwon.kim@intel.com \
--cc=marcandre.lureau@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).