Chromium Code Reviews| 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) { |
|
David Yen
2016/02/17 21:53:28
From piman@ (originally inside CopyToResource wher
David Yen
2016/02/17 21:54:36
Done. There are probably other places CopyToResour
|
| + 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) { |