summaryrefslogtreecommitdiff
path: root/shared-core
diff options
context:
space:
mode:
authorThomas Hellstrom <thomas-at-tungstengraphics-dot-com>2006-10-17 11:05:37 +0200
committerThomas Hellstrom <thomas-at-tungstengraphics-dot-com>2006-10-17 11:05:37 +0200
commit5881ce1b91034fbdf81dda37a23215cfc1310cdf (patch)
tree41b4608b50b73df6bac657b914323350f47453f9 /shared-core
parent5b2a60f550090a41c13483ceaaa1a84d3a9257f8 (diff)
Extend generality for more memory types.
Fix up init and destruction code.
Diffstat (limited to 'shared-core')
-rw-r--r--shared-core/drm.h34
-rw-r--r--shared-core/i915_dma.c4
2 files changed, 26 insertions, 12 deletions
diff --git a/shared-core/drm.h b/shared-core/drm.h
index 32cad3bc..915befba 100644
--- a/shared-core/drm.h
+++ b/shared-core/drm.h
@@ -680,6 +680,7 @@ typedef struct drm_fence_arg {
unsigned type;
unsigned flags;
unsigned signaled;
+ unsigned expand_pad[4]; /*Future expansion */
enum {
drm_fence_create,
drm_fence_destroy,
@@ -732,12 +733,14 @@ typedef struct drm_fence_arg {
/* Bind this buffer cached if the hardware supports it. */
#define DRM_BO_FLAG_BIND_CACHED 0x0002000
-/* Translation table aperture */
-#define DRM_BO_FLAG_MEM_TT 0x01000000
-/* On-card VRAM */
-#define DRM_BO_FLAG_MEM_VRAM 0x02000000
-/* System memory */
-#define DRM_BO_FLAG_MEM_LOCAL 0x04000000
+/* System Memory */
+#define DRM_BO_FLAG_MEM_LOCAL 0x01000000
+/* Translation table memory */
+#define DRM_BO_FLAG_MEM_TT 0x02000000
+/* Vram memory */
+#define DRM_BO_FLAG_MEM_VRAM 0x04000000
+/* Unmappable Vram memory */
+#define DRM_BO_FLAG_MEM_VRAM_NM 0x08000000
/* Memory flag mask */
#define DRM_BO_MASK_MEM 0xFF000000
@@ -769,6 +772,7 @@ typedef struct drm_bo_arg_request {
drm_bo_type_t type;
unsigned arg_handle;
drm_u64_t buffer_start;
+ unsigned expand_pad[4]; /*Future expansion */
enum {
drm_bo_create,
drm_bo_validate,
@@ -802,6 +806,7 @@ typedef struct drm_bo_arg_reply {
drm_u64_t buffer_start;
unsigned fence_flags;
unsigned rep_flags;
+ unsigned expand_pad[4]; /*Future expansion */
}drm_bo_arg_reply_t;
@@ -814,23 +819,30 @@ typedef struct drm_bo_arg{
} d;
} drm_bo_arg_t;
+#define DRM_BO_MEM_LOCAL 0
+#define DRM_BO_MEM_TT 1
+#define DRM_BO_MEM_VRAM 2
+#define DRM_BO_MEM_VRAM_NM 3
+#define DRM_BO_MEM_TYPES 2 /* For now. */
+
typedef union drm_mm_init_arg{
struct {
enum {
mm_init,
+ mm_set_max_pages,
mm_takedown,
mm_query,
mm_lock,
mm_unlock
} op;
- drm_u64_t vr_p_offset;
- drm_u64_t vr_p_size;
- drm_u64_t tt_p_offset;
- drm_u64_t tt_p_size;
- drm_u64_t max_locked_pages;
+ drm_u64_t p_offset;
+ drm_u64_t p_size;
+ unsigned mem_type;
+ unsigned expand_pad[8]; /*Future expansion */
} req;
struct {
drm_handle_t mm_sarea;
+ unsigned expand_pad[8]; /*Future expansion */
} rep;
} drm_mm_init_arg_t;
#endif
diff --git a/shared-core/i915_dma.c b/shared-core/i915_dma.c
index 841761c8..8c701b4d 100644
--- a/shared-core/i915_dma.c
+++ b/shared-core/i915_dma.c
@@ -197,7 +197,9 @@ static int i915_initialize(drm_device_t * dev,
I915_WRITE(0x02080, dev_priv->dma_status_page);
DRM_DEBUG("Enabled hardware status page\n");
dev->dev_private = (void *)dev_priv;
-
+#ifdef I915_HAVE_BUFFER
+ drm_bo_driver_init(dev);
+#endif
return 0;
}