Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(199)

Unified Diff: content/renderer/gpu/renderer_gl_context.h

Issue 7529015: Allow the renderer process to map textures from one context into another. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698