| 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..80394cd4799e160f4f3fec44b5e19b2ea9bf4f7c 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:
|
| @@ -36,7 +38,7 @@ class CC_EXPORT OneCopyRasterBufferProvider : public RasterBufferProvider {
|
| uint64_t resource_content_id,
|
| uint64_t previous_content_id) override;
|
| void ReleaseBufferForRaster(std::unique_ptr<RasterBuffer> buffer) override;
|
| - void OrderingBarrier() override;
|
| + bool OrderingBarrier() override;
|
| ResourceFormat GetResourceFormat(bool must_support_alpha) const override;
|
| bool GetResourceRequiresSwizzle(bool must_support_alpha) const override;
|
| void Shutdown() override;
|
| @@ -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);
|
| };
|
|
|
|
|