From: Javier Martinez Canillas <javierm@redhat.com> To: linux-kernel@vger.kernel.org Cc: Maxime Ripard <mripard@kernel.org>, Bilal Elmoussaoui <belmouss@redhat.com>, Simon Ser <contact@emersion.fr>, Erico Nunes <nunes.erico@gmail.com>, Pekka Paalanen <pekka.paalanen@collabora.com>, Thomas Zimmermann <tzimmermann@suse.de>, Sima Vetter <daniel.vetter@ffwll.ch>, Javier Martinez Canillas <javierm@redhat.com>, stable@vger.kernel.org, nerdopolis <bluescreen_avenger@verizon.net>, Chia-I Wu <olvaffe@gmail.com>, Daniel Vetter <daniel@ffwll.ch>, David Airlie <airlied@redhat.com>, Gerd Hoffmann <kraxel@redhat.com>, Gurchetan Singh <gurchetansingh@chromium.org>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, dri-devel@lists.freedesktop.org, virtualization@lists.linux.dev Subject: [PATCH v2 2/5] drm/virtio: Disable damage clipping if FB changed since last page-flip Date: Wed, 15 Nov 2023 14:15:41 +0100 [thread overview] Message-ID: <20231115131549.2191589-3-javierm@redhat.com> (raw) In-Reply-To: <20231115131549.2191589-1-javierm@redhat.com> The driver does per-buffer uploads and needs to force a full plane update if the plane's attached framebuffer has change since the last page-flip. Fixes: 01f05940a9a7 ("drm/virtio: Enable fb damage clips property for the primary plane") Cc: <stable@vger.kernel.org> # v6.4+ Reported-by: nerdopolis <bluescreen_avenger@verizon.net> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218115 Suggested-by: Sima Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com> --- Changes in v2: - Set struct drm_plane_state .ignore_damage_clips in virtio-gpu plane's .atomic_check instead of using a different helpers (Thomas Zimmermann). drivers/gpu/drm/virtio/virtgpu_plane.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c index a2e045f3a000..a1ef657eba07 100644 --- a/drivers/gpu/drm/virtio/virtgpu_plane.c +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c @@ -79,6 +79,8 @@ static int virtio_gpu_plane_atomic_check(struct drm_plane *plane, { struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state, plane); + struct drm_plane_state *old_plane_state = drm_atomic_get_old_plane_state(state, + plane); bool is_cursor = plane->type == DRM_PLANE_TYPE_CURSOR; struct drm_crtc_state *crtc_state; int ret; @@ -86,6 +88,14 @@ static int virtio_gpu_plane_atomic_check(struct drm_plane *plane, if (!new_plane_state->fb || WARN_ON(!new_plane_state->crtc)) return 0; + /* + * Ignore damage clips if the framebuffer attached to the plane's state + * has changed since the last plane update (page-flip). In this case, a + * full plane update should happen because uploads are done per-buffer. + */ + if (old_plane_state->fb != new_plane_state->fb) + new_plane_state->ignore_damage_clips = true; + crtc_state = drm_atomic_get_crtc_state(state, new_plane_state->crtc); if (IS_ERR(crtc_state)) -- 2.41.0
WARNING: multiple messages have this Message-ID (diff)
From: Javier Martinez Canillas <javierm@redhat.com> To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Gerd Hoffmann <kraxel@redhat.com>, nerdopolis <bluescreen_avenger@verizon.net>, Pekka Paalanen <pekka.paalanen@collabora.com>, Bilal Elmoussaoui <belmouss@redhat.com>, Javier Martinez Canillas <javierm@redhat.com>, Maxime Ripard <mripard@kernel.org>, Gurchetan Singh <gurchetansingh@chromium.org>, stable@vger.kernel.org, Thomas Zimmermann <tzimmermann@suse.de>, Sima Vetter <daniel.vetter@ffwll.ch>, David Airlie <airlied@redhat.com>, virtualization@lists.linux.dev, Erico Nunes <nunes.erico@gmail.com> Subject: [PATCH v2 2/5] drm/virtio: Disable damage clipping if FB changed since last page-flip Date: Wed, 15 Nov 2023 14:15:41 +0100 [thread overview] Message-ID: <20231115131549.2191589-3-javierm@redhat.com> (raw) In-Reply-To: <20231115131549.2191589-1-javierm@redhat.com> The driver does per-buffer uploads and needs to force a full plane update if the plane's attached framebuffer has change since the last page-flip. Fixes: 01f05940a9a7 ("drm/virtio: Enable fb damage clips property for the primary plane") Cc: <stable@vger.kernel.org> # v6.4+ Reported-by: nerdopolis <bluescreen_avenger@verizon.net> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218115 Suggested-by: Sima Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com> --- Changes in v2: - Set struct drm_plane_state .ignore_damage_clips in virtio-gpu plane's .atomic_check instead of using a different helpers (Thomas Zimmermann). drivers/gpu/drm/virtio/virtgpu_plane.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c index a2e045f3a000..a1ef657eba07 100644 --- a/drivers/gpu/drm/virtio/virtgpu_plane.c +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c @@ -79,6 +79,8 @@ static int virtio_gpu_plane_atomic_check(struct drm_plane *plane, { struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state, plane); + struct drm_plane_state *old_plane_state = drm_atomic_get_old_plane_state(state, + plane); bool is_cursor = plane->type == DRM_PLANE_TYPE_CURSOR; struct drm_crtc_state *crtc_state; int ret; @@ -86,6 +88,14 @@ static int virtio_gpu_plane_atomic_check(struct drm_plane *plane, if (!new_plane_state->fb || WARN_ON(!new_plane_state->crtc)) return 0; + /* + * Ignore damage clips if the framebuffer attached to the plane's state + * has changed since the last plane update (page-flip). In this case, a + * full plane update should happen because uploads are done per-buffer. + */ + if (old_plane_state->fb != new_plane_state->fb) + new_plane_state->ignore_damage_clips = true; + crtc_state = drm_atomic_get_crtc_state(state, new_plane_state->crtc); if (IS_ERR(crtc_state)) -- 2.41.0
next prev parent reply other threads:[~2023-11-15 13:16 UTC|newest] Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-11-15 13:15 [PATCH v2 0/5] drm: Allow the damage helpers to handle buffer damage Javier Martinez Canillas 2023-11-15 13:15 ` Javier Martinez Canillas 2023-11-15 13:15 ` [PATCH v2 1/5] drm: Allow drivers to indicate the damage helpers to ignore damage clips Javier Martinez Canillas 2023-11-15 13:15 ` Javier Martinez Canillas 2023-11-15 13:15 ` Javier Martinez Canillas [this message] 2023-11-15 13:15 ` [PATCH v2 2/5] drm/virtio: Disable damage clipping if FB changed since last page-flip Javier Martinez Canillas 2023-11-15 13:15 ` [PATCH v2 3/5] drm/vmwgfx: " Javier Martinez Canillas 2023-11-15 13:15 ` Javier Martinez Canillas 2023-11-15 13:15 ` [PATCH v2 4/5] drm/plane: Extend damage tracking kernel-doc Javier Martinez Canillas 2023-11-15 13:15 ` Javier Martinez Canillas 2023-11-16 12:06 ` Thomas Zimmermann 2023-11-16 12:06 ` Thomas Zimmermann 2023-11-16 12:14 ` Simon Ser 2023-11-16 12:14 ` Simon Ser 2023-11-16 12:34 ` Thomas Zimmermann 2023-11-16 15:24 ` Pekka Paalanen 2023-11-16 15:24 ` Pekka Paalanen 2023-11-17 11:47 ` Thomas Zimmermann 2023-11-17 11:47 ` Thomas Zimmermann 2023-11-15 13:15 ` [PATCH v2 5/5] drm/todo: Add entry about implementing buffer age for damage tracking Javier Martinez Canillas 2023-11-15 13:15 ` Javier Martinez Canillas 2023-11-16 4:04 ` [PATCH v2 0/5] drm: Allow the damage helpers to handle buffer damage Zack Rusin 2023-11-16 4:04 ` Zack Rusin 2023-11-16 7:46 ` Javier Martinez Canillas 2023-11-16 7:46 ` Javier Martinez Canillas 2023-11-16 12:07 ` Thomas Zimmermann 2023-11-16 12:07 ` Thomas Zimmermann
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=20231115131549.2191589-3-javierm@redhat.com \ --to=javierm@redhat.com \ --cc=airlied@redhat.com \ --cc=belmouss@redhat.com \ --cc=bluescreen_avenger@verizon.net \ --cc=contact@emersion.fr \ --cc=daniel.vetter@ffwll.ch \ --cc=daniel@ffwll.ch \ --cc=dri-devel@lists.freedesktop.org \ --cc=gurchetansingh@chromium.org \ --cc=kraxel@redhat.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=stable@vger.kernel.org \ --cc=tzimmermann@suse.de \ --cc=virtualization@lists.linux.dev \ /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: linkBe 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.