2#include "Resources/BufferManager.h"
3#include "Resources/TextureManager.h"
4#include "Resources/AnimationManager.h"
5#include "Resources/MeshManager.h"
6#include "Resources/ModelManager.h"
7#include "Resources/EffectManager.h"
8#include "Resources/MaterialManager.h"
9#include "Resources/MaterialDefinitionManager.h"
10#include "Resources/MaterialInstance.h"
11#include "Resources/FontManager.h"
12#include "Resources/AssetManager.h"
14#include "Renderer/RenderResources.h"
16#include "Services/Variables.h"
19#include "MemoryContext.h"
20#include "ResourceUsageLogger.h"
22#include "Foundation/Logging/Logger.h"
23#include "Foundation/Memory/Allocator.h"
29 std::string byteString(
size_t size)
31 if (size < 1024 * 5) {
32 return std::to_string(size) +
"b";
35 if (size < 1024 * 5) {
36 return std::to_string(size) +
"kb";
39 if (size < 1024 * 5) {
40 return std::to_string(size) +
"mb";
43 return std::to_string(size) +
"gb";
49Cogs::Core::ResourceUsageLogger::ResourceUsageLogger(Context* context)
52 context->variables->set(
"resources.usageLogger.rate",
53#
if defined(COGS_PARANOIA)
61Cogs::Core::ResourceUsageLogger::~ResourceUsageLogger()
65void Cogs::Core::ResourceUsageLogger::update(Context* context,
bool force)
67 auto rate = context->variables->get(
"resources.usageLogger.rate", 0.f);
69 if (!force && (rate <= 0.f || timer.elapsedSeconds() < rate))
return;
71 LOG_DEBUG(logger,
"Allocators: bas=%s/%zu, res=%s/%zu, io=%s/%zu, cmp=%s/%zu, scr=%s/%zu, str=%s/%zu",
72 byteString(context->memory->baseAllocator->getAllocatedBytes()).c_str(), context->memory->baseAllocator->getAllocationCount(),
73 byteString(context->memory->resourceAllocator->getAllocatedBytes()).c_str(), context->memory->resourceAllocator->getAllocationCount(),
74 byteString(context->memory->ioAllocator->getAllocatedBytes()).c_str(), context->memory->ioAllocator->getAllocationCount(),
75 byteString(context->memory->componentAllocator->getAllocatedBytes()).c_str(), context->memory->componentAllocator->getAllocationCount(),
76 byteString(context->memory->scriptAllocator->getAllocatedBytes()).c_str(), context->memory->scriptAllocator->getAllocationCount(),
77 byteString(context->memory->getStringsAllocator()->getAllocatedBytes()).c_str(), context->memory->getStringsAllocator()->getAllocationCount());
79 if (context->renderer) {
80 if (
const auto* renderResources = context->renderer->getResources()) {
81 LOG_DEBUG(logger,
"renderResources: %s", renderResources->getReport().c_str());
84 if (context->bufferManager) LOG_DEBUG(logger,
"bufMgr: %s", context->bufferManager->getReport().c_str());
85 if (context->textureManager) LOG_DEBUG(logger,
"texMgr: %s", context->textureManager->getReport().c_str());
86 if (context->animationManager) LOG_DEBUG(logger,
"aniMgr: %s", context->animationManager->getReport().c_str());
87 if (context->meshManager) LOG_DEBUG(logger,
"mshMgr: %s", context->meshManager->getReport().c_str());
88 if (context->modelManager) LOG_DEBUG(logger,
"modMgr: %s", context->modelManager->getReport().c_str());
89 if (context->effectManager) LOG_DEBUG(logger,
"effMgr: %s", context->effectManager->getReport().c_str());
90 if (context->materialManager) LOG_DEBUG(logger,
"matMgr: %s", context->materialManager->getReport().c_str());
91 if (context->materialInstanceManager) LOG_DEBUG(logger,
"mInMgr: %s", context->materialInstanceManager->getReport().c_str());
92 if (context->fontManager) LOG_DEBUG(logger,
"fntMgr: %s", context->fontManager->getReport().c_str());
93 if (context->assetManager) LOG_DEBUG(logger,
"assMgr: %s", context->assetManager->getReport().c_str());
94 if (context->materialDefinitionManager) LOG_DEBUG(logger,
"mdfMgr: %s", context->materialDefinitionManager->getReport().c_str());
Log implementation class.
constexpr Log getLogger(const char(&name)[LEN]) noexcept