Softpin allows userspace to take greater control of GPU virtual address space and eliminates the need of relocations. It can also be used to mirror addresses between GPU and CPU (shared virtual memory). Calls to drm_intel_bo_emit_reloc are still required to build the list of drm_i915_gem_exec_objects at exec time, but no entries in relocs are created. Self-relocs don't make any sense for softpinned objects and can indicate a programming errors, thus are forbidden. Softpinned objects are marked by asterisk in debug dumps.
Cc: Thomas Daniel Cc: Kristian Høgsberg Cc: Zou Nanhai Cc: Michel Thierry Cc: Ben Widawsky Cc: Chris Wilson
8b4d57e intel: Add support for softpin
intel/intel_bufmgr.c | 9 +++
intel/intel_bufmgr.h | 1 +
intel/intel_bufmgr_gem.c | 179 ++++++++++++++++++++++++++++++++++++++-------
intel/intel_bufmgr_priv.h | 7 ++
4 files changed, 169 insertions(+), 27 deletions(-)