typedef struct _tbm_bufmgr_vc4 *tbm_bufmgr_vc4;
typedef struct _tbm_bo_vc4 *tbm_bo_vc4;
-typedef struct _vc4_private {
- int ref_count;
- struct _tbm_bo_vc4 *bo_priv;
-} PrivGem;
-
/* tbm buffor object for vc4 */
struct _tbm_bo_vc4 {
int fd;
unsigned int flags_tbm; /*not used now*//*currently no values for the flags,but it may be used in future extension*/
- PrivGem *private;
-
pthread_mutex_t mutex;
struct dma_buf_fence dma_fence[DMA_FENCE_LIST_MAX];
int device;
bo_vc4->dmabuf = arg.fd;
}
- /* add bo to hash */
- PrivGem *privGem = calloc(1, sizeof(PrivGem));
-
- if (!privGem) {
- TBM_VC4_ERROR("fail to calloc privGem\n");
- free(bo_vc4);
- return 0;
- }
-
- privGem->ref_count = 1;
- privGem->bo_priv = bo_vc4;
-
+ /* add bo to hash */
if (drmHashInsert(bufmgr_vc4->hashBos, bo_vc4->name,
- (void *)privGem) < 0) {
+ (void *)bo_vc4) < 0) {
TBM_VC4_ERROR("Cannot insert bo to Hash(%d)\n", bo_vc4->name);
}
}
/* delete bo from hash */
- PrivGem *privGem = NULL;
int ret;
ret = drmHashLookup(bufmgr_vc4->hashBos, bo_vc4->name,
- (void **)&privGem);
+ (void **)&bo_vc4);
if (ret == 0) {
- privGem->ref_count--;
- if (privGem->ref_count == 0) {
- drmHashDelete(bufmgr_vc4->hashBos, bo_vc4->name);
- free(privGem);
- privGem = NULL;
- }
+ drmHashDelete(bufmgr_vc4->hashBos, bo_vc4->name);
} else {
TBM_VC4_ERROR("Cannot find bo to Hash(%d), ret=%d\n",
bo_vc4->name, ret);
tbm_bufmgr_vc4 bufmgr_vc4;
tbm_bo_vc4 bo_vc4;
- PrivGem *privGem = NULL;
int ret;
bufmgr_vc4 = (tbm_bufmgr_vc4)tbm_backend_get_bufmgr_priv(bo);
VC4_RETURN_VAL_IF_FAIL(bufmgr_vc4 != NULL, 0);
- ret = drmHashLookup(bufmgr_vc4->hashBos, key, (void **)&privGem);
+ ret = drmHashLookup(bufmgr_vc4->hashBos, key, (void **)&bo_vc4);
if (ret == 0)
- return privGem->bo_priv;
+ return bo_vc4;
struct drm_gem_open arg = {0, };
}
/* add bo to hash */
- privGem = NULL;
-
- privGem = calloc(1, sizeof(PrivGem));
- if (!privGem) {
- TBM_VC4_ERROR("fail to calloc privGem\n");
- free(bo_vc4);
- return 0;
- }
-
- privGem->ref_count = 1;
- privGem->bo_priv = bo_vc4;
-
if (drmHashInsert(bufmgr_vc4->hashBos, bo_vc4->name,
- (void *)privGem) < 0) {
+ (void *)bo_vc4) < 0) {
TBM_VC4_ERROR("Cannot insert bo to Hash(%d)\n", bo_vc4->name);
}
tbm_bufmgr_vc4 bufmgr_vc4;
tbm_bo_vc4 bo_vc4;
- PrivGem *privGem = NULL;
unsigned int name;
int ret;
return 0;
}
- ret = drmHashLookup(bufmgr_vc4->hashBos, name, (void **)&privGem);
+ ret = drmHashLookup(bufmgr_vc4->hashBos, name, (void **)&bo_vc4);
if (ret == 0) {
- if (gem == privGem->bo_priv->gem)
- return privGem->bo_priv;
+ if (gem == bo_vc4->gem)
+ return bo_vc4;
}
unsigned int real_size = -1;
}
/* add bo to hash */
- privGem = NULL;
-
- privGem = calloc(1, sizeof(PrivGem));
- if (!privGem) {
- TBM_VC4_ERROR("fail to calloc privGem\n");
- free(bo_vc4);
- return 0;
- }
-
- privGem->ref_count = 1;
- privGem->bo_priv = bo_vc4;
-
if (drmHashInsert(bufmgr_vc4->hashBos, bo_vc4->name,
- (void *)privGem) < 0) {
+ (void *)bo_vc4) < 0) {
TBM_VC4_ERROR("bo:%p Cannot insert bo to Hash(%d) from gem:%d, fd:%d\n",
bo, bo_vc4->name, gem, key);
}