Clean up VaryingPacking
This patch intends to clean up some issues in VaryingPacking
to implement geometry shader easiler.
1. Use emplace_back() instead of push_back() when necessary.
2. Remove unnecessary parameter in VaryingPacking::packUserVaryings().
3. Remove the assignment of semanticIndex and only handle them in D3D11
back-ends.
BUG=angleproject:1941
Change-Id: Ia09c07f01dc442ce95cb4984e4b768d0c79872c7
Reviewed-on: https://chromium-review.googlesource.com/1128576
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
diff --git a/src/libANGLE/renderer/d3d/ProgramD3D.cpp b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
index 96e075f..7eff8a5 100644
--- a/src/libANGLE/renderer/d3d/ProgramD3D.cpp
+++ b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
@@ -2607,29 +2607,31 @@
{
if (builtins.glPosition.enabled)
{
- mStreamOutVaryings.push_back(D3DVarying(builtins.glPosition.semantic,
- builtins.glPosition.index, 4, outputSlot));
+ mStreamOutVaryings.emplace_back(builtins.glPosition.semantic,
+ builtins.glPosition.index, 4, outputSlot);
}
}
else if (tfVaryingName == "gl_FragCoord")
{
if (builtins.glFragCoord.enabled)
{
- mStreamOutVaryings.push_back(D3DVarying(builtins.glFragCoord.semantic,
- builtins.glFragCoord.index, 4, outputSlot));
+ mStreamOutVaryings.emplace_back(builtins.glFragCoord.semantic,
+ builtins.glFragCoord.index, 4, outputSlot);
}
}
else if (tfVaryingName == "gl_PointSize")
{
if (builtins.glPointSize.enabled)
{
- mStreamOutVaryings.push_back(D3DVarying("PSIZE", 0, 1, outputSlot));
+ mStreamOutVaryings.emplace_back("PSIZE", 0, 1, outputSlot);
}
}
else
{
- for (const auto ®isterInfo : varyingPacking.getRegisterList())
+ const auto ®isterInfos = varyingPacking.getRegisterList();
+ for (GLuint registerIndex = 0u; registerIndex < registerInfos.size(); ++registerIndex)
{
+ const auto ®isterInfo = registerInfos[registerIndex];
const auto &varying = *registerInfo.packedVarying->varying;
GLenum transposedType = gl::TransposeMatrixType(varying.type);
int componentCount = gl::VariableColumnCount(transposedType);
@@ -2639,8 +2641,8 @@
// register needs its own stream out entry.
if (registerInfo.tfVaryingName() == tfVaryingName)
{
- mStreamOutVaryings.push_back(D3DVarying(
- varyingSemantic, registerInfo.semanticIndex, componentCount, outputSlot));
+ mStreamOutVaryings.emplace_back(varyingSemantic, registerIndex, componentCount,
+ outputSlot);
}
}
}