Optimize several functions for the Program perf test.
This gives the same or slightly better performance in the ProgramDraw
perf test. Also only set the Program object as dirty when there are
dirty bits set in the Program itself.
Bug: angleproject:2877
Change-Id: I07b428b40d3e3c24e0a42c970524756b6dc3a30e
Reviewed-on: https://chromium-review.googlesource.com/c/1271475
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/State.cpp b/src/libANGLE/State.cpp
index a6f8bea..0c29a3e 100644
--- a/src/libANGLE/State.cpp
+++ b/src/libANGLE/State.cpp
@@ -1423,13 +1423,6 @@
mDirtyBits.set(DIRTY_BIT_TRANSFORM_FEEDBACK_BINDING);
}
-bool State::isTransformFeedbackActiveUnpaused() const
-{
- TransformFeedback *curTransformFeedback = mTransformFeedback.get();
- return curTransformFeedback && curTransformFeedback->isActive() &&
- !curTransformFeedback->isPaused();
-}
-
bool State::removeTransformFeedbackBinding(const Context *context, GLuint transformFeedback)
{
if (mTransformFeedback.id() == transformFeedback)
@@ -2913,7 +2906,11 @@
ASSERT(program->isLinked());
mDirtyBits.set(DIRTY_BIT_PROGRAM_EXECUTABLE);
- mDirtyObjects.set(DIRTY_OBJECT_PROGRAM);
+
+ if (program->hasAnyDirtyBit())
+ {
+ mDirtyObjects.set(DIRTY_OBJECT_PROGRAM);
+ }
// Set any bound textures.
const ActiveTextureTypeArray &textureTypes = program->getActiveSamplerTypes();