Disable vertex attributes if not active in program
Even if explicitly enabled.
Bug: angleproject:2138
Change-Id: I598d21296bb6843e05cdeab146c1ff3da3a1174b
Reviewed-on: https://chromium-review.googlesource.com/1185743
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
diff --git a/src/libANGLE/renderer/gl/VertexArrayGL.cpp b/src/libANGLE/renderer/gl/VertexArrayGL.cpp
index 6decc0a..321e1c5 100644
--- a/src/libANGLE/renderer/gl/VertexArrayGL.cpp
+++ b/src/libANGLE/renderer/gl/VertexArrayGL.cpp
@@ -417,7 +417,8 @@
void VertexArrayGL::updateAttribEnabled(size_t attribIndex)
{
- const bool enabled = mState.getVertexAttribute(attribIndex).enabled;
+ const bool enabled = mState.getVertexAttribute(attribIndex).enabled &
+ mProgramActiveAttribLocationsMask.test(attribIndex);
if (mAppliedAttributes[attribIndex].enabled == enabled)
{
return;
@@ -731,4 +732,15 @@
}
}
+void VertexArrayGL::applyActiveAttribLocationsMask(const gl::AttributesMask &activeMask)
+{
+ gl::AttributesMask updateMask = mProgramActiveAttribLocationsMask ^ activeMask;
+ mProgramActiveAttribLocationsMask = activeMask;
+
+ for (size_t attribIndex : updateMask)
+ {
+ updateAttribEnabled(attribIndex);
+ }
+}
+
} // namespace rx