| Index: cc/resources/resource_provider.cc
|
| diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc
|
| index 2f5b0a9d7917ea2fd00472cea2992a0c268b67a2..807cbc756fc62cee9cb2ea8aaf3cf5d49499a519 100644
|
| --- a/cc/resources/resource_provider.cc
|
| +++ b/cc/resources/resource_provider.cc
|
| @@ -312,8 +312,7 @@ ResourceProvider::Resource::Resource(const SharedBitmapId& bitmap_id,
|
| gpu_memory_buffer(NULL) {}
|
|
|
| ResourceProvider::Child::Child()
|
| - : marked_for_deletion(false), needs_sync_points(true) {
|
| -}
|
| + : marked_for_deletion(false), needs_sync_tokens(true) {}
|
|
|
| ResourceProvider::Child::~Child() {}
|
|
|
| @@ -562,7 +561,7 @@ void ResourceProvider::DeleteResourceInternal(ResourceMap::iterator it,
|
| }
|
| if (resource->origin == Resource::EXTERNAL) {
|
| DCHECK(resource->mailbox.IsValid());
|
| - GLuint sync_point = resource->mailbox.sync_point();
|
| + gpu::SyncToken sync_token = resource->mailbox.sync_token();
|
| if (resource->type == RESOURCE_TYPE_GL_TEXTURE) {
|
| DCHECK(resource->mailbox.IsTexture());
|
| lost_resource |= lost_output_surface_;
|
| @@ -572,15 +571,15 @@ void ResourceProvider::DeleteResourceInternal(ResourceMap::iterator it,
|
| gl->DeleteTextures(1, &resource->gl_id);
|
| resource->gl_id = 0;
|
| if (!lost_resource)
|
| - sync_point = gl->InsertSyncPointCHROMIUM();
|
| + sync_token = gpu::SyncToken(gl->InsertSyncPointCHROMIUM());
|
| }
|
| } else {
|
| DCHECK(resource->mailbox.IsSharedMemory());
|
| resource->shared_bitmap = nullptr;
|
| resource->pixels = nullptr;
|
| }
|
| - resource->release_callback_impl.Run(
|
| - sync_point, lost_resource, blocking_main_thread_task_runner_);
|
| + resource->release_callback_impl.Run(sync_token, lost_resource,
|
| + blocking_main_thread_task_runner_);
|
| }
|
| if (resource->gl_id) {
|
| GLES2Interface* gl = ContextGL();
|
| @@ -687,9 +686,9 @@ const ResourceProvider::Resource* ResourceProvider::LockForRead(ResourceId id) {
|
| DCHECK(resource->origin != Resource::INTERNAL);
|
| DCHECK(resource->mailbox.IsTexture());
|
|
|
| - // Mailbox sync_points must be processed by a call to
|
| - // WaitSyncPointIfNeeded() prior to calling LockForRead().
|
| - DCHECK(!resource->mailbox.sync_point());
|
| + // Mailbox sync_tokens must be processed by a call to
|
| + // WaitSyncTokenIfNeeded() prior to calling LockForRead().
|
| + DCHECK(!resource->mailbox.sync_token().HasData());
|
|
|
| GLES2Interface* gl = ContextGL();
|
| DCHECK(gl);
|
| @@ -1087,10 +1086,10 @@ int ResourceProvider::CreateChild(const ReturnCallback& return_callback) {
|
| return child;
|
| }
|
|
|
| -void ResourceProvider::SetChildNeedsSyncPoints(int child_id, bool needs) {
|
| +void ResourceProvider::SetChildNeedsSyncTokens(int child_id, bool needs) {
|
| ChildMap::iterator it = children_.find(child_id);
|
| DCHECK(it != children_.end());
|
| - it->second.needs_sync_points = needs;
|
| + it->second.needs_sync_tokens = needs;
|
| }
|
|
|
| void ResourceProvider::DestroyChild(int child_id) {
|
| @@ -1133,25 +1132,25 @@ void ResourceProvider::PrepareSendToParent(const ResourceIdArray& resources,
|
| TransferableResourceArray* list) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| GLES2Interface* gl = ContextGL();
|
| - bool need_sync_point = false;
|
| + bool need_sync_token = false;
|
| for (ResourceIdArray::const_iterator it = resources.begin();
|
| it != resources.end();
|
| ++it) {
|
| TransferableResource resource;
|
| TransferResource(gl, *it, &resource);
|
| - if (!resource.mailbox_holder.sync_point && !resource.is_software)
|
| - need_sync_point = true;
|
| + need_sync_token |= (!resource.mailbox_holder.sync_token.HasData() &&
|
| + !resource.is_software);
|
| ++resources_.find(*it)->second.exported_count;
|
| list->push_back(resource);
|
| }
|
| - if (need_sync_point &&
|
| + if (need_sync_token &&
|
| output_surface_->capabilities().delegated_sync_points_required) {
|
| - GLuint sync_point = gl->InsertSyncPointCHROMIUM();
|
| + gpu::SyncToken sync_token(gl->InsertSyncPointCHROMIUM());
|
| for (TransferableResourceArray::iterator it = list->begin();
|
| it != list->end();
|
| ++it) {
|
| - if (!it->mailbox_holder.sync_point)
|
| - it->mailbox_holder.sync_point = sync_point;
|
| + if (!it->mailbox_holder.sync_token.HasData())
|
| + it->mailbox_holder.sync_token = sync_token;
|
| }
|
| }
|
| }
|
| @@ -1196,8 +1195,8 @@ void ResourceProvider::ReceiveFromChild(
|
| it->mailbox_holder.texture_target, it->filter,
|
| TEXTURE_HINT_IMMUTABLE, it->format));
|
| resource->mailbox = TextureMailbox(it->mailbox_holder.mailbox,
|
| - it->mailbox_holder.texture_target,
|
| - it->mailbox_holder.sync_point);
|
| + it->mailbox_holder.sync_token,
|
| + it->mailbox_holder.texture_target);
|
| resource->read_lock_fences_enabled = it->read_lock_fences_enabled;
|
| resource->is_overlay_candidate = it->is_overlay_candidate;
|
| }
|
| @@ -1255,14 +1254,14 @@ void ResourceProvider::ReceiveReturnsFromParent(
|
| if (resource->exported_count)
|
| continue;
|
|
|
| - if (returned.sync_point) {
|
| + if (returned.sync_token.HasData()) {
|
| DCHECK(!resource->has_shared_bitmap_id);
|
| if (resource->origin == Resource::INTERNAL) {
|
| DCHECK(resource->gl_id);
|
| - gl->WaitSyncPointCHROMIUM(returned.sync_point);
|
| + gl->WaitSyncTokenCHROMIUM(returned.sync_token.GetConstData());
|
| } else {
|
| DCHECK(!resource->gl_id);
|
| - resource->mailbox.set_sync_point(returned.sync_point);
|
| + resource->mailbox.set_sync_token(returned.sync_token);
|
| }
|
| }
|
|
|
| @@ -1334,8 +1333,8 @@ void ResourceProvider::TransferResource(GLES2Interface* gl,
|
| // already exported. Make sure to forward the sync point that we were given.
|
| resource->mailbox_holder.mailbox = source->mailbox.mailbox();
|
| resource->mailbox_holder.texture_target = source->mailbox.target();
|
| - resource->mailbox_holder.sync_point = source->mailbox.sync_point();
|
| - source->mailbox.set_sync_point(0);
|
| + resource->mailbox_holder.sync_token = source->mailbox.sync_token();
|
| + source->mailbox.set_sync_token(gpu::SyncToken());
|
| }
|
| }
|
|
|
| @@ -1353,7 +1352,7 @@ void ResourceProvider::DeleteAndReturnUnusedResourcesToChild(
|
| ReturnedResourceArray to_return;
|
|
|
| GLES2Interface* gl = ContextGL();
|
| - bool need_sync_point = false;
|
| + bool need_sync_token = false;
|
| for (size_t i = 0; i < unused.size(); ++i) {
|
| ResourceId local_id = unused[i];
|
|
|
| @@ -1403,9 +1402,9 @@ void ResourceProvider::DeleteAndReturnUnusedResourcesToChild(
|
|
|
| ReturnedResource returned;
|
| returned.id = child_id;
|
| - returned.sync_point = resource.mailbox.sync_point();
|
| - if (!returned.sync_point && resource.type == RESOURCE_TYPE_GL_TEXTURE)
|
| - need_sync_point = true;
|
| + returned.sync_token = resource.mailbox.sync_token();
|
| + need_sync_token |= (!returned.sync_token.HasData() &&
|
| + resource.type == RESOURCE_TYPE_GL_TEXTURE);
|
| returned.count = resource.imported_count;
|
| returned.lost = is_lost;
|
| to_return.push_back(returned);
|
| @@ -1415,12 +1414,12 @@ void ResourceProvider::DeleteAndReturnUnusedResourcesToChild(
|
| resource.imported_count = 0;
|
| DeleteResourceInternal(it, style);
|
| }
|
| - if (need_sync_point && child_info->needs_sync_points) {
|
| + if (need_sync_token && child_info->needs_sync_tokens) {
|
| DCHECK(gl);
|
| - GLuint sync_point = gl->InsertSyncPointCHROMIUM();
|
| + gpu::SyncToken sync_token(gl->InsertSyncPointCHROMIUM());
|
| for (size_t i = 0; i < to_return.size(); ++i) {
|
| - if (!to_return[i].sync_point)
|
| - to_return[i].sync_point = sync_point;
|
| + if (!to_return[i].sync_token.HasData())
|
| + to_return[i].sync_token = sync_token;
|
| }
|
| }
|
|
|
| @@ -1544,19 +1543,19 @@ void ResourceProvider::BindImageForSampling(Resource* resource) {
|
| resource->dirty_image = false;
|
| }
|
|
|
| -void ResourceProvider::WaitSyncPointIfNeeded(ResourceId id) {
|
| +void ResourceProvider::WaitSyncTokenIfNeeded(ResourceId id) {
|
| Resource* resource = GetResource(id);
|
| DCHECK_EQ(resource->exported_count, 0);
|
| DCHECK(resource->allocated);
|
| if (resource->type != RESOURCE_TYPE_GL_TEXTURE || resource->gl_id)
|
| return;
|
| - if (!resource->mailbox.sync_point())
|
| - return;
|
| - DCHECK(resource->mailbox.IsValid());
|
| - GLES2Interface* gl = ContextGL();
|
| - DCHECK(gl);
|
| - gl->WaitSyncPointCHROMIUM(resource->mailbox.sync_point());
|
| - resource->mailbox.set_sync_point(0);
|
| + if (resource->mailbox.sync_token().HasData()) {
|
| + DCHECK(resource->mailbox.IsValid());
|
| + GLES2Interface* gl = ContextGL();
|
| + DCHECK(gl);
|
| + gl->WaitSyncTokenCHROMIUM(resource->mailbox.sync_token().GetConstData());
|
| + resource->mailbox.set_sync_token(gpu::SyncToken());
|
| + }
|
| }
|
|
|
| GLint ResourceProvider::GetActiveTextureUnit(GLES2Interface* gl) {
|
|
|