[PATCH v2 07/10] drm/damage-helper: Remove old state from drm_atomic_helper_damage_merged()
From: Thomas Zimmermann <tzimmermann@suse.de>
Date: 2026-05-11 12:24:45
Also in:
dri-devel, intel-xe, linux-hyperv, linux-mips, virtualization
Subsystem:
drm driver for ast server graphics chips, drm driver for grain media gm12u320 projectors, drm driver for ilitek ili9225 panels, drm driver for pervasive displays repaper panels, drm driver for sharp memory lcd, drm driver for sitronix st7586 panels, drm driver for vmware virtual gpu, drm drivers, drm drivers and misc gpu patches, intel drm display for xe and i915 drivers, intel drm i915 driver (meteor lake, dg2 and older excluding poulsbo, moorestown and derivative), the rest, virtio gpu driver · Maintainers:
Dave Airlie, Hans de Goede, David Lechner, Alex Lanzano, Zack Rusin, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin, Linus Torvalds, Gerd Hoffmann, Dmitry Osipenko
Nothing in drm_atomic_helper_damage_merged() requires the old plane state. Remove the parameter and mass-convert callers. Most callers now no longer require the old plane state in their plane's atomic_update helper. Remove it as well. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/ast/ast_cursor.c | 3 +-- drivers/gpu/drm/drm_damage_helper.c | 4 +--- drivers/gpu/drm/drm_mipi_dbi.c | 3 +-- drivers/gpu/drm/i915/display/intel_plane.c | 11 ++--------- drivers/gpu/drm/i915/display/intel_psr.c | 3 +-- drivers/gpu/drm/sitronix/st7586.c | 3 +-- drivers/gpu/drm/tiny/gm12u320.c | 2 +- drivers/gpu/drm/tiny/ili9225.c | 3 +-- drivers/gpu/drm/tiny/repaper.c | 2 +- drivers/gpu/drm/tiny/sharp-memory.c | 3 +-- drivers/gpu/drm/virtio/virtgpu_plane.c | 2 +- drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 4 +--- include/drm/drm_damage_helper.h | 3 +-- 13 files changed, 14 insertions(+), 32 deletions(-)
diff --git a/drivers/gpu/drm/ast/ast_cursor.c b/drivers/gpu/drm/ast/ast_cursor.c
index fd19c45f2abe..12d5f93eec5f 100644
--- a/drivers/gpu/drm/ast/ast_cursor.c
+++ b/drivers/gpu/drm/ast/ast_cursor.c@@ -251,7 +251,6 @@ static void ast_cursor_plane_helper_atomic_update(struct drm_plane *plane, struct drm_plane_state *plane_state = drm_atomic_get_new_plane_state(state, plane); struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(plane_state); struct drm_framebuffer *fb = plane_state->fb; - struct drm_plane_state *old_plane_state = drm_atomic_get_old_plane_state(state, plane); struct ast_device *ast = to_ast_device(plane->dev); struct drm_rect damage; u64 dst_off = ast_plane->offset;
@@ -266,7 +265,7 @@ static void ast_cursor_plane_helper_atomic_update(struct drm_plane *plane, * engine to the offset. */ - if (drm_atomic_helper_damage_merged(old_plane_state, plane_state, &damage)) { + if (drm_atomic_helper_damage_merged(plane_state, &damage)) { const u8 *argb4444 = ast_cursor_plane_get_argb4444(ast_cursor_plane, shadow_plane_state, &damage);
diff --git a/drivers/gpu/drm/drm_damage_helper.c b/drivers/gpu/drm/drm_damage_helper.c
index 28f26234523d..28b847636253 100644
--- a/drivers/gpu/drm/drm_damage_helper.c
+++ b/drivers/gpu/drm/drm_damage_helper.c@@ -296,7 +296,6 @@ EXPORT_SYMBOL(drm_atomic_helper_damage_iter_next); /** * drm_atomic_helper_damage_merged - Merged plane damage - * @old_state: Old plane state for validation. * @state: Plane state from which to iterate the damage clips. * @rect: Returns the merged damage rectangle *
@@ -309,8 +308,7 @@ EXPORT_SYMBOL(drm_atomic_helper_damage_iter_next); * Returns: * True if there is valid plane damage otherwise false. */ -bool drm_atomic_helper_damage_merged(const struct drm_plane_state *old_state, - const struct drm_plane_state *state, +bool drm_atomic_helper_damage_merged(const struct drm_plane_state *state, struct drm_rect *rect) { struct drm_atomic_helper_damage_iter iter;
diff --git a/drivers/gpu/drm/drm_mipi_dbi.c b/drivers/gpu/drm/drm_mipi_dbi.c
index 25cf04d029f7..4da201c38c93 100644
--- a/drivers/gpu/drm/drm_mipi_dbi.c
+++ b/drivers/gpu/drm/drm_mipi_dbi.c@@ -380,7 +380,6 @@ void drm_mipi_dbi_plane_helper_atomic_update(struct drm_plane *plane, struct drm_plane_state *plane_state = plane->state; struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(plane_state); struct drm_framebuffer *fb = plane_state->fb; - struct drm_plane_state *old_plane_state = drm_atomic_get_old_plane_state(state, plane); struct drm_rect rect; int idx;
@@ -388,7 +387,7 @@ void drm_mipi_dbi_plane_helper_atomic_update(struct drm_plane *plane, return; if (drm_dev_enter(plane->dev, &idx)) { - if (drm_atomic_helper_damage_merged(old_plane_state, plane_state, &rect)) + if (drm_atomic_helper_damage_merged(plane_state, &rect)) mipi_dbi_fb_dirty(&shadow_plane_state->data[0], fb, &rect, &shadow_plane_state->fmtcnv_state); drm_dev_exit(idx);
diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c
index c181a7d063ec..57107cce9267 100644
--- a/drivers/gpu/drm/i915/display/intel_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_plane.c@@ -346,7 +346,6 @@ static void intel_plane_clear_hw_state(struct intel_plane_state *plane_state) static void intel_plane_copy_uapi_plane_damage(struct intel_plane_state *new_plane_state, - const struct intel_plane_state *old_uapi_plane_state, const struct intel_plane_state *new_uapi_plane_state) { struct intel_display *display = to_intel_display(new_plane_state);
@@ -356,10 +355,9 @@ intel_plane_copy_uapi_plane_damage(struct intel_plane_state *new_plane_state, if (DISPLAY_VER(display) < 12) return; - if (!drm_atomic_helper_damage_merged(&old_uapi_plane_state->uapi, - &new_uapi_plane_state->uapi, + if (!drm_atomic_helper_damage_merged(&new_uapi_plane_state->uapi, damage)) - /* Incase helper fails, mark whole plane region as damage */ + /* In case the helper fails, mark whole plane region as damage */ *damage = drm_plane_state_src(&new_uapi_plane_state->uapi); }
@@ -815,7 +813,6 @@ static int plane_atomic_check(struct intel_atomic_state *state, const struct intel_plane_state *old_plane_state = intel_atomic_get_old_plane_state(state, plane); const struct intel_plane_state *new_primary_crtc_plane_state; - const struct intel_plane_state *old_primary_crtc_plane_state; struct intel_crtc *crtc = intel_crtc_for_pipe(display, plane->pipe); const struct intel_crtc_state *old_crtc_state = intel_atomic_get_old_crtc_state(state, crtc);
@@ -830,15 +827,11 @@ static int plane_atomic_check(struct intel_atomic_state *state, new_primary_crtc_plane_state = intel_atomic_get_new_plane_state(state, primary_crtc_plane); - old_primary_crtc_plane_state = - intel_atomic_get_old_plane_state(state, primary_crtc_plane); } else { new_primary_crtc_plane_state = new_plane_state; - old_primary_crtc_plane_state = old_plane_state; } intel_plane_copy_uapi_plane_damage(new_plane_state, - old_primary_crtc_plane_state, new_primary_crtc_plane_state); intel_plane_copy_uapi_to_hw_state(new_plane_state,
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 9958230a3dd9..adb936806488 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c@@ -2970,8 +2970,7 @@ int intel_psr2_sel_fetch_update(struct intel_atomic_state *state, src = drm_plane_state_src(&new_plane_state->uapi); drm_rect_fp_to_int(&src, &src); - if (!drm_atomic_helper_damage_merged(&old_plane_state->uapi, - &new_plane_state->uapi, &damaged_area)) + if (!drm_atomic_helper_damage_merged(&new_plane_state->uapi, &damaged_area)) continue; damaged_area.y1 += new_plane_state->uapi.dst.y1 - src.y1;
diff --git a/drivers/gpu/drm/sitronix/st7586.c b/drivers/gpu/drm/sitronix/st7586.c
index 28b2245f6b79..2cc0312595a4 100644
--- a/drivers/gpu/drm/sitronix/st7586.c
+++ b/drivers/gpu/drm/sitronix/st7586.c@@ -176,7 +176,6 @@ static void st7586_plane_helper_atomic_update(struct drm_plane *plane, struct drm_plane_state *plane_state = plane->state; struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(plane_state); struct drm_framebuffer *fb = plane_state->fb; - struct drm_plane_state *old_plane_state = drm_atomic_get_old_plane_state(state, plane); struct drm_rect rect; int idx;
@@ -186,7 +185,7 @@ static void st7586_plane_helper_atomic_update(struct drm_plane *plane, if (!drm_dev_enter(plane->dev, &idx)) return; - if (drm_atomic_helper_damage_merged(old_plane_state, plane_state, &rect)) + if (drm_atomic_helper_damage_merged(plane_state, &rect)) st7586_fb_dirty(&shadow_plane_state->data[0], fb, &rect, &shadow_plane_state->fmtcnv_state);
diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
index d73dfebb4353..880b965e283a 100644
--- a/drivers/gpu/drm/tiny/gm12u320.c
+++ b/drivers/gpu/drm/tiny/gm12u320.c@@ -582,7 +582,7 @@ static void gm12u320_pipe_update(struct drm_simple_display_pipe *pipe, struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(state); struct drm_rect rect; - if (drm_atomic_helper_damage_merged(old_state, state, &rect)) + if (drm_atomic_helper_damage_merged(state, &rect)) gm12u320_fb_mark_dirty(state->fb, &shadow_plane_state->data[0], &rect); }
diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
index 5bf52a8fd75b..d821a659a585 100644
--- a/drivers/gpu/drm/tiny/ili9225.c
+++ b/drivers/gpu/drm/tiny/ili9225.c@@ -185,7 +185,6 @@ static void ili9225_plane_helper_atomic_update(struct drm_plane *plane, struct drm_plane_state *plane_state = plane->state; struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(plane_state); struct drm_framebuffer *fb = plane_state->fb; - struct drm_plane_state *old_plane_state = drm_atomic_get_old_plane_state(state, plane); struct drm_rect rect; int idx;
@@ -195,7 +194,7 @@ static void ili9225_plane_helper_atomic_update(struct drm_plane *plane, if (!drm_dev_enter(drm, &idx)) return; - if (drm_atomic_helper_damage_merged(old_plane_state, plane_state, &rect)) + if (drm_atomic_helper_damage_merged(plane_state, &rect)) ili9225_fb_dirty(&shadow_plane_state->data[0], fb, &rect, &shadow_plane_state->fmtcnv_state);
diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
index c8270591afc7..531831d2b73f 100644
--- a/drivers/gpu/drm/tiny/repaper.c
+++ b/drivers/gpu/drm/tiny/repaper.c@@ -837,7 +837,7 @@ static void repaper_pipe_update(struct drm_simple_display_pipe *pipe, if (!pipe->crtc.state->active) return; - if (drm_atomic_helper_damage_merged(old_state, state, &rect)) + if (drm_atomic_helper_damage_merged(state, &rect)) repaper_fb_dirty(state->fb, shadow_plane_state->data, &shadow_plane_state->fmtcnv_state); }
diff --git a/drivers/gpu/drm/tiny/sharp-memory.c b/drivers/gpu/drm/tiny/sharp-memory.c
index 506e6432e70d..1dacd41ddbaa 100644
--- a/drivers/gpu/drm/tiny/sharp-memory.c
+++ b/drivers/gpu/drm/tiny/sharp-memory.c@@ -241,7 +241,6 @@ static int sharp_memory_plane_atomic_check(struct drm_plane *plane, static void sharp_memory_plane_atomic_update(struct drm_plane *plane, struct drm_atomic_commit *state) { - struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(state, plane); struct drm_plane_state *plane_state = plane->state; struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(plane_state); struct sharp_memory_device *smd;
@@ -251,7 +250,7 @@ static void sharp_memory_plane_atomic_update(struct drm_plane *plane, if (!smd->crtc.state->active) return; - if (drm_atomic_helper_damage_merged(old_state, plane_state, &rect)) + if (drm_atomic_helper_damage_merged(plane_state, &rect)) sharp_memory_fb_dirty(plane_state->fb, shadow_plane_state->data, &rect, &shadow_plane_state->fmtcnv_state); }
diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c
index 73aa70bd4231..24b786e1555e 100644
--- a/drivers/gpu/drm/virtio/virtgpu_plane.c
+++ b/drivers/gpu/drm/virtio/virtgpu_plane.c@@ -257,7 +257,7 @@ static void virtio_gpu_primary_plane_update(struct drm_plane *plane, return; } - if (!drm_atomic_helper_damage_merged(old_state, plane->state, &rect)) + if (!drm_atomic_helper_damage_merged(plane->state, &rect)) return; bo = gem_to_virtio_gpu_obj(plane->state->fb->obj[0]);
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
index 4139837f4caf..f0df2b1c8465 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c@@ -977,7 +977,6 @@ vmw_stdu_primary_plane_prepare_fb(struct drm_plane *plane, enum stdu_content_type new_content_type; struct vmw_framebuffer_surface *new_vfbs; uint32_t hdisplay = new_state->crtc_w, vdisplay = new_state->crtc_h; - struct drm_plane_state *old_state = plane->state; struct drm_rect rect; int ret;
@@ -1101,8 +1100,7 @@ vmw_stdu_primary_plane_prepare_fb(struct drm_plane *plane, struct vmw_surface *surf = vmw_user_object_surface(&vps->uo); struct vmw_resource *res = &surf->res; - if (!res->res_dirty && drm_atomic_helper_damage_merged(old_state, - new_state, + if (!res->res_dirty && drm_atomic_helper_damage_merged(new_state, &rect)) { /* * At some point it might be useful to actually translate
diff --git a/include/drm/drm_damage_helper.h b/include/drm/drm_damage_helper.h
index fafe29b50fc6..b5a4de779db6 100644
--- a/include/drm/drm_damage_helper.h
+++ b/include/drm/drm_damage_helper.h@@ -77,8 +77,7 @@ drm_atomic_helper_damage_iter_init(struct drm_atomic_helper_damage_iter *iter, bool drm_atomic_helper_damage_iter_next(struct drm_atomic_helper_damage_iter *iter, struct drm_rect *rect); -bool drm_atomic_helper_damage_merged(const struct drm_plane_state *old_state, - const struct drm_plane_state *state, +bool drm_atomic_helper_damage_merged(const struct drm_plane_state *state, struct drm_rect *rect); #endif
--
2.54.0