Browse Source

OS: Fix used resource debug prints

These methods were broken by 22419082d9bedbc9dc060ea5784bb0871f8710a3
5 years ago and nobody complained, so maybe they're not so useful...
But at least this should restore them to a working state.
Rémi Verschelde 4 years ago
parent
commit
8c3a6b10a9
3 changed files with 35 additions and 5 deletions
  1. 32 4
      core/core_bind.cpp
  2. 2 0
      core/io/resource.cpp
  3. 1 1
      core/os/os.cpp

+ 32 - 4
core/core_bind.cpp

@@ -356,7 +356,7 @@ void _OS::print_all_textures_by_size() {
 		ResourceCache::get_cached_resources(&rsrc);
 		ResourceCache::get_cached_resources(&rsrc);
 
 
 		for (Ref<Resource> &res : rsrc) {
 		for (Ref<Resource> &res : rsrc) {
-			if (!res->is_class("ImageTexture")) {
+			if (!res->is_class("Texture")) {
 				continue;
 				continue;
 			}
 			}
 
 
@@ -376,14 +376,30 @@ void _OS::print_all_textures_by_size() {
 
 
 	imgs.sort();
 	imgs.sort();
 
 
-	for (_OSCoreBindImg &E : imgs) {
-		total -= E.vram;
+	if (imgs.size() == 0) {
+		print_line("No textures seem used in this project.");
+	} else {
+		print_line("Textures currently in use, sorted by VRAM usage:\n"
+				   "Path - VRAM usage (Dimensions)");
+	}
+
+	for (const _OSCoreBindImg &img : imgs) {
+		print_line(vformat("%s - %s %s",
+				img.path,
+				String::humanize_size(img.vram),
+				img.size));
 	}
 	}
+
+	print_line(vformat("Total VRAM usage: %s.", String::humanize_size(total)));
 }
 }
 
 
 void _OS::print_resources_by_type(const Vector<String> &p_types) {
 void _OS::print_resources_by_type(const Vector<String> &p_types) {
-	Map<String, int> type_count;
+	ERR_FAIL_COND_MSG(p_types.size() == 0,
+			"At least one type should be provided to print resources by type.");
+
+	print_line(vformat("Resources currently in use for the following types: %s", p_types));
 
 
+	Map<String, int> type_count;
 	List<Ref<Resource>> resources;
 	List<Ref<Resource>> resources;
 	ResourceCache::get_cached_resources(&resources);
 	ResourceCache::get_cached_resources(&resources);
 
 
@@ -404,6 +420,18 @@ void _OS::print_resources_by_type(const Vector<String> &p_types) {
 		}
 		}
 
 
 		type_count[r->get_class()]++;
 		type_count[r->get_class()]++;
+
+		print_line(vformat("%s: %s", r->get_class(), r->get_path()));
+
+		List<StringName> metas;
+		r->get_meta_list(&metas);
+		for (const StringName &meta : metas) {
+			print_line(vformat("  %s: %s", meta, r->get_meta(meta)));
+		}
+	}
+
+	for (const KeyValue<String, int> &E : type_count) {
+		print_line(vformat("%s count: %d", E.key, E.value));
 	}
 	}
 }
 }
 
 

+ 2 - 0
core/io/resource.cpp

@@ -552,5 +552,7 @@ void ResourceCache::dump(const char *p_file, bool p_short) {
 	}
 	}
 
 
 	lock.read_unlock();
 	lock.read_unlock();
+#else
+	WARN_PRINT("ResourceCache::dump only with in debug builds.");
 #endif
 #endif
 }
 }

+ 1 - 1
core/os/os.cpp

@@ -178,7 +178,7 @@ static void _OS_printres(Object *p_obj) {
 		return;
 		return;
 	}
 	}
 
 
-	String str = itos(res->get_instance_id()) + String(res->get_class()) + ":" + String(res->get_name()) + " - " + res->get_path();
+	String str = vformat("%s - %s - %s", res->to_string(), res->get_name(), res->get_path());
 	if (_OSPRF) {
 	if (_OSPRF) {
 		_OSPRF->store_line(str);
 		_OSPRF->store_line(str);
 	} else {
 	} else {