Commit d9da6aa0 authored by Tvrtko Ursulin's avatar Tvrtko Ursulin

drm/i915: Fix VCS ring selection after uapi decoupling

This got broken in:

   commit de1add36
   Author: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
   Date:   Fri Jan 15 15:12:50 2016 +0000

       drm/i915: Decouple execbuf uAPI from internal implementation

BSD ring flags need to be shifted before they can be considered
indices into the ring array.

Reported by Zhipeng Gong.

v2: Simplify the code. (Chris Wilson)
Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Zhipeng Gong <zhipeng.gong@intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/1453902069-31353-1-git-send-email-tvrtko.ursulin@linux.intel.com
Testcase: igt/gem_exec_basic # bdw-gt3
parent a4eba47b
...@@ -1401,6 +1401,7 @@ eb_select_ring(struct drm_i915_private *dev_priv, ...@@ -1401,6 +1401,7 @@ eb_select_ring(struct drm_i915_private *dev_priv,
bsd_idx = gen8_dispatch_bsd_ring(dev_priv, file); bsd_idx = gen8_dispatch_bsd_ring(dev_priv, file);
} else if (bsd_idx >= I915_EXEC_BSD_RING1 && } else if (bsd_idx >= I915_EXEC_BSD_RING1 &&
bsd_idx <= I915_EXEC_BSD_RING2) { bsd_idx <= I915_EXEC_BSD_RING2) {
bsd_idx >>= I915_EXEC_BSD_SHIFT;
bsd_idx--; bsd_idx--;
} else { } else {
DRM_DEBUG("execbuf with unknown bsd ring: %u\n", DRM_DEBUG("execbuf with unknown bsd ring: %u\n",
......
...@@ -772,10 +772,12 @@ struct drm_i915_gem_execbuffer2 { ...@@ -772,10 +772,12 @@ struct drm_i915_gem_execbuffer2 {
#define I915_EXEC_HANDLE_LUT (1<<12) #define I915_EXEC_HANDLE_LUT (1<<12)
/** Used for switching BSD rings on the platforms with two BSD rings */ /** Used for switching BSD rings on the platforms with two BSD rings */
#define I915_EXEC_BSD_MASK (3<<13) #define I915_EXEC_BSD_SHIFT (13)
#define I915_EXEC_BSD_DEFAULT (0<<13) /* default ping-pong mode */ #define I915_EXEC_BSD_MASK (3 << I915_EXEC_BSD_SHIFT)
#define I915_EXEC_BSD_RING1 (1<<13) /* default ping-pong mode */
#define I915_EXEC_BSD_RING2 (2<<13) #define I915_EXEC_BSD_DEFAULT (0 << I915_EXEC_BSD_SHIFT)
#define I915_EXEC_BSD_RING1 (1 << I915_EXEC_BSD_SHIFT)
#define I915_EXEC_BSD_RING2 (2 << I915_EXEC_BSD_SHIFT)
/** Tell the kernel that the batchbuffer is processed by /** Tell the kernel that the batchbuffer is processed by
* the resource streamer. * the resource streamer.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment