From e63541a42a8470996ae0dc2209b2febaaa71c390 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Wed, 16 Jun 2021 14:40:40 +0900 Subject: [PATCH] tbm_bufmgr: change tbm_bo_alloc_with_format name change tbm_bo_alloc_with_format into tbm_bufmgr_internal_alloc_bo_with_format and move this function to tbm_bufmgr.c Change-Id: I1827f2ee05534ad7a56221b4c704a33dc965c432 --- src/tbm_bo.c | 47 ----------------------------- src/tbm_bufmgr.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++ src/tbm_bufmgr_int.h | 4 ++- src/tbm_module.c | 2 +- src/tbm_surface_internal.c | 4 +-- 5 files changed, 79 insertions(+), 51 deletions(-) diff --git a/src/tbm_bo.c b/src/tbm_bo.c index daefd18..8872848 100644 --- a/src/tbm_bo.c +++ b/src/tbm_bo.c @@ -34,8 +34,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "tbm_bufmgr_int.h" #include "list.h" -#define TBM_BO_MAGIC 0xBF011234 - /* check condition */ #define TBM_BO_RETURN_IF_FAIL(cond) {\ if (!(cond)) {\ @@ -403,51 +401,6 @@ alloc_fail: /* LCOV_EXCL_START */ 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 = NULL; - - _tbm_bufmgr_mutex_lock(); - _tbm_set_last_result(TBM_ERROR_NONE); - - TBM_BO_RETURN_VAL_IF_FAIL(TBM_BUFMGR_IS_VALID(bufmgr), NULL); - - 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); - /* LCOV_EXCL_STOP */ - goto fail; - } - - _tbm_util_check_bo_cnt(bufmgr); - - 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_set_last_result(*error); - /* LCOV_EXCL_STOP */ - goto fail; - } - - _tbm_bo_init(bufmgr, bo, flags); - - _tbm_bufmgr_mutex_unlock(); - - return bo; - -fail: - if (bo) - free(bo); - _tbm_bufmgr_mutex_unlock(); - - return NULL; -} - -tbm_bo tbm_bo_alloc_with_bo_data(tbm_bufmgr bufmgr, tbm_backend_bo_data *bo_data, int flags) { tbm_bo bo, bo2 = NULL; diff --git a/src/tbm_bufmgr.c b/src/tbm_bufmgr.c index 43906f1..b235029 100644 --- a/src/tbm_bufmgr.c +++ b/src/tbm_bufmgr.c @@ -77,6 +77,33 @@ void _tbm_bufmgr_mutex_unlock(void); /* LCOV_EXCL_START */ +static void +_tbm_bufmgr_check_bo_cnt(tbm_bufmgr bufmgr) +{ + static int last_chk_bo_cnt = 0; + + if ((bufmgr->bo_cnt >= 500) && ((bufmgr->bo_cnt % 20) == 0) && + (bufmgr->bo_cnt > last_chk_bo_cnt)) { + TBM_DBG("============TBM BO CNT DEBUG: bo_cnt=%d\n", bufmgr->bo_cnt); + tbm_bufmgr_debug_show(bufmgr); + last_chk_bo_cnt = bufmgr->bo_cnt; + } +} + +static void +_tbm_bufmgr_initialize_bo(tbm_bufmgr bufmgr, tbm_bo bo, int flags) +{ + bo->bufmgr = bufmgr; + bo->flags = flags; + bo->magic = TBM_BO_MAGIC; + bo->ref_cnt = 1; + + LIST_INITHEAD(&bo->user_data_list); + + bufmgr->bo_cnt++; + LIST_ADD(&bo->item_link, &bufmgr->bo_list); +} + void _tbm_bufmgr_mutex_lock(void) { @@ -885,4 +912,50 @@ tbm_bufmgr_internal_find_bo(tbm_bufmgr bufmgr, tbm_bo bo) return NULL; } +/* LCOV_EXCL_START */ + +tbm_bo +tbm_bufmgr_internal_alloc_bo_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 = 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_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); + /* LCOV_EXCL_STOP */ + goto fail; + } + + 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_set_last_result(*error); + /* LCOV_EXCL_STOP */ + goto fail; + } + + _tbm_bufmgr_initialize_bo(bufmgr, bo, flags); + + _tbm_bufmgr_mutex_unlock(); + + return bo; + +fail: + if (bo) + free(bo); + _tbm_bufmgr_mutex_unlock(); + + return NULL; +} + /* LCOV_EXCL_STOP */ diff --git a/src/tbm_bufmgr_int.h b/src/tbm_bufmgr_int.h index 8a19f80..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)) @@ -347,7 +349,7 @@ 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_bo_alloc_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_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 */ diff --git a/src/tbm_module.c b/src/tbm_module.c index bd2eeb8..140392a 100644 --- a/src/tbm_module.c +++ b/src/tbm_module.c @@ -709,7 +709,7 @@ tbm_module_bufmgr_bo_alloc_with_format(tbm_module *module, int format, int bo_id break; case TBM_MODULE_TYPE_BUFMGR_BACKEND: TBM_WRN("!!WARNING: This backend interface will be DEPRECATED after Tizen 6.5."); - TBM_ERR("error: not supported tbm_bo_alloc_with_format."); + TBM_ERR("error: not supported tbm_bufmgr_internal_alloc_bo_with_format."); *error = TBM_ERROR_NOT_SUPPORTED; break; diff --git a/src/tbm_surface_internal.c b/src/tbm_surface_internal.c index b85363b..8c6fc39 100644 --- a/src/tbm_surface_internal.c +++ b/src/tbm_surface_internal.c @@ -661,7 +661,7 @@ _tbm_surface_internal_create_surface(tbm_bufmgr bufmgr, int width, int height, i bo_size += surf->info.planes[j].size; } - surf->bos[i] = tbm_bo_alloc_with_format(bufmgr, format, i, width, height, surf->info.bpp/8, flags, error); + surf->bos[i] = tbm_bufmgr_internal_alloc_bo_with_format(bufmgr, format, i, width, height, surf->info.bpp/8, flags, error); if (!surf->bos[i]) { surf->bos[i] = tbm_bo_alloc(bufmgr, bo_size, flags); if (!surf->bos[i]) { @@ -806,7 +806,7 @@ _tbm_surface_internal_hal_tbm_create_surface(tbm_bufmgr bufmgr, int width, int h bo_size += surf->info.planes[j].size; } - surf->bos[i] = tbm_bo_alloc_with_format(bufmgr, format, i, width, height, surf->info.bpp / 8, flags, error); + surf->bos[i] = tbm_bufmgr_internal_alloc_bo_with_format(bufmgr, format, i, width, height, surf->info.bpp / 8, flags, error); if (*error == TBM_ERROR_NOT_SUPPORTED) { surf->bos[i] = tbm_bo_alloc(bufmgr, bo_size, flags); if (!surf->bos[i]) { -- 2.7.4