Move some D3D-specific stuff into ProgramD3D.

BUG=angle:773

Change-Id: I48b42e7a3e82a43d3dde16a8d1016d28280eae39
Reviewed-on: https://chromium-review.googlesource.com/232968
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/ProgramImpl.h b/src/libANGLE/renderer/ProgramImpl.h
index c4b329b..e4e5016 100644
--- a/src/libANGLE/renderer/ProgramImpl.h
+++ b/src/libANGLE/renderer/ProgramImpl.h
@@ -31,6 +31,8 @@
 class ProgramImpl
 {
   public:
+    typedef int SemanticIndexArray[gl::MAX_VERTEX_ATTRIBS];
+
     ProgramImpl() { }
     virtual ~ProgramImpl();
 
@@ -39,12 +41,14 @@
     const std::vector<gl::UniformBlock*> &getUniformBlocks() const { return mUniformBlocks; }
     const std::vector<gl::LinkedVarying> &getTransformFeedbackLinkedVaryings() const { return mTransformFeedbackLinkedVaryings; }
     const sh::Attribute *getShaderAttributes() const { return mShaderAttributes; }
+    const SemanticIndexArray &getSemanticIndexes() const { return mSemanticIndex; }
 
     std::vector<gl::LinkedUniform*> &getUniforms() { return mUniforms; }
     std::vector<gl::VariableLocation> &getUniformIndices() { return mUniformIndex; }
     std::vector<gl::UniformBlock*> &getUniformBlocks() { return mUniformBlocks; }
     std::vector<gl::LinkedVarying> &getTransformFeedbackLinkedVaryings() { return mTransformFeedbackLinkedVaryings; }
     sh::Attribute *getShaderAttributes() { return mShaderAttributes; }
+    SemanticIndexArray &getSemanticIndexes() { return mSemanticIndex; }
 
     gl::LinkedUniform *getUniformByLocation(GLint location) const;
     gl::LinkedUniform *getUniformByName(const std::string &name) const;
@@ -126,6 +130,7 @@
     std::vector<gl::UniformBlock*> mUniformBlocks;
     std::vector<gl::LinkedVarying> mTransformFeedbackLinkedVaryings;
 
+    SemanticIndexArray mSemanticIndex;
     sh::Attribute mShaderAttributes[gl::MAX_VERTEX_ATTRIBS];
 };