| Index: content/renderer/gpu/webgraphicscontext3d_command_buffer_impl.cc
|
| ===================================================================
|
| --- content/renderer/gpu/webgraphicscontext3d_command_buffer_impl.cc (revision 97282)
|
| +++ content/renderer/gpu/webgraphicscontext3d_command_buffer_impl.cc (working copy)
|
| @@ -33,7 +33,7 @@
|
| #include "webkit/glue/gl_bindings_skia_cmd_buffer.h"
|
|
|
| static base::LazyInstance<std::set<WebGraphicsContext3DCommandBufferImpl*> >
|
| - g_all_contexts(base::LINKER_INITIALIZED);
|
| + g_all_shared_contexts(base::LINKER_INITIALIZED);
|
|
|
| WebGraphicsContext3DCommandBufferImpl::WebGraphicsContext3DCommandBufferImpl()
|
| : context_(NULL),
|
| @@ -52,7 +52,7 @@
|
|
|
| WebGraphicsContext3DCommandBufferImpl::
|
| ~WebGraphicsContext3DCommandBufferImpl() {
|
| - g_all_contexts.Pointer()->erase(this);
|
| + g_all_shared_contexts.Pointer()->erase(this);
|
| delete context_;
|
| }
|
|
|
| @@ -93,6 +93,8 @@
|
| RendererGLContext::STENCIL_SIZE, stencil_size,
|
| RendererGLContext::SAMPLES, samples,
|
| RendererGLContext::SAMPLE_BUFFERS, sample_buffers,
|
| + RendererGLContext::SHARE_RESOURCES, attributes.shareResources ? 1 : 0,
|
| + RendererGLContext::BIND_GENERATES_RESOURCES, 0,
|
| RendererGLContext::NONE,
|
| };
|
|
|
| @@ -113,14 +115,10 @@
|
| if (web_view && web_view->mainFrame())
|
| active_url = GURL(web_view->mainFrame()->document().url());
|
|
|
| - // HACK: Assume this is a WebGL context by looking for the noExtensions
|
| - // attribute. WebGL contexts must not go in the share group because they
|
| - // rely on destruction of the context to clean up owned resources. Putting
|
| - // them in a share group would prevent this from happening.
|
| RendererGLContext* share_group = NULL;
|
| - if (!attributes.noExtensions) {
|
| - share_group = g_all_contexts.Pointer()->empty() ?
|
| - NULL : (*g_all_contexts.Pointer()->begin())->context_;
|
| + if (attributes.shareResources) {
|
| + share_group = g_all_shared_contexts.Pointer()->empty() ?
|
| + NULL : (*g_all_shared_contexts.Pointer()->begin())->context_;
|
| }
|
|
|
| if (render_directly_to_web_view) {
|
| @@ -132,7 +130,6 @@
|
| context_ = RendererGLContext::CreateViewContext(
|
| host,
|
| renderview->routing_id(),
|
| - !attributes.noExtensions,
|
| share_group,
|
| preferred_extensions,
|
| attribs,
|
| @@ -146,7 +143,6 @@
|
| context_ = RendererGLContext::CreateOffscreenContext(
|
| host,
|
| gfx::Size(1, 1),
|
| - !attributes.noExtensions,
|
| share_group,
|
| preferred_extensions,
|
| attribs,
|
| @@ -184,8 +180,8 @@
|
| attributes_.antialias = samples > 0;
|
| }
|
|
|
| - if (!attributes.noExtensions)
|
| - g_all_contexts.Pointer()->insert(this);
|
| + if (attributes.shareResources)
|
| + g_all_shared_contexts.Pointer()->insert(this);
|
|
|
| return true;
|
| }
|
|
|