| Index: cc/resources/resource_provider.cc
|
| diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc
|
| index 3105feb6af7a7991ae426339715c3f03c01d6f85..98354a13d49633705455e3366bde13966217c703 100644
|
| --- a/cc/resources/resource_provider.cc
|
| +++ b/cc/resources/resource_provider.cc
|
| @@ -753,6 +753,44 @@ void ResourceProvider::CopyToResource(ResourceId id,
|
| }
|
| }
|
|
|
| +void ResourceProvider::GenerateSyncTokenForResource(ResourceId resource_id) {
|
| + Resource* resource = GetResource(resource_id);
|
| + if (!resource->needs_sync_token())
|
| + return;
|
| +
|
| + gpu::SyncToken sync_token;
|
| + GLES2Interface* gl = ContextGL();
|
| + DCHECK(gl);
|
| +
|
| + const uint64_t fence_sync = gl->InsertFenceSyncCHROMIUM();
|
| + gl->OrderingBarrierCHROMIUM();
|
| + gl->GenUnverifiedSyncTokenCHROMIUM(fence_sync, sync_token.GetData());
|
| +
|
| + resource->UpdateSyncToken(sync_token);
|
| +}
|
| +
|
| +void ResourceProvider::GenerateSyncTokenForResources(
|
| + const ResourceIdArray& resource_ids) {
|
| + gpu::SyncToken sync_token;
|
| + bool created_sync_token = false;
|
| + for (ResourceId id : resource_ids) {
|
| + Resource* resource = GetResource(id);
|
| + if (resource->needs_sync_token()) {
|
| + if (!created_sync_token) {
|
| + GLES2Interface* gl = ContextGL();
|
| + DCHECK(gl);
|
| +
|
| + const uint64_t fence_sync = gl->InsertFenceSyncCHROMIUM();
|
| + gl->OrderingBarrierCHROMIUM();
|
| + gl->GenUnverifiedSyncTokenCHROMIUM(fence_sync, sync_token.GetData());
|
| + created_sync_token = true;
|
| + }
|
| +
|
| + resource->UpdateSyncToken(sync_token);
|
| + }
|
| + }
|
| +}
|
| +
|
| ResourceProvider::Resource* ResourceProvider::InsertResource(
|
| ResourceId id,
|
| const Resource& resource) {
|
|
|