From 0f279e6883134f6cb0e1760f0b2902fb18887251 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Mon, 14 Jun 2021 17:56:51 +0900 Subject: [PATCH] tbm_module: make tbm_module_bufmgr_bo_alloc_with_format function encapsulate the bufmgr_bo_alloce_with_format with this function. Change-Id: Ic68228a4204aaec28c4887bf9fd87194fd3e1937 --- src/tbm_bo.c | 58 +++++++++++++++------------------------------------- src/tbm_bufmgr_int.h | 2 +- src/tbm_module.c | 37 +++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 43 deletions(-) diff --git a/src/tbm_bo.c b/src/tbm_bo.c index 570690b..0191ec5 100644 --- a/src/tbm_bo.c +++ b/src/tbm_bo.c @@ -406,8 +406,7 @@ tbm_bo tbm_bo_alloc_with_format(tbm_bufmgr bufmgr, int format, int bo_idx, int width, int height, int bpp, tbm_bo_memory_type flags, tbm_error_e *error) { - tbm_bo bo; - tbm_backend_bo_data *bo_data; + tbm_bo bo = NULL; _tbm_bufmgr_mutex_lock(); _tbm_set_last_result(TBM_ERROR_NONE); @@ -416,50 +415,24 @@ tbm_bo_alloc_with_format(tbm_bufmgr bufmgr, int format, int bo_idx, int width, bo = calloc(1, sizeof(struct _tbm_bo)); if (!bo) { + /* LCOV_EXCL_START */ TBM_ERR("error: fail to tbm_bo_alloc_with_format fmt(%s) idx(%d) w(%d) h(%d) mem_types(%s)\n", FOURCC_STR(format), bo_idx, width, height, _tbm_flag_to_str(flags)); _tbm_set_last_result(TBM_ERROR_OUT_OF_MEMORY); - goto calloc_fail; + /* LCOV_EXCL_STOP */ + goto fail; } _tbm_util_check_bo_cnt(bufmgr); - /* LCOV_EXCL_START */ - if (!bufmgr->use_hal_tbm) { - if (!bufmgr->backend_module_data || !bufmgr->bufmgr_func->bufmgr_alloc_bo_with_format) { - TBM_ERR("error: not supported tbm_bo_alloc_with_format\n"); - _tbm_set_last_result(TBM_ERROR_NOT_SUPPORTED); - goto bo_alloc_fail; - } - } - /* LCOV_EXCL_STOP */ - - if (bufmgr->use_hal_tbm) { - hal_tbm_error ret; - bo_data = (tbm_backend_bo_data *)hal_tbm_bufmgr_alloc_bo_with_format(bufmgr->hal_bufmgr, - format, bo_idx, width, height, bpp, (hal_tbm_bo_memory_type)flags, &ret); - if (error) - *error = (tbm_error_e)ret; - if (ret != HAL_TBM_ERROR_NONE) { - if (ret != HAL_TBM_ERROR_NOT_SUPPORTED) { - TBM_ERR("error: fail to tbm_bo_alloc_with_format\n"); - if (error) - _tbm_set_last_result(*error); - } - goto bo_alloc_fail; - } - bo->bo_data = bo_data; - } else { - bo_data = bufmgr->bufmgr_func->bufmgr_alloc_bo_with_format(bufmgr->bufmgr_data, format, bo_idx, - width, height, flags, error); - if (!bo_data) { - TBM_ERR("error: fail to tbm_bo_alloc_with_format fmt(%s) idx(%d) w(%d) h(%d) mem_types(%s)\n", - FOURCC_STR(format), bo_idx, width, height, _tbm_flag_to_str(flags)); - if (error) - _tbm_set_last_result(*error); - goto bo_alloc_fail; - } - bo->bo_data = bo_data; + bo->bo_data = tbm_module_bufmgr_bo_alloc_with_format(bufmgr->module, format, bo_idx, width, height, bpp, flags, error); + if (!bo->bo_data) { + /* LCOV_EXCL_START */ + TBM_ERR("tbm_module_bufmgr_bo_alloc_with_format failed. fmt:%d idx:%d wxh:%dx%d mem_types:%s\n", + format, bo_idx, width, height, _tbm_flag_to_str(flags)); + _tbm_set_last_result(*error); + /* LCOV_EXCL_STOP */ + goto fail; } _tbm_bo_init(bufmgr, bo, flags); @@ -468,10 +441,11 @@ tbm_bo_alloc_with_format(tbm_bufmgr bufmgr, int format, int bo_idx, int width, return bo; -bo_alloc_fail: - free(bo); -calloc_fail: +fail: + if (bo) + free(bo); _tbm_bufmgr_mutex_unlock(); + return NULL; } diff --git a/src/tbm_bufmgr_int.h b/src/tbm_bufmgr_int.h index 99e8e74..64d5870 100644 --- a/src/tbm_bufmgr_int.h +++ b/src/tbm_bufmgr_int.h @@ -359,5 +359,5 @@ void tbm_module_unload(tbm_module *module); int tbm_module_bufmgr_get_capabilities(tbm_module *module, tbm_error_e *error); 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); #endif /* _TBM_BUFMGR_INT_H_ */ diff --git a/src/tbm_module.c b/src/tbm_module.c index a2f3ac6..1df44a8 100644 --- a/src/tbm_module.c +++ b/src/tbm_module.c @@ -522,3 +522,40 @@ tbm_module_bufmgr_bo_alloc(tbm_module *module, tbm_bo bo, int size, int flags, t return bo_data; } + +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 *bo_data = NULL; + tbm_backend_bufmgr_func *bufmgr_func = NULL; + + TBM_RETURN_VAL_SET_ERR_IF_FAIL(module, NULL, *error, TBM_ERROR_INVALID_PARAMETER); + + switch (module->type) { + case TBM_MODULE_TYPE_HAL_TBM: + bo_data = (tbm_backend_bo_data *)hal_tbm_bufmgr_alloc_bo_with_format(module->hal_bufmgr, + format, bo_idx, width, height, bpp, + (hal_tbm_bo_memory_type)flags, (hal_tbm_error *)error); + break; + case TBM_MODULE_TYPE_TBM_BACKEND: + bufmgr_func = module->bufmgr_func; + TBM_RETURN_VAL_SET_ERR_IF_FAIL(bufmgr_func, NULL, *error, TBM_ERROR_INVALID_OPERATION); + TBM_RETURN_VAL_SET_ERR_IF_FAIL(bufmgr_func->bufmgr_alloc_bo_with_format, NULL, *error, TBM_ERROR_NOT_SUPPORTED); + + bo_data = bufmgr_func->bufmgr_alloc_bo_with_format(module->bufmgr_data, format, bo_idx, width, height, flags, error); + break; + case TBM_MODULE_TYPE_BUFMGR_BACKEND: + TBM_WRN("!!WARNING: This backend interface will be DEPRECATED after Tizen 7.0."); + TBM_ERR("error: not supported tbm_bo_alloc_with_format."); + + *error = TBM_ERROR_NOT_SUPPORTED; + break; + default: + TBM_ERR("Wrong module type:%d", module->type); + *error = TBM_ERROR_INVALID_OPERATION; + break; + } + + return bo_data; +} -- 2.7.4