From 98c18425a821029957f46cb9fa0cf43728a3b424 Mon Sep 17 00:00:00 2001 From: vladislavbelov Date: Tue, 26 Apr 2022 18:16:45 +0000 Subject: [PATCH] Adds more detailed debug name for backend buffers. This was SVN commit r26830. --- source/renderer/VertexBufferManager.cpp | 56 ++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/source/renderer/VertexBufferManager.cpp b/source/renderer/VertexBufferManager.cpp index f2f3b6bae6..d6025e766e 100644 --- a/source/renderer/VertexBufferManager.cpp +++ b/source/renderer/VertexBufferManager.cpp @@ -21,9 +21,56 @@ #include "lib/ogl.h" #include "ps/CLogger.h" +#include "ps/CStr.h" #define DUMP_VB_STATS 0 // for debugging +namespace +{ + +const char* GetBufferTypeName( + const Renderer::Backend::GL::CBuffer::Type type) +{ + const char* name = "UnknownBuffer"; + switch (type) + { + case Renderer::Backend::GL::CBuffer::Type::VERTEX: + name = "VertexBuffer"; + break; + case Renderer::Backend::GL::CBuffer::Type::INDEX: + name = "IndexBuffer"; + break; + default: + debug_warn("Unknown buffer type"); + break; + } + return name; +} + +const char* GetGroupName( + const CVertexBufferManager::Group group) +{ + const char* name = "Unknown"; + switch (group) + { + case CVertexBufferManager::Group::DEFAULT: + name = "Default"; + break; + case CVertexBufferManager::Group::TERRAIN: + name = "Terrain"; + break; + case CVertexBufferManager::Group::WATER: + name = "Water"; + break; + default: + debug_warn("Unknown buffer group"); + break; + } + return name; +} + +} // anonymous namespace + CVertexBufferManager g_VBMan; CVertexBufferManager::Handle::Handle(Handle&& other) @@ -112,12 +159,17 @@ CVertexBufferManager::Handle CVertexBufferManager::AllocateChunk( return Handle(result); } + char bufferName[64] = {0}; + snprintf( + bufferName, std::size(bufferName), "%s (%s, %zu%s)", + GetBufferTypeName(type), GetGroupName(group), vertexSize, (dynamic ? ", dynamic" : "")); + // got this far; need to allocate a new buffer buffers.emplace_back( group == Group::DEFAULT - ? std::make_unique("VertexBuffer (Default)", vertexSize, type, dynamic) + ? std::make_unique(bufferName, vertexSize, type, dynamic) // Reduces the buffer size for not so frequent buffers. - : std::make_unique("VertexBuffer", vertexSize, type, dynamic, 1024 * 1024)); + : std::make_unique(bufferName, vertexSize, type, dynamic, 1024 * 1024)); result = buffers.back()->Allocate(vertexSize, numberOfVertices, type, dynamic, backingStore); if (!result)