diff options
author | jbauman@chromium.org <jbauman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-16 23:16:52 +0000 |
---|---|---|
committer | jbauman@chromium.org <jbauman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-16 23:16:52 +0000 |
commit | 79aa4b79f1441c1cf4a97f869abaf4fb7c6a2685 (patch) | |
tree | eb4a50878f97068fcf8e48d6f0be5d4735531b5b /ppapi/lib | |
parent | 4d2a5ef9bb7839affe7dfcd457d1a9ffa8ab77ed (diff) | |
download | chromium_src-79aa4b79f1441c1cf4a97f869abaf4fb7c6a2685.zip chromium_src-79aa4b79f1441c1cf4a97f869abaf4fb7c6a2685.tar.gz chromium_src-79aa4b79f1441c1cf4a97f869abaf4fb7c6a2685.tar.bz2 |
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
Diffstat (limited to 'ppapi/lib')
-rw-r--r-- | ppapi/lib/gl/gles2/gl2ext_ppapi.c | 11 | ||||
-rw-r--r-- | ppapi/lib/gl/gles2/gl2ext_ppapi.h | 2 | ||||
-rw-r--r-- | ppapi/lib/gl/gles2/gles2.c | 44 |
3 files changed, 57 insertions, 0 deletions
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(); |