History

drm/i915: Drop the CONTEXT_CLONE API (v2)

This API allows one context to grab bits out of another context upon creation. It can be used as a short-cut for setparam(getparam()) for things like I915_CONTEXT_PARAM_VM. However, it's never been used by any real userspace. It's used by a few IGT tests and that's it. Since it doesn't add any real value (most of the stuff you can CLONE you can copy in other ways), drop it. There is one thing that this API allows you to clone which you cannot clone via getparam/setparam: timelines. However, timelines are an implementation detail of i915 and not really something that needs to be exposed to userspace. Also, sharing timelines between contexts isn't obviously useful and supporting it has the potential to complicate i915 internally. It also doesn't add any functionality that the client can't get in other ways. If a client really wants a shared timeline, they can use a syncobj and set it as an in and out fence on every submit. v2 (Jason Ekstrand): - More detailed commit message

Jason Ekstrand committed 5 years ago

Commit 4a766ae1 parent 8cc256a4 files · +6 −240Browse files

Showing the changes to include/uapi (1 of 4 files). Show all

Unified · Split

include/uapi/drm/i915_drm.h+3−13
@@ -2006,20 +2006,10 @@ struct drm_i915_gem_context_create_ext_setparam { · 2005 unmodified lines
20062006 struct drm_i915_gem_context_param param;
20072007 };
20082008
2009−struct drm_i915_gem_context_create_ext_clone {
2009+/* This API has been removed. On the off chance someone somewhere has
2010+ * attempted to use it, never re-use this extension number.
2011+ */
20102012 #define I915_CONTEXT_CREATE_EXT_CLONE 1
2011− struct i915_user_extension base;
2012− __u32 clone_id;
2013− __u32 flags;
2014−#define I915_CONTEXT_CLONE_ENGINES (1u << 0)
2015−#define I915_CONTEXT_CLONE_FLAGS (1u << 1)
2016−#define I915_CONTEXT_CLONE_SCHEDATTR (1u << 2)
2017−#define I915_CONTEXT_CLONE_SSEU (1u << 3)
2018−#define I915_CONTEXT_CLONE_TIMELINE (1u << 4)
2019−#define I915_CONTEXT_CLONE_VM (1u << 5)
2020−#define I915_CONTEXT_CLONE_UNKNOWN -(I915_CONTEXT_CLONE_VM << 1)
2021− __u64 rsvd;
2022−};
20232013
20242014 struct drm_i915_gem_context_destroy {
20252015 __u32 ctx_id;