On Wed, May 24, 2023 at 11:21:48AM +0200, Thomas Zimmermann wrote: > Export drm_fb_helper_damage() and drm_fb_helper_damage_range(), which > handle damage areas for fbdev emulation. This is a temporary export > that allows to move the DRM I/O helpers for fbdev into drivers. Only > fbdev-generic and i915 need them. Both will be updated to implement > damage handling by themselves and the exported functions will be removed. > > v4: > * update interfaces > > Signed-off-by: Thomas Zimmermann <tzimmermann@xxxxxxx> Assuming there is a good answer why there is no dirty check: Reviewed-by: Sam Ravnborg <sam@xxxxxxxxxxxx> > --- > drivers/gpu/drm/drm_fb_helper.c | 22 ++++++++++++++++++++++ > include/drm/drm_fb_helper.h | 3 +++ > 2 files changed, 25 insertions(+) > > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > index f0e9549b6bd7..cb03099fd2e3 100644 > --- a/drivers/gpu/drm/drm_fb_helper.c > +++ b/drivers/gpu/drm/drm_fb_helper.c > @@ -670,6 +670,28 @@ static void drm_fb_helper_memory_range_to_clip(struct fb_info *info, off_t off, > drm_rect_init(clip, x1, y1, x2 - x1, y2 - y1); > } > > +/* Don't use in new code. */ > +void drm_fb_helper_damage_range(struct fb_info *info, off_t off, size_t len) > +{ > + struct drm_fb_helper *fb_helper = info->par; > + struct drm_rect damage_area; > + > + drm_fb_helper_memory_range_to_clip(info, off, len, &damage_area); > + drm_fb_helper_damage(fb_helper, damage_area.x1, damage_area.y1, > + drm_rect_width(&damage_area), > + drm_rect_height(&damage_area)); > +} > +EXPORT_SYMBOL(drm_fb_helper_damage_range); > + > +/* Don't use in new code. */ > +void drm_fb_helper_damage_area(struct fb_info *info, u32 x, u32 y, u32 width, u32 height) > +{ > + struct drm_fb_helper *fb_helper = info->par; > + > + drm_fb_helper_damage(fb_helper, x, y, width, height); > +} > +EXPORT_SYMBOL(drm_fb_helper_damage_area); > + > /** > * drm_fb_helper_deferred_io() - fbdev deferred_io callback function > * @info: fb_info struct pointer > diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h > index 72032c354a30..7d5804882be7 100644 > --- a/include/drm/drm_fb_helper.h > +++ b/include/drm/drm_fb_helper.h > @@ -253,6 +253,9 @@ void drm_fb_helper_fill_info(struct fb_info *info, > struct drm_fb_helper *fb_helper, > struct drm_fb_helper_surface_size *sizes); > > +void drm_fb_helper_damage_range(struct fb_info *info, off_t off, size_t len); > +void drm_fb_helper_damage_area(struct fb_info *info, u32 x, u32 y, u32 width, u32 height); > + > void drm_fb_helper_deferred_io(struct fb_info *info, struct list_head *pagereflist); > > ssize_t drm_fb_helper_sys_read(struct fb_info *info, char __user *buf, > -- > 2.40.1