Implement OES_vertex_array_object.
This extension works the same as OpenGL ES 3.0 vertex arrays, but requires
entry points with the OES suffix.
Change-Id: I82b92bbcec078f88becee6f3b37eb7e8256a1233
Reviewed-on: https://swiftshader-review.googlesource.com/18808
Tested-by: Krzysztof Kosiński <krzysio@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Common/Version.h b/src/Common/Version.h
index b9288d1..ea9a476 100644
--- a/src/Common/Version.h
+++ b/src/Common/Version.h
@@ -15,7 +15,7 @@
#define MAJOR_VERSION 4
#define MINOR_VERSION 0
#define BUILD_VERSION 0
-#define BUILD_REVISION 4
+#define BUILD_REVISION 5
#define STRINGIFY(x) #x
#define MACRO_STRINGIFY(x) STRINGIFY(x)
diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp
index 5148e6b..0fe4f9c 100644
--- a/src/OpenGL/libGLESv2/Context.cpp
+++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -4443,6 +4443,7 @@
"GL_OES_texture_half_float_linear",
"GL_OES_texture_npot",
"GL_OES_texture_3D",
+ "GL_OES_vertex_array_object",
"GL_OES_vertex_half_float",
"GL_EXT_blend_minmax",
"GL_EXT_color_buffer_half_float",
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp
index 3ba2a3a..b0c0836 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -6869,6 +6869,7 @@
FUNCTION(glBindTexture),
FUNCTION(glBindTransformFeedback),
FUNCTION(glBindVertexArray),
+ FUNCTION(glBindVertexArrayOES),
FUNCTION(glBlendColor),
FUNCTION(glBlendEquation),
FUNCTION(glBlendEquationSeparate),
@@ -6917,6 +6918,7 @@
FUNCTION(glDeleteTextures),
FUNCTION(glDeleteTransformFeedbacks),
FUNCTION(glDeleteVertexArrays),
+ FUNCTION(glDeleteVertexArraysOES),
FUNCTION(glDepthFunc),
FUNCTION(glDepthMask),
FUNCTION(glDepthRangef),
@@ -6960,6 +6962,7 @@
FUNCTION(glGenTextures),
FUNCTION(glGenTransformFeedbacks),
FUNCTION(glGenVertexArrays),
+ FUNCTION(glGenVertexArraysOES),
FUNCTION(glGenerateMipmap),
FUNCTION(glGenerateMipmapOES),
FUNCTION(glGetActiveAttrib),
@@ -7038,6 +7041,7 @@
FUNCTION(glIsTexture),
FUNCTION(glIsTransformFeedback),
FUNCTION(glIsVertexArray),
+ FUNCTION(glIsVertexArrayOES),
FUNCTION(glLineWidth),
FUNCTION(glLinkProgram),
FUNCTION(glMapBufferRange),
diff --git a/src/OpenGL/libGLESv2/libGLESv2.def b/src/OpenGL/libGLESv2/libGLESv2.def
index d6e59b4..8d07c32 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.def
+++ b/src/OpenGL/libGLESv2/libGLESv2.def
@@ -183,6 +183,10 @@
glGetFramebufferAttachmentParameterivOES
glGenerateMipmapOES
glDrawBuffersEXT
+ glBindVertexArrayOES
+ glDeleteVertexArraysOES
+ glGenVertexArraysOES
+ glIsVertexArrayOES
; GLES 3.0 Functions
glReadBuffer @211
@@ -292,4 +296,4 @@
libGLESv2_swiftshader
- Register
\ No newline at end of file
+ Register
diff --git a/src/OpenGL/libGLESv2/libGLESv2.lds b/src/OpenGL/libGLESv2/libGLESv2.lds
index 483efc2..86da3a1 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.lds
+++ b/src/OpenGL/libGLESv2/libGLESv2.lds
@@ -290,6 +290,10 @@
glGetFramebufferAttachmentParameterivOES;
glGenerateMipmapOES;
glDrawBuffersEXT;
+ glBindVertexArrayOES;
+ glDeleteVertexArraysOES;
+ glGenVertexArraysOES;
+ glIsVertexArrayOES;
# Table of function pointers to disambiguate between libraries
libGLESv2_swiftshader;
@@ -302,4 +306,4 @@
local:
*;
-};
\ No newline at end of file
+};
diff --git a/src/OpenGL/libGLESv2/libGLESv3.cpp b/src/OpenGL/libGLESv2/libGLESv3.cpp
index e048749..381a3aa 100644
--- a/src/OpenGL/libGLESv2/libGLESv3.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv3.cpp
@@ -1469,6 +1469,11 @@
}
}
+GL_APICALL void GL_APIENTRY glBindVertexArrayOES(GLuint array)
+{
+ glBindVertexArray(array);
+}
+
GL_APICALL void GL_APIENTRY glDeleteVertexArrays(GLsizei n, const GLuint *arrays)
{
TRACE("(GLsizei n = %d, const GLuint *arrays = %p)", n, arrays);
@@ -1489,6 +1494,11 @@
}
}
+GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES(GLsizei n, const GLuint *arrays)
+{
+ glDeleteVertexArrays(n, arrays);
+}
+
GL_APICALL void GL_APIENTRY glGenVertexArrays(GLsizei n, GLuint *arrays)
{
TRACE("(GLsizei n = %d, const GLuint *arrays = %p)", n, arrays);
@@ -1509,6 +1519,11 @@
}
}
+GL_APICALL void GL_APIENTRY glGenVertexArraysOES(GLsizei n, GLuint *arrays)
+{
+ glGenVertexArrays(n, arrays);
+}
+
GL_APICALL GLboolean GL_APIENTRY glIsVertexArray(GLuint array)
{
TRACE("(GLuint array = %d)", array);
@@ -1533,6 +1548,11 @@
return GL_FALSE;
}
+GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES(GLuint array)
+{
+ return glIsVertexArray(array);
+}
+
GL_APICALL void GL_APIENTRY glGetIntegeri_v(GLenum target, GLuint index, GLint *data)
{
TRACE("(GLenum target = 0x%X, GLuint index = %d, GLint* data = %p)",