diff options
author | jbauman@chromium.org <jbauman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-06 02:11:17 +0000 |
---|---|---|
committer | jbauman@chromium.org <jbauman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-06 02:11:17 +0000 |
commit | 3a9ac0a9aaf69b3cfc09d5194b83bb2a2130cac9 (patch) | |
tree | a8e04fa7a2f06a5fdf997ba1a9d93c7ced95f212 | |
parent | bc23425942484265dab5e2540a9c2844851f0703 (diff) | |
download | chromium_src-3a9ac0a9aaf69b3cfc09d5194b83bb2a2130cac9.zip chromium_src-3a9ac0a9aaf69b3cfc09d5194b83bb2a2130cac9.tar.gz chromium_src-3a9ac0a9aaf69b3cfc09d5194b83bb2a2130cac9.tar.bz2 |
Add new PPB_OPENGLES2_DRAWBUFFERS_DEV_INTERFACE_1_0 pepper interface.
This allows applications to draw to multiple render targets at the same time.
BUG=318019
Review URL: https://codereview.chromium.org/182213003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@255222 0039d316-1c4b-4281-b951-d872f2087c98
-rwxr-xr-x | gpu/command_buffer/build_gles2_cmd_buffer.py | 2 | ||||
-rw-r--r-- | ppapi/c/dev/ppb_opengles2ext_dev.h | 11 | ||||
-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 | 7 | ||||
-rw-r--r-- | ppapi/proxy/interface_list.cc | 6 | ||||
-rw-r--r-- | ppapi/shared_impl/ppb_opengles2_shared.cc | 13 | ||||
-rw-r--r-- | ppapi/shared_impl/ppb_opengles2_shared.h | 1 | ||||
-rw-r--r-- | ppapi/thunk/interfaces_legacy.h | 2 | ||||
-rw-r--r-- | tools/metrics/histograms/histograms.xml | 1 |
10 files changed, 55 insertions, 1 deletions
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py index 0acd6a3..caf2837 100755 --- a/gpu/command_buffer/build_gles2_cmd_buffer.py +++ b/gpu/command_buffer/build_gles2_cmd_buffer.py @@ -1182,6 +1182,7 @@ _PEPPER_INTERFACES = [ {'name': 'ChromiumEnableFeature', 'dev': False}, {'name': 'ChromiumMapSub', 'dev': False}, {'name': 'Query', 'dev': False}, + {'name': 'DrawBuffers', 'dev': True}, ] # This table specifies types and other special data for the commands that @@ -2289,6 +2290,7 @@ _FUNCTION_INFO = { 'client_test': False, 'unit_test': False, 'extension': True, + 'pepper_interface': 'DrawBuffers', }, 'DrawElementsInstancedANGLE': { 'type': 'Manual', diff --git a/ppapi/c/dev/ppb_opengles2ext_dev.h b/ppapi/c/dev/ppb_opengles2ext_dev.h index 56f4101..11ef1b6 100644 --- a/ppapi/c/dev/ppb_opengles2ext_dev.h +++ b/ppapi/c/dev/ppb_opengles2ext_dev.h @@ -15,4 +15,15 @@ #include "ppapi/c/pp_resource.h" #include "ppapi/c/ppb_opengles2.h" +#define PPB_OPENGLES2_DRAWBUFFERS_DEV_INTERFACE_1_0 \ + "PPB_OpenGLES2DrawBuffers(Dev);1.0" +#define PPB_OPENGLES2_DRAWBUFFERS_DEV_INTERFACE \ + PPB_OPENGLES2_DRAWBUFFERS_DEV_INTERFACE_1_0 // NOLINT + +struct PPB_OpenGLES2DrawBuffers_Dev { + void (*DrawBuffersEXT)(PP_Resource context, + GLsizei count, + const GLenum* bufs); +}; + #endif // PPAPI_C_DEV_PPB_OPENGLES2EXT_DEV_H_ diff --git a/ppapi/lib/gl/gles2/gl2ext_ppapi.c b/ppapi/lib/gl/gles2/gl2ext_ppapi.c index a310114..e5872b5 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_OpenGLES2DrawBuffers_Dev* + g_gles2_draw_buffers_interface = NULL; // TODO(alokp): Make sure PP_TLS works on all supported platforms. static PP_TLS PP_Resource g_current_context = 0; @@ -73,6 +75,10 @@ GLboolean GL_APIENTRY glInitializePPAPI( g_gles2_query_interface = get_browser_interface(PPB_OPENGLES2_QUERY_INTERFACE); } + if (!g_gles2_draw_buffers_interface) { + g_gles2_draw_buffers_interface = + get_browser_interface(PPB_OPENGLES2_DRAWBUFFERS_DEV_INTERFACE); + } return g_gles2_interface ? GL_TRUE : GL_FALSE; } @@ -122,3 +128,8 @@ const struct PPB_OpenGLES2Query* GL_APIENTRY glGetQueryInterfacePPAPI(void) { return g_gles2_query_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 146d914..ff593c2 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_OpenGLES2DrawBuffers_Dev* GL_APIENTRY + glGetDrawBuffersInterfacePPAPI(void); #ifdef __cplusplus } diff --git a/ppapi/lib/gl/gles2/gles2.c b/ppapi/lib/gl/gles2/gles2.c index dabb20c..3e9732d 100644 --- a/ppapi/lib/gl/gles2/gles2.c +++ b/ppapi/lib/gl/gles2/gles2.c @@ -1055,3 +1055,10 @@ void GL_APIENTRY glVertexAttribDivisorANGLE(GLuint index, GLuint divisor) { if (ext) ext->VertexAttribDivisorANGLE(glGetCurrentContextPPAPI(), index, divisor); } +void GL_APIENTRY glDrawBuffersEXT(GLsizei count, const GLenum* bufs) { + const struct PPB_OpenGLES2DrawBuffers_Dev* ext = + glGetDrawBuffersInterfacePPAPI(); + if (ext) + ext->DrawBuffersEXT(glGetCurrentContextPPAPI(), count, bufs); +} + diff --git a/ppapi/proxy/interface_list.cc b/ppapi/proxy/interface_list.cc index 14a9947..8b00e66 100644 --- a/ppapi/proxy/interface_list.cc +++ b/ppapi/proxy/interface_list.cc @@ -239,8 +239,12 @@ InterfaceList::InterfaceList() { PPB_OpenGLES2_Shared::GetChromiumMapSubInterface(), PERMISSION_NONE); AddPPB(PPB_OPENGLES2_QUERY_INTERFACE_1_0, PPB_OpenGLES2_Shared::GetQueryInterface(), PERMISSION_NONE); + AddPPB(PPB_OPENGLES2_DRAWBUFFERS_DEV_INTERFACE_1_0, + PPB_OpenGLES2_Shared::GetDrawBuffersInterface(), + PERMISSION_DEV); AddPPB(PPB_VAR_ARRAY_BUFFER_INTERFACE_1_0, - PPB_Var_Shared::GetVarArrayBufferInterface1_0(), PERMISSION_NONE); + PPB_Var_Shared::GetVarArrayBufferInterface1_0(), + PERMISSION_NONE); AddPPB(PPB_VAR_INTERFACE_1_2, PPB_Var_Shared::GetVarInterface1_2(), PERMISSION_NONE); AddPPB(PPB_VAR_INTERFACE_1_1, diff --git a/ppapi/shared_impl/ppb_opengles2_shared.cc b/ppapi/shared_impl/ppb_opengles2_shared.cc index 6d291c4..aa335df 100644 --- a/ppapi/shared_impl/ppb_opengles2_shared.cc +++ b/ppapi/shared_impl/ppb_opengles2_shared.cc @@ -1566,6 +1566,13 @@ void VertexAttribDivisorANGLE(PP_Resource context_id, } } +void DrawBuffersEXT(PP_Resource context_id, GLsizei count, const GLenum* bufs) { + Enter3D enter(context_id, true); + if (enter.succeeded()) { + ToGles2Impl(&enter)->DrawBuffersEXT(count, bufs); + } +} + } // namespace const PPB_OpenGLES2* PPB_OpenGLES2_Shared::GetInterface() { static const struct PPB_OpenGLES2 ppb_opengles2 = { @@ -1680,4 +1687,10 @@ const PPB_OpenGLES2Query* PPB_OpenGLES2_Shared::GetQueryInterface() { &EndQueryEXT, &GetQueryivEXT, &GetQueryObjectuivEXT}; return &ppb_opengles2; } +const PPB_OpenGLES2DrawBuffers_Dev* +PPB_OpenGLES2_Shared::GetDrawBuffersInterface() { // NOLINT + static const struct PPB_OpenGLES2DrawBuffers_Dev ppb_opengles2 = { + &DrawBuffersEXT}; + return &ppb_opengles2; +} } // namespace ppapi diff --git a/ppapi/shared_impl/ppb_opengles2_shared.h b/ppapi/shared_impl/ppb_opengles2_shared.h index 4148571..63a272d 100644 --- a/ppapi/shared_impl/ppb_opengles2_shared.h +++ b/ppapi/shared_impl/ppb_opengles2_shared.h @@ -22,6 +22,7 @@ class PPAPI_SHARED_EXPORT PPB_OpenGLES2_Shared { GetChromiumEnableFeatureInterface(); static const PPB_OpenGLES2ChromiumMapSub* GetChromiumMapSubInterface(); static const PPB_OpenGLES2Query* GetQueryInterface(); + static const PPB_OpenGLES2DrawBuffers_Dev* GetDrawBuffersInterface(); }; } // namespace ppapi diff --git a/ppapi/thunk/interfaces_legacy.h b/ppapi/thunk/interfaces_legacy.h index 79cc758..db47fae 100644 --- a/ppapi/thunk/interfaces_legacy.h +++ b/ppapi/thunk/interfaces_legacy.h @@ -27,6 +27,8 @@ LEGACY_IFACE(PPB_OPENGLES2_CHROMIUMMAPSUB_DEV_INTERFACE_1_0, ::ppapi::PPB_OpenGLES2_Shared::GetChromiumMapSubInterface()) LEGACY_IFACE(PPB_OPENGLES2_QUERY_INTERFACE, ::ppapi::PPB_OpenGLES2_Shared::GetQueryInterface()) +LEGACY_IFACE(PPB_OPENGLES2_DRAWBUFFERS_DEV_INTERFACE, + ::ppapi::PPB_OpenGLES2_Shared::GetDrawBuffersInterface()) LEGACY_IFACE(PPB_PROXY_PRIVATE_INTERFACE, PPB_Proxy_Impl::GetInterface()) LEGACY_IFACE(PPB_VAR_DEPRECATED_INTERFACE, PPB_Var_Deprecated_Impl::GetVarDeprecatedInterface()) diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 6280817..06d7c9c 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml @@ -32085,6 +32085,7 @@ other types of suffix sets. <int value="910782902" label="PPB_AudioFrame;0.1"/> <int value="913922409" label="PPB_NetworkProxy;1.0"/> <int value="916446405" label="PPB_URLUtil(Dev);0.6"/> + <int value="930528031" label="PPB_OpenGLES2DrawBuffers(Dev);1.0"/> <int value="930786862" label="PPB_Flash_Clipboard;5.0"/> <int value="941275733" label="PPB_Flash;12.6"/> <int value="944161065" label="PPB_Flash_DRM;1.1"/> |