qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] virtio-gpu: update done only on the scanout associated with


From: Dongwon Kim
Subject: Re: [PATCH] virtio-gpu: update done only on the scanout associated with rect
Date: Fri, 6 May 2022 10:09:30 -0700
User-agent: Mutt/1.9.4 (2018-02-28)

On Fri, May 06, 2022 at 11:53:22AM +0400, Marc-André Lureau wrote:
> Hi
> 
> On Fri, May 6, 2022 at 1:46 AM Dongwon Kim <dongwon.kim@intel.com> wrote:
> 
> > It only needs to update the scanouts containing the rect area
> > coming with the resource-flush request from the guest.
> >
> >
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> > Cc: Vivek Kasireddy <vivek.kasireddy@intel.com>
> > Signed-off-by: Dongwon Kim <dongwon.kim@intel.com>
> > ---
> >  hw/display/virtio-gpu.c | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
> > index 529b5246b2..165ecafd7a 100644
> > --- a/hw/display/virtio-gpu.c
> > +++ b/hw/display/virtio-gpu.c
> > @@ -514,6 +514,9 @@ static void virtio_gpu_resource_flush(VirtIOGPU *g,
> >          for (i = 0; i < g->parent_obj.conf.max_outputs; i++) {
> >              scanout = &g->parent_obj.scanout[i];
> >              if (scanout->resource_id == res->resource_id &&
> > +                rf.r.x >= scanout->x && rf.r.y >= scanout->y &&
> > +                rf.r.x + rf.r.width <= scanout->x + scanout->width &&
> > +                rf.r.y + rf.r.height <= scanout->y + scanout->height &&
> >
> 
> 
> That doesn't seem to handle intersections/overlapping, I think it should.

so set-scanouts and resource flushes are issued per scanout(CRTC/plane
from guest's point of view). In case of intersections/overlapping, there
will be two resource flushes (in case there are two scanouts) and each
resource flush will take care of updating the scanout that covers
partial damaged area.

The problem with the original code is that even if there is a resource
flush request for a single scanout, it does update on both (or more) as
well, which is unnecessary burden.

Thanks

> 
> 
> >                  console_has_gl(scanout->con)) {
> >                  dpy_gl_update(scanout->con, 0, 0, scanout->width,
> >                                scanout->height);
> > --
> > 2.30.2
> >
> >
> >
> 
> -- 
> Marc-André Lureau



reply via email to

[Prev in Thread] Current Thread [Next in Thread]