From: "Alex Bennée" <alex.bennee@linaro.org>
To: Huang Rui <ray.huang@amd.com>
Cc: "Akihiko Odaki" <akihiko.odaki@daynix.com>,
"Marc-André Lureau" <marcandre.lureau@gmail.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Michael S . Tsirkin" <mst@redhat.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
"Anthony PERARD" <anthony.perard@citrix.com>,
"Antonio Caggiano" <quic_acaggian@quicinc.com>,
"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
"Robert Beckett" <bob.beckett@collabora.com>,
"Dmitry Osipenko" <dmitry.osipenko@collabora.com>,
"Gert Wollny" <gert.wollny@collabora.com>,
qemu-devel@nongnu.org, xen-devel@lists.xenproject.org,
"Gurchetan Singh" <gurchetansingh@chromium.org>,
ernunes@redhat.com, "Alyssa Ross" <hi@alyssa.is>,
"Roger Pau Monné" <roger.pau@citrix.com>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Stefano Stabellini" <stefano.stabellini@amd.com>,
"Christian König" <christian.koenig@amd.com>,
"Xenia Ragiadakou" <xenia.ragiadakou@amd.com>,
"Pierre-Eric Pelloux-Prayer" <pierre-eric.pelloux-prayer@amd.com>,
"Honglei Huang" <honglei1.huang@amd.com>,
"Julia Zhang" <julia.zhang@amd.com>,
"Chen Jiqian" <Jiqian.Chen@amd.com>,
"Manos Pitsidianakis" <manos.pitsidianakis@linaro.org>,
"AKASHI Takahiro" <takahiro.akashi@linaro.org>
Subject: Re: [PATCH v6 11/11] virtio-gpu: make blob scanout use dmabuf fd
Date: Fri, 05 Jan 2024 16:09:29 +0000 [thread overview]
Message-ID: <878r53g3t2.fsf@draig.linaro.org> (raw)
In-Reply-To: <87jzongb9u.fsf@draig.linaro.org> ("Alex Bennée"'s message of "Fri, 05 Jan 2024 13:28:13 +0000")
Alex Bennée <alex.bennee@linaro.org> writes:
> Huang Rui <ray.huang@amd.com> writes:
>
>> From: Robert Beckett <bob.beckett@collabora.com>
>>
>> This relies on a virglrenderer change to include the dmabuf fd when
>> returning resource info.
>>
> <snip>
>> +static void virgl_cmd_set_scanout_blob(VirtIOGPU *g,
>> + struct virtio_gpu_ctrl_command *cmd)
>> +{
>> + struct virgl_gpu_resource *vres;
>> + struct virtio_gpu_framebuffer fb = { 0 };
>> + struct virtio_gpu_set_scanout_blob ss;
>> + struct virgl_renderer_resource_info info;
>> + uint64_t fbend;
>> +
>> + VIRTIO_GPU_FILL_CMD(ss);
>> + virtio_gpu_scanout_blob_bswap(&ss);
>> + trace_virtio_gpu_cmd_set_scanout_blob(ss.scanout_id, ss.resource_id,
>> + ss.r.width, ss.r.height, ss.r.x,
>> + ss.r.y);
>> +
>> + if (ss.scanout_id >= g->parent_obj.conf.max_outputs) {
>> + qemu_log_mask(LOG_GUEST_ERROR, "%s: illegal scanout id specified %d",
>> + __func__, ss.scanout_id);
>> + cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_SCANOUT_ID;
>> + return;
>> + }
>> +
>> + if (ss.resource_id == 0) {
>> + virtio_gpu_disable_scanout(g, ss.scanout_id);
>> + return;
>> + }
>> +
>> + if (ss.width < 16 ||
>> + ss.height < 16 ||
>> + ss.r.x + ss.r.width > ss.width ||
>> + ss.r.y + ss.r.height > ss.height) {
>> + qemu_log_mask(LOG_GUEST_ERROR, "%s: illegal scanout %d bounds for"
>> + " resource %d, rect (%d,%d)+%d,%d, fb %d %d\n",
>> + __func__, ss.scanout_id, ss.resource_id,
>> + ss.r.x, ss.r.y, ss.r.width, ss.r.height,
>> + ss.width, ss.height);
>> + cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER;
>> + return;
>> + }
>> +
>> + if (!console_has_gl(g->parent_obj.scanout[ss.scanout_id].con)) {
>> + qemu_log_mask(LOG_GUEST_ERROR, "%s: unable to scanout blot without GL!\n", __func__);
>> + return;
>> + }
>> +
>> + vres = virgl_gpu_find_resource(g, ss.resource_id);
>> + if (!vres) {
>> + qemu_log_mask(LOG_GUEST_ERROR,
>> + "%s: illegal resource specified %d\n",
>> + __func__, ss.resource_id);
>> + cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>> + return;
>> + }
>> + if (virgl_renderer_resource_get_info(ss.resource_id, &info)) {
>> + qemu_log_mask(LOG_GUEST_ERROR,
>> + "%s: illegal virgl resource specified %d\n",
>> + __func__, ss.resource_id);
>> + cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>> + return;
>> + }
>
> Minor nit, the format of the following needs to include braces.
>
>> + if (!vres->res.dmabuf_fd && info.fd)
>> + vres->res.dmabuf_fd = info.fd;
>
> However I'm seeing:
>
> cc -m64 -mcx16 -Ilibcommon.fa.p -I../../common-user/host/x86_64 -I../../linux-user/include/host/x86_64 -I../../linux-user/include -Iui -I../../ui -I/usr/include/capstone -I/usr/include/p11-kit-1 -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/spice-server -I/usr/include/spice-1 -I/usr/include/libusb-1.0 -I/usr/include/SDL2 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/gio-unix-2.0 -I/usr/include/slirp -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/vte-2.91 -I/usr/include/virgl -I/home/alex/lsrc/qemu.git/builds/extra.libs/install/include -I/usr/include/cacard -I/usr/include/nss -I/usr/include/nspr -I/usr/include/PCSC -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -fdiagnostics-color=auto -Wall -Winvalid-pch -Werror -std=gnu11 -O2 -g -fstack-protector-strong -Wundef -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wold-style-declaration -Wold-style-definition -Wtype-limits -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wempty-body -Wnested-externs -Wendif-labels -Wexpansion-to-defined -Wimplicit-fallthrough=2 -Wmissing-format-attribute -Wno-missing-include-dirs -Wno-shift-negative-value -Wno-psabi -Wshadow=local -isystem /home/alex/lsrc/qemu.git/linux-headers -isystem linux-headers -iquote . -iquote /home/alex/lsrc/qemu.git -iquote /home/alex/lsrc/qemu.git/include -iquote /home/alex/lsrc/qemu.git/host/include/x86_64 -iquote /home/alex/lsrc/qemu.git/host/include/generic -iquote /home/alex/lsrc/qemu.git/tcg/i386 -pthread -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fno-common -fwrapv -fPIE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DNCURSES_WIDECHAR=1 -D_REENTRANT -DSTRUCT_IOVEC_DEFINED -MD -MQ libcommon.fa.p/hw_display_virtio-gpu-virgl.c.o -MF libcommon.fa.p/hw_display_virtio-gpu-virgl.c.o.d -o libcommon.fa.p/hw_display_virtio-gpu-virgl.c.o -c ../../hw/display/virtio-gpu-virgl.c
> ../../hw/display/virtio-gpu-virgl.c: In function ‘virgl_cmd_set_scanout_blob’:
> ../../hw/display/virtio-gpu-virgl.c:790:37: error: ‘struct virgl_renderer_resource_info’ has no member named ‘fd’
> 790 | if (!vres->res.dmabuf_fd && info.fd)
> | ^
> ../../hw/display/virtio-gpu-virgl.c:791:35: error: ‘struct virgl_renderer_resource_info’ has no member named ‘fd’
> 791 | vres->res.dmabuf_fd = info.fd;
> | ^
>
> But searching my extra libs (for aemu/gfstream/rutabaga_ffi) I can see
> the bindings.rs but nothing generated a header:
>
> $ ag -r "virgl_renderer_resource_info"
> crosvm.git/rutabaga_gfx/src/generated/virgl_renderer_bindings.rs
> 33:pub const VIRGL_RENDERER_RESOURCE_INFO_EXT_VERSION: u32 = 0;
> 337:pub struct virgl_renderer_resource_info {
> 351:pub struct virgl_renderer_resource_info_ext {
> 353: pub base: virgl_renderer_resource_info,
> 359:impl Default for virgl_renderer_resource_info_ext {
> 373: info: *mut virgl_renderer_resource_info,
> 379: info: *mut virgl_renderer_resource_info_ext,
>
> Which makes me think a) its picked up the older virgl headers and b) the
> crosvm/rutabaf_gfx install needs a fix.
Actually it was libvirglrenderer was too old (I got it the wrong way
round, the rust bindings come from libvirglrenderer). As we want to
build with older libvirglrenderers on older systems I think this needs a
tweak to meson.build, maybe something like:
config_host_data.set('HAVE_VIRGL_RESOURCE_BLOB',
cc.has_function('virgl_renderer_resource_create_blob',
prefix: '#include <virglrenderer.h>',
dependencies: virgl)
and
cc.has_member('struct virgl_renderer_resource_info', 'fd',
prefix: '#include <virglrenderer.h>',
dependencies: virgl))
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
prev parent reply other threads:[~2024-01-05 16:09 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-19 7:53 [PATCH v6 00/11] Support blob memory and venus on qemu Huang Rui
2023-12-19 7:53 ` [PATCH v6 01/11] linux-headers: Update to kernel headers to add venus capset Huang Rui
2023-12-19 12:20 ` Akihiko Odaki
2023-12-19 13:47 ` Huang Rui
2023-12-19 14:14 ` Peter Maydell
2023-12-21 6:55 ` Akihiko Odaki
2024-01-02 10:42 ` Marc-André Lureau
2024-01-03 6:35 ` Huang Rui
2024-01-03 6:03 ` Huang Rui
2024-01-03 5:58 ` Huang Rui
2023-12-19 7:53 ` [PATCH v6 02/11] virtio-gpu: Configure new feature flag context_create_with_flags for virglrenderer Huang Rui
2023-12-19 9:09 ` Antonio Caggiano
2023-12-19 11:41 ` Huang Rui
2024-01-05 16:18 ` Alex Bennée
2023-12-19 7:53 ` [PATCH v6 03/11] virtio-gpu: Support context init feature with virglrenderer Huang Rui
2024-01-02 11:43 ` Marc-André Lureau
2024-01-03 8:46 ` Huang Rui
2024-01-04 12:16 ` Akihiko Odaki
2023-12-19 7:53 ` [PATCH v6 04/11] virtio-gpu: Don't require udmabuf when blobs and virgl are enabled Huang Rui
2024-01-02 11:50 ` Marc-André Lureau
2023-12-19 7:53 ` [PATCH v6 05/11] virtio-gpu: Introduce virgl_gpu_resource structure Huang Rui
2023-12-19 12:35 ` Akihiko Odaki
2023-12-19 13:27 ` Huang Rui
2023-12-21 5:43 ` Akihiko Odaki
2024-01-03 8:48 ` Huang Rui
2024-01-02 11:52 ` Marc-André Lureau
2024-01-04 7:27 ` Huang Rui
2023-12-19 7:53 ` [PATCH v6 06/11] softmmu/memory: enable automatic deallocation of memory regions Huang Rui
2023-12-21 5:45 ` Akihiko Odaki
2023-12-21 7:35 ` Xenia Ragiadakou
2023-12-21 7:50 ` Akihiko Odaki
2023-12-21 8:32 ` Xenia Ragiadakou
2023-12-19 7:53 ` [PATCH v6 07/11] virtio-gpu: Handle resource blob commands Huang Rui
2023-12-21 5:57 ` Akihiko Odaki
2023-12-21 7:39 ` Xenia Ragiadakou
2023-12-21 8:09 ` Akihiko Odaki
2024-01-10 12:59 ` Pierre-Eric Pelloux-Prayer
2024-01-02 12:38 ` Marc-André Lureau
2024-01-09 16:50 ` Pierre-Eric Pelloux-Prayer
2024-01-10 8:51 ` Pierre-Eric Pelloux-Prayer
2024-02-23 6:34 ` Huang Rui via
2024-02-23 6:34 ` Huang Rui
2023-12-19 7:53 ` [PATCH v6 08/11] virtio-gpu: Resource UUID Huang Rui
2023-12-21 6:03 ` Akihiko Odaki
2024-01-02 12:49 ` Marc-André Lureau
2024-02-23 9:04 ` Huang Rui
2023-12-19 7:53 ` [PATCH v6 09/11] virtio-gpu: Support Venus capset Huang Rui
2023-12-19 10:42 ` Pierre-Eric Pelloux-Prayer
2023-12-19 7:53 ` [PATCH v6 10/11] virtio-gpu: Initialize Venus Huang Rui
2024-01-02 13:33 ` Marc-André Lureau
2024-02-23 9:15 ` Huang Rui
2024-03-26 8:53 ` Pierre-Eric Pelloux-Prayer
2023-12-19 7:53 ` [PATCH v6 11/11] virtio-gpu: make blob scanout use dmabuf fd Huang Rui
2023-12-21 6:25 ` Akihiko Odaki
2024-01-04 11:19 ` Pierre-Eric Pelloux-Prayer
2024-01-05 13:28 ` Alex Bennée
2024-01-05 16:09 ` Alex Bennée [this message]
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=878r53g3t2.fsf@draig.linaro.org \
--to=alex.bennee@linaro.org \
--cc=Jiqian.Chen@amd.com \
--cc=akihiko.odaki@daynix.com \
--cc=alexander.deucher@amd.com \
--cc=anthony.perard@citrix.com \
--cc=bob.beckett@collabora.com \
--cc=christian.koenig@amd.com \
--cc=dgilbert@redhat.com \
--cc=dmitry.osipenko@collabora.com \
--cc=ernunes@redhat.com \
--cc=gert.wollny@collabora.com \
--cc=gurchetansingh@chromium.org \
--cc=hi@alyssa.is \
--cc=honglei1.huang@amd.com \
--cc=julia.zhang@amd.com \
--cc=kraxel@redhat.com \
--cc=manos.pitsidianakis@linaro.org \
--cc=marcandre.lureau@gmail.com \
--cc=mst@redhat.com \
--cc=philmd@linaro.org \
--cc=pierre-eric.pelloux-prayer@amd.com \
--cc=qemu-devel@nongnu.org \
--cc=quic_acaggian@quicinc.com \
--cc=ray.huang@amd.com \
--cc=roger.pau@citrix.com \
--cc=sstabellini@kernel.org \
--cc=stefano.stabellini@amd.com \
--cc=takahiro.akashi@linaro.org \
--cc=xen-devel@lists.xenproject.org \
--cc=xenia.ragiadakou@amd.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.