12874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
27415287eSGerd Hoffmann /*
37415287eSGerd Hoffmann  * Copyright (C) 2016 Noralf Trønnes
47415287eSGerd Hoffmann  */
57415287eSGerd Hoffmann 
67415287eSGerd Hoffmann #ifndef __LINUX_DRM_FORMAT_HELPER_H
77415287eSGerd Hoffmann #define __LINUX_DRM_FORMAT_HELPER_H
87415287eSGerd Hoffmann 
971bf5587SThomas Zimmermann struct iosys_map;
10452290f3SThomas Zimmermann struct drm_format_info;
117415287eSGerd Hoffmann struct drm_framebuffer;
127415287eSGerd Hoffmann struct drm_rect;
137415287eSGerd Hoffmann 
14452290f3SThomas Zimmermann unsigned int drm_fb_clip_offset(unsigned int pitch, const struct drm_format_info *format,
15452290f3SThomas Zimmermann 				const struct drm_rect *clip);
16452290f3SThomas Zimmermann 
17edbe262aSThomas Zimmermann void drm_fb_memcpy(struct iosys_map *dst, const unsigned int *dst_pitch,
18edbe262aSThomas Zimmermann 		   const struct iosys_map *vmap, const struct drm_framebuffer *fb,
19edbe262aSThomas Zimmermann 		   const struct drm_rect *clip);
20ce582859SThomas Zimmermann void drm_fb_swab(struct iosys_map *dst, const unsigned int *dst_pitch,
21ce582859SThomas Zimmermann 		 const struct iosys_map *vmap, const struct drm_framebuffer *fb,
22ce582859SThomas Zimmermann 		 const struct drm_rect *clip, bool cached);
23e13140a0SThomas Zimmermann void drm_fb_xrgb8888_to_rgb332(struct iosys_map *dst, const unsigned int *dst_pitch,
24e13140a0SThomas Zimmermann 			       const struct iosys_map *vmap, const struct drm_framebuffer *fb,
25e13140a0SThomas Zimmermann 			       const struct drm_rect *clip);
26ab298c29SThomas Zimmermann void drm_fb_xrgb8888_to_rgb565(struct iosys_map *dst, const unsigned int *dst_pitch,
27ab298c29SThomas Zimmermann 			       const struct iosys_map *vmap, const struct drm_framebuffer *fb,
2853bc2098SThomas Zimmermann 			       const struct drm_rect *clip, bool swab);
29*c4863ce0SThomas Zimmermann void drm_fb_xrgb8888_to_rgb888(struct iosys_map *dst, const unsigned int *dst_pitch,
30*c4863ce0SThomas Zimmermann 			       const struct iosys_map *vmap, const struct drm_framebuffer *fb,
3153bc2098SThomas Zimmermann 			       const struct drm_rect *clip);
32877691b9SHector Martin void drm_fb_xrgb8888_to_xrgb2101010_toio(void __iomem *dst, unsigned int dst_pitch,
33877691b9SHector Martin 					 const void *vaddr, const struct drm_framebuffer *fb,
34877691b9SHector Martin 					 const struct drm_rect *clip);
3553bc2098SThomas Zimmermann void drm_fb_xrgb8888_to_gray8(void *dst, unsigned int dst_pitch, const void *vaddr,
3653bc2098SThomas Zimmermann 			      const struct drm_framebuffer *fb, const struct drm_rect *clip);
377415287eSGerd Hoffmann 
3871bf5587SThomas Zimmermann int drm_fb_blit(struct iosys_map *dst, const unsigned int *dst_pitch, uint32_t dst_format,
3971bf5587SThomas Zimmermann 		const struct iosys_map *vmap, const struct drm_framebuffer *fb,
4019b20a80SThomas Zimmermann 		const struct drm_rect *rect);
41900d3e4aSThomas Zimmermann 
429b13a3fcSGeert Uytterhoeven void drm_fb_xrgb8888_to_mono(void *dst, unsigned int dst_pitch, const void *src,
439b13a3fcSGeert Uytterhoeven 			     const struct drm_framebuffer *fb, const struct drm_rect *clip);
44bcf8b616SJavier Martinez Canillas 
457415287eSGerd Hoffmann #endif /* __LINUX_DRM_FORMAT_HELPER_H */
46