On Mon, 30 Sep 2019 at 17:48, Hans-Kristian Arntzen post@arntzen-software.no wrote:
The GPU VA allocator was allocating memory in a way where dereferencing GPU VA required a lock + bsearch to find the right VA range.
Rather than going this route, we turn the common case into O(1) and lockless by creating a slab allocator which allows us to lookup a ptr directly from GPU VA with (VA - Base) / PageSize.
The number of allocations in the fast path must be limited since we cannot trivially grow the allocator while remaining lock-free for dereferences.
I need to review this in more detail, but on first sight it makes sense.