Optimize buffer deletion by returning early if buffer is not bound.
This improves angle_perftests
bindings_gl_100_objects_allocated_every_iteration by over 30%.
Bug: 820723
Change-Id: Icfaa0f54f7c61db6475948e3a95296f37ab4f7dc
Reviewed-on: https://chromium-review.googlesource.com/961302
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index ad3dad0..01e58f6 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -658,14 +658,15 @@
return 0u;
}
-void Context::deleteBuffer(GLuint buffer)
+void Context::deleteBuffer(GLuint bufferName)
{
- if (mState.mBuffers->getBuffer(buffer))
+ Buffer *buffer = mState.mBuffers->getBuffer(bufferName);
+ if (buffer)
{
detachBuffer(buffer);
}
- mState.mBuffers->deleteObject(this, buffer);
+ mState.mBuffers->deleteObject(this, bufferName);
}
void Context::deleteShader(GLuint shader)
@@ -2354,7 +2355,7 @@
mGLState.detachTexture(this, mZeroTextures, texture);
}
-void Context::detachBuffer(GLuint buffer)
+void Context::detachBuffer(Buffer *buffer)
{
// Simple pass-through to State's detachBuffer method, since
// only buffer attachments to container objects that are bound to the current context