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);
}