typedef struct _tbm_bufmgr_dumb *tbm_bufmgr_dumb;
typedef struct _tbm_bo_dumb *tbm_bo_dumb;
-typedef struct _dumb_private {
- int ref_count;
- struct _tbm_bo_dumb *bo_priv;
-} PrivGem;
-
/* tbm buffor object for dumb */
struct _tbm_bo_dumb {
int fd;
unsigned int flags_dumb;
unsigned int flags_tbm;
- PrivGem* private;
-
pthread_mutex_t mutex;
struct dma_buf_fence dma_fence[DMA_FENCE_LIST_MAX];
int device;
}
/* add bo to hash */
- PrivGem* privGem = calloc(1, sizeof(PrivGem));
- if (!privGem) {
- TBM_DUMB_LOG("[libtbm-dumb:%d] "
- "error %s:%d Fail to calloc privGem\n",
- getpid(), __FUNCTION__, __LINE__);
- free(bo_dumb);
- return 0;
- }
-
- privGem->ref_count = 1;
- privGem->bo_priv = bo_dumb;
- if (drmHashInsert(bufmgr_dumb->hashBos, bo_dumb->name, (void *)privGem) < 0)
+ if (drmHashInsert(bufmgr_dumb->hashBos, bo_dumb->name, (void *)bo_dumb) < 0)
TBM_DUMB_LOG("error Cannot insert bo to Hash(%d)\n", bo_dumb->name);
DBG(" [%s] bo:%p, gem:%d(%d), flags:%d(%d), size:%d\n", target_name(),
}
/* delete bo from hash */
- PrivGem *privGem = NULL;
int ret;
- ret = drmHashLookup(bufmgr_dumb->hashBos, bo_dumb->name, (void**)&privGem);
- if (ret == 0) {
- privGem->ref_count--;
- if (privGem->ref_count == 0) {
- drmHashDelete(bufmgr_dumb->hashBos, bo_dumb->name);
- free(privGem);
- privGem = NULL;
- }
- } else
+ ret = drmHashLookup(bufmgr_dumb->hashBos, bo_dumb->name, (void**)&bo_dumb);
+ if (ret == 0)
+ drmHashDelete(bufmgr_dumb->hashBos, bo_dumb->name);
+ else
TBM_DUMB_LOG("warning Cannot find bo to Hash(%d), ret =%d\n", bo_dumb->name, ret);
/* Free gem handle */
tbm_bufmgr_dumb bufmgr_dumb;
tbm_bo_dumb bo_dumb;
- PrivGem *privGem = NULL;
int ret;
bufmgr_dumb = (tbm_bufmgr_dumb)tbm_backend_get_bufmgr_priv(bo);
DUMB_RETURN_VAL_IF_FAIL(bufmgr_dumb != NULL, 0);
- ret = drmHashLookup(bufmgr_dumb->hashBos, key, (void **)&privGem);
+ ret = drmHashLookup(bufmgr_dumb->hashBos, key, (void **)&bo_dumb);
if (ret == 0)
- return privGem->bo_priv;
+ return bo_dumb;
struct drm_gem_open arg = {0, };
}
/* add bo to hash */
- privGem = NULL;
- privGem = calloc(1, sizeof(PrivGem));
- if (!privGem) {
- TBM_DUMB_LOG("[libtbm-dumb:%d] "
- "error %s:%d Fail to calloc privGem\n",
- getpid(), __FUNCTION__, __LINE__);
- free(bo_dumb);
- return 0;
- }
-
- privGem->ref_count = 1;
- privGem->bo_priv = bo_dumb;
-
- if (drmHashInsert(bufmgr_dumb->hashBos, bo_dumb->name, (void *)privGem) < 0)
+ if (drmHashInsert(bufmgr_dumb->hashBos, bo_dumb->name, (void *)bo_dumb) < 0)
TBM_DUMB_LOG("error Cannot insert bo to Hash(%d)\n", bo_dumb->name);
DBG(" [%s] bo:%p, gem:%d(%d), fd:%d, flags:%d(%d), size:%d\n", target_name(),
bufmgr_dumb = (tbm_bufmgr_dumb)tbm_backend_get_bufmgr_priv(bo);
DUMB_RETURN_VAL_IF_FAIL(bufmgr_dumb != NULL, 0);
- PrivGem *privGem = NULL;
int ret;
unsigned int gem = 0;
return 0;
}
- ret = drmHashLookup(bufmgr_dumb->hashBos, name, (void **)&privGem);
+ ret = drmHashLookup(bufmgr_dumb->hashBos, name, (void **)&bo_dumb);
if (ret == 0) {
- if (gem == privGem->bo_priv->gem)
- return privGem->bo_priv;
+ if (gem == bo_dumb->gem)
+ return bo_dumb;
}
/* Open the same GEM object only for finding out its size */
bo_dumb->name = name;
/* add bo to hash */
- privGem = NULL;
- privGem = calloc(1, sizeof(PrivGem));
- if (!privGem) {
- TBM_DUMB_LOG("[libtbm-dumb:%d] "
- "error %s:%d Fail to calloc privGem\n",
- getpid(), __FUNCTION__, __LINE__);
- free(bo_dumb);
- return 0;
- }
-
- privGem->ref_count = 1;
- privGem->bo_priv = bo_dumb;
-
- if (drmHashInsert(bufmgr_dumb->hashBos, bo_dumb->name, (void *)privGem) < 0)
+ if (drmHashInsert(bufmgr_dumb->hashBos, bo_dumb->name, (void *)bo_dumb) < 0)
TBM_DUMB_LOG("error Cannot insert bo to Hash(%d)\n", bo_dumb->name);
DBG(" [%s] bo:%p, gem:%d(%d), fd:%d, key_fd:%d, flags:%d(%d), size:%d\n", target_name(),