diff options
Diffstat (limited to 'src/intel/vulkan/anv_allocator.c')
-rw-r--r-- | src/intel/vulkan/anv_allocator.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/intel/vulkan/anv_allocator.c b/src/intel/vulkan/anv_allocator.c index 97fa8c97035..ab01d46cbeb 100644 --- a/src/intel/vulkan/anv_allocator.c +++ b/src/intel/vulkan/anv_allocator.c @@ -1077,8 +1077,10 @@ anv_scratch_pool_finish(struct anv_device *device, struct anv_scratch_pool *pool for (unsigned s = 0; s < MESA_SHADER_STAGES; s++) { for (unsigned i = 0; i < 16; i++) { struct anv_scratch_bo *bo = &pool->bos[i][s]; - if (bo->exists > 0) + if (bo->exists > 0) { + anv_vma_free(device, &bo->bo); anv_gem_close(device, bo->bo.gem_handle); + } } } } @@ -1176,6 +1178,11 @@ anv_scratch_pool_alloc(struct anv_device *device, struct anv_scratch_pool *pool, if (device->instance->physicalDevice.has_exec_async) bo->bo.flags |= EXEC_OBJECT_ASYNC; + if (device->instance->physicalDevice.use_softpin) + bo->bo.flags |= EXEC_OBJECT_PINNED; + + anv_vma_alloc(device, &bo->bo); + /* Set the exists last because it may be read by other threads */ __sync_synchronize(); bo->exists = true; |