| Index: webkit/gpu/webgraphicscontext3d_in_process_impl.cc
|
| diff --git a/webkit/gpu/webgraphicscontext3d_in_process_impl.cc b/webkit/gpu/webgraphicscontext3d_in_process_impl.cc
|
| index 5485a73a6d6456058514939e4988ff92420119e1..daf6604f3fee4cbb1f001656e391ea4c71dd5aba 100644
|
| --- a/webkit/gpu/webgraphicscontext3d_in_process_impl.cc
|
| +++ b/webkit/gpu/webgraphicscontext3d_in_process_impl.cc
|
| @@ -43,7 +43,8 @@ struct WebGraphicsContext3DInProcessImpl::ShaderSourceEntry {
|
| };
|
|
|
| WebGraphicsContext3DInProcessImpl::WebGraphicsContext3DInProcessImpl(
|
| - gfx::PluginWindowHandle window)
|
| + gfx::PluginWindowHandle window,
|
| + gfx::GLShareGroup* share_group)
|
| : initialized_(false),
|
| render_directly_to_web_view_(false),
|
| is_gles2_(false),
|
| @@ -66,7 +67,8 @@ WebGraphicsContext3DInProcessImpl::WebGraphicsContext3DInProcessImpl(
|
| #endif
|
| fragment_compiler_(0),
|
| vertex_compiler_(0),
|
| - window_(window) {
|
| + window_(window),
|
| + share_group_(share_group) {
|
| }
|
|
|
| WebGraphicsContext3DInProcessImpl::~WebGraphicsContext3DInProcessImpl() {
|
| @@ -114,27 +116,27 @@ bool WebGraphicsContext3DInProcessImpl::initialize(
|
| render_directly_to_web_view_ = render_directly_to_web_view;
|
| gfx::GLShareGroup* share_group = 0;
|
|
|
| - if (!render_directly_to_web_view) {
|
| - // Pick up the compositor's context to share resources with.
|
| - WebGraphicsContext3D* view_context = webView ?
|
| - webView->graphicsContext3D() : NULL;
|
| - if (view_context) {
|
| - WebGraphicsContext3DInProcessImpl* contextImpl =
|
| - static_cast<WebGraphicsContext3DInProcessImpl*>(view_context);
|
| - share_group = contextImpl->gl_context_->share_group();
|
| - } else {
|
| - // The compositor's context didn't get created
|
| - // successfully, so conceptually there is no way we can
|
| - // render successfully to the WebView.
|
| - render_directly_to_web_view_ = false;
|
| - }
|
| - }
|
| -
|
| is_gles2_ = gfx::GetGLImplementation() == gfx::kGLImplementationEGLGLES2;
|
|
|
| if (window_ != gfx::kNullPluginWindow) {
|
| + share_group = share_group_;
|
| gl_surface_ = gfx::GLSurface::CreateViewGLSurface(false, window_);
|
| } else {
|
| + if (!render_directly_to_web_view) {
|
| + // Pick up the compositor's context to share resources with.
|
| + WebGraphicsContext3D* view_context = webView ?
|
| + webView->graphicsContext3D() : NULL;
|
| + if (view_context) {
|
| + WebGraphicsContext3DInProcessImpl* contextImpl =
|
| + static_cast<WebGraphicsContext3DInProcessImpl*>(view_context);
|
| + share_group = contextImpl->gl_context_->share_group();
|
| + } else {
|
| + // The compositor's context didn't get created
|
| + // successfully, so conceptually there is no way we can
|
| + // render successfully to the WebView.
|
| + render_directly_to_web_view_ = false;
|
| + }
|
| + }
|
| // This implementation always renders offscreen regardless of
|
| // whether render_directly_to_web_view is true. Both DumpRenderTree
|
| // and test_shell paint first to an intermediate offscreen buffer
|
|
|