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/Context.cpp b/src/libANGLE/Context.cpp
index ee7ab9d..bafb7fb 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -135,10 +135,10 @@
}
}
-void MarkTransformFeedbackBufferUsage(const gl::Context *context,
- gl::TransformFeedback *transformFeedback,
- GLsizei count,
- GLsizei instanceCount)
+ANGLE_INLINE void MarkTransformFeedbackBufferUsage(const gl::Context *context,
+ gl::TransformFeedback *transformFeedback,
+ GLsizei count,
+ GLsizei instanceCount)
{
if (transformFeedback && transformFeedback->isActive() && !transformFeedback->isPaused())
{
@@ -6428,6 +6428,7 @@
Program *programObject = getProgramResolveLink(program);
programObject->bindUniformBlock(uniformBlockIndex, uniformBlockBinding);
+ // Note: If the Program is shared between Contexts we would be better using Observer/Subject.
if (programObject->isInUse())
{
mGLState.setObjectDirty(GL_PROGRAM);
@@ -7812,16 +7813,6 @@
return false;
}
-Program *Context::getProgramResolveLink(GLuint handle) const
-{
- Program *program = mState.mShaderPrograms->getProgram(handle);
- if (program)
- {
- program->resolveLink(this);
- }
- return program;
-}
-
Program *Context::getProgramNoResolveLink(GLuint handle) const
{
return mState.mShaderPrograms->getProgram(handle);