Message ID | 20230524092150.11776-12-tzimmermann@suse.de (mailing list archive) |
---|---|
State | Accepted |
Commit | c51b36207c04bad501ddd47a3d3fe0dbfd611474 |
Headers | show |
Series | drm/fbdev: Remove DRM's helpers for fbdev I/O | expand |
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@suse.de> Assuming there is a good answer why there is no dirty check: Reviewed-by: Sam Ravnborg <sam@ravnborg.org> > --- > 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
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,
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@suse.de> --- drivers/gpu/drm/drm_fb_helper.c | 22 ++++++++++++++++++++++ include/drm/drm_fb_helper.h | 3 +++ 2 files changed, 25 insertions(+)