tbm_module: make tbm_module_bufmgr_bo_alloc_with_format function 86/259886/1
authorSooChan Lim <sc1.lim@samsung.com>
Mon, 14 Jun 2021 08:56:51 +0000 (17:56 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Tue, 15 Jun 2021 12:03:10 +0000 (21:03 +0900)
encapsulate the bufmgr_bo_alloce_with_format with this function.

Change-Id: Ic68228a4204aaec28c4887bf9fd87194fd3e1937

src/tbm_bo.c
src/tbm_bufmgr_int.h
src/tbm_module.c

index 570690b..0191ec5 100644 (file)
@@ -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;
 }
 
index 99e8e74..64d5870 100644 (file)
@@ -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_ */
index a2f3ac6..1df44a8 100644 (file)
@@ -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;
+}