Merge branch 'tty-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
[pandora-kernel.git] / drivers / gpu / drm / i915 / intel_ringbuffer.h
index 9725f78..3126c26 100644 (file)
@@ -22,6 +22,7 @@ struct  intel_ring_buffer {
        enum intel_ring_id {
                RING_RENDER = 0x1,
                RING_BSD = 0x2,
+               RING_BLT = 0x4,
        } id;
        u32             mmio_base;
        unsigned long   size;
@@ -45,9 +46,9 @@ struct  intel_ring_buffer {
        int             (*init)(struct drm_device *dev,
                        struct intel_ring_buffer *ring);
 
-       void            (*set_tail)(struct drm_device *dev,
-                                   struct intel_ring_buffer *ring,
-                                   u32 value);
+       void            (*write_tail)(struct drm_device *dev,
+                                     struct intel_ring_buffer *ring,
+                                     u32 value);
        void            (*flush)(struct drm_device *dev,
                        struct intel_ring_buffer *ring,
                        u32     invalidate_domains,
@@ -62,6 +63,7 @@ struct  intel_ring_buffer {
                        struct drm_i915_gem_execbuffer2 *exec,
                        struct drm_clip_rect *cliprects,
                        uint64_t exec_offset);
+       void            (*cleanup)(struct intel_ring_buffer *ring);
 
        /**
         * List of objects currently involved in rendering from the
@@ -81,6 +83,15 @@ struct  intel_ring_buffer {
         */
        struct list_head request_list;
 
+       /**
+        * List of objects currently pending a GPU write flush.
+        *
+        * All elements on this list will belong to either the
+        * active_list or flushing_list, last_rendering_seqno can
+        * be used to differentiate between the two elements.
+        */
+       struct list_head gpu_write_list;
+
        /**
         * Do we have some not yet emitted requests outstanding?
         */
@@ -88,6 +99,8 @@ struct  intel_ring_buffer {
 
        wait_queue_head_t irq_queue;
        drm_local_map_t map;
+
+       void *private;
 };
 
 static inline u32
@@ -116,10 +129,6 @@ static inline void intel_ring_emit(struct drm_device *dev,
        ring->tail += 4;
 }
 
-void intel_fill_struct(struct drm_device *dev,
-               struct intel_ring_buffer *ring,
-               void *data,
-               unsigned int len);
 void intel_ring_advance(struct drm_device *dev,
                struct intel_ring_buffer *ring);
 
@@ -128,6 +137,7 @@ u32 intel_ring_get_seqno(struct drm_device *dev,
 
 int intel_init_render_ring_buffer(struct drm_device *dev);
 int intel_init_bsd_ring_buffer(struct drm_device *dev);
+int intel_init_blt_ring_buffer(struct drm_device *dev);
 
 u32 intel_ring_get_active_head(struct drm_device *dev,
                               struct intel_ring_buffer *ring);