Refactor VaryingPacking
Move all packing related logic from Program to VaryingPacking.
Do linkValidateTransformFeedback check first to simplify packing.
Make getPackedVaryings collect all required VaryingPackings in one
run pass, so that packUserVaryings can focus on packing merely.
BUG=angleproject:2241
Change-Id: I5e84e6e4688c80ba7a77a265b8ffaf79f4ddbb87
Reviewed-on: https://chromium-review.googlesource.com/764821
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/Program.h b/src/libANGLE/Program.h
index 9b4828d..1a33b3f 100644
--- a/src/libANGLE/Program.h
+++ b/src/libANGLE/Program.h
@@ -49,7 +49,6 @@
class InfoLog;
class Buffer;
class Framebuffer;
-struct PackedVarying;
extern const char * const g_fakepath;
@@ -604,9 +603,6 @@
int getNumViews() const { return mState.getNumViews(); }
bool usesMultiview() const { return mState.usesMultiview(); }
- private:
- ~Program();
-
struct VaryingRef
{
const sh::Varying *get() const { return vertex ? vertex : fragment; }
@@ -614,9 +610,11 @@
const sh::Varying *vertex = nullptr;
const sh::Varying *fragment = nullptr;
};
-
using MergedVaryings = std::map<std::string, VaryingRef>;
+ private:
+ ~Program();
+
void unlink();
bool linkAttributes(const Context *context, InfoLog &infoLog);
@@ -654,7 +652,6 @@
void gatherTransformFeedbackVaryings(const MergedVaryings &varyings);
MergedVaryings getMergedVaryings(const Context *context) const;
- std::vector<PackedVarying> getPackedVaryings(const MergedVaryings &mergedVaryings) const;
void linkOutputVariables(const Context *context);
void setUniformValuesFromBindingQualifiers();