diff options
author | dspringer@google.com <dspringer@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-23 18:00:07 +0000 |
---|---|---|
committer | dspringer@google.com <dspringer@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-23 18:00:07 +0000 |
commit | 1aef9813f6edaead72c9dfe24ccd07ec525c75b3 (patch) | |
tree | 9cd13cab509d4e9d32d63b043a0c8132b7033cce /chrome/renderer/render_view.cc | |
parent | bcc3a0cb7f900dda0b4065055f3539c01f901df2 (diff) | |
download | chromium_src-1aef9813f6edaead72c9dfe24ccd07ec525c75b3.zip chromium_src-1aef9813f6edaead72c9dfe24ccd07ec525c75b3.tar.gz chromium_src-1aef9813f6edaead72c9dfe24ccd07ec525c75b3.tar.bz2 |
Add 3D support for the Mac on Leopard (OS X 10.5) and earlier. This CL uses
FBO rendering with glGetTexImage() into a TransportDIB that is then used as
a texture for rendering the final image in the render view in the browser.
While not optimal, it works and can be optimized later, after the new GPU
process work is completed.
This CL also enables stencil buffer support on the Mac. All the Pepper3D
demos run on the Mac with these changes.
BUG=none
TEST=3D rendering unit tests.
Review URL: http://codereview.chromium.org/647043
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39744 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/render_view.cc')
-rw-r--r-- | chrome/renderer/render_view.cc | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index 2398d4c..17161e9 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -4531,6 +4531,27 @@ void RenderView::GPUPluginSetIOSurface(gfx::PluginWindowHandle window, routing_id(), window, width, height, io_surface_identifier)); } +void RenderView::GPUPluginSetTransportDIB(gfx::PluginWindowHandle window, + int32 width, + int32 height, + TransportDIB::Handle transport_dib) { + Send(new ViewHostMsg_GPUPluginSetTransportDIB( + routing_id(), window, width, height, transport_dib)); +} + +TransportDIB::Handle RenderView::GPUPluginAllocTransportDIB(size_t size) { + TransportDIB::Handle dib_handle; + // Assume this is a synchronous RPC. + if (Send(new ViewHostMsg_AllocTransportDIB(size, &dib_handle))) + return dib_handle; + // Return an invalid handle if Send() fails. + return TransportDIB::DefaultHandleValue(); +} + +void RenderView::GPUPluginFreeTransportDIB(TransportDIB::Id dib_id) { + Send(new ViewHostMsg_FreeTransportDIB(dib_id)); +} + void RenderView::GPUPluginBuffersSwapped(gfx::PluginWindowHandle window) { Send(new ViewHostMsg_GPUPluginBuffersSwapped(routing_id(), window)); } |