Move UBO bindings into Program shared state.

Sharing the bindings with the Impl (read-only) allows us to clean out
the applyUniformBuffers method from the Impl class, and make it D3D-
only.

BUG=angleproject:1123

Change-Id: Icb51a90cb227bbbdd83319ea308b68aa1c4c325e
Reviewed-on: https://chromium-review.googlesource.com/293824
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/Program.cpp b/src/libANGLE/Program.cpp
index d886d40..8877fdf 100644
--- a/src/libANGLE/Program.cpp
+++ b/src/libANGLE/Program.cpp
@@ -972,11 +972,6 @@
     return mProgram->applyUniforms();
 }
 
-Error Program::applyUniformBuffers(const gl::Data &data)
-{
-    return mProgram->applyUniformBuffers(data, mUniformBlockBindings);
-}
-
 void Program::flagForDeletion()
 {
     mDeleteStatus = true;
@@ -1116,19 +1111,19 @@
 
 void Program::bindUniformBlock(GLuint uniformBlockIndex, GLuint uniformBlockBinding)
 {
-    mUniformBlockBindings[uniformBlockIndex] = uniformBlockBinding;
+    mData.mUniformBlockBindings[uniformBlockIndex] = uniformBlockBinding;
 }
 
 GLuint Program::getUniformBlockBinding(GLuint uniformBlockIndex) const
 {
-    return mUniformBlockBindings[uniformBlockIndex];
+    return mData.getUniformBlockBinding(uniformBlockIndex);
 }
 
 void Program::resetUniformBlockBindings()
 {
     for (unsigned int blockId = 0; blockId < IMPLEMENTATION_MAX_COMBINED_SHADER_UNIFORM_BUFFERS; blockId++)
     {
-        mUniformBlockBindings[blockId] = 0;
+        mData.mUniformBlockBindings[blockId] = 0;
     }
 }