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 94a85b0b5SThomas Zimmermann #include <linux/types.h> 104a85b0b5SThomas Zimmermann 114a85b0b5SThomas Zimmermann struct drm_device; 12452290f3SThomas Zimmermann struct drm_format_info; 137415287eSGerd Hoffmann struct drm_framebuffer; 147415287eSGerd Hoffmann struct drm_rect; 157415287eSGerd Hoffmann 164a85b0b5SThomas Zimmermann struct iosys_map; 174a85b0b5SThomas Zimmermann 18452290f3SThomas Zimmermann unsigned int drm_fb_clip_offset(unsigned int pitch, const struct drm_format_info *format, 19452290f3SThomas Zimmermann const struct drm_rect *clip); 20452290f3SThomas Zimmermann 21edbe262aSThomas Zimmermann void drm_fb_memcpy(struct iosys_map *dst, const unsigned int *dst_pitch, 22504a51d7SThomas Zimmermann const struct iosys_map *src, const struct drm_framebuffer *fb, 23edbe262aSThomas Zimmermann const struct drm_rect *clip); 24ce582859SThomas Zimmermann void drm_fb_swab(struct iosys_map *dst, const unsigned int *dst_pitch, 25504a51d7SThomas Zimmermann const struct iosys_map *src, const struct drm_framebuffer *fb, 26ce582859SThomas Zimmermann const struct drm_rect *clip, bool cached); 27e13140a0SThomas Zimmermann void drm_fb_xrgb8888_to_rgb332(struct iosys_map *dst, const unsigned int *dst_pitch, 28504a51d7SThomas Zimmermann const struct iosys_map *src, const struct drm_framebuffer *fb, 29e13140a0SThomas Zimmermann const struct drm_rect *clip); 30ab298c29SThomas Zimmermann void drm_fb_xrgb8888_to_rgb565(struct iosys_map *dst, const unsigned int *dst_pitch, 31504a51d7SThomas Zimmermann const struct iosys_map *src, const struct drm_framebuffer *fb, 3253bc2098SThomas Zimmermann const struct drm_rect *clip, bool swab); 33*10cd592eSThomas Zimmermann void drm_fb_xrgb8888_to_xrgb1555(struct iosys_map *dst, const unsigned int *dst_pitch, 34*10cd592eSThomas Zimmermann const struct iosys_map *src, const struct drm_framebuffer *fb, 35*10cd592eSThomas Zimmermann const struct drm_rect *clip); 36*10cd592eSThomas Zimmermann void drm_fb_xrgb8888_to_argb1555(struct iosys_map *dst, const unsigned int *dst_pitch, 37*10cd592eSThomas Zimmermann const struct iosys_map *src, const struct drm_framebuffer *fb, 38*10cd592eSThomas Zimmermann const struct drm_rect *clip); 39*10cd592eSThomas Zimmermann void drm_fb_xrgb8888_to_rgba5551(struct iosys_map *dst, const unsigned int *dst_pitch, 40*10cd592eSThomas Zimmermann const struct iosys_map *src, const struct drm_framebuffer *fb, 41*10cd592eSThomas Zimmermann const struct drm_rect *clip); 42c4863ce0SThomas Zimmermann void drm_fb_xrgb8888_to_rgb888(struct iosys_map *dst, const unsigned int *dst_pitch, 43504a51d7SThomas Zimmermann const struct iosys_map *src, const struct drm_framebuffer *fb, 4453bc2098SThomas Zimmermann const struct drm_rect *clip); 45175073d6SThomas Zimmermann void drm_fb_xrgb8888_to_argb8888(struct iosys_map *dst, const unsigned int *dst_pitch, 46175073d6SThomas Zimmermann const struct iosys_map *src, const struct drm_framebuffer *fb, 47175073d6SThomas Zimmermann const struct drm_rect *clip); 48ce73f456SThomas Zimmermann void drm_fb_xrgb8888_to_xrgb2101010(struct iosys_map *dst, const unsigned int *dst_pitch, 49504a51d7SThomas Zimmermann const struct iosys_map *src, const struct drm_framebuffer *fb, 50877691b9SHector Martin const struct drm_rect *clip); 5156119bfbSThomas Zimmermann void drm_fb_xrgb8888_to_argb2101010(struct iosys_map *dst, const unsigned int *dst_pitch, 5256119bfbSThomas Zimmermann const struct iosys_map *src, const struct drm_framebuffer *fb, 5356119bfbSThomas Zimmermann const struct drm_rect *clip); 547bef6449SThomas Zimmermann void drm_fb_xrgb8888_to_gray8(struct iosys_map *dst, const unsigned int *dst_pitch, 55504a51d7SThomas Zimmermann const struct iosys_map *src, const struct drm_framebuffer *fb, 567bef6449SThomas Zimmermann const struct drm_rect *clip); 577415287eSGerd Hoffmann 5871bf5587SThomas Zimmermann int drm_fb_blit(struct iosys_map *dst, const unsigned int *dst_pitch, uint32_t dst_format, 59504a51d7SThomas Zimmermann const struct iosys_map *src, const struct drm_framebuffer *fb, 6019b20a80SThomas Zimmermann const struct drm_rect *rect); 61900d3e4aSThomas Zimmermann 62b3aca563SThomas Zimmermann void drm_fb_xrgb8888_to_mono(struct iosys_map *dst, const unsigned int *dst_pitch, 63504a51d7SThomas Zimmermann const struct iosys_map *src, const struct drm_framebuffer *fb, 64b3aca563SThomas Zimmermann const struct drm_rect *clip); 65bcf8b616SJavier Martinez Canillas 664a85b0b5SThomas Zimmermann size_t drm_fb_build_fourcc_list(struct drm_device *dev, 674a85b0b5SThomas Zimmermann const u32 *native_fourccs, size_t native_nfourccs, 684a85b0b5SThomas Zimmermann u32 *fourccs_out, size_t nfourccs_out); 694a85b0b5SThomas Zimmermann 707415287eSGerd Hoffmann #endif /* __LINUX_DRM_FORMAT_HELPER_H */ 71