Noralf Trønnes | 4c3dbb2 | 2017-08-13 15:31:44 +0200 | [diff] [blame] | 1 | #ifndef __DRM_GEM_FB_HELPER_H__ |
| 2 | #define __DRM_GEM_FB_HELPER_H__ |
| 3 | |
Thomas Zimmermann | 37408cd | 2021-07-16 16:07:55 +0200 | [diff] [blame] | 4 | #include <linux/dma-buf.h> |
Lucas De Marchi | 7938f42 | 2022-02-04 09:05:41 -0800 | [diff] [blame] | 5 | #include <linux/iosys-map.h> |
Thomas Zimmermann | 37408cd | 2021-07-16 16:07:55 +0200 | [diff] [blame] | 6 | |
Andrzej Pietrasiewicz | 55f7f72 | 2020-03-11 15:55:37 +0100 | [diff] [blame] | 7 | struct drm_afbc_framebuffer; |
Noralf Trønnes | 4c3dbb2 | 2017-08-13 15:31:44 +0200 | [diff] [blame] | 8 | struct drm_device; |
Noralf Trønnes | 4c3dbb2 | 2017-08-13 15:31:44 +0200 | [diff] [blame] | 9 | struct drm_fb_helper_surface_size; |
Noralf Trønnes | a5ea8a6 | 2017-09-11 18:37:45 +0200 | [diff] [blame] | 10 | struct drm_file; |
Noralf Trønnes | 4c3dbb2 | 2017-08-13 15:31:44 +0200 | [diff] [blame] | 11 | struct drm_framebuffer; |
| 12 | struct drm_framebuffer_funcs; |
| 13 | struct drm_gem_object; |
| 14 | struct drm_mode_fb_cmd2; |
Noralf Trønnes | 4c3dbb2 | 2017-08-13 15:31:44 +0200 | [diff] [blame] | 15 | |
Andrzej Pietrasiewicz | 55f7f72 | 2020-03-11 15:55:37 +0100 | [diff] [blame] | 16 | #define AFBC_VENDOR_AND_TYPE_MASK GENMASK_ULL(63, 52) |
| 17 | |
Noralf Trønnes | 4c3dbb2 | 2017-08-13 15:31:44 +0200 | [diff] [blame] | 18 | struct drm_gem_object *drm_gem_fb_get_obj(struct drm_framebuffer *fb, |
| 19 | unsigned int plane); |
| 20 | void drm_gem_fb_destroy(struct drm_framebuffer *fb); |
| 21 | int drm_gem_fb_create_handle(struct drm_framebuffer *fb, struct drm_file *file, |
| 22 | unsigned int *handle); |
| 23 | |
Andrzej Pietrasiewicz | f2b816d | 2020-03-11 15:55:36 +0100 | [diff] [blame] | 24 | int drm_gem_fb_init_with_funcs(struct drm_device *dev, |
| 25 | struct drm_framebuffer *fb, |
| 26 | struct drm_file *file, |
| 27 | const struct drm_mode_fb_cmd2 *mode_cmd, |
| 28 | const struct drm_framebuffer_funcs *funcs); |
Noralf Trønnes | 4c3dbb2 | 2017-08-13 15:31:44 +0200 | [diff] [blame] | 29 | struct drm_framebuffer * |
| 30 | drm_gem_fb_create_with_funcs(struct drm_device *dev, struct drm_file *file, |
| 31 | const struct drm_mode_fb_cmd2 *mode_cmd, |
| 32 | const struct drm_framebuffer_funcs *funcs); |
| 33 | struct drm_framebuffer * |
| 34 | drm_gem_fb_create(struct drm_device *dev, struct drm_file *file, |
| 35 | const struct drm_mode_fb_cmd2 *mode_cmd); |
Noralf Trønnes | dbd62e1 | 2019-01-15 05:36:39 +0100 | [diff] [blame] | 36 | struct drm_framebuffer * |
| 37 | drm_gem_fb_create_with_dirty(struct drm_device *dev, struct drm_file *file, |
| 38 | const struct drm_mode_fb_cmd2 *mode_cmd); |
Noralf Trønnes | 4c3dbb2 | 2017-08-13 15:31:44 +0200 | [diff] [blame] | 39 | |
Thomas Zimmermann | 746b9c6 | 2022-05-17 13:33:24 +0200 | [diff] [blame] | 40 | int drm_gem_fb_vmap(struct drm_framebuffer *fb, struct iosys_map *map, |
| 41 | struct iosys_map *data); |
| 42 | void drm_gem_fb_vunmap(struct drm_framebuffer *fb, struct iosys_map *map); |
Thomas Zimmermann | 37408cd | 2021-07-16 16:07:55 +0200 | [diff] [blame] | 43 | int drm_gem_fb_begin_cpu_access(struct drm_framebuffer *fb, enum dma_data_direction dir); |
| 44 | void drm_gem_fb_end_cpu_access(struct drm_framebuffer *fb, enum dma_data_direction dir); |
| 45 | |
Andrzej Pietrasiewicz | 55f7f72 | 2020-03-11 15:55:37 +0100 | [diff] [blame] | 46 | #define drm_is_afbc(modifier) \ |
| 47 | (((modifier) & AFBC_VENDOR_AND_TYPE_MASK) == DRM_FORMAT_MOD_ARM_AFBC(0)) |
| 48 | |
| 49 | int drm_gem_fb_afbc_init(struct drm_device *dev, |
| 50 | const struct drm_mode_fb_cmd2 *mode_cmd, |
| 51 | struct drm_afbc_framebuffer *afbc_fb); |
| 52 | |
Noralf Trønnes | 4c3dbb2 | 2017-08-13 15:31:44 +0200 | [diff] [blame] | 53 | #endif |