From e3f9b4dbbe244ec6bc6d8d8cc6785a199bfe6215 Mon Sep 17 00:00:00 2001 From: Siana Gearz Date: Sat, 7 May 2011 05:47:13 +0200 Subject: [PATCH] Help me keep track of VBOs --- indra/llrender/llvertexbuffer.cpp | 23 +++++++++++++++++++---- indra/llrender/llvertexbuffer.h | 14 ++------------ indra/newview/llviewerdisplay.cpp | 1 + 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 1c227eb30..8108eeee8 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -70,6 +70,22 @@ BOOL LLVertexBuffer::sOmitBlank = FALSE; std::vector LLVertexBuffer::sDeleteList; + +GLuint LLVBOPool::allocateName() +{ + GLuint name; + glGenBuffersARB(1, &name); + LLVertexBuffer::sGLCount++; + return name; +} + +void LLVBOPool::releaseName(GLuint name) +{ + glDeleteBuffersARB(1, &name); + LLVertexBuffer::sGLCount--; +} + + S32 LLVertexBuffer::sTypeOffsets[LLVertexBuffer::TYPE_MAX] = { sizeof(LLVector3), // TYPE_VERTEX, @@ -342,6 +358,7 @@ void LLVertexBuffer::clientCopy(F64 max_time) if (!sDeleteList.empty()) { glDeleteBuffersARB(sDeleteList.size(), (GLuint*) &(sDeleteList[0])); + sGLCount -= sDeleteList.size(); sDeleteList.clear(); } } @@ -432,8 +449,8 @@ void LLVertexBuffer::genBuffer() { BOOST_STATIC_ASSERT(sizeof(mGLBuffer) == sizeof(GLuint)); glGenBuffersARB(1, (GLuint*)&mGLBuffer); + sGLCount++; } - sGLCount++; } void LLVertexBuffer::genIndices() @@ -450,8 +467,8 @@ void LLVertexBuffer::genIndices() { BOOST_STATIC_ASSERT(sizeof(mGLBuffer) == sizeof(GLuint)); glGenBuffersARB(1, (GLuint*)&mGLIndices); + sGLCount++; } - sGLCount++; } void LLVertexBuffer::releaseBuffer() @@ -468,7 +485,6 @@ void LLVertexBuffer::releaseBuffer() { sDeleteList.push_back(mGLBuffer); } - sGLCount--; } void LLVertexBuffer::releaseIndices() @@ -485,7 +501,6 @@ void LLVertexBuffer::releaseIndices() { sDeleteList.push_back(mGLIndices); } - sGLCount--; } void LLVertexBuffer::createGLBuffer() diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h index c7984e615..99c016f29 100644 --- a/indra/llrender/llvertexbuffer.h +++ b/indra/llrender/llvertexbuffer.h @@ -60,20 +60,10 @@ class LLVBOPool : public LLGLNamePool { protected: - virtual GLuint allocateName() - { - GLuint name; - glGenBuffersARB(1, &name); - return name; - } - - virtual void releaseName(GLuint name) - { - glDeleteBuffersARB(1, &name); - } + virtual GLuint allocateName(); + virtual void releaseName(GLuint name); }; - //============================================================================ // base class diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index bd65bd999..ab8dc18f8 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -212,6 +212,7 @@ void display_stats() { F32 fps = gRecentFrameCount / fps_log_freq; llinfos << llformat("FPS: %.02f", fps) << llendl; + llinfos << llformat("VBO: %d glVBO: %d", LLVertexBuffer::sCount, LLVertexBuffer::sGLCount) << llendl; gRecentFrameCount = 0; gRecentFPSTime.reset(); }