From: "Kasireddy, Vivek" <vivek.kasireddy@intel.com>
To: Gerd Hoffmann <kraxel@redhat.com>, Daniel Vetter <daniel@ffwll.ch>
Cc: "dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
"Pekka Paalanen" <ppaalanen@gmail.com>,
"Simon Ser" <contact@emersion.fr>,
"Michel Dänzer" <michel@daenzer.net>,
"Zhang, Tina" <tina.zhang@intel.com>,
"Kim, Dongwon" <dongwon.kim@intel.com>
Subject: RE: [RFC v1 0/4] drm: Add support for DRM_CAP_DEFERRED_OUT_FENCE capability
Date: Tue, 3 Aug 2021 06:18:48 +0000 [thread overview]
Message-ID: <bede286bbe80421585cc9b9dd798bfe6@intel.com> (raw)
In-Reply-To: <20210802125056.pdcfle4aziyjh32r@sirius.home.kraxel.org>
Hi Gerd,
>
> Hi,
>
> > > That sounds sensible to me. Fence the virtio commands, make sure (on
> > > the host side) the command completes only when the work is actually done
> > > not only submitted. Has recently been added to qemu for RESOURCE_FLUSH
> > > (aka frontbuffer rendering) and doing the same for SET_SCANOUT (aka
> > > pageflipping), then send vblank events to userspace on command
> > > completion certainly makes sense.
> >
> > Hm how does this all work? At least drm/virtio uses
> > drm_atomic_helper_dirtyfb, so both DIRTYFB ioctl and atomic flips all end
> > up in the same driver path for everything. Or do you just combine the
> > resource_flush with the flip as needed and let the host side figure it all
> > out? From a quick read of virtgpu_plane.c that seems to be the case ...
>
> virtio_gpu_primary_plane_update() will send RESOURCE_FLUSH only for
> DIRTYFB and both SET_SCANOUT + RESOURCE_FLUSH for page-flip, and I
> think for the page-flip case the host (aka qemu) doesn't get the
> "wait until old framebuffer is not in use any more" right yet.
[Kasireddy, Vivek] As you know, with the GTK UI backend and this patch series:
https://lists.nongnu.org/archive/html/qemu-devel/2021-06/msg06745.html
we do create a sync file fd -- after the Blit -- and wait (adding it to Qemu's main
event loop) for it to ensure that the Guest scanout FB is longer in use on the Host.
This mechanism works in a similarly way for both frontbuffer DIRTYFB case and
also the double-buffer case.
The out_fence work is only relevant for the future Wayland UI backend though.
>
> So we'll need a host-side fix for that and a guest-side fix to switch
> from a blocking wait on the fence to vblank events.
[Kasireddy, Vivek] Do you see any concerns with the blocking wait? And, are you
suggesting that we use a vblank timer? Not sure if that would be needed because it
would not align with the render/draw signals used with GTK. And, the DRM core
does send out an event -- immediately after the blocking wait -- to Guest compositor
as no_vblank=true.
>
> > Also to make this work we don't just need the fence, we need the timestamp
> > (in a clock domain the guest can correct for ofc) of the host side kms
> > driver flip completion. If you just have the fence then the jitter from
> > going through all the layers will most likely make it unusable.
>
> Well, there are no timestamps in the virtio-gpu protocol ...
>
> Also I'm not sure they would be that helpful, any timing is *much* less
> predictable in a virtual machine, especially in case the host machine is
> loaded.
[Kasireddy, Vivek] I agree; I think sharing the Host timestamps with the Guest or
vice-versa may not be useful. We have not run into any problems without these so far.
Thanks,
Vivek
>
> take care,
> Gerd
next prev parent reply other threads:[~2021-08-03 6:18 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-29 8:16 [RFC v1 0/4] drm: Add support for DRM_CAP_DEFERRED_OUT_FENCE capability Vivek Kasireddy
2021-07-29 8:16 ` [RFC v1 1/4] drm: Add a capability flag to support deferred out_fence signalling Vivek Kasireddy
2021-07-29 8:16 ` [RFC v1 2/4] virtio-gpu uapi: Add VIRTIO_GPU_F_OUT_FENCE feature Vivek Kasireddy
2021-07-29 9:50 ` Gerd Hoffmann
2021-07-29 18:53 ` Kasireddy, Vivek
2021-07-29 8:16 ` [RFC v1 3/4] drm/virtio: Add VIRTIO_GPU_CMD_RESOURCE_OUT_FENCE cmd Vivek Kasireddy
2021-07-29 8:16 ` [RFC v1 4/4] drm/virtio: Probe and implement VIRTIO_GPU_F_OUT_FENCE feature Vivek Kasireddy
2021-07-29 9:52 ` Gerd Hoffmann
2021-07-29 18:55 ` Kasireddy, Vivek
2021-07-30 10:25 ` [RFC v1 0/4] drm: Add support for DRM_CAP_DEFERRED_OUT_FENCE capability Daniel Vetter
2021-07-30 12:50 ` Michel Dänzer
2021-08-02 7:59 ` Daniel Vetter
2021-08-02 8:49 ` Michel Dänzer
2021-08-02 9:06 ` Daniel Vetter
2021-08-02 9:19 ` Michel Dänzer
2021-07-30 13:38 ` Gerd Hoffmann
2021-08-02 9:09 ` Daniel Vetter
2021-08-02 12:50 ` Gerd Hoffmann
2021-08-02 14:35 ` Daniel Vetter
2021-08-03 6:18 ` Kasireddy, Vivek [this message]
2021-08-03 7:51 ` Gerd Hoffmann
2021-08-04 7:27 ` Kasireddy, Vivek
2021-08-02 4:48 ` Zhang, Tina
2021-08-02 6:51 ` Kasireddy, Vivek
2021-08-02 8:14 ` Daniel Vetter
2021-08-03 6:11 ` Kasireddy, Vivek
2021-08-03 7:33 ` Michel Dänzer
2021-08-04 7:25 ` Kasireddy, Vivek
2021-08-04 12:11 ` Daniel Vetter
2021-08-05 4:15 ` Kasireddy, Vivek
2021-08-05 12:08 ` Daniel Vetter
2021-08-06 7:27 ` Kasireddy, Vivek
2021-08-09 14:15 ` Daniel Vetter
2021-08-10 8:21 ` Kasireddy, Vivek
2021-08-10 8:30 ` Daniel Vetter
2021-08-10 10:57 ` Michel Dänzer
2021-08-11 7:25 ` Kasireddy, Vivek
2021-08-11 7:20 ` Kasireddy, Vivek
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=bede286bbe80421585cc9b9dd798bfe6@intel.com \
--to=vivek.kasireddy@intel.com \
--cc=contact@emersion.fr \
--cc=daniel@ffwll.ch \
--cc=dongwon.kim@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=kraxel@redhat.com \
--cc=michel@daenzer.net \
--cc=ppaalanen@gmail.com \
--cc=tina.zhang@intel.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 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).