Index: cc/resources/resource_provider.h |
diff --git a/cc/resources/resource_provider.h b/cc/resources/resource_provider.h |
index 8a09f1c6b03939734c4238fc9a456aa6d97bbd0f..6b95b05fab1c4a0a72b6ff0b244b3af02d7c8c60 100644 |
--- a/cc/resources/resource_provider.h |
+++ b/cc/resources/resource_provider.h |
@@ -216,23 +216,23 @@ class CC_EXPORT ResourceProvider |
public: |
ScopedReadLockGL(ResourceProvider* resource_provider, |
ResourceId resource_id); |
- virtual ~ScopedReadLockGL(); |
+ ~ScopedReadLockGL(); |
- unsigned texture_id() const { return resource_->gl_id; } |
- GLenum target() const { return resource_->target; } |
- const gfx::Size& texture_size() const { return resource_->size; } |
+ unsigned texture_id() const { return texture_id_; } |
+ GLenum target() const { return target_; } |
+ const gfx::Size& size() const { return size_; } |
- protected: |
+ private: |
ResourceProvider* resource_provider_; |
ResourceId resource_id_; |
- |
- private: |
- const ResourceProvider::Resource* resource_; |
+ unsigned texture_id_; |
+ GLenum target_; |
+ gfx::Size size_; |
DISALLOW_COPY_AND_ASSIGN(ScopedReadLockGL); |
}; |
- class CC_EXPORT ScopedSamplerGL : public ScopedReadLockGL { |
+ class CC_EXPORT ScopedSamplerGL { |
public: |
ScopedSamplerGL(ResourceProvider* resource_provider, |
ResourceId resource_id, |
@@ -241,11 +241,13 @@ class CC_EXPORT ResourceProvider |
ResourceId resource_id, |
GLenum unit, |
GLenum filter); |
- ~ScopedSamplerGL() override; |
+ ~ScopedSamplerGL(); |
+ unsigned texture_id() const { return resource_lock_.texture_id(); } |
GLenum target() const { return target_; } |
private: |
+ ScopedReadLockGL resource_lock_; |
GLenum unit_; |
GLenum target_; |
@@ -255,26 +257,74 @@ class CC_EXPORT ResourceProvider |
class CC_EXPORT ScopedWriteLockGL { |
public: |
ScopedWriteLockGL(ResourceProvider* resource_provider, |
- ResourceId resource_id); |
+ ResourceId resource_id, |
+ bool create_mailbox); |
~ScopedWriteLockGL(); |
unsigned texture_id() const { return texture_id_; } |
+ GLenum target() const { return target_; } |
+ ResourceFormat format() const { return format_; } |
+ const gfx::Size& size() const { return size_; } |
+ |
+ const TextureMailbox& mailbox() const { return mailbox_; } |
- void UpdateResourceSyncToken(const gpu::SyncToken& sync_token) { |
- set_sync_token_ = true; |
+ void set_sync_token(const gpu::SyncToken& sync_token) { |
sync_token_ = sync_token; |
} |
+ void set_synchronized(bool synchronized) { synchronized_ = synchronized; } |
+ |
private: |
ResourceProvider* resource_provider_; |
- ResourceProvider::Resource* resource_; |
+ ResourceId resource_id_; |
unsigned texture_id_; |
- bool set_sync_token_; |
+ GLenum target_; |
+ ResourceFormat format_; |
+ gfx::Size size_; |
+ TextureMailbox mailbox_; |
gpu::SyncToken sync_token_; |
+ bool synchronized_; |
+ base::ThreadChecker thread_checker_; |
DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockGL); |
}; |
+ class CC_EXPORT ScopedTextureProvider { |
+ public: |
+ ScopedTextureProvider(gpu::gles2::GLES2Interface* gl, |
+ ScopedWriteLockGL* resource_lock, |
+ bool use_mailbox); |
+ ~ScopedTextureProvider(); |
+ |
+ unsigned texture_id() const { return texture_id_; } |
+ |
+ private: |
+ gpu::gles2::GLES2Interface* gl_; |
+ bool use_mailbox_; |
+ unsigned texture_id_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ScopedTextureProvider); |
+ }; |
+ |
+ class CC_EXPORT ScopedSkSurfaceProvider { |
+ public: |
+ ScopedSkSurfaceProvider(ContextProvider* context_provider, |
+ ScopedWriteLockGL* resource_lock, |
+ bool use_mailbox, |
+ bool use_distance_field_text, |
+ bool can_use_lcd_text, |
+ int msaa_sample_count); |
+ ~ScopedSkSurfaceProvider(); |
+ |
+ SkSurface* sk_surface() { return sk_surface_.get(); } |
+ |
+ private: |
+ ScopedTextureProvider texture_provider_; |
+ sk_sp<SkSurface> sk_surface_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ScopedSkSurfaceProvider); |
+ }; |
+ |
class CC_EXPORT ScopedReadLockSoftware { |
public: |
ScopedReadLockSoftware(ResourceProvider* resource_provider, |
@@ -307,7 +357,7 @@ class CC_EXPORT ResourceProvider |
private: |
ResourceProvider* resource_provider_; |
- ResourceProvider::Resource* resource_; |
+ ResourceId resource_id_; |
SkBitmap sk_bitmap_; |
base::ThreadChecker thread_checker_; |
@@ -324,7 +374,9 @@ class CC_EXPORT ResourceProvider |
private: |
ResourceProvider* resource_provider_; |
- ResourceProvider::Resource* resource_; |
+ ResourceId resource_id_; |
+ ResourceFormat format_; |
+ gfx::Size size_; |
std::unique_ptr<gfx::GpuMemoryBuffer> gpu_memory_buffer_; |
base::ThreadChecker thread_checker_; |
@@ -337,56 +389,27 @@ class CC_EXPORT ResourceProvider |
ResourceId resource_id); |
~ScopedReadLockGpuMemoryBuffer(); |
+ ResourceId resource_id() const { return resource_id_; } |
+ |
// This may return nullptr. |
- gfx::GpuMemoryBuffer* GetGpuMemoryBuffer() const; |
+ gfx::GpuMemoryBuffer* gpu_memory_buffer() const { |
+ return gpu_memory_buffer_; |
+ } |
// This returns the GL texture that is backed by a GL image bound to the |
// resource's GpuMemoryBuffer. |
- unsigned GetTextureId() const; |
- |
- ResourceId GetResourceId() const; |
+ unsigned texture_id() const { return texture_id_; } |
private: |
ResourceProvider* resource_provider_; |
ResourceId resource_id_; |
- const ResourceProvider::Resource* resource_; |
+ gfx::GpuMemoryBuffer* gpu_memory_buffer_; |
+ unsigned texture_id_; |
base::ThreadChecker thread_checker_; |
DISALLOW_COPY_AND_ASSIGN(ScopedReadLockGpuMemoryBuffer); |
}; |
- class CC_EXPORT ScopedWriteLockGr { |
- public: |
- ScopedWriteLockGr(ResourceProvider* resource_provider, |
- ResourceId resource_id); |
- ~ScopedWriteLockGr(); |
- |
- void InitSkSurface(GrContext* gr_context, |
- bool use_distance_field_text, |
- bool can_use_lcd_text, |
- int msaa_sample_count); |
- void ReleaseSkSurface(); |
- |
- SkSurface* sk_surface() { return sk_surface_.get(); } |
- |
- gfx::Size GetResourceSize() const { return resource_->size; } |
- |
- void UpdateResourceSyncToken(const gpu::SyncToken& sync_token) { |
- set_sync_token_ = true; |
- sync_token_ = sync_token; |
- } |
- |
- private: |
- ResourceProvider* resource_provider_; |
- ResourceProvider::Resource* resource_; |
- base::ThreadChecker thread_checker_; |
- sk_sp<SkSurface> sk_surface_; |
- bool set_sync_token_; |
- gpu::SyncToken sync_token_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockGr); |
- }; |
- |
class Fence : public base::RefCounted<Fence> { |
public: |
Fence() {} |