We transitioned to I915_GEM_EXECBUFFER2 in

commit 76446cac68568fc7f5168a27deaf803ed22a4360 [v2.6.33]
Author: Jesse Barnes <[email protected]>
Date:   Thu Dec 17 22:05:42 2009 -0500

    drm/i915: execbuf2 support

and

libdrm commit b50964027bef249a0cc3d511de05c2464e0a1e22 [v2.4.19]
Author: Jesse Barnes <[email protected]>
Date:   Tue Sep 15 11:02:58 2009 -0700

    libdrm/intel: execbuf2 support

and the legacy i915_GEM_EXECBUFFER interface has been derelict ever
since, gradually losing features and assuming the lowest common
denominator. Time to wave goodbye as we look to new interfaces for the
future.

References: 76446cac6856 ("drm/i915: execbuf2 support")
Signed-off-by: Chris Wilson <[email protected]>
Cc: Tvrtko Ursulin <[email protected]>
Cc: Mika Kuoppala <[email protected]>
Cc: Joonas Lahtinen <[email protected]>
Cc: Jani Nikula <[email protected]>
Cc: Rodrigo Vivi <[email protected]>
Cc: David Airlie <[email protected]>
---
 drivers/gpu/drm/i915/i915_drv.c            |  4 +-
 drivers/gpu/drm/i915/i915_drv.h            |  6 +-
 drivers/gpu/drm/i915/i915_gem_execbuffer.c | 99 +-----------------------------
 3 files changed, 6 insertions(+), 103 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 5b1fd5f1defb..ceefa7735019 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -2772,8 +2772,8 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
        DRM_IOCTL_DEF_DRV(I915_VBLANK_SWAP, drm_noop, DRM_AUTH),
        DRM_IOCTL_DEF_DRV(I915_HWS_ADDR, drm_noop, 
DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
        DRM_IOCTL_DEF_DRV(I915_GEM_INIT, drm_noop, 
DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
-       DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER, i915_gem_execbuffer, DRM_AUTH),
-       DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER2_WR, i915_gem_execbuffer2, 
DRM_AUTH|DRM_RENDER_ALLOW),
+       DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER, drm_noop, DRM_AUTH),
+       DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER2_WR, i915_gem_execbuffer2_ioctl, 
DRM_AUTH|DRM_RENDER_ALLOW),
        DRM_IOCTL_DEF_DRV(I915_GEM_PIN, i915_gem_reject_pin_ioctl, 
DRM_AUTH|DRM_ROOT_ONLY),
        DRM_IOCTL_DEF_DRV(I915_GEM_UNPIN, i915_gem_reject_pin_ioctl, 
DRM_AUTH|DRM_ROOT_ONLY),
        DRM_IOCTL_DEF_DRV(I915_GEM_BUSY, i915_gem_busy_ioctl, 
DRM_AUTH|DRM_RENDER_ALLOW),
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 594fd14e66c5..a3e8f0c30f9a 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3474,10 +3474,8 @@ int i915_gem_set_domain_ioctl(struct drm_device *dev, 
void *data,
                              struct drm_file *file_priv);
 int i915_gem_sw_finish_ioctl(struct drm_device *dev, void *data,
                             struct drm_file *file_priv);
-int i915_gem_execbuffer(struct drm_device *dev, void *data,
-                       struct drm_file *file_priv);
-int i915_gem_execbuffer2(struct drm_device *dev, void *data,
-                        struct drm_file *file_priv);
+int i915_gem_execbuffer2_ioctl(struct drm_device *dev, void *data,
+                              struct drm_file *file_priv);
 int i915_gem_busy_ioctl(struct drm_device *dev, void *data,
                        struct drm_file *file_priv);
 int i915_gem_get_caching_ioctl(struct drm_device *dev, void *data,
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 70ccd63cbf8e..3b62e36d6bd4 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -2458,104 +2458,9 @@ static bool check_buffer_count(size_t count)
        return !(count < 1 || count > INT_MAX || count > SIZE_MAX / sz - 1);
 }
 
-/*
- * Legacy execbuffer just creates an exec2 list from the original exec object
- * list array and passes it to the real function.
- */
-int
-i915_gem_execbuffer(struct drm_device *dev, void *data,
-                   struct drm_file *file)
-{
-       struct drm_i915_gem_execbuffer *args = data;
-       struct drm_i915_gem_execbuffer2 exec2;
-       struct drm_i915_gem_exec_object *exec_list = NULL;
-       struct drm_i915_gem_exec_object2 *exec2_list = NULL;
-       const size_t count = args->buffer_count;
-       unsigned int i;
-       int err;
-
-       if (!check_buffer_count(count)) {
-               DRM_DEBUG("execbuf2 with %zd buffers\n", count);
-               return -EINVAL;
-       }
-
-       exec2.buffers_ptr = args->buffers_ptr;
-       exec2.buffer_count = args->buffer_count;
-       exec2.batch_start_offset = args->batch_start_offset;
-       exec2.batch_len = args->batch_len;
-       exec2.DR1 = args->DR1;
-       exec2.DR4 = args->DR4;
-       exec2.num_cliprects = args->num_cliprects;
-       exec2.cliprects_ptr = args->cliprects_ptr;
-       exec2.flags = I915_EXEC_RENDER;
-       i915_execbuffer2_set_context_id(exec2, 0);
-
-       if (!i915_gem_check_execbuffer(&exec2))
-               return -EINVAL;
-
-       /* Copy in the exec list from userland */
-       exec_list = kvmalloc_array(count, sizeof(*exec_list),
-                                  __GFP_NOWARN | GFP_KERNEL);
-       exec2_list = kvmalloc_array(count + 1, eb_element_size(),
-                                   __GFP_NOWARN | GFP_KERNEL);
-       if (exec_list == NULL || exec2_list == NULL) {
-               DRM_DEBUG("Failed to allocate exec list for %d buffers\n",
-                         args->buffer_count);
-               kvfree(exec_list);
-               kvfree(exec2_list);
-               return -ENOMEM;
-       }
-       err = copy_from_user(exec_list,
-                            u64_to_user_ptr(args->buffers_ptr),
-                            sizeof(*exec_list) * count);
-       if (err) {
-               DRM_DEBUG("copy %d exec entries failed %d\n",
-                         args->buffer_count, err);
-               kvfree(exec_list);
-               kvfree(exec2_list);
-               return -EFAULT;
-       }
-
-       for (i = 0; i < args->buffer_count; i++) {
-               exec2_list[i].handle = exec_list[i].handle;
-               exec2_list[i].relocation_count = exec_list[i].relocation_count;
-               exec2_list[i].relocs_ptr = exec_list[i].relocs_ptr;
-               exec2_list[i].alignment = exec_list[i].alignment;
-               exec2_list[i].offset = exec_list[i].offset;
-               if (INTEL_GEN(to_i915(dev)) < 4)
-                       exec2_list[i].flags = EXEC_OBJECT_NEEDS_FENCE;
-               else
-                       exec2_list[i].flags = 0;
-       }
-
-       err = i915_gem_do_execbuffer(dev, file, &exec2, exec2_list, NULL);
-       if (exec2.flags & __EXEC_HAS_RELOC) {
-               struct drm_i915_gem_exec_object __user *user_exec_list =
-                       u64_to_user_ptr(args->buffers_ptr);
-
-               /* Copy the new buffer offsets back to the user's exec list. */
-               for (i = 0; i < args->buffer_count; i++) {
-                       if (!(exec2_list[i].offset & UPDATE))
-                               continue;
-
-                       exec2_list[i].offset =
-                               gen8_canonical_addr(exec2_list[i].offset & 
PIN_OFFSET_MASK);
-                       exec2_list[i].offset &= PIN_OFFSET_MASK;
-                       if (__copy_to_user(&user_exec_list[i].offset,
-                                          &exec2_list[i].offset,
-                                          sizeof(user_exec_list[i].offset)))
-                               break;
-               }
-       }
-
-       kvfree(exec_list);
-       kvfree(exec2_list);
-       return err;
-}
-
 int
-i915_gem_execbuffer2(struct drm_device *dev, void *data,
-                    struct drm_file *file)
+i915_gem_execbuffer2_ioctl(struct drm_device *dev, void *data,
+                          struct drm_file *file)
 {
        struct drm_i915_gem_execbuffer2 *args = data;
        struct drm_i915_gem_exec_object2 *exec2_list;
-- 
2.15.1

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to