From bda0ff1b5dcfc6820d7e597e72f2f32d90abeb03 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Wed, 16 Jun 2021 15:00:00 +0900 Subject: [PATCH] tbm_bufmgr: change tbm_bo_alloc_with_bo_data name change tbm_bo_alloc_with_bo_data into tbm_bufmgr_internal_alloc_bo_with_bo_data and move this function to tbm_bufmgr.c Change-Id: I7266e1630043d9ee64ea228070b6f78940d4acc0 --- src/tbm_bo.c | 52 +--------------------------------------------- src/tbm_bufmgr.c | 43 ++++++++++++++++++++++++++++++++++++++ src/tbm_bufmgr_int.h | 4 +++- src/tbm_surface_internal.c | 4 ++-- 4 files changed, 49 insertions(+), 54 deletions(-) diff --git a/src/tbm_bo.c b/src/tbm_bo.c index 8872848..1faccdc 100644 --- a/src/tbm_bo.c +++ b/src/tbm_bo.c @@ -53,7 +53,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. } \ } -static char * +char * _tbm_flag_to_str(int f) { static char str[255]; @@ -399,56 +399,6 @@ alloc_fail: return NULL; } -/* LCOV_EXCL_START */ -tbm_bo -tbm_bo_alloc_with_bo_data(tbm_bufmgr bufmgr, tbm_backend_bo_data *bo_data, int flags) -{ - tbm_bo bo, bo2 = NULL; - - _tbm_bufmgr_mutex_lock(); - _tbm_set_last_result(TBM_ERROR_NONE); - - TBM_BO_RETURN_VAL_IF_FAIL(TBM_BUFMGR_IS_VALID(bufmgr), NULL); - TBM_BO_RETURN_VAL_IF_FAIL(bo_data, NULL); - - // return an existed bo if the bo is already created with the same bo_data. - if (!LIST_IS_EMPTY(&bufmgr->bo_list)) { - LIST_FOR_EACH_ENTRY(bo2, &bufmgr->bo_list, item_link) { - if (bo2->bo_data == bo_data) { - TBM_ERR("find bo(%p) ref(%d) flag(%s) in list\n", - bo2, bo2->ref_cnt, _tbm_flag_to_str(bo2->flags)); - bo2->ref_cnt++; - _tbm_bufmgr_mutex_unlock(); - return bo2; - } - } - } - - bo = calloc(1, sizeof(struct _tbm_bo)); - if (!bo) { - /* LCOV_EXCL_START */ - _tbm_set_last_result(TBM_ERROR_OUT_OF_MEMORY); - _tbm_bufmgr_mutex_unlock(); - return NULL; - /* LCOV_EXCL_STOP */ - } - - _tbm_util_check_bo_cnt(bufmgr); - - bo->get_from_hal_surface = 1; - bo->bo_data = bo_data; - - _tbm_bo_init(bufmgr, bo, flags); - - TBM_TRACE_BO("bo(%p) refcnt(%d), flag(%s)\n", bo, bo->ref_cnt, _tbm_flag_to_str(bo->flags)); - - _tbm_bufmgr_mutex_unlock(); - - return bo; -} - -/* LCOV_EXCL_STOP */ - tbm_bo tbm_bo_ref(tbm_bo bo) { diff --git a/src/tbm_bufmgr.c b/src/tbm_bufmgr.c index b235029..b20523a 100644 --- a/src/tbm_bufmgr.c +++ b/src/tbm_bufmgr.c @@ -958,4 +958,47 @@ fail: return NULL; } +tbm_bo +tbm_bufmgr_internal_alloc_bo_with_bo_data(tbm_bufmgr bufmgr, tbm_backend_bo_data *bo_data, int flags) +{ + tbm_bo bo, bo2 = NULL; + + _tbm_bufmgr_mutex_lock(); + _tbm_set_last_result(TBM_ERROR_NONE); + + TBM_BUFMGR_RETURN_VAL_IF_FAIL(TBM_BUFMGR_IS_VALID(bufmgr), NULL); + TBM_BUFMGR_RETURN_VAL_IF_FAIL(bo_data, NULL); + + _tbm_bufmgr_check_bo_cnt(bufmgr); + + bo = calloc(1, sizeof(struct _tbm_bo)); + if (!bo) { + /* LCOV_EXCL_START */ + TBM_ERR("memory allocationc failed."); + _tbm_set_last_result(TBM_ERROR_OUT_OF_MEMORY); + _tbm_bufmgr_mutex_unlock(); + return NULL; + /* LCOV_EXCL_STOP */ + } + bo->bo_data = bo_data; + bo->get_from_hal_surface = 1; + + // return an existed bo if the bo is already created with the same bo_data. + bo2 = tbm_bufmgr_internal_find_bo(bufmgr, bo); + if (bo2) { + bo2->ref_cnt++; + free(bo); + _tbm_bufmgr_mutex_unlock(); + return bo2; + } + + _tbm_bufmgr_initialize_bo(bufmgr, bo, flags); + + TBM_TRACE_BO("bo(%p) refcnt(%d), flag(%s)", bo, bo->ref_cnt, _tbm_flag_to_str(bo->flags)); + + _tbm_bufmgr_mutex_unlock(); + + return bo; +} + /* LCOV_EXCL_STOP */ diff --git a/src/tbm_bufmgr_int.h b/src/tbm_bufmgr_int.h index c5cba30..230e36c 100644 --- a/src/tbm_bufmgr_int.h +++ b/src/tbm_bufmgr_int.h @@ -344,13 +344,15 @@ tbm_bufmgr tbm_bufmgr_get(void); void _tbm_set_last_result(tbm_error_e err); +char *_tbm_flag_to_str(int f); + /* 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_bo tbm_bufmgr_internal_alloc_bo_with_bo_data(tbm_bufmgr bufmgr, tbm_backend_bo_data *bo_data, int flags); /* tbm_module functions */ tbm_module *tbm_module_load(int fd); diff --git a/src/tbm_surface_internal.c b/src/tbm_surface_internal.c index 8c6fc39..823f061 100644 --- a/src/tbm_surface_internal.c +++ b/src/tbm_surface_internal.c @@ -766,7 +766,7 @@ _tbm_surface_internal_hal_tbm_create_surface(tbm_bufmgr bufmgr, int width, int h } for (i = 0; i < num_bos; i++) { - surf->bos[i] = tbm_bo_alloc_with_bo_data(bufmgr, (tbm_backend_bo_data *)hal_bos[i], flags); + surf->bos[i] = tbm_bufmgr_internal_alloc_bo_with_bo_data(bufmgr, (tbm_backend_bo_data *)hal_bos[i], flags); if (!surf->bos[i]) { TBM_ERR("fail to alloc bo idx:%d", i); *error = tbm_get_last_error(); @@ -935,7 +935,7 @@ _tbm_surface_internal_hal_tbm_import_surface(tbm_bufmgr bufmgr, int width, int h surf->flags = flags; for (i = 0; i < num_bos; i++) { - surf->bos[i] = tbm_bo_alloc_with_bo_data(bufmgr, (tbm_backend_bo_data *)hal_bos[i], flags); + surf->bos[i] = tbm_bufmgr_internal_alloc_bo_with_bo_data(bufmgr, (tbm_backend_bo_data *)hal_bos[i], flags); if (!surf->bos[i]) { TBM_ERR("fail to alloc bo idx:%d", i); *error = tbm_get_last_error(); -- 2.7.4