Skip to content

Commit

Permalink
Oops, actually free old vertex cache buffers.
Browse files Browse the repository at this point in the history
And reuse them, since, why not?
  • Loading branch information
unknownbrackets committed Dec 28, 2015
1 parent 675efe9 commit f2410e2
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 10 deletions.
22 changes: 13 additions & 9 deletions GPU/GLES/TransformPipeline.cpp
Expand Up @@ -543,6 +543,7 @@ ReliableHashType TransformDrawEngine::ComputeHash() {

void TransformDrawEngine::ClearTrackedVertexArrays() {
for (auto vai = vai_.begin(); vai != vai_.end(); vai++) {
FreeVertexArray(vai->second);
delete vai->second;
}
vai_.clear();
Expand All @@ -567,6 +568,7 @@ void TransformDrawEngine::DecimateTrackedVertexArrays() {
kill = iter->second->lastFrame < threshold;
}
if (kill) {
FreeVertexArray(iter->second);
delete iter->second;
vai_.erase(iter++);
} else {
Expand All @@ -575,15 +577,6 @@ void TransformDrawEngine::DecimateTrackedVertexArrays() {
}
}

VertexArrayInfo::~VertexArrayInfo() {
glstate.arrayBuffer.unbind();
glstate.elementArrayBuffer.unbind();
if (vbo)
glDeleteBuffers(1, &vbo);
if (ebo)
glDeleteBuffers(1, &ebo);
}

GLuint TransformDrawEngine::AllocateBuffer(size_t sz) {
GLuint unused = 0;
for (GLuint buf : bufferNameCache_) {
Expand Down Expand Up @@ -626,6 +619,17 @@ void TransformDrawEngine::FreeBuffer(GLuint buf) {
}
}

void TransformDrawEngine::FreeVertexArray(VertexArrayInfo *vai) {
if (vai->vbo) {
FreeBuffer(vai->vbo);
vai->vbo = 0;
}
if (vai->ebo) {
FreeBuffer(vai->ebo);
vai->ebo = 0;
}
}

void TransformDrawEngine::DoFlush() {
PROFILE_THIS_SCOPE("flush");
gpuStats.numFlushes++;
Expand Down
2 changes: 1 addition & 1 deletion GPU/GLES/TransformPipeline.h
Expand Up @@ -77,7 +77,6 @@ class VertexArrayInfo {
drawsUntilNextFullHash = 0;
flags = 0;
}
~VertexArrayInfo();

enum Status {
VAI_NEW,
Expand Down Expand Up @@ -205,6 +204,7 @@ class TransformDrawEngine : public DrawEngineCommon, public GfxResourceHolder {

GLuint AllocateBuffer(size_t sz);
void FreeBuffer(GLuint buf);
void FreeVertexArray(VertexArrayInfo *vai);

u32 ComputeMiniHash();
ReliableHashType ComputeHash(); // Reads deferred vertex data.
Expand Down

0 comments on commit f2410e2

Please sign in to comment.