2017-08-13 15:31:44 +02:00
# ifndef __DRM_GEM_FB_HELPER_H__
# define __DRM_GEM_FB_HELPER_H__
2021-07-16 16:07:55 +02:00
# include <linux/dma-buf.h>
2022-02-04 09:05:41 -08:00
# include <linux/iosys-map.h>
2021-07-16 16:07:55 +02:00
2020-03-11 15:55:37 +01:00
struct drm_afbc_framebuffer ;
2017-08-13 15:31:44 +02:00
struct drm_device ;
struct drm_fb_helper_surface_size ;
2017-09-11 18:37:45 +02:00
struct drm_file ;
2017-08-13 15:31:44 +02:00
struct drm_framebuffer ;
struct drm_framebuffer_funcs ;
struct drm_gem_object ;
struct drm_mode_fb_cmd2 ;
2020-03-11 15:55:37 +01:00
# define AFBC_VENDOR_AND_TYPE_MASK GENMASK_ULL(63, 52)
2017-08-13 15:31:44 +02:00
struct drm_gem_object * drm_gem_fb_get_obj ( struct drm_framebuffer * fb ,
unsigned int plane ) ;
void drm_gem_fb_destroy ( struct drm_framebuffer * fb ) ;
int drm_gem_fb_create_handle ( struct drm_framebuffer * fb , struct drm_file * file ,
unsigned int * handle ) ;
2020-03-11 15:55:36 +01:00
int drm_gem_fb_init_with_funcs ( struct drm_device * dev ,
struct drm_framebuffer * fb ,
struct drm_file * file ,
const struct drm_mode_fb_cmd2 * mode_cmd ,
const struct drm_framebuffer_funcs * funcs ) ;
2017-08-13 15:31:44 +02:00
struct drm_framebuffer *
drm_gem_fb_create_with_funcs ( struct drm_device * dev , struct drm_file * file ,
const struct drm_mode_fb_cmd2 * mode_cmd ,
const struct drm_framebuffer_funcs * funcs ) ;
struct drm_framebuffer *
drm_gem_fb_create ( struct drm_device * dev , struct drm_file * file ,
const struct drm_mode_fb_cmd2 * mode_cmd ) ;
2019-01-15 05:36:39 +01:00
struct drm_framebuffer *
drm_gem_fb_create_with_dirty ( struct drm_device * dev , struct drm_file * file ,
const struct drm_mode_fb_cmd2 * mode_cmd ) ;
2017-08-13 15:31:44 +02:00
2022-05-17 13:33:24 +02:00
int drm_gem_fb_vmap ( struct drm_framebuffer * fb , struct iosys_map * map ,
struct iosys_map * data ) ;
void drm_gem_fb_vunmap ( struct drm_framebuffer * fb , struct iosys_map * map ) ;
2021-07-16 16:07:55 +02:00
int drm_gem_fb_begin_cpu_access ( struct drm_framebuffer * fb , enum dma_data_direction dir ) ;
void drm_gem_fb_end_cpu_access ( struct drm_framebuffer * fb , enum dma_data_direction dir ) ;
2020-03-11 15:55:37 +01:00
# define drm_is_afbc(modifier) \
( ( ( modifier ) & AFBC_VENDOR_AND_TYPE_MASK ) = = DRM_FORMAT_MOD_ARM_AFBC ( 0 ) )
int drm_gem_fb_afbc_init ( struct drm_device * dev ,
const struct drm_mode_fb_cmd2 * mode_cmd ,
struct drm_afbc_framebuffer * afbc_fb ) ;
2017-08-13 15:31:44 +02:00
# endif