X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Ftbm_bufmgr_int.h;h=c5cba300d0f43e914b097e0dfa25f2be792f749f;hb=e63541a42a8470996ae0dc2209b2febaaa71c390;hp=9df1dd77dace97dfe7342a80ccc7831874c57583;hpb=b25993af44337f3f71d5c086fdb0760fcc1b6e38;p=platform%2Fcore%2Fuifw%2Flibtbm.git diff --git a/src/tbm_bufmgr_int.h b/src/tbm_bufmgr_int.h index 9df1dd7..c5cba30 100644 --- a/src/tbm_bufmgr_int.h +++ b/src/tbm_bufmgr_int.h @@ -64,6 +64,8 @@ extern tbm_bufmgr gBufMgr; extern int b_dump_queue; extern int trace_mask; +#define TBM_BO_MAGIC 0xBF011234 + #define C(b, m) (((b) >> (m)) & 0xFF) #define B(c, s) ((((unsigned int)(c)) & 0xff) << (s)) #define FOURCC(a, b, c, d) (B(d, 24) | B(c, 16) | B(b, 8) | B(a, 0)) @@ -170,6 +172,31 @@ struct list_head { struct list_head *next; }; +typedef enum _tbm_module_type { + TBM_MODULE_TYPE_NONE, + TBM_MODULE_TYPE_HAL_TBM, + TBM_MODULE_TYPE_TBM_BACKEND, + TBM_MODULE_TYPE_BUFMGR_BACKEND, +} tbm_module_type; + +typedef struct _tbm_module { + tbm_module_type type; + + void *module_data; /* backend module */ + tbm_bufmgr_backend backend; /* bufmgr backend (will be DEPRECATED) */ + + tbm_backend_module *backend_module_data; /* backend module data */ + tbm_backend_bufmgr_data *bufmgr_data; /* backend data of the backend module */ + tbm_backend_bufmgr_func *bufmgr_func; /* backend functions for bufmgr */ + tbm_backend_bo_func *bo_func; /* backend functions for bo */ + + int use_hal_tbm; /* use hal-api-tbm */ + int auth_wl_socket_created; /* create wayland socket for authenticated drm_fd */ + int auth_fd; + hal_tbm_backend *hal_backend; /* hal-api-tbm backend */ + hal_tbm_bufmgr *hal_bufmgr; /* hal-api-tbm bufmgr */ +} tbm_module; + /** * @brief tbm_bo : buffer object of Tizen Buffer Manager */ @@ -186,6 +213,7 @@ struct _tbm_bo { unsigned int map_cnt; /* device map count */ tbm_backend_bo_data *bo_data; /* bo data of the backend module */ + int get_from_hal_surface; /* bo_data has be detroyed by hal backend */ }; /** @@ -204,6 +232,10 @@ struct _tbm_bufmgr { struct list_head surf_queue_list; /* list of surface queues belonging to bufmgr */ struct list_head debug_key_list; /* list of debug data key list belonging to bufmgr */ + //TODO: tbm_module *module; + tbm_module *module; /* tbm module */ + + //TODO: replace this to data in tbm_module *module void *module_data; /* backend module */ tbm_bufmgr_backend backend; /* bufmgr backend (will be DEPRECATED) */ @@ -213,6 +245,8 @@ struct _tbm_bufmgr { tbm_backend_bo_func *bo_func; /* backend functions for bo */ int use_hal_tbm; /* use hal-api-tbm */ + int auth_wl_socket_created; /* create wayland socket for authenticated drm_fd */ + int auth_fd; hal_tbm_backend *hal_backend; /* hal-api-tbm backend */ hal_tbm_bufmgr *hal_bufmgr; /* hal-api-tbm bufmgr */ }; @@ -244,16 +278,20 @@ struct _tbm_surface { struct list_head item_link; /* link of surface */ - struct list_head user_data_list; /* list of the user_date in surface */ + struct list_head user_data_list; /* list of the user_data in surface */ struct list_head debug_data_list; /* list of debug data */ + struct list_head destroy_funcs; /* list of destory callback function */ + struct { int x; int y; int width; int height; } damage; + + hal_tbm_surface *hal_surface; // hal_tbm_surface }; typedef struct { @@ -273,6 +311,13 @@ typedef struct { struct list_head item_link; } tbm_surface_debug_data; +typedef struct _tbm_surface_destroy_func_info { + tbm_surface_internal_destroy_handler destroy_func; + void *user_data; + + struct list_head item_link; +} tbm_surface_destroy_func_info; + tbm_bufmgr _tbm_bufmgr_get_bufmgr(void); int _tbm_bo_set_surface(tbm_bo bo, tbm_surface_h surface); int _tbm_surface_is_valid(tbm_surface_h surface); @@ -302,11 +347,22 @@ void _tbm_set_last_result(tbm_error_e err); /* functions for mutex */ void _tbm_bufmgr_mutex_lock(void); void _tbm_bufmgr_mutex_unlock(void); +tbm_bo tbm_bufmgr_internal_find_bo(tbm_bufmgr bufmgr, tbm_bo bo); + +tbm_bo tbm_bufmgr_internal_alloc_bo_with_format(tbm_bufmgr bufmgr, int format, int bo_idx, int width, int bpp, int height, tbm_bo_memory_type flags, tbm_error_e *error); +tbm_bo tbm_bo_alloc_with_bo_data(tbm_bufmgr bufmgr, tbm_backend_bo_data *bo_data, int flags); + +/* tbm_module functions */ +tbm_module *tbm_module_load(int fd); +void tbm_module_unload(tbm_module *module); -tbm_bo tbm_bo_alloc_with_format(tbm_bufmgr bufmgr, int format, int bo_idx, int width, - int height, tbm_bo_memory_type flags, tbm_error_e *error); -tbm_bo tbm_bo_alloc_with_tiled_format(tbm_bufmgr bufmgr, int width, int height, int bpp, int format, - tbm_bo_memory_type flags, int bo_idx, tbm_error_e *error); -tbm_bo tbm_bo_alloc_with_surface(tbm_bufmgr bufmgr, int width, int height, int format, int flags, int bo_idx); +int tbm_module_bufmgr_get_capabilities(tbm_module *module, tbm_error_e *error); +tbm_error_e tbm_module_bufmgr_bind_native_display(tbm_module *module, void *native_display); +tbm_error_e tbm_module_bufmgr_get_supported_formats(tbm_module *module, uint32_t **formats, uint32_t *num); +tbm_error_e tbm_module_bufmgr_get_plane_data(tbm_module *module, int format, int plane_idx, uint32_t w, uint32_t h, uint32_t *size, uint32_t *offset, uint32_t *pitch, int *bo_idx); +tbm_backend_bo_data *tbm_module_bufmgr_bo_alloc(tbm_module *module, tbm_bo bo, int size, int flags, tbm_error_e *error); +tbm_backend_bo_data *tbm_module_bufmgr_bo_alloc_with_format(tbm_module *module, int format, int bo_idx, int width, int height, int bpp, tbm_bo_memory_type flags, tbm_error_e *error); +tbm_backend_bo_data *tbm_module_bufmgr_bo_import_fd(tbm_module *module, tbm_bo bo, tbm_fd fd, tbm_error_e *error); +tbm_backend_bo_data *tbm_module_bufmgr_bo_import_key(tbm_module *module, tbm_bo bo, tbm_key key, tbm_error_e *error); -#endif /* _TBM_BUFMGR_INT_H_ */ +#endif /* _TBM_BUFMGR_INT_H_ */