diff options
author | Rob Clark | 2012-06-11 17:17:17 -0500 |
---|---|---|
committer | Rob Clark | 2012-07-13 16:16:46 -0500 |
commit | 42f8a68e19ba48a25f5eca2778d997f3d1ad094d (patch) | |
tree | 6c824e1d3093ac2afddecdef17285f08145dee78 /omap/omap_drm.c | |
parent | 8116a32df613df4433aa1b128c58bf2c18479824 (diff) | |
download | external-libdrm-42f8a68e19ba48a25f5eca2778d997f3d1ad094d.tar.gz external-libdrm-42f8a68e19ba48a25f5eca2778d997f3d1ad094d.tar.xz external-libdrm-42f8a68e19ba48a25f5eca2778d997f3d1ad094d.zip |
omap: add API to import bo's from dmabuf fd's
Signed-off-by: Rob Clark <rob@ti.com>
Diffstat (limited to 'omap/omap_drm.c')
-rw-r--r-- | omap/omap_drm.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/omap/omap_drm.c b/omap/omap_drm.c index 464dea9c..1d37e451 100644 --- a/omap/omap_drm.c +++ b/omap/omap_drm.c | |||
@@ -218,6 +218,38 @@ fail: | |||
218 | return NULL; | 218 | return NULL; |
219 | } | 219 | } |
220 | 220 | ||
221 | /* import a buffer from dmabuf fd, does not take ownership of the | ||
222 | * fd so caller should close() the fd when it is otherwise done | ||
223 | * with it (even if it is still using the 'struct omap_bo *') | ||
224 | */ | ||
225 | struct omap_bo * omap_bo_from_dmabuf(struct omap_device *dev, int fd) | ||
226 | { | ||
227 | struct omap_bo *bo; | ||
228 | struct drm_prime_handle req = { | ||
229 | .fd = fd, | ||
230 | }; | ||
231 | int ret; | ||
232 | |||
233 | bo = calloc(sizeof(*bo), 1); | ||
234 | if (!bo) { | ||
235 | goto fail; | ||
236 | } | ||
237 | |||
238 | ret = drmIoctl(dev->fd, DRM_IOCTL_PRIME_FD_TO_HANDLE, &req); | ||
239 | if (ret) { | ||
240 | goto fail; | ||
241 | } | ||
242 | |||
243 | bo->dev = dev; | ||
244 | bo->handle = req.handle; | ||
245 | |||
246 | return bo; | ||
247 | |||
248 | fail: | ||
249 | free(bo); | ||
250 | return NULL; | ||
251 | } | ||
252 | |||
221 | /* destroy a buffer object */ | 253 | /* destroy a buffer object */ |
222 | void omap_bo_del(struct omap_bo *bo) | 254 | void omap_bo_del(struct omap_bo *bo) |
223 | { | 255 | { |