aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/drm/i915_drm.h43
1 files changed, 35 insertions, 8 deletions
diff --git a/include/drm/i915_drm.h b/include/drm/i915_drm.h
index 0e51d421..c4ce6b2c 100644
--- a/include/drm/i915_drm.h
+++ b/include/drm/i915_drm.h
@@ -772,10 +772,12 @@ struct drm_i915_gem_execbuffer2 {
772#define I915_EXEC_HANDLE_LUT (1<<12) 772#define I915_EXEC_HANDLE_LUT (1<<12)
773 773
774/** Used for switching BSD rings on the platforms with two BSD rings */ 774/** Used for switching BSD rings on the platforms with two BSD rings */
775#define I915_EXEC_BSD_MASK (3<<13) 775#define I915_EXEC_BSD_SHIFT (13)
776#define I915_EXEC_BSD_DEFAULT (0<<13) /* default ping-pong mode */ 776#define I915_EXEC_BSD_MASK (3 << I915_EXEC_BSD_SHIFT)
777#define I915_EXEC_BSD_RING1 (1<<13) 777/* default ping-pong mode */
778#define I915_EXEC_BSD_RING2 (2<<13) 778#define I915_EXEC_BSD_DEFAULT (0 << I915_EXEC_BSD_SHIFT)
779#define I915_EXEC_BSD_RING1 (1 << I915_EXEC_BSD_SHIFT)
780#define I915_EXEC_BSD_RING2 (2 << I915_EXEC_BSD_SHIFT)
779 781
780/** Tell the kernel that the batchbuffer is processed by 782/** Tell the kernel that the batchbuffer is processed by
781 * the resource streamer. 783 * the resource streamer.
@@ -812,10 +814,35 @@ struct drm_i915_gem_busy {
812 /** Handle of the buffer to check for busy */ 814 /** Handle of the buffer to check for busy */
813 __u32 handle; 815 __u32 handle;
814 816
815 /** Return busy status (1 if busy, 0 if idle). 817 /** Return busy status
816 * The high word is used to indicate on which rings the object 818 *
817 * currently resides: 819 * A return of 0 implies that the object is idle (after
818 * 16:31 - busy (r or r/w) rings (16 render, 17 bsd, 18 blt, etc) 820 * having flushed any pending activity), and a non-zero return that
821 * the object is still in-flight on the GPU. (The GPU has not yet
822 * signaled completion for all pending requests that reference the
823 * object.)
824 *
825 * The returned dword is split into two fields to indicate both
826 * the engines on which the object is being read, and the
827 * engine on which it is currently being written (if any).
828 *
829 * The low word (bits 0:15) indicate if the object is being written
830 * to by any engine (there can only be one, as the GEM implicit
831 * synchronisation rules force writes to be serialised). Only the
832 * engine for the last write is reported.
833 *
834 * The high word (bits 16:31) are a bitmask of which engines are
835 * currently reading from the object. Multiple engines may be
836 * reading from the object simultaneously.
837 *
838 * The value of each engine is the same as specified in the
839 * EXECBUFFER2 ioctl, i.e. I915_EXEC_RENDER, I915_EXEC_BSD etc.
840 * Note I915_EXEC_DEFAULT is a symbolic value and is mapped to
841 * the I915_EXEC_RENDER engine for execution, and so it is never
842 * reported as active itself. Some hardware may have parallel
843 * execution engines, e.g. multiple media engines, which are
844 * mapped to the same identifier in the EXECBUFFER2 ioctl and
845 * so are not separately reported for busyness.
819 */ 846 */
820 __u32 busy; 847 __u32 busy;
821}; 848};