ES31: Add array element transformfeedback
This enhances the PackedVarying to be either one element of array, or
whole array. Correspondingly the VaryingPacking is expanded to pack it
properly.
BUG=angleproject:1950
Change-Id: I0529d7ac4367d42b2b433410fbf08351412aada8
Reviewed-on: https://chromium-review.googlesource.com/459115
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/libANGLE/renderer/d3d/ProgramD3D.cpp b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
index c2f478a..0b2a1c9 100644
--- a/src/libANGLE/renderer/d3d/ProgramD3D.cpp
+++ b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
@@ -2415,6 +2415,8 @@
}
else
{
+ size_t subscript = GL_INVALID_INDEX;
+ std::string baseName = gl::ParseResourceName(tfVaryingName, &subscript);
for (const auto ®isterInfo : varyingPacking.getRegisterList())
{
const auto &varying = *registerInfo.packedVarying->varying;
@@ -2430,7 +2432,8 @@
// There can be more than one register assigned to a particular varying, and each
// register needs its own stream out entry.
- if (tfVaryingName == varying.name)
+ if (baseName == registerInfo.packedVarying->varying->name &&
+ (subscript == GL_INVALID_INDEX || subscript == registerInfo.varyingArrayIndex))
{
mStreamOutVaryings.push_back(D3DVarying(
varyingSemantic, registerInfo.semanticIndex, componentCount, outputSlot));