From: Thomas Zimmermann <tzimmermann@suse.de>
To: Javier Martinez Canillas <javierm@redhat.com>,
linux-kernel@vger.kernel.org
Cc: Simon Ser <contact@emersion.fr>,
Sima Vetter <daniel.vetter@ffwll.ch>,
Pekka Paalanen <pekka.paalanen@collabora.com>,
Maxime Ripard <mripard@kernel.org>,
Bilal Elmoussaoui <belmouss@redhat.com>,
Erico Nunes <nunes.erico@gmail.com>,
Chia-I Wu <olvaffe@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
David Airlie <airlied@gmail.com>,
David Airlie <airlied@redhat.com>,
Gerd Hoffmann <kraxel@redhat.com>,
Gurchetan Singh <gurchetansingh@chromium.org>,
Jonathan Corbet <corbet@lwn.net>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
VMware Graphics Reviewers <linux-graphics-maintainer@vmware.com>,
Zack Rusin <zackr@vmware.com>,
dri-devel@lists.freedesktop.org, linux-doc@vger.kernel.org,
virtualization@lists.linux-foundation.org
Subject: Re: [PATCH 0/6] drm: Allow the damage helpers to handle buffer damage
Date: Tue, 14 Nov 2023 16:40:59 +0100 [thread overview]
Message-ID: <9296c184-22c1-4d71-8b11-2d26f49a5790@suse.de> (raw)
In-Reply-To: <20231109172449.1599262-1-javierm@redhat.com>
[-- Attachment #1.1: Type: text/plain, Size: 4081 bytes --]
Hi Javier
Am 09.11.23 um 18:24 schrieb Javier Martinez Canillas:
> Hello,
>
> This series is to fix an issue that surfaced after damage clipping was
> enabled for the virtio-gpu by commit 01f05940a9a7 ("drm/virtio: Enable
> fb damage clips property for the primary plane").
>
> After that change, flickering artifacts was reported to be present with
> both weston and wlroots wayland compositors when running in a virtual
> machine. The cause was identified by Sima Vetter, who pointed out that
> virtio-gpu does per-buffer uploads and for this reason it needs to do
> a buffer damage handling, instead of frame damage handling.
I'm having problem understanding the types of damage. You never say what
buffer damage is. I also don't know what a frame is in this context.
Regular damage handling marks parts of a plane as dirty/damaged. That is
per-plane damage handling. The individual planes more or less
independent from each other.
Buffer damage, I guess, marks the underlying buffer as dirty and
requires synchronization of the buffer with some backing storage. The
planes using that buffer are then updated more or less automatically.
Is that right?
And why does it flicker? Is there old data stored somewhere?
Best regards
Thomas
>
> Their suggestion was to extend the damage helpers to cover that case
> and given that there's isn't a buffer damage accumulation algorithm
> (e.g: buffer age), just do a full plane update if the framebuffer that
> is attached to a plane changed since the last plane update (page-flip).
>
> Patch #1 is just a refactoring to allow the logic of the frame damage
> helpers to be shared by the buffer damage helpers.
>
> Patch #2 adds the helpers that are needed for buffer damage handling.
>
> Patch #3 fixes the virtio-gpu damage handling logic by using the
> helper that is required by drivers that need to handle buffer damage.
>
> Patch #4 fixes the vmwgfx similarly, since that driver also needs to
> handle buffer damage and should have the same issue (although I have
> not tested it due not having a VMWare setup).
>
> Patch #5 adds to the KMS damage tracking kernel-doc some paragraphs
> about damage tracking types and references to links that explain
> frame damage vs buffer damage.
>
> Finally patch #6 adds an item to the DRM/KMS todo, about the need to
> implement some buffer damage accumulation algorithm instead of just
> doing a full plane update in this case.
>
> Because commit 01f05940a9a7 landed in v6.4, the first three patches
> are marked as Fixes and Cc stable.
>
> I've tested this on a VM with weston, was able to reproduce the issue
> reported and the patches did fix the problem.
>
> Please let me know what you think. Specially on the wording since could
> made mistakes due just learning about these concepts yesterday thanks to
> Sima, Simon and Pekka.
>
> Best regards,
> Javier
>
>
> Javier Martinez Canillas (6):
> drm: Move drm_atomic_helper_damage_{iter_init,merged}() to helpers
> drm: Add drm_atomic_helper_buffer_damage_{iter_init,merged}() helpers
> drm/virtio: Use drm_atomic_helper_buffer_damage_merged() for buffer
> damage
> drm/vmwgfx: Use drm_atomic_helper_buffer_damage_iter_init() for buffer
> damage
> drm/plane: Extend damage tracking kernel-doc
> drm/todo: Add entry about implementing buffer age for damage tracking
>
> Documentation/gpu/todo.rst | 20 +++
> drivers/gpu/drm/drm_damage_helper.c | 166 +++++++++++++++++++------
> drivers/gpu/drm/drm_plane.c | 22 +++-
> drivers/gpu/drm/virtio/virtgpu_plane.c | 2 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 2 +-
> include/drm/drm_damage_helper.h | 7 ++
> 6 files changed, 173 insertions(+), 46 deletions(-)
>
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
next prev parent reply other threads:[~2023-11-14 15:41 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-09 17:24 [PATCH 0/6] drm: Allow the damage helpers to handle buffer damage Javier Martinez Canillas
2023-11-09 17:24 ` [PATCH 6/6] drm/todo: Add entry about implementing buffer age for damage tracking Javier Martinez Canillas
2023-11-10 10:39 ` Simon Ser
2023-11-14 15:40 ` Thomas Zimmermann [this message]
2023-11-14 16:28 ` [PATCH 0/6] drm: Allow the damage helpers to handle buffer damage Javier Martinez Canillas
2023-11-14 16:36 ` Thomas Zimmermann
2023-11-14 18:06 ` Javier Martinez Canillas
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=9296c184-22c1-4d71-8b11-2d26f49a5790@suse.de \
--to=tzimmermann@suse.de \
--cc=airlied@gmail.com \
--cc=airlied@redhat.com \
--cc=belmouss@redhat.com \
--cc=contact@emersion.fr \
--cc=corbet@lwn.net \
--cc=daniel.vetter@ffwll.ch \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=gurchetansingh@chromium.org \
--cc=javierm@redhat.com \
--cc=kraxel@redhat.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-graphics-maintainer@vmware.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=nunes.erico@gmail.com \
--cc=olvaffe@gmail.com \
--cc=pekka.paalanen@collabora.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=zackr@vmware.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