Don't use surface get num bos 25/60725/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Tue, 23 Feb 2016 11:37:52 +0000 (20:37 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Fri, 26 Feb 2016 04:41:55 +0000 (13:41 +0900)
Change-Id: If25cfb3a7c8a0b509273ff11b7765b6b9547c96f

src/tbm_bufmgr_backend.h
src/tbm_surface_internal.c

index 940dc3c..a1a6f34 100644 (file)
@@ -279,6 +279,7 @@ struct _tbm_bufmgr_backend {
        */
        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
index adf7fc5..bb51da2 100644 (file)
@@ -241,25 +241,6 @@ _tbm_surface_internal_query_plane_data(tbm_surface_h 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)
 {
@@ -531,7 +512,6 @@ tbm_surface_internal_create_with_flags(int width, int height,
        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 */
@@ -544,9 +524,15 @@ tbm_surface_internal_create_with_flags(int width, int height,
                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++) {