linux_dsm_epyc7002/include/uapi/drm
Chris Wilson b81dde7194 drm/i915: Allow userspace to clone contexts on creation
A usecase arose out of handling context recovery in mesa, whereby they
wish to recreate a context with fresh logical state but preserving all
other details of the original. Currently, they create a new context and
iterate over which bits they want to copy across, but it would much more
convenient if they were able to just pass in a target context to clone
during creation. This essentially extends the setparam during creation
to pull the details from a target context instead of the user supplied
parameters.

The ideal here is that we don't expose control over anything more than
can be obtained via CONTEXT_PARAM. That is userspace retains explicit
control over all features, and this api is just convenience.

For example, you could replace

	struct context_param p = { .param = CONTEXT_PARAM_VM };

	param.ctx_id = old_id;
	gem_context_get_param(&p.param);

	new_id = gem_context_create();

	param.ctx_id = new_id;
	gem_context_set_param(&p.param);

	gem_vm_destroy(param.value); /* drop the ref to VM_ID handle */

with

	struct create_ext_param p = {
	  { .name = CONTEXT_CREATE_CLONE },
	  .clone_id = old_id,
	  .flags = CLONE_FLAGS_VM
	}
	new_id = gem_context_create_ext(&p);

and not have to worry about stray namespace pollution etc.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190521211134.16117-5-chris@chris-wilson.co.uk
2019-05-22 08:40:37 +01:00
..
amdgpu_drm.h
armada_drm.h
drm_fourcc.h
drm_mode.h
drm_sarea.h
drm.h
etnaviv_drm.h
exynos_drm.h
i810_drm.h
i915_drm.h drm/i915: Allow userspace to clone contexts on creation 2019-05-22 08:40:37 +01:00
lima_drm.h
mga_drm.h
msm_drm.h
nouveau_drm.h
omap_drm.h
panfrost_drm.h
qxl_drm.h
r128_drm.h
radeon_drm.h
savage_drm.h
sis_drm.h
tegra_drm.h
v3d_drm.h
vc4_drm.h
vgem_drm.h
via_drm.h
virtgpu_drm.h
vmwgfx_drm.h