Jason Ekstrand <ja...@jlekstrand.net> writes: > On Wed, May 2, 2018 at 9:01 AM, Scott D Phillips <scott.d.phill...@intel.com >> wrote: > >> These will be used to assign virtual addresses to soft pinned >> buffers in a later patch. >> --- >> src/intel/vulkan/anv_device.c | 75 ++++++++++++++++++++++++++++++ >> ++++++++++++ >> src/intel/vulkan/anv_private.h | 11 +++++++ >> 2 files changed, 86 insertions(+) >> >> diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c >> index c0cec175826..d3d9c779d62 100644 >> --- a/src/intel/vulkan/anv_device.c >> +++ b/src/intel/vulkan/anv_device.c
..snip.. >> @@ -1887,6 +1909,59 @@ VkResult anv_DeviceWaitIdle( >> return anv_device_submit_simple_batch(device, &batch); >> } >> >> +bool >> +anv_vma_alloc(struct anv_device *device, struct anv_bo *bo) >> +{ >> + if (!(bo->flags & EXEC_OBJECT_PINNED)) >> + return true; >> > > When are things not pinned? At this point in the series nothing will be pinned. The state pools will be pinnned in patch 6 and everything else will be in patch 9. It's not safe to take this check away after patch 9 though, we'll still be supporting old gens where nothing is pinned. >> + >> + pthread_mutex_lock(&device->vma_mutex); >> + >> + bo->offset = 0; >> + >> + if (bo->flags & EXEC_OBJECT_SUPPORTS_48B_ADDRESS && >> + device->vma_hi_available >= bo->size) { >> + uint64_t addr = util_vma_heap_alloc(&device->vma_hi, bo->size, >> 4096); >> + if (addr) { >> + bo->offset = canonical_address(addr); >> + device->vma_hi_available -= bo->size; >> + } >> + } >> + >> + if (bo->offset == 0 && device->vma_lo_available >= bo->size) { >> + uint64_t addr = util_vma_heap_alloc(&device->vma_lo, bo->size, >> 4096); >> + if (addr) { >> + bo->offset = canonical_address(addr); >> + device->vma_lo_available -= bo->size; >> + } >> + } >> > > I'm not sure how I feel about using EXEC_OBJECT_SUPPORTS_48B_ADDRESS for > this. I think it certainly works but it's not what I had pictured. What's the concern? It seems like this is exactly what SUPPORTS_48B_ADDRESS means, this object can cope with being anywhere in the address space. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev