diff --git a/src/asahi/lib/agx_device.c b/src/asahi/lib/agx_device.c index 4e92896f6a2..2b446925895 100644 --- a/src/asahi/lib/agx_device.c +++ b/src/asahi/lib/agx_device.c @@ -113,7 +113,7 @@ agx_bo_bind(struct agx_device *dev, struct agx_bo *bo, uint64_t addr, struct drm_asahi_gem_bind gem_bind = { .op = unbind ? ASAHI_BIND_OP_UNBIND : ASAHI_BIND_OP_BIND, .flags = flags, - .handle = bo->handle, + .handle = bo ? bo->handle : 0, .vm_id = dev->vm_id, .offset = offset_B, .range = size_B, diff --git a/src/asahi/vulkan/hk_buffer.c b/src/asahi/vulkan/hk_buffer.c index 46f8957f770..838a1da4ddb 100644 --- a/src/asahi/vulkan/hk_buffer.c +++ b/src/asahi/vulkan/hk_buffer.c @@ -141,8 +141,10 @@ hk_DestroyBuffer(VkDevice device, VkBuffer _buffer, return; if (buffer->va) { - // TODO - // agx_bo_unbind_vma(dev->ws_dev, buffer->addr, buffer->vma_size_B); + /* Unbind the VA */ + dev->dev.ops.bo_bind(&dev->dev, NULL, buffer->addr, buffer->va->size_B, 0, + 0, true); + agx_va_free(&dev->dev, buffer->va); }