summaryrefslogtreecommitdiff
path: root/shared-core/i915_drv.h
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2008-06-10 15:30:23 -0700
committerEric Anholt <eric@anholt.net>2008-06-10 22:57:07 -0700
commit2150da5d1a57d25d0f4bc39bb6c883d410f586d1 (patch)
treed66c8062573491fb5caab64623e319e899262935 /shared-core/i915_drv.h
parent500c81d194115fb3c4b97d742519689478eeb4e8 (diff)
[gem] Manage the ringbuffer from the kernel in the GEM case.
This requires that the X Server use the execbuf interface for buffer submission, as it no longer has direct access to the ring. This is therefore a flag day for the gem interface. This also adds enter/leavevt ioctls for use by the X Server. These would get stubbed out in a modesetting implementation, but are required while in an environment where the device's state is only managed by the DRM while X has the VT.
Diffstat (limited to 'shared-core/i915_drv.h')
-rw-r--r--shared-core/i915_drv.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/shared-core/i915_drv.h b/shared-core/i915_drv.h
index 8acef0ca..3a22ae3c 100644
--- a/shared-core/i915_drv.h
+++ b/shared-core/i915_drv.h
@@ -74,14 +74,13 @@ struct drm_i915_validate_buffer;
typedef struct _drm_i915_ring_buffer {
int tail_mask;
- unsigned long Start;
- unsigned long End;
unsigned long Size;
u8 *virtual_start;
int head;
int tail;
int space;
drm_local_map_t map;
+ struct drm_gem_object *ring_obj;
} drm_i915_ring_buffer_t;
struct mem_block {
@@ -290,6 +289,16 @@ typedef struct drm_i915_private {
struct work_struct retire_task;
uint32_t next_gem_seqno;
+
+ /**
+ * Flag if the X Server, and thus DRM, is not currently in
+ * control of the device.
+ *
+ * This is set between LeaveVT and EnterVT. It needs to be
+ * replaced with a semaphore. It also needs to be
+ * transitioned away from for kernel modesetting.
+ */
+ int suspended;
} mm;
struct work_struct user_interrupt_task;
@@ -462,8 +471,14 @@ int i915_gem_busy_ioctl(struct drm_device *dev, void *data,
struct drm_file *file_priv);
int i915_gem_throttle_ioctl(struct drm_device *dev, void *data,
struct drm_file *file_priv);
+int i915_gem_entervt_ioctl(struct drm_device *dev, void *data,
+ struct drm_file *file_priv);
+int i915_gem_leavevt_ioctl(struct drm_device *dev, void *data,
+ struct drm_file *file_priv);
int i915_gem_init_object(struct drm_gem_object *obj);
void i915_gem_free_object(struct drm_gem_object *obj);
+int i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment);
+void i915_gem_object_unpin(struct drm_gem_object *obj);
int i915_gem_set_domain(struct drm_gem_object *obj,
struct drm_file *file_priv,
uint32_t read_domains,