*/
tbm_bo_handle(*fd_to_handle)(tbm_bufmgr bufmgr, tbm_fd fd, int device);
+ /* version 2.0 dosen't need to backend function surface_get_num_bos */
/**
* @brief get the num of bos with a format.
* @param[in] format : the format of the surface
return 1;
}
-static int
-_tbm_surface_internal_query_num_bos(tbm_format format)
-{
- TBM_RETURN_VAL_IF_FAIL(format > 0, 0);
- struct _tbm_bufmgr *mgr;
- int ret = 0;
-
- mgr = g_surface_bufmgr;
-
- if (!mgr->backend->surface_get_num_bos)
- return 0;
-
- ret = mgr->backend->surface_get_num_bos(format);
- if (!ret)
- return 0;
-
- return ret;
-}
-
static void
_tbm_surface_internal_destroy(tbm_surface_h surface)
{
surf->info.format = format;
surf->info.bpp = tbm_surface_internal_get_bpp(format);
surf->info.num_planes = tbm_surface_internal_get_num_planes(format);
- surf->num_bos = _tbm_surface_internal_query_num_bos(format);
surf->refcnt = 1;
/* get size, stride and offset bo_idx */
surf->planes_bo_idx[i] = bo_idx;
}
- for (i = 0; i < surf->info.num_planes; i++)
+ surf->num_bos = 1;
+
+ for (i = 0; i < surf->info.num_planes; i++) {
surf->info.size += surf->info.planes[i].size;
+ if (surf->num_bos -1 > surf->planes_bo_idx[i])
+ surf->num_bos = surf->planes_bo_idx[i]++;
+ }
+
surf->flags = flags;
for (i = 0; i < surf->num_bos; i++) {