AM_CFLAGS = \
$(WARN_CFLAGS) \
+ -DTIZEN_FEATURE_ARTIK530 \
-I./include \
-I${includedir}
libnx_video_api_la_LTLIBRARIES = libnx_video_api.la
libnx_video_api_ladir = ${libdir}
-libnx_video_api_la_LDFLAGS = -L${libdir} -ldrm
+libnx_video_api_la_LDFLAGS = -L${libdir} -ldrm -ltbm
libnx_video_api_la_SOURCES = \
nx_video_alloc.c \
#include <libdrm/drm_fourcc.h>
#include <linux/videodev2.h>
#include <linux/videodev2_nxp_media.h>
+#ifdef TIZEN_FEATURE_ARTIK530
+#include <tbm_bufmgr.h>
+#endif
#define DRM_DEVICE_NAME "/dev/dri/card0"
}
pVidMem = (NX_VID_MEMORY_INFO *) calloc (1, sizeof (NX_VID_MEMORY_INFO));
+ if (!pVidMem)
+ goto ErrorExit;
+
+#ifdef TIZEN_FEATURE_ARTIK530
+ pVidMem->bufmgr = tbm_bufmgr_init (drmFd);
+ if (!pVidMem->bufmgr)
+ goto ErrorExit;
+#endif
+
pVidMem->width = width;
pVidMem->height = height;
pVidMem->align = align;
pVidMem->size[i] = size[i];
pVidMem->stride[i] = stride[i];
pVidMem->flink[i] = flink[i];
+#ifdef TIZEN_FEATURE_ARTIK530
+ pVidMem->bo[i] = tbm_bo_import (pVidMem->bufmgr, flink[i]);
+ if (!pVidMem->bo[i])
+ goto alloc_bo_fail;
+#endif
}
return pVidMem;
+#ifdef TIZEN_FEATURE_ARTIK530
+alloc_bo_fail:
+ for (i = 0; i < planes; i++) {
+ if (pVidMem->bo[i])
+ tbm_bo_unref (pVidMem->bo[i]);
+ }
+#endif
+
ErrorExit:
for (i = 0; i < planes; i++) {
if (gemFd[i] > 0) {
close (dmaFd[i]);
}
}
+ if (pVidMem) {
+#ifdef TIZEN_FEATURE_ARTIK530
+ if (pVidMem->bufmgr)
+ tbm_bufmgr_deinit (pVidMem->bufmgr);
+#endif
+ free(pVidMem);
+ }
if (drmFd > 0)
close (drmFd);
int32_t i;
if (pMem) {
for (i = 0; i < pMem->planes; i++) {
+#ifdef TIZEN_FEATURE_ARTIK530
+ if (pMem->bo[i])
+ tbm_bo_unref (pMem->bo[i]);
+#endif
if (pMem->pBuffer[i]) {
munmap (pMem->pBuffer[i], pMem->size[i]);
}
free_gem (pMem->drmFd, pMem->gemFd[i]);
close (pMem->dmaFd[i]);
}
+#ifdef TIZEN_FEATURE_ARTIK530
+ if (pMem->bufmgr)
+ tbm_bufmgr_deinit (pMem->bufmgr);
+#endif
close (pMem->drmFd);
free (pMem);
}
int32_t stride[NX_MAX_PLANES]; // Each plane's stride.
void *pBuffer[NX_MAX_PLANES]; // virtual address.
uint32_t reserved[NX_MAX_PLANES]; // for debugging or future user.
+#ifdef TIZEN_FEATURE_ARTIK530
+ void *bufmgr;
+ void *bo[NX_MAX_PLANES]; // tbm bo
+#endif
} NX_VID_MEMORY_INFO, *NX_VID_MEMORY_HANDLE;
// Nexell Private Memory Allocator