anv: Add vma_heap allocators in anv_device
authorScott D Phillips <scott.d.phillips@intel.com>
Wed, 7 Mar 2018 17:18:37 +0000 (09:18 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 31 May 2018 23:51:46 +0000 (16:51 -0700)
commitaaea46242d651a1b03f7292ac89a68f8a9086692
treeee334a68d3d6fe24a065ad05cfa7190787aa47a3
parent6e4672f881bbc73c56b0d81dfea93d09f8d39eec
anv: Add vma_heap allocators in anv_device

These will be used to assign virtual addresses to soft pinned
buffers in a later patch.

Two allocators are added for separate 'low' and 'high' virtual
memory areas. Another alternative would have been to add a
double-sided allocator, which wasn't done here just because it
didn't appear to give any code complexity advantages.

v2 (Scott Phillips):
 - rename has_exec_softpin to use_softpin (Jason)
 - Only remove bottom one page and top 4 GiB from virt (Jason)
 - refer to comment in anv_allocator about state address + size
   overflowing 48 bits (Jason)
 - Mention hi/lo allocators vs double-sided allocator in
   commit message (Chris)
 - assign state pool memory ranges statically (Jason)

v3 (Jason Ekstrand):
 - Use (LOW|HIGH)_HEAP_(MIN|MAX)_ADDRESS rather than (1 << 31) for
   determining which heap to use in anv_vma_free
 - Only return de-canonicalized addresses to the heap

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
src/intel/vulkan/anv_device.c
src/intel/vulkan/anv_private.h