浏览代码

Merge pull request #89531 from sullyscience/fix-resource-leaks

Fix mobile renderer RID leaks
Rémi Verschelde 1 年之前
父节点
当前提交
70c05f63da

+ 5 - 0
servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp

@@ -2835,6 +2835,11 @@ RenderForwardMobile::~RenderForwardMobile() {
 		for (const RID &rid : scene_state.uniform_buffers) {
 			RD::get_singleton()->free(rid);
 		}
+		for (uint32_t i = 0; i < RENDER_LIST_MAX; i++) {
+			if (scene_state.instance_buffer[i].is_valid()) {
+				RD::get_singleton()->free(scene_state.instance_buffer[i]);
+			}
+		}
 		RD::get_singleton()->free(scene_state.lightmap_buffer);
 		RD::get_singleton()->free(scene_state.lightmap_capture_buffer);
 		memdelete_arr(scene_state.lightmap_captures);

+ 7 - 0
servers/rendering/renderer_rd/storage_rd/render_scene_buffers_rd.cpp

@@ -128,6 +128,13 @@ void RenderSceneBuffersRD::cleanup() {
 		free_named_texture(E.value);
 	}
 	named_textures.clear();
+
+	// Clear weight_buffer / blur textures.
+	for (const WeightBuffers &weight_buffer : weight_buffers) {
+		if (weight_buffer.weight.is_valid()) {
+			RD::get_singleton()->free(weight_buffer.weight);
+		}
+	}
 }
 
 void RenderSceneBuffersRD::configure(const RenderSceneBuffersConfiguration *p_config) {