Fix missing memory release

This commit is contained in:
Zakor Gyula
2020-01-13 15:43:53 +01:00
parent 94fe1436f1
commit 2fbda5a3c1
2 changed files with 16 additions and 10 deletions

View File

@@ -445,6 +445,20 @@ impl<B: hal::Backend> Device<B> {
}
}
pub(crate) fn destroy_buffer(&self, buffer: resource::Buffer<B>) {
unsafe {
self.mem_allocator.lock().free(&self.raw, buffer.memory);
self.raw.destroy_buffer(buffer.raw);
}
}
pub(crate) fn destroy_texture(&self, texture: resource::Texture<B>) {
unsafe {
self.mem_allocator.lock().free(&self.raw, texture.memory);
self.raw.destroy_image(texture.raw);
}
}
pub(crate) fn dispose(self) {
self.com_allocator.destroy(&self.raw);
let desc_alloc = self.desc_allocator.into_inner();

View File

@@ -438,19 +438,11 @@ impl<B: hal::Backend, F> Drop for Hub<B, F> {
}
}
for (_, (texture, _)) in self.textures.data.write().map.drain() {
unsafe {
devices[texture.device_id.value]
.raw
.destroy_image(texture.raw);
}
devices[texture.device_id.value].destroy_texture(texture);
}
for (_, (buffer, _)) in self.buffers.data.write().map.drain() {
//TODO: unmap if needed
unsafe {
devices[buffer.device_id.value]
.raw
.destroy_buffer(buffer.raw);
}
devices[buffer.device_id.value].destroy_buffer(buffer);
}
for (_, (command_buffer, _)) in self.command_buffers.data.write().map.drain() {
devices[command_buffer.device_id.value]