Rename gl::Framebuffer::Data to gl::FramebufferState.

Moving this out of the Framebuffer class allows us to forward-
declare it.

BUG=angleproject:1363

Change-Id: I91971c37a92151df508cdf7f0eb8c3e93506d112
Reviewed-on: https://chromium-review.googlesource.com/340741
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/Program.h b/src/libANGLE/Program.h
index ad89e93..cb69fdd 100644
--- a/src/libANGLE/Program.h
+++ b/src/libANGLE/Program.h
@@ -137,86 +137,80 @@
     bool ignored;
 };
 
+class ProgramState final : angle::NonCopyable
+{
+  public:
+    ProgramState();
+    ~ProgramState();
+
+    const std::string &getLabel();
+
+    const Shader *getAttachedVertexShader() const { return mAttachedVertexShader; }
+    const Shader *getAttachedFragmentShader() const { return mAttachedFragmentShader; }
+    const std::vector<std::string> &getTransformFeedbackVaryingNames() const
+    {
+        return mTransformFeedbackVaryingNames;
+    }
+    GLint getTransformFeedbackBufferMode() const { return mTransformFeedbackBufferMode; }
+    GLuint getUniformBlockBinding(GLuint uniformBlockIndex) const
+    {
+        ASSERT(uniformBlockIndex < IMPLEMENTATION_MAX_COMBINED_SHADER_UNIFORM_BUFFERS);
+        return mUniformBlockBindings[uniformBlockIndex];
+    }
+    const UniformBlockBindingMask &getActiveUniformBlockBindingsMask() const
+    {
+        return mActiveUniformBlockBindings;
+    }
+    const std::vector<sh::Attribute> &getAttributes() const { return mAttributes; }
+    const AttributesMask &getActiveAttribLocationsMask() const
+    {
+        return mActiveAttribLocationsMask;
+    }
+    const std::map<int, VariableLocation> &getOutputVariables() const { return mOutputVariables; }
+    const std::vector<LinkedUniform> &getUniforms() const { return mUniforms; }
+    const std::vector<VariableLocation> &getUniformLocations() const { return mUniformLocations; }
+    const std::vector<UniformBlock> &getUniformBlocks() const { return mUniformBlocks; }
+
+    const LinkedUniform *getUniformByName(const std::string &name) const;
+    GLint getUniformLocation(const std::string &name) const;
+    GLuint getUniformIndex(const std::string &name) const;
+
+  private:
+    friend class Program;
+
+    std::string mLabel;
+
+    Shader *mAttachedFragmentShader;
+    Shader *mAttachedVertexShader;
+
+    std::vector<std::string> mTransformFeedbackVaryingNames;
+    std::vector<sh::Varying> mTransformFeedbackVaryingVars;
+    GLenum mTransformFeedbackBufferMode;
+
+    GLuint mUniformBlockBindings[IMPLEMENTATION_MAX_COMBINED_SHADER_UNIFORM_BUFFERS];
+    UniformBlockBindingMask mActiveUniformBlockBindings;
+
+    std::vector<sh::Attribute> mAttributes;
+    std::bitset<MAX_VERTEX_ATTRIBS> mActiveAttribLocationsMask;
+
+    // Uniforms are sorted in order:
+    //  1. Non-sampler uniforms
+    //  2. Sampler uniforms
+    //  3. Uniform block uniforms
+    // This makes sampler validation easier, since we don't need a separate list.
+    std::vector<LinkedUniform> mUniforms;
+    std::vector<VariableLocation> mUniformLocations;
+    std::vector<UniformBlock> mUniformBlocks;
+
+    // TODO(jmadill): use unordered/hash map when available
+    std::map<int, VariableLocation> mOutputVariables;
+
+    bool mBinaryRetrieveableHint;
+};
+
 class Program final : angle::NonCopyable, public LabeledObject
 {
   public:
-    class Data final : angle::NonCopyable
-    {
-      public:
-        Data();
-        ~Data();
-
-        const std::string &getLabel();
-
-        const Shader *getAttachedVertexShader() const { return mAttachedVertexShader; }
-        const Shader *getAttachedFragmentShader() const { return mAttachedFragmentShader; }
-        const std::vector<std::string> &getTransformFeedbackVaryingNames() const
-        {
-            return mTransformFeedbackVaryingNames;
-        }
-        GLint getTransformFeedbackBufferMode() const { return mTransformFeedbackBufferMode; }
-        GLuint getUniformBlockBinding(GLuint uniformBlockIndex) const
-        {
-            ASSERT(uniformBlockIndex < IMPLEMENTATION_MAX_COMBINED_SHADER_UNIFORM_BUFFERS);
-            return mUniformBlockBindings[uniformBlockIndex];
-        }
-        const UniformBlockBindingMask &getActiveUniformBlockBindingsMask() const
-        {
-            return mActiveUniformBlockBindings;
-        }
-        const std::vector<sh::Attribute> &getAttributes() const { return mAttributes; }
-        const AttributesMask &getActiveAttribLocationsMask() const
-        {
-            return mActiveAttribLocationsMask;
-        }
-        const std::map<int, VariableLocation> &getOutputVariables() const
-        {
-            return mOutputVariables;
-        }
-        const std::vector<LinkedUniform> &getUniforms() const { return mUniforms; }
-        const std::vector<VariableLocation> &getUniformLocations() const
-        {
-            return mUniformLocations;
-        }
-        const std::vector<UniformBlock> &getUniformBlocks() const { return mUniformBlocks; }
-
-        const LinkedUniform *getUniformByName(const std::string &name) const;
-        GLint getUniformLocation(const std::string &name) const;
-        GLuint getUniformIndex(const std::string &name) const;
-
-      private:
-        friend class Program;
-
-        std::string mLabel;
-
-        Shader *mAttachedFragmentShader;
-        Shader *mAttachedVertexShader;
-
-        std::vector<std::string> mTransformFeedbackVaryingNames;
-        std::vector<sh::Varying> mTransformFeedbackVaryingVars;
-        GLenum mTransformFeedbackBufferMode;
-
-        GLuint mUniformBlockBindings[IMPLEMENTATION_MAX_COMBINED_SHADER_UNIFORM_BUFFERS];
-        UniformBlockBindingMask mActiveUniformBlockBindings;
-
-        std::vector<sh::Attribute> mAttributes;
-        std::bitset<MAX_VERTEX_ATTRIBS> mActiveAttribLocationsMask;
-
-        // Uniforms are sorted in order:
-        //  1. Non-sampler uniforms
-        //  2. Sampler uniforms
-        //  3. Uniform block uniforms
-        // This makes sampler validation easier, since we don't need a separate list.
-        std::vector<LinkedUniform> mUniforms;
-        std::vector<VariableLocation> mUniformLocations;
-        std::vector<UniformBlock> mUniformBlocks;
-
-        // TODO(jmadill): use unordered/hash map when available
-        std::map<int, VariableLocation> mOutputVariables;
-
-        bool mBinaryRetrieveableHint;
-    };
-
     Program(rx::ImplFactory *factory, ResourceManager *manager, GLuint handle);
     ~Program();
 
@@ -254,7 +248,7 @@
     void getActiveAttribute(GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
     GLint getActiveAttributeCount() const;
     GLint getActiveAttributeMaxLength() const;
-    const std::vector<sh::Attribute> &getAttributes() const { return mData.mAttributes; }
+    const std::vector<sh::Attribute> &getAttributes() const { return mState.mAttributes; }
 
     GLint getFragDataLocation(const std::string &name) const;
 
@@ -332,7 +326,7 @@
 
     const AttributesMask &getActiveAttribLocationsMask() const
     {
-        return mData.mActiveAttribLocationsMask;
+        return mState.mActiveAttribLocationsMask;
     }
 
   private:
@@ -424,7 +418,7 @@
     template <typename DestT>
     void getUniformInternal(GLint location, DestT *dataOut) const;
 
-    Data mData;
+    ProgramState mState;
     rx::ProgramImpl *mProgram;
 
     bool mValidated;