Enable the new Vertex Array Object entry points.
TRAC #23392
Signed-off-by: Shannon Woods
Signed-off-by: Geoff Lang
Authored-by: Jamie Madill
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 89672bd..e860dd6 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -9186,8 +9186,16 @@
return gl::error(GL_INVALID_OPERATION);
}
- // glBindVertexArray
- UNIMPLEMENTED();
+ gl::VertexArray *vao = context->getVertexArray(array);
+
+ if (!vao)
+ {
+ // The default VAO should always exist
+ ASSERT(array != 0);
+ return gl::error(GL_INVALID_OPERATION);
+ }
+
+ context->bindVertexArray(array);
}
}
catch(std::bad_alloc&)
@@ -9211,8 +9219,18 @@
return gl::error(GL_INVALID_OPERATION);
}
- // glDeleteVertexArrays
- UNIMPLEMENTED();
+ if (n < 0)
+ {
+ return gl::error(GL_INVALID_VALUE);
+ }
+
+ for (int arrayIndex = 0; arrayIndex < n; arrayIndex++)
+ {
+ if (arrays[arrayIndex] != 0)
+ {
+ context->deleteVertexArray(arrays[arrayIndex]);
+ }
+ }
}
}
catch(std::bad_alloc&)
@@ -9236,8 +9254,15 @@
return gl::error(GL_INVALID_OPERATION);
}
- // glGenVertexArrays
- UNIMPLEMENTED();
+ if (n < 0)
+ {
+ return gl::error(GL_INVALID_VALUE);
+ }
+
+ for (int arrayIndex = 0; arrayIndex < n; arrayIndex++)
+ {
+ arrays[arrayIndex] = context->createVertexArray();
+ }
}
}
catch(std::bad_alloc&)
@@ -9261,8 +9286,14 @@
return gl::error(GL_INVALID_OPERATION, GL_FALSE);
}
- // glIsVertexArray
- UNIMPLEMENTED();
+ if (array == 0)
+ {
+ return GL_FALSE;
+ }
+
+ gl::VertexArray *vao = context->getVertexArray(array);
+
+ return (vao != NULL ? GL_TRUE : GL_FALSE);
}
}
catch(std::bad_alloc&)