TextureGL implementation.

BUG=angleproject:884

Change-Id: I877c0a9f753dacff96bbb82486bee71d1996ecb7
Reviewed-on: https://chromium-review.googlesource.com/252982
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/renderer/gl/RendererGL.cpp b/src/libANGLE/renderer/gl/RendererGL.cpp
index 4229a5e..b0e2f3e 100644
--- a/src/libANGLE/renderer/gl/RendererGL.cpp
+++ b/src/libANGLE/renderer/gl/RendererGL.cpp
@@ -36,7 +36,7 @@
       mStateManager(nullptr)
 {
     ASSERT(mFunctions);
-    mStateManager = new StateManagerGL(mFunctions);
+    mStateManager = new StateManagerGL(mFunctions, getRendererCaps());
 }
 
 RendererGL::~RendererGL()
@@ -59,7 +59,7 @@
 gl::Error RendererGL::drawArrays(const gl::Data &data, GLenum mode,
                                  GLint first, GLsizei count, GLsizei instances)
 {
-    mStateManager->setDrawState(*data.state);
+    mStateManager->setDrawState(data);
     mFunctions->drawArrays(mode, first, count);
 
     return gl::Error(GL_NO_ERROR);
@@ -74,7 +74,7 @@
         UNIMPLEMENTED();
     }
 
-    mStateManager->setDrawState(*data.state);
+    mStateManager->setDrawState(data);
     mFunctions->drawElements(mode, count, type, indices);
 
     return gl::Error(GL_NO_ERROR);
@@ -107,7 +107,7 @@
 
 TextureImpl *RendererGL::createTexture(GLenum target)
 {
-    return new TextureGL();
+    return new TextureGL(target, mFunctions, mStateManager);
 }
 
 RenderbufferImpl *RendererGL::createRenderbuffer()