From: Tvrtko Ursulin <tvrtko.ursu...@intel.com>

Needed for a following patch.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursu...@intel.com>
---
 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 3abe8a69e313..384b6bd9a4a7 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -2273,24 +2273,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)
@@ -2315,6 +2297,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
@@ -2475,6 +2476,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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to