Implement the instanced draw calls in RendererGL.

BUG=angleproject:1136

Change-Id: I1167365618bdc3ca37ac0f4c60809de32c7a9d78
Reviewed-on: https://chromium-review.googlesource.com/295733
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 cb4110d..f4db4d7 100644
--- a/src/libANGLE/renderer/gl/RendererGL.cpp
+++ b/src/libANGLE/renderer/gl/RendererGL.cpp
@@ -131,7 +131,7 @@
 
 gl::Error RendererGL::drawArrays(const gl::Data &data, GLenum mode, GLint first, GLsizei count)
 {
-    gl::Error error = mStateManager->setDrawArraysState(data, first, count);
+    gl::Error error = mStateManager->setDrawArraysState(data, first, count, 0);
     if (error.isError())
     {
         return error;
@@ -151,7 +151,17 @@
                                           GLsizei count,
                                           GLsizei instanceCount)
 {
-    UNIMPLEMENTED();
+    gl::Error error = mStateManager->setDrawArraysState(data, first, count, instanceCount);
+    if (error.isError())
+    {
+        return error;
+    }
+
+    if (!mSkipDrawCalls)
+    {
+        mFunctions->drawArraysInstanced(mode, first, count, instanceCount);
+    }
+
     return gl::Error(GL_NO_ERROR);
 }
 
@@ -163,7 +173,8 @@
                                    const gl::RangeUI &indexRange)
 {
     const GLvoid *drawIndexPointer = nullptr;
-    gl::Error error = mStateManager->setDrawElementsState(data, count, type, indices, &drawIndexPointer);
+    gl::Error error =
+        mStateManager->setDrawElementsState(data, count, type, indices, 0, &drawIndexPointer);
     if (error.isError())
     {
         return error;
@@ -185,7 +196,19 @@
                                             GLsizei instances,
                                             const gl::RangeUI &indexRange)
 {
-    UNIMPLEMENTED();
+    const GLvoid *drawIndexPointer = nullptr;
+    gl::Error error = mStateManager->setDrawElementsState(data, count, type, indices, instances,
+                                                          &drawIndexPointer);
+    if (error.isError())
+    {
+        return error;
+    }
+
+    if (!mSkipDrawCalls)
+    {
+        mFunctions->drawElementsInstanced(mode, count, type, drawIndexPointer, instances);
+    }
+
     return gl::Error(GL_NO_ERROR);
 }