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/State.cpp b/src/libANGLE/State.cpp
index e7b81a3..7d509b0 100644
--- a/src/libANGLE/State.cpp
+++ b/src/libANGLE/State.cpp
@@ -1427,8 +1427,13 @@
}
}
-void State::detachBuffer(const Context *context, GLuint bufferName)
+void State::detachBuffer(const Context *context, const Buffer *buffer)
{
+ if (!buffer->isBound())
+ {
+ return;
+ }
+ GLuint bufferName = buffer->id();
for (auto target : angle::AllEnums<BufferBinding>())
{
if (mBoundBuffers[target].id() == bufferName)