summaryrefslogtreecommitdiff
path: root/libdrm/xf86drm.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdrm/xf86drm.c')
-rw-r--r--libdrm/xf86drm.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/libdrm/xf86drm.c b/libdrm/xf86drm.c
index 3fccdf69..c9005c41 100644
--- a/libdrm/xf86drm.c
+++ b/libdrm/xf86drm.c
@@ -65,7 +65,6 @@
# define _DRM_FREE free
# include "drm.h"
#endif
-#include "xf86mm.h"
/* Not all systems have MAP_FAILED defined */
@@ -2582,6 +2581,7 @@ int drmBOCreate(int fd, drmTTM *ttm, unsigned long start, unsigned long size,
buf->ttm = ttm;
break;
case drm_bo_type_dc:
+ req->buffer_start = start;
break;
case drm_bo_type_user:
req->buffer_start = (unsigned long) user_buffer;
@@ -2699,4 +2699,32 @@ int drmBOUnReference(int fd, drmBO *buf)
return 0;
}
+int drmMMInit(int fd, unsigned long vramPOffset, unsigned long vramPSize,
+ unsigned long ttPOffset, unsigned long ttPSize)
+{
+ drm_mm_init_arg_t arg;
+
+ arg.req.op = mm_init;
+ arg.req.vr_p_offset = vramPOffset;
+ arg.req.vr_p_size = vramPSize;
+ arg.req.tt_p_offset = vramPOffset;
+ arg.req.tt_p_size = vramPSize;
+
+ if (ioctl(fd, DRM_IOCTL_MM_INIT, &arg))
+ return -errno;
+
+ return 0;
+}
+
+int drmMMTakedown(int fd)
+{
+ drm_mm_init_arg_t arg;
+ arg.req.op = mm_takedown;
+
+ if (ioctl(fd, DRM_IOCTL_MM_INIT, &arg))
+ return -errno;
+
+ return 0;
+}
+
#endif