diff --git a/src/venus/vkr_device.c b/src/venus/vkr_device.c index c463161..018318f 100644 --- a/src/venus/vkr_device.c +++ b/src/venus/vkr_device.c @@ -238,9 +238,7 @@ vkr_device_object_destroy(struct vkr_context *ctx, break; case VK_OBJECT_TYPE_DEVICE_MEMORY: vkFreeMemory(device, obj->handle.device_memory, NULL); - - /* remove device memory from exported or attachment list */ - list_del(&((struct vkr_device_memory *)obj)->exported_head); + vkr_device_memory_release((struct vkr_device_memory *)obj); break; case VK_OBJECT_TYPE_BUFFER: vkDestroyBuffer(device, obj->handle.buffer, NULL); diff --git a/src/venus/vkr_device_memory.c b/src/venus/vkr_device_memory.c index 362bf45..ff9bb2d 100644 --- a/src/venus/vkr_device_memory.c +++ b/src/venus/vkr_device_memory.c @@ -151,8 +151,7 @@ vkr_dispatch_vkFreeMemory(struct vn_dispatch_context *dispatch, if (!mem) return; - list_del(&mem->exported_head); - + vkr_device_memory_release(mem); vkr_device_memory_destroy_and_remove(dispatch->data, args); } @@ -244,3 +243,9 @@ vkr_context_init_device_memory_dispatch(struct vkr_context *ctx) dispatch->dispatch_vkGetMemoryResourcePropertiesMESA = vkr_dispatch_vkGetMemoryResourcePropertiesMESA; } + +void +vkr_device_memory_release(struct vkr_device_memory *mem) +{ + list_del(&mem->exported_head); +} diff --git a/src/venus/vkr_device_memory.h b/src/venus/vkr_device_memory.h index 7ae33de..d4c9515 100644 --- a/src/venus/vkr_device_memory.h +++ b/src/venus/vkr_device_memory.h @@ -24,4 +24,7 @@ VKR_DEFINE_OBJECT_CAST(device_memory, VK_OBJECT_TYPE_DEVICE_MEMORY, VkDeviceMemo void vkr_context_init_device_memory_dispatch(struct vkr_context *ctx); +void +vkr_device_memory_release(struct vkr_device_memory *mem); + #endif /* VKR_DEVICE_MEMORY_H */