summaryrefslogtreecommitdiffstats
path: root/ppapi/lib
diff options
context:
space:
mode:
authorjbauman@chromium.org <jbauman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-16 23:16:52 +0000
committerjbauman@chromium.org <jbauman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-16 23:16:52 +0000
commit79aa4b79f1441c1cf4a97f869abaf4fb7c6a2685 (patch)
treeeb4a50878f97068fcf8e48d6f0be5d4735531b5b /ppapi/lib
parent4d2a5ef9bb7839affe7dfcd457d1a9ffa8ab77ed (diff)
downloadchromium_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.c11
-rw-r--r--ppapi/lib/gl/gles2/gl2ext_ppapi.h2
-rw-r--r--ppapi/lib/gl/gles2/gles2.c44
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();