From 79aa4b79f1441c1cf4a97f869abaf4fb7c6a2685 Mon Sep 17 00:00:00 2001 From: "jbauman@chromium.org" Date: Fri, 16 Mar 2012 23:16:52 +0000 Subject: Add OpenGL occlusion query support to pepper. Should be full support for opengl es's occlusion query interface. Still only dev interfaces right now. BUG=88601 TEST= Review URL: https://chromiumcodereview.appspot.com/9601020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@127298 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 | 44 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+) (limited to 'ppapi/lib') diff --git a/ppapi/lib/gl/gles2/gl2ext_ppapi.c b/ppapi/lib/gl/gles2/gl2ext_ppapi.c index 6bdc09d..b995fc6 100644 --- a/ppapi/lib/gl/gles2/gl2ext_ppapi.c +++ b/ppapi/lib/gl/gles2/gl2ext_ppapi.c @@ -36,6 +36,8 @@ static const struct PPB_OpenGLES2ChromiumEnableFeature_Dev* g_gles2_chromium_enable_feature_interface = NULL; static const struct PPB_OpenGLES2ChromiumMapSub_Dev* g_gles2_chromium_map_sub_interface = NULL; +static const struct PPB_OpenGLES2Query_Dev* + g_gles2_query_interface = NULL; // TODO(alokp): Make sure PP_TLS works on all supported platforms. static PP_TLS PP_Resource g_current_context = 0; @@ -67,6 +69,10 @@ GLboolean GL_APIENTRY glInitializePPAPI( g_gles2_chromium_map_sub_interface = get_browser_interface(PPB_OPENGLES2_CHROMIUMMAPSUB_DEV_INTERFACE); } + if (!g_gles2_query_interface) { + g_gles2_query_interface = + get_browser_interface(PPB_OPENGLES2_QUERY_DEV_INTERFACE); + } return g_gles2_interface ? GL_TRUE : GL_FALSE; } @@ -111,3 +117,8 @@ const struct PPB_OpenGLES2ChromiumMapSub_Dev* GL_APIENTRY glGetChromiumMapSubInterfacePPAPI() { return g_gles2_chromium_map_sub_interface; } + +const struct PPB_OpenGLES2Query_Dev* GL_APIENTRY + glGetQueryInterfacePPAPI() { + return g_gles2_query_interface; +} diff --git a/ppapi/lib/gl/gles2/gl2ext_ppapi.h b/ppapi/lib/gl/gles2/gl2ext_ppapi.h index d33814e..40feca0 100644 --- a/ppapi/lib/gl/gles2/gl2ext_ppapi.h +++ b/ppapi/lib/gl/gles2/gl2ext_ppapi.h @@ -47,6 +47,8 @@ GL_APICALL const struct PPB_OpenGLES2ChromiumEnableFeature_Dev* GL_APIENTRY glGetChromiumEnableFeatureInterfacePPAPI(); GL_APICALL const struct PPB_OpenGLES2ChromiumMapSub_Dev* GL_APIENTRY glGetChromiumMapSubInterfacePPAPI(); +GL_APICALL const struct PPB_OpenGLES2Query_Dev* GL_APIENTRY + glGetQueryInterfacePPAPI(); #ifdef __cplusplus } diff --git a/ppapi/lib/gl/gles2/gles2.c b/ppapi/lib/gl/gles2/gles2.c index f0ae66f..db589ac 100644 --- a/ppapi/lib/gl/gles2/gles2.c +++ b/ppapi/lib/gl/gles2/gles2.c @@ -775,6 +775,50 @@ void GL_APIENTRY glRenderbufferStorageMultisampleEXT( height); } +void GL_APIENTRY glGenQueriesEXT(GLsizei n, GLuint* queries) { + const struct PPB_OpenGLES2Query_Dev* ext = glGetQueryInterfacePPAPI(); + if (ext) + ext->GenQueriesEXT(glGetCurrentContextPPAPI(), n, queries); +} + +void GL_APIENTRY glDeleteQueriesEXT(GLsizei n, const GLuint* queries) { + const struct PPB_OpenGLES2Query_Dev* ext = glGetQueryInterfacePPAPI(); + if (ext) + ext->DeleteQueriesEXT(glGetCurrentContextPPAPI(), n, queries); +} + +GLboolean GL_APIENTRY glIsQueryEXT(GLuint id) { + const struct PPB_OpenGLES2Query_Dev* ext = glGetQueryInterfacePPAPI(); + if (ext) + return ext->IsQueryEXT(glGetCurrentContextPPAPI(), id); + return 0; +} + +void GL_APIENTRY glBeginQueryEXT(GLenum target, GLuint id) { + const struct PPB_OpenGLES2Query_Dev* ext = glGetQueryInterfacePPAPI(); + if (ext) + ext->BeginQueryEXT(glGetCurrentContextPPAPI(), target, id); +} + +void GL_APIENTRY glEndQueryEXT(GLenum target) { + const struct PPB_OpenGLES2Query_Dev* ext = glGetQueryInterfacePPAPI(); + if (ext) + ext->EndQueryEXT(glGetCurrentContextPPAPI(), target); +} + +void GL_APIENTRY glGetQueryivEXT(GLenum target, GLenum pname, GLint* params) { + const struct PPB_OpenGLES2Query_Dev* ext = glGetQueryInterfacePPAPI(); + if (ext) + ext->GetQueryivEXT(glGetCurrentContextPPAPI(), target, pname, params); +} + +void GL_APIENTRY glGetQueryObjectuivEXT( + GLuint id, GLenum pname, GLuint* params) { + const struct PPB_OpenGLES2Query_Dev* ext = glGetQueryInterfacePPAPI(); + if (ext) + ext->GetQueryObjectuivEXT(glGetCurrentContextPPAPI(), id, pname, params); +} + GLboolean GL_APIENTRY glEnableFeatureCHROMIUM(const char* feature) { const struct PPB_OpenGLES2ChromiumEnableFeature_Dev* ext = glGetChromiumEnableFeatureInterfacePPAPI(); -- cgit v1.1