From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> Needed for a following patch. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> --- drivers/gpu/drm/i915/i915_gem_execbuffer.c | 38 ++++++++++++++++-------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c index f7aabea601b0..ecb6290ab6ee 100644 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -2258,24 +2258,6 @@ i915_gem_do_execbuffer(struct drm_device *dev, if (args->flags & I915_EXEC_IS_PINNED) eb.batch_flags |= I915_DISPATCH_PINNED; - eb.engine = eb_select_engine(eb.i915, file, args); - if (!eb.engine) - return -EINVAL; - - if (args->flags & I915_EXEC_RESOURCE_STREAMER) { - if (!HAS_RESOURCE_STREAMER(eb.i915)) { - DRM_DEBUG("RS is only allowed for Haswell, Gen8 and above\n"); - return -EINVAL; - } - if (eb.engine->id != RCS) { - DRM_DEBUG("RS is not available on %s\n", - eb.engine->name); - return -EINVAL; - } - - eb.batch_flags |= I915_DISPATCH_RS; - } - if (args->flags & I915_EXEC_FENCE_IN) { in_fence = sync_file_get_fence(lower_32_bits(args->rsvd2)); if (!in_fence) @@ -2300,6 +2282,25 @@ i915_gem_do_execbuffer(struct drm_device *dev, if (unlikely(err)) goto err_destroy; + err = -EINVAL; + eb.engine = eb_select_engine(eb.i915, file, args); + if (!eb.engine) + goto err_engine; + + if (args->flags & I915_EXEC_RESOURCE_STREAMER) { + if (!HAS_RESOURCE_STREAMER(eb.i915)) { + DRM_DEBUG("RS is only allowed for Haswell, Gen8 and above\n"); + goto err_engine; + } + if (eb.engine->id != RCS) { + DRM_DEBUG("RS is not available on %s\n", + eb.engine->name); + goto err_engine; + } + + eb.batch_flags |= I915_DISPATCH_RS; + } + /* * Take a local wakeref for preparing to dispatch the execbuf as * we expect to access the hardware fairly frequently in the @@ -2460,6 +2461,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, mutex_unlock(&dev->struct_mutex); err_rpm: intel_runtime_pm_put(eb.i915); +err_engine: i915_gem_context_put(eb.ctx); err_destroy: eb_destroy(&eb); -- 2.14.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx