1*4882a593Smuzhiyun #ifndef __DRM_GEM_FB_HELPER_H__ 2*4882a593Smuzhiyun #define __DRM_GEM_FB_HELPER_H__ 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun struct drm_afbc_framebuffer; 5*4882a593Smuzhiyun struct drm_device; 6*4882a593Smuzhiyun struct drm_fb_helper_surface_size; 7*4882a593Smuzhiyun struct drm_file; 8*4882a593Smuzhiyun struct drm_framebuffer; 9*4882a593Smuzhiyun struct drm_framebuffer_funcs; 10*4882a593Smuzhiyun struct drm_gem_object; 11*4882a593Smuzhiyun struct drm_mode_fb_cmd2; 12*4882a593Smuzhiyun struct drm_plane; 13*4882a593Smuzhiyun struct drm_plane_state; 14*4882a593Smuzhiyun struct drm_simple_display_pipe; 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #define AFBC_VENDOR_AND_TYPE_MASK GENMASK_ULL(63, 52) 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun struct drm_gem_object *drm_gem_fb_get_obj(struct drm_framebuffer *fb, 19*4882a593Smuzhiyun unsigned int plane); 20*4882a593Smuzhiyun void drm_gem_fb_destroy(struct drm_framebuffer *fb); 21*4882a593Smuzhiyun int drm_gem_fb_create_handle(struct drm_framebuffer *fb, struct drm_file *file, 22*4882a593Smuzhiyun unsigned int *handle); 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun int drm_gem_fb_init_with_funcs(struct drm_device *dev, 25*4882a593Smuzhiyun struct drm_framebuffer *fb, 26*4882a593Smuzhiyun struct drm_file *file, 27*4882a593Smuzhiyun const struct drm_mode_fb_cmd2 *mode_cmd, 28*4882a593Smuzhiyun const struct drm_framebuffer_funcs *funcs); 29*4882a593Smuzhiyun struct drm_framebuffer * 30*4882a593Smuzhiyun drm_gem_fb_create_with_funcs(struct drm_device *dev, struct drm_file *file, 31*4882a593Smuzhiyun const struct drm_mode_fb_cmd2 *mode_cmd, 32*4882a593Smuzhiyun const struct drm_framebuffer_funcs *funcs); 33*4882a593Smuzhiyun struct drm_framebuffer * 34*4882a593Smuzhiyun drm_gem_fb_create(struct drm_device *dev, struct drm_file *file, 35*4882a593Smuzhiyun const struct drm_mode_fb_cmd2 *mode_cmd); 36*4882a593Smuzhiyun struct drm_framebuffer * 37*4882a593Smuzhiyun drm_gem_fb_create_with_dirty(struct drm_device *dev, struct drm_file *file, 38*4882a593Smuzhiyun const struct drm_mode_fb_cmd2 *mode_cmd); 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun #define drm_is_afbc(modifier) \ 41*4882a593Smuzhiyun (((modifier) & AFBC_VENDOR_AND_TYPE_MASK) == DRM_FORMAT_MOD_ARM_AFBC(0)) 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun int drm_gem_fb_afbc_init(struct drm_device *dev, 44*4882a593Smuzhiyun const struct drm_mode_fb_cmd2 *mode_cmd, 45*4882a593Smuzhiyun struct drm_afbc_framebuffer *afbc_fb); 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun int drm_gem_fb_prepare_fb(struct drm_plane *plane, 48*4882a593Smuzhiyun struct drm_plane_state *state); 49*4882a593Smuzhiyun int drm_gem_fb_simple_display_pipe_prepare_fb(struct drm_simple_display_pipe *pipe, 50*4882a593Smuzhiyun struct drm_plane_state *plane_state); 51*4882a593Smuzhiyun #endif 52