1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-14 13:41:12 +00:00

Fix _free_render_buffer_data freeing shared half_texture and half_fb

This commit is contained in:
SaracenOne
2022-02-10 10:04:18 +00:00
parent 79077e6c10
commit 71eb3f6df5

View File

@@ -1818,6 +1818,8 @@ void RendererSceneRenderRD::_free_render_buffer_data(RenderBuffers *rb) {
if (rb->blur[i].mipmaps[m].fb.is_valid()) { if (rb->blur[i].mipmaps[m].fb.is_valid()) {
RD::get_singleton()->free(rb->blur[i].mipmaps[m].fb); RD::get_singleton()->free(rb->blur[i].mipmaps[m].fb);
} }
// texture and framebuffer in both blur mipmaps are shared, so only free from the first one
if (i == 0) {
if (rb->blur[i].mipmaps[m].half_fb.is_valid()) { if (rb->blur[i].mipmaps[m].half_fb.is_valid()) {
RD::get_singleton()->free(rb->blur[i].mipmaps[m].half_fb); RD::get_singleton()->free(rb->blur[i].mipmaps[m].half_fb);
} }
@@ -1825,6 +1827,7 @@ void RendererSceneRenderRD::_free_render_buffer_data(RenderBuffers *rb) {
RD::get_singleton()->free(rb->blur[i].mipmaps[m].half_texture); RD::get_singleton()->free(rb->blur[i].mipmaps[m].half_texture);
} }
} }
}
rb->blur[i].mipmaps.clear(); rb->blur[i].mipmaps.clear();
if (rb->blur[i].texture.is_valid()) { if (rb->blur[i].texture.is_valid()) {