diff options
| author | Qiang Yu <yuq825@gmail.com> | 2025-03-27 10:58:43 +0800 |
|---|---|---|
| committer | Marc-André Lureau <marcandre.lureau@redhat.com> | 2025-05-06 11:57:03 +0400 |
| commit | bb5101aadc1675790983c7911092dd9abeec4651 (patch) | |
| tree | 9709d2fe5e73632f7e5e0dd9d62ef99f034b2e8e /ui/dbus-listener.c | |
| parent | 5134cf9b5d3aee4475fe7e1c1c11b093731073cf (diff) | |
| download | focaccia-qemu-bb5101aadc1675790983c7911092dd9abeec4651.tar.gz focaccia-qemu-bb5101aadc1675790983c7911092dd9abeec4651.zip | |
ui/dmabuf: extend QemuDmaBuf to support multi-plane
mesa/radeonsi is going to support explicit modifier which
may export a multi-plane texture. For example, texture with
DCC enabled (a compressed format) has two planes, one with
compressed data, the other with meta data for compression.
v2:
* change API qemu_dmabuf_get_fd/offset/stride to
qemu_dmabuf_get_fds/offsets/strides.
* change API qemu_dmabuf_dup_fd to qemu_dmabuf_dup_fds.
* add an extra arg to these API for the length of the
array.
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
[ Fix style ]
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-ID: <20250327025848.46962-2-yuq825@gmail.com>
Diffstat (limited to 'ui/dbus-listener.c')
| -rw-r--r-- | ui/dbus-listener.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/ui/dbus-listener.c b/ui/dbus-listener.c index 51244c9240..65373d519c 100644 --- a/ui/dbus-listener.c +++ b/ui/dbus-listener.c @@ -299,7 +299,7 @@ static void dbus_scanout_dmabuf(DisplayChangeListener *dcl, uint64_t modifier; bool y0_top; - fd = qemu_dmabuf_get_fd(dmabuf); + fd = qemu_dmabuf_get_fds(dmabuf, NULL)[0]; fd_list = g_unix_fd_list_new(); if (g_unix_fd_list_append(fd_list, fd, &err) != 0) { error_report("Failed to setup dmabuf fdlist: %s", err->message); @@ -310,7 +310,7 @@ static void dbus_scanout_dmabuf(DisplayChangeListener *dcl, width = qemu_dmabuf_get_width(dmabuf); height = qemu_dmabuf_get_height(dmabuf); - stride = qemu_dmabuf_get_stride(dmabuf); + stride = qemu_dmabuf_get_strides(dmabuf, NULL)[0]; fourcc = qemu_dmabuf_get_fourcc(dmabuf); modifier = qemu_dmabuf_get_modifier(dmabuf); y0_top = qemu_dmabuf_get_y0_top(dmabuf); @@ -505,7 +505,7 @@ static void dbus_scanout_texture(DisplayChangeListener *dcl, #ifdef CONFIG_GBM g_autoptr(QemuDmaBuf) dmabuf = NULL; int fd; - uint32_t stride, fourcc; + uint32_t offset = 0, stride, fourcc; uint64_t modifier; assert(tex_id); @@ -515,8 +515,8 @@ static void dbus_scanout_texture(DisplayChangeListener *dcl, error_report("%s: failed to get fd for texture", __func__); return; } - dmabuf = qemu_dmabuf_new(w, h, stride, x, y, backing_width, - backing_height, fourcc, modifier, fd, + dmabuf = qemu_dmabuf_new(w, h, &offset, &stride, x, y, backing_width, + backing_height, fourcc, modifier, &fd, 1, false, backing_y_0_top); dbus_scanout_dmabuf(dcl, dmabuf); |