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
aaea46242d anv: Add vma_heap allocators in anv_device
src/intel/vulkan/anv_device.c | 84 ++++++++++++++++++++++++++++++++++++++++++
src/intel/vulkan/anv_private.h | 60 ++++++++++++++++++++++++++++++
2 files changed, 144 insertions(+)