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 | |
Andrzej Pietrasiewicz | 55f7f72 | 2020-03-11 15:55:37 +0100 | [diff] [blame] | 4 | struct drm_afbc_framebuffer; |
Noralf Trønnes | 4c3dbb2 | 2017-08-13 15:31:44 +0200 | [diff] [blame] | 5 | struct drm_device; |
Noralf Trønnes | 4c3dbb2 | 2017-08-13 15:31:44 +0200 | [diff] [blame] | 6 | struct drm_fb_helper_surface_size; |
Noralf Trønnes | a5ea8a6 | 2017-09-11 18:37:45 +0200 | [diff] [blame] | 7 | struct drm_file; |
Noralf Trønnes | 4c3dbb2 | 2017-08-13 15:31:44 +0200 | [diff] [blame] | 8 | struct drm_framebuffer; |
| 9 | struct drm_framebuffer_funcs; |
| 10 | struct drm_gem_object; |
| 11 | struct drm_mode_fb_cmd2; |
| 12 | struct drm_plane; |
| 13 | struct drm_plane_state; |
Daniel Vetter | ccc3b2b | 2018-04-05 17:44:42 +0200 | [diff] [blame] | 14 | struct drm_simple_display_pipe; |
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 | |
Andrzej Pietrasiewicz | 55f7f72 | 2020-03-11 15:55:37 +0100 | [diff] [blame] | 40 | #define drm_is_afbc(modifier) \ |
| 41 | (((modifier) & AFBC_VENDOR_AND_TYPE_MASK) == DRM_FORMAT_MOD_ARM_AFBC(0)) |
| 42 | |
| 43 | int drm_gem_fb_afbc_init(struct drm_device *dev, |
| 44 | const struct drm_mode_fb_cmd2 *mode_cmd, |
| 45 | struct drm_afbc_framebuffer *afbc_fb); |
| 46 | |
Noralf Trønnes | 4c3dbb2 | 2017-08-13 15:31:44 +0200 | [diff] [blame] | 47 | int drm_gem_fb_prepare_fb(struct drm_plane *plane, |
| 48 | struct drm_plane_state *state); |
Daniel Vetter | ccc3b2b | 2018-04-05 17:44:42 +0200 | [diff] [blame] | 49 | int drm_gem_fb_simple_display_pipe_prepare_fb(struct drm_simple_display_pipe *pipe, |
| 50 | struct drm_plane_state *plane_state); |
Noralf Trønnes | 4c3dbb2 | 2017-08-13 15:31:44 +0200 | [diff] [blame] | 51 | #endif |