Index: content/renderer/gpu/renderer_gl_context.h |
=================================================================== |
--- content/renderer/gpu/renderer_gl_context.h (revision 94701) |
+++ content/renderer/gpu/renderer_gl_context.h (working copy) |
@@ -15,6 +15,7 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/memory/weak_ptr.h" |
#include "build/build_config.h" |
+#include "gpu/command_buffer/common/constants.h" |
#include "ui/gfx/native_widget_types.h" |
#include "ui/gfx/size.h" |
@@ -124,6 +125,34 @@ |
const int32* attrib_list, |
const GURL& active_url); |
+ // Map a resource from an external context into this context. The source |
+ // context need not be in the same share group from the client's point of |
+ // view, allowing safe sharing between an "untrusted" context, like Pepper |
+ // and a compositor context. |
+ // |
+ // Currently only texture resources are supported. TODO(apatrick): generalize |
+ // this as appropriate. |
+ // |
+ // To unmap a previously mapped external resource, delete it in the |
+ // destination context group. This will not delete the underlying texture |
+ // object, just disassociate it with the id in the destination context group. |
+ // |
+ // The lifetime of the external resource is managed by the context group it |
+ // was originally created in. When the last context in that group is destroyed |
+ // the resource becomes invalid in all other context groups it is mapped into. |
+ bool MapExternalResource(gpu::resource_type::ResourceType resource_type, |
+ uint32 resource_source_id, |
+ RendererGLContext* source_context, |
+ uint32 resource_dest_id); |
+ |
+ // TODO(apatrick): this is a workaround until the parent / child relationship |
+ // between contexts is removed. MapExternalResource has no such restrictions |
+ // on the relationship between contexts. Use it instead. |
+ bool MapExternalResourceToParent( |
+ gpu::resource_type::ResourceType resource_type, |
+ uint32 resource_source_id, |
+ uint32 resource_dest_id); |
+ |
// Sets the parent context. If any parent textures have been created for |
// another parent, it is important to delete them before changing the parent. |
bool SetParent(RendererGLContext* parent); |