Index: cc/resources/resource_provider.h |
diff --git a/cc/resources/resource_provider.h b/cc/resources/resource_provider.h |
index d5b57127c205db172299d6cc7048e747779e56a8..4be2ff3c2bd46b35089c7de9bbe329028f89df79 100644 |
--- a/cc/resources/resource_provider.h |
+++ b/cc/resources/resource_provider.h |
@@ -33,6 +33,7 @@ |
#include "third_party/skia/include/core/SkBitmap.h" |
#include "third_party/skia/include/core/SkCanvas.h" |
#include "ui/gfx/geometry/size.h" |
+#include "ui/gfx/gpu_memory_buffer.h" |
class GrContext; |
@@ -331,6 +332,42 @@ class CC_EXPORT ResourceProvider { |
DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockGpuMemoryBuffer); |
}; |
+ class CC_EXPORT ScopedWriteLockGpuMemoryBufferForThread { |
+ public: |
+ ScopedWriteLockGpuMemoryBufferForThread(ResourceProvider* resource_provider, |
+ ResourceId resource_id); |
+ ~ScopedWriteLockGpuMemoryBufferForThread(); |
+ |
+ gfx::GpuMemoryBuffer* GetGpuMemoryBuffer(); |
+ void CreateAndBindImage(); |
+ ContextProvider* worker_context() { return worker_context_; } |
+ void BeginCopyTexture(); |
+ void EndCopyTexture(); |
+ ResourceFormat format() { return format_; } |
+ gfx::Size size() { return size_; } |
+ unsigned source_gl_id() { return source_gl_id_; } |
+ |
+ private: |
+ ResourceProvider* resource_provider_; |
+ ResourceProvider::Resource* resource_; |
+ gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager_; |
+ gfx::GpuMemoryBuffer* gpu_memory_buffer_; |
+ base::ThreadChecker thread_checker_; |
+ ContextProvider* worker_context_; |
+ unsigned image_id_; |
+ unsigned bound_image_id_; |
+ unsigned source_gl_id_; |
+ gfx::Size size_; |
+ ResourceFormat format_; |
+ GLenum internal_format_; |
+ bool did_bind_image_; |
+ unsigned query_id_; |
+ bool using_sync_query_; |
+ gfx::GpuMemoryBuffer::Usage usage_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockGpuMemoryBufferForThread); |
+ }; |
+ |
class CC_EXPORT ScopedWriteLockGr { |
public: |
ScopedWriteLockGr(ResourceProvider* resource_provider, |