| Index: cc/raster/one_copy_raster_buffer_provider.h
|
| diff --git a/cc/raster/one_copy_raster_buffer_provider.h b/cc/raster/one_copy_raster_buffer_provider.h
|
| index d30c3b59a6f8dc472305745898bcb8c32163630a..44ceb7a744418e5ec398d4c8b78699ce467a02b2 100644
|
| --- a/cc/raster/one_copy_raster_buffer_provider.h
|
| +++ b/cc/raster/one_copy_raster_buffer_provider.h
|
| @@ -12,6 +12,7 @@
|
| #include "cc/raster/raster_buffer_provider.h"
|
| #include "cc/raster/staging_buffer_pool.h"
|
| #include "cc/resources/resource_provider.h"
|
| +#include "gpu/command_buffer/common/sync_token.h"
|
|
|
| namespace cc {
|
| struct StagingBuffer;
|
| @@ -27,7 +28,8 @@ class CC_EXPORT OneCopyRasterBufferProvider : public RasterBufferProvider {
|
| int max_copy_texture_chromium_size,
|
| bool use_partial_raster,
|
| int max_staging_buffer_usage_in_bytes,
|
| - ResourceFormat preferred_tile_format);
|
| + ResourceFormat preferred_tile_format,
|
| + bool async_worker_context_enabled);
|
| ~OneCopyRasterBufferProvider() override;
|
|
|
| // Overridden from RasterBufferProvider:
|
| @@ -45,6 +47,7 @@ class CC_EXPORT OneCopyRasterBufferProvider : public RasterBufferProvider {
|
| void PlaybackAndCopyOnWorkerThread(
|
| const Resource* resource,
|
| ResourceProvider::ScopedWriteLockGL* resource_lock,
|
| + const gpu::SyncToken& sync_token,
|
| const RasterSource* raster_source,
|
| const gfx::Rect& raster_full_rect,
|
| const gfx::Rect& raster_dirty_rect,
|
| @@ -54,6 +57,39 @@ class CC_EXPORT OneCopyRasterBufferProvider : public RasterBufferProvider {
|
| uint64_t new_content_id);
|
|
|
| private:
|
| + class RasterBufferImpl : public RasterBuffer {
|
| + public:
|
| + RasterBufferImpl(OneCopyRasterBufferProvider* client,
|
| + ResourceProvider* resource_provider,
|
| + const Resource* resource,
|
| + uint64_t previous_content_id,
|
| + bool async_worker_context_enabled);
|
| + ~RasterBufferImpl() override;
|
| +
|
| + // Overridden from RasterBuffer:
|
| + void Playback(
|
| + const RasterSource* raster_source,
|
| + const gfx::Rect& raster_full_rect,
|
| + const gfx::Rect& raster_dirty_rect,
|
| + uint64_t new_content_id,
|
| + float scale,
|
| + const RasterSource::PlaybackSettings& playback_settings) override;
|
| +
|
| + void set_sync_token(const gpu::SyncToken& sync_token) {
|
| + sync_token_ = sync_token;
|
| + }
|
| +
|
| + private:
|
| + OneCopyRasterBufferProvider* client_;
|
| + const Resource* resource_;
|
| + ResourceProvider::ScopedWriteLockGL lock_;
|
| + uint64_t previous_content_id_;
|
| +
|
| + gpu::SyncToken sync_token_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(RasterBufferImpl);
|
| + };
|
| +
|
| void PlaybackToStagingBuffer(
|
| StagingBuffer* staging_buffer,
|
| const Resource* resource,
|
| @@ -65,8 +101,8 @@ class CC_EXPORT OneCopyRasterBufferProvider : public RasterBufferProvider {
|
| uint64_t previous_content_id,
|
| uint64_t new_content_id);
|
| void CopyOnWorkerThread(StagingBuffer* staging_buffer,
|
| - const Resource* resource,
|
| ResourceProvider::ScopedWriteLockGL* resource_lock,
|
| + const gpu::SyncToken& sync_token,
|
| const RasterSource* raster_source,
|
| uint64_t previous_content_id,
|
| uint64_t new_content_id);
|
| @@ -75,14 +111,18 @@ class CC_EXPORT OneCopyRasterBufferProvider : public RasterBufferProvider {
|
| ContextProvider* const worker_context_provider_;
|
| ResourceProvider* const resource_provider_;
|
| const int max_bytes_per_copy_operation_;
|
| - bool use_partial_raster_;
|
| + const bool use_partial_raster_;
|
|
|
| // Context lock must be acquired when accessing this member.
|
| int bytes_scheduled_since_last_flush_;
|
|
|
| - ResourceFormat preferred_tile_format_;
|
| + const ResourceFormat preferred_tile_format_;
|
| StagingBufferPool staging_pool_;
|
|
|
| + const bool async_worker_context_enabled_;
|
| +
|
| + std::set<RasterBufferImpl*> pending_raster_buffers_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(OneCopyRasterBufferProvider);
|
| };
|
|
|
|
|