From 078a18885570c144487ef89eacd0cfa44ea95139 Mon Sep 17 00:00:00 2001 From: "zork@chromium.org" Date: Thu, 17 Jul 2014 11:14:08 +0000 Subject: Add PPAPI interface for OpenGL ES 2.0 Vertex Array Objects. BUG=72612,370496 Review URL: https://codereview.chromium.org/397183002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283750 0039d316-1c4b-4281-b951-d872f2087c98 --- ppapi/lib/gl/gles2/gl2ext_ppapi.c | 11 +++++++++++ ppapi/lib/gl/gles2/gl2ext_ppapi.h | 2 ++ ppapi/lib/gl/gles2/gles2.c | 29 +++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+) (limited to 'ppapi/lib') diff --git a/ppapi/lib/gl/gles2/gl2ext_ppapi.c b/ppapi/lib/gl/gles2/gl2ext_ppapi.c index e5872b5..c37f41a 100644 --- a/ppapi/lib/gl/gles2/gl2ext_ppapi.c +++ b/ppapi/lib/gl/gles2/gl2ext_ppapi.c @@ -38,6 +38,8 @@ static const struct PPB_OpenGLES2ChromiumMapSub* g_gles2_chromium_map_sub_interface = NULL; static const struct PPB_OpenGLES2Query* g_gles2_query_interface = NULL; +static const struct PPB_OpenGLES2VertexArrayObject* + g_gles2_vertex_array_object_interface = NULL; static const struct PPB_OpenGLES2DrawBuffers_Dev* g_gles2_draw_buffers_interface = NULL; @@ -75,6 +77,10 @@ GLboolean GL_APIENTRY glInitializePPAPI( g_gles2_query_interface = get_browser_interface(PPB_OPENGLES2_QUERY_INTERFACE); } + if (!g_gles2_vertex_array_object_interface) { + g_gles2_vertex_array_object_interface = + get_browser_interface(PPB_OPENGLES2_VERTEXARRAYOBJECT_INTERFACE); + } if (!g_gles2_draw_buffers_interface) { g_gles2_draw_buffers_interface = get_browser_interface(PPB_OPENGLES2_DRAWBUFFERS_DEV_INTERFACE); @@ -129,6 +135,11 @@ const struct PPB_OpenGLES2Query* GL_APIENTRY return g_gles2_query_interface; } +const struct PPB_OpenGLES2VertexArrayObject* GL_APIENTRY + glGetVertexArrayObjectInterfacePPAPI(void) { + return g_gles2_vertex_array_object_interface; +} + const struct PPB_OpenGLES2DrawBuffers_Dev* GL_APIENTRY glGetDrawBuffersInterfacePPAPI(void) { return g_gles2_draw_buffers_interface; diff --git a/ppapi/lib/gl/gles2/gl2ext_ppapi.h b/ppapi/lib/gl/gles2/gl2ext_ppapi.h index ff593c2..c4769033 100644 --- a/ppapi/lib/gl/gles2/gl2ext_ppapi.h +++ b/ppapi/lib/gl/gles2/gl2ext_ppapi.h @@ -49,6 +49,8 @@ GL_APICALL const struct PPB_OpenGLES2ChromiumMapSub* GL_APIENTRY glGetChromiumMapSubInterfacePPAPI(void); GL_APICALL const struct PPB_OpenGLES2Query* GL_APIENTRY glGetQueryInterfacePPAPI(void); +GL_APICALL const struct PPB_OpenGLES2VertexArrayObject* GL_APIENTRY + glGetVertexArrayObjectInterfacePPAPI(void); GL_APICALL const struct PPB_OpenGLES2DrawBuffers_Dev* GL_APIENTRY glGetDrawBuffersInterfacePPAPI(void); diff --git a/ppapi/lib/gl/gles2/gles2.c b/ppapi/lib/gl/gles2/gles2.c index 60922cd..faefb09 100644 --- a/ppapi/lib/gl/gles2/gles2.c +++ b/ppapi/lib/gl/gles2/gles2.c @@ -967,6 +967,35 @@ glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint* params) { ext->GetQueryObjectuivEXT(glGetCurrentContextPPAPI(), id, pname, params); } +void GL_APIENTRY glGenVertexArraysOES(GLsizei n, GLuint* arrays) { + const struct PPB_OpenGLES2VertexArrayObject* ext = + glGetVertexArrayObjectInterfacePPAPI(); + if (ext) + ext->GenVertexArraysOES(glGetCurrentContextPPAPI(), n, arrays); +} + +void GL_APIENTRY glDeleteVertexArraysOES(GLsizei n, const GLuint* arrays) { + const struct PPB_OpenGLES2VertexArrayObject* ext = + glGetVertexArrayObjectInterfacePPAPI(); + if (ext) + ext->DeleteVertexArraysOES(glGetCurrentContextPPAPI(), n, arrays); +} + +GLboolean GL_APIENTRY glIsVertexArrayOES(GLuint array) { + const struct PPB_OpenGLES2VertexArrayObject* ext = + glGetVertexArrayObjectInterfacePPAPI(); + if (ext) + return ext->IsVertexArrayOES(glGetCurrentContextPPAPI(), array); + return 0; +} + +void GL_APIENTRY glBindVertexArrayOES(GLuint array) { + const struct PPB_OpenGLES2VertexArrayObject* ext = + glGetVertexArrayObjectInterfacePPAPI(); + if (ext) + ext->BindVertexArrayOES(glGetCurrentContextPPAPI(), array); +} + GLboolean GL_APIENTRY glEnableFeatureCHROMIUM(const char* feature) { const struct PPB_OpenGLES2ChromiumEnableFeature* ext = glGetChromiumEnableFeatureInterfacePPAPI(); -- cgit v1.1