Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(218)

Side by Side Diff: cc/resources/resource_provider.h

Issue 1427543002: Modified old wait sync point functions to also accept new sync tokens. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: format Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/resources/release_callback_impl.h ('k') | cc/resources/resource_provider.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CC_RESOURCES_RESOURCE_PROVIDER_H_ 5 #ifndef CC_RESOURCES_RESOURCE_PROVIDER_H_
6 #define CC_RESOURCES_RESOURCE_PROVIDER_H_ 6 #define CC_RESOURCES_RESOURCE_PROVIDER_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 bool ShallowFlushIfSupported(); 155 bool ShallowFlushIfSupported();
156 156
157 // Creates accounting for a child. Returns a child ID. 157 // Creates accounting for a child. Returns a child ID.
158 int CreateChild(const ReturnCallback& return_callback); 158 int CreateChild(const ReturnCallback& return_callback);
159 159
160 // Destroys accounting for the child, deleting all accounted resources. 160 // Destroys accounting for the child, deleting all accounted resources.
161 void DestroyChild(int child); 161 void DestroyChild(int child);
162 162
163 // Sets whether resources need sync points set on them when returned to this 163 // Sets whether resources need sync points set on them when returned to this
164 // child. Defaults to true. 164 // child. Defaults to true.
165 void SetChildNeedsSyncPoints(int child, bool needs_sync_points); 165 void SetChildNeedsSyncTokens(int child, bool needs_sync_tokens);
166 166
167 // Gets the child->parent resource ID map. 167 // Gets the child->parent resource ID map.
168 const ResourceIdMap& GetChildToParentMap(int child) const; 168 const ResourceIdMap& GetChildToParentMap(int child) const;
169 169
170 // Prepares resources to be transfered to the parent, moving them to 170 // Prepares resources to be transfered to the parent, moving them to
171 // mailboxes and serializing meta-data into TransferableResources. 171 // mailboxes and serializing meta-data into TransferableResources.
172 // Resources are not removed from the ResourceProvider, but are marked as 172 // Resources are not removed from the ResourceProvider, but are marked as
173 // "in use". 173 // "in use".
174 void PrepareSendToParent(const ResourceIdArray& resources, 174 void PrepareSendToParent(const ResourceIdArray& resources,
175 TransferableResourceArray* transferable_resources); 175 TransferableResourceArray* transferable_resources);
176 176
177 // Receives resources from a child, moving them from mailboxes. Resource IDs 177 // Receives resources from a child, moving them from mailboxes. Resource IDs
178 // passed are in the child namespace, and will be translated to the parent 178 // passed are in the child namespace, and will be translated to the parent
179 // namespace, added to the child->parent map. 179 // namespace, added to the child->parent map.
180 // This adds the resources to the working set in the ResourceProvider without 180 // This adds the resources to the working set in the ResourceProvider without
181 // declaring which resources are in use. Use DeclareUsedResourcesFromChild 181 // declaring which resources are in use. Use DeclareUsedResourcesFromChild
182 // after calling this method to do that. All calls to ReceiveFromChild should 182 // after calling this method to do that. All calls to ReceiveFromChild should
183 // be followed by a DeclareUsedResourcesFromChild. 183 // be followed by a DeclareUsedResourcesFromChild.
184 // NOTE: if the sync_point is set on any TransferableResource, this will 184 // NOTE: if the sync_token is set on any TransferableResource, this will
185 // wait on it. 185 // wait on it.
186 void ReceiveFromChild( 186 void ReceiveFromChild(
187 int child, const TransferableResourceArray& transferable_resources); 187 int child, const TransferableResourceArray& transferable_resources);
188 188
189 // Once a set of resources have been received, they may or may not be used. 189 // Once a set of resources have been received, they may or may not be used.
190 // This declares what set of resources are currently in use from the child, 190 // This declares what set of resources are currently in use from the child,
191 // releasing any other resources back to the child. 191 // releasing any other resources back to the child.
192 void DeclareUsedResourcesFromChild(int child, 192 void DeclareUsedResourcesFromChild(int child,
193 const ResourceIdSet& resources_from_child); 193 const ResourceIdSet& resources_from_child);
194 194
195 // Receives resources from the parent, moving them from mailboxes. Resource 195 // Receives resources from the parent, moving them from mailboxes. Resource
196 // IDs passed are in the child namespace. 196 // IDs passed are in the child namespace.
197 // NOTE: if the sync_point is set on any TransferableResource, this will 197 // NOTE: if the sync_token is set on any TransferableResource, this will
198 // wait on it. 198 // wait on it.
199 void ReceiveReturnsFromParent( 199 void ReceiveReturnsFromParent(
200 const ReturnedResourceArray& transferable_resources); 200 const ReturnedResourceArray& transferable_resources);
201 201
202 // The following lock classes are part of the ResourceProvider API and are 202 // The following lock classes are part of the ResourceProvider API and are
203 // needed to read and write the resource contents. The user must ensure 203 // needed to read and write the resource contents. The user must ensure
204 // that they only use GL locks on GL resources, etc, and this is enforced 204 // that they only use GL locks on GL resources, etc, and this is enforced
205 // by assertions. 205 // by assertions.
206 class CC_EXPORT ScopedReadLockGL { 206 class CC_EXPORT ScopedReadLockGL {
207 public: 207 public:
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 // and has read fences enabled, the resource will not allow writes 405 // and has read fences enabled, the resource will not allow writes
406 // until this fence has passed. 406 // until this fence has passed.
407 void SetReadLockFence(Fence* fence) { current_read_lock_fence_ = fence; } 407 void SetReadLockFence(Fence* fence) { current_read_lock_fence_ = fence; }
408 408
409 // Indicates if we can currently lock this resource for write. 409 // Indicates if we can currently lock this resource for write.
410 bool CanLockForWrite(ResourceId id); 410 bool CanLockForWrite(ResourceId id);
411 411
412 // Indicates if this resource may be used for a hardware overlay plane. 412 // Indicates if this resource may be used for a hardware overlay plane.
413 bool IsOverlayCandidate(ResourceId id); 413 bool IsOverlayCandidate(ResourceId id);
414 414
415 void WaitSyncPointIfNeeded(ResourceId id); 415 void WaitSyncTokenIfNeeded(ResourceId id);
416 416
417 static GLint GetActiveTextureUnit(gpu::gles2::GLES2Interface* gl); 417 static GLint GetActiveTextureUnit(gpu::gles2::GLES2Interface* gl);
418 418
419 OutputSurface* output_surface() { return output_surface_; } 419 OutputSurface* output_surface() { return output_surface_; }
420 420
421 void ValidateResource(ResourceId id) const; 421 void ValidateResource(ResourceId id) const;
422 422
423 GLenum GetImageTextureTarget(ResourceFormat format); 423 GLenum GetImageTextureTarget(ResourceFormat format);
424 424
425 // base::trace_event::MemoryDumpProvider implementation. 425 // base::trace_event::MemoryDumpProvider implementation.
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 typedef base::hash_map<ResourceId, Resource> ResourceMap; 501 typedef base::hash_map<ResourceId, Resource> ResourceMap;
502 502
503 struct Child { 503 struct Child {
504 Child(); 504 Child();
505 ~Child(); 505 ~Child();
506 506
507 ResourceIdMap child_to_parent_map; 507 ResourceIdMap child_to_parent_map;
508 ResourceIdMap parent_to_child_map; 508 ResourceIdMap parent_to_child_map;
509 ReturnCallback return_callback; 509 ReturnCallback return_callback;
510 bool marked_for_deletion; 510 bool marked_for_deletion;
511 bool needs_sync_points; 511 bool needs_sync_tokens;
512 }; 512 };
513 typedef base::hash_map<int, Child> ChildMap; 513 typedef base::hash_map<int, Child> ChildMap;
514 514
515 bool ReadLockFenceHasPassed(const Resource* resource) { 515 bool ReadLockFenceHasPassed(const Resource* resource) {
516 return !resource->read_lock_fence.get() || 516 return !resource->read_lock_fence.get() ||
517 resource->read_lock_fence->HasPassed(); 517 resource->read_lock_fence->HasPassed();
518 } 518 }
519 519
520 ResourceId CreateGLTexture(const gfx::Size& size, 520 ResourceId CreateGLTexture(const gfx::Size& size,
521 GLenum target, 521 GLenum target,
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 // A process-unique ID used for disambiguating memory dumps from different 592 // A process-unique ID used for disambiguating memory dumps from different
593 // resource providers. 593 // resource providers.
594 int tracing_id_; 594 int tracing_id_;
595 595
596 DISALLOW_COPY_AND_ASSIGN(ResourceProvider); 596 DISALLOW_COPY_AND_ASSIGN(ResourceProvider);
597 }; 597 };
598 598
599 } // namespace cc 599 } // namespace cc
600 600
601 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_ 601 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_
OLDNEW
« no previous file with comments | « cc/resources/release_callback_impl.h ('k') | cc/resources/resource_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698