Use ShaderBitSet for active use bits on uniforms
BUG=angleproject:2169
Change-Id: I192c2e3c453540c8a6d7b0d066218ea3c9fbaab2
Reviewed-on: https://chromium-review.googlesource.com/989411
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/MemoryProgramCache.cpp b/src/libANGLE/MemoryProgramCache.cpp
index 809edca..e9340c61b 100644
--- a/src/libANGLE/MemoryProgramCache.cpp
+++ b/src/libANGLE/MemoryProgramCache.cpp
@@ -66,10 +66,10 @@
stream->writeInt(var.binding);
stream->writeInt(var.dataSize);
- stream->writeInt(var.vertexActive);
- stream->writeInt(var.fragmentActive);
- stream->writeInt(var.computeActive);
- stream->writeInt(var.geometryActive);
+ for (ShaderType shaderType : AllShaderTypes())
+ {
+ stream->writeInt(var.isActive(shaderType));
+ }
stream->writeInt(var.memberIndexes.size());
for (unsigned int memberCounterIndex : var.memberIndexes)
@@ -82,10 +82,11 @@
{
var->binding = stream->readInt<int>();
var->dataSize = stream->readInt<unsigned int>();
- var->vertexActive = stream->readBool();
- var->fragmentActive = stream->readBool();
- var->computeActive = stream->readBool();
- var->geometryActive = stream->readBool();
+
+ for (ShaderType shaderType : AllShaderTypes())
+ {
+ var->setActive(shaderType, stream->readBool());
+ }
unsigned int numMembers = stream->readInt<unsigned int>();
for (unsigned int blockMemberIndex = 0; blockMemberIndex < numMembers; blockMemberIndex++)
@@ -105,9 +106,11 @@
stream->writeInt(var.blockInfo.isRowMajorMatrix);
stream->writeInt(var.blockInfo.topLevelArrayStride);
stream->writeInt(var.topLevelArraySize);
- stream->writeInt(var.vertexActive);
- stream->writeInt(var.fragmentActive);
- stream->writeInt(var.computeActive);
+
+ for (ShaderType shaderType : AllShaderTypes())
+ {
+ stream->writeInt(var.isActive(shaderType));
+ }
}
void LoadBufferVariable(BinaryInputStream *stream, BufferVariable *var)
@@ -121,9 +124,11 @@
var->blockInfo.isRowMajorMatrix = stream->readBool();
var->blockInfo.topLevelArrayStride = stream->readInt<int>();
var->topLevelArraySize = stream->readInt<int>();
- var->vertexActive = stream->readBool();
- var->fragmentActive = stream->readBool();
- var->computeActive = stream->readBool();
+
+ for (ShaderType shaderType : AllShaderTypes())
+ {
+ var->setActive(shaderType, stream->readBool());
+ }
}
void WriteInterfaceBlock(BinaryOutputStream *stream, const InterfaceBlock &block)
@@ -426,7 +431,7 @@
static_assert(static_cast<unsigned long>(ShaderType::EnumCount) <= sizeof(unsigned long) * 8,
"Too many shader types");
- state->mLinkedShaderStages = stream.readInt<gl::ShaderStagesMask>();
+ state->mLinkedShaderStages = stream.readInt<gl::ShaderBitSet>();
state->updateTransformFeedbackStrides();