Draft: vm_bind/execbuffer3 implementation for Iris and Anv
The vm_bind feature has many utilities, including reducing CPU overhead and allowing the implementation of Vulkan Sparse bindings, which will enable more DirectX 12 games to work.
The Kernel team is working on an implementation for it, with many iterations posted to their mailing list:
- https://cgit.freedesktop.org/drm/drm-tip/tree/Documentation/gpu/rfc/i915_vm_bind.rst
- https://lists.freedesktop.org/archives/intel-gfx/2023-January/316417.html
This branch contains the Mesa implementation to use that interface. We probably shouldn't merge this yet since the Kernel team didn't merge their bits either, but we could (maybe I'd just need to create a separate header for the new interface).
This branch is not "final" or 100% tested yet. We do have a few known bugs and there are also some known improvements we can do to the codebase, but it mostly works and its final version will probably look very similar to what it is now. So please feel free to comment on the design.
Every patch that comes before WIP: drm-uapi/i915_drm.h: update the headers for vm_bind
is prep work and can be considered for merging right now.
Running this branch on a Kernel without vm_bind should work 100% regression-free.