| OLD | NEW |
| 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 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 bool ShallowFlushIfSupported(); | 156 bool ShallowFlushIfSupported(); |
| 157 | 157 |
| 158 // Creates accounting for a child. Returns a child ID. | 158 // Creates accounting for a child. Returns a child ID. |
| 159 int CreateChild(const ReturnCallback& return_callback); | 159 int CreateChild(const ReturnCallback& return_callback); |
| 160 | 160 |
| 161 // Destroys accounting for the child, deleting all accounted resources. | 161 // Destroys accounting for the child, deleting all accounted resources. |
| 162 void DestroyChild(int child); | 162 void DestroyChild(int child); |
| 163 | 163 |
| 164 // Sets whether resources need sync points set on them when returned to this | 164 // Sets whether resources need sync points set on them when returned to this |
| 165 // child. Defaults to true. | 165 // child. Defaults to true. |
| 166 void SetChildNeedsSyncPoints(int child, bool needs_sync_points); | 166 void SetChildNeedsSyncTokens(int child, bool needs_sync_tokens); |
| 167 | 167 |
| 168 // Gets the child->parent resource ID map. | 168 // Gets the child->parent resource ID map. |
| 169 const ResourceIdMap& GetChildToParentMap(int child) const; | 169 const ResourceIdMap& GetChildToParentMap(int child) const; |
| 170 | 170 |
| 171 // Prepares resources to be transfered to the parent, moving them to | 171 // Prepares resources to be transfered to the parent, moving them to |
| 172 // mailboxes and serializing meta-data into TransferableResources. | 172 // mailboxes and serializing meta-data into TransferableResources. |
| 173 // Resources are not removed from the ResourceProvider, but are marked as | 173 // Resources are not removed from the ResourceProvider, but are marked as |
| 174 // "in use". | 174 // "in use". |
| 175 void PrepareSendToParent(const ResourceIdArray& resources, | 175 void PrepareSendToParent(const ResourceIdArray& resources, |
| 176 TransferableResourceArray* transferable_resources); | 176 TransferableResourceArray* transferable_resources); |
| 177 | 177 |
| 178 // Receives resources from a child, moving them from mailboxes. Resource IDs | 178 // Receives resources from a child, moving them from mailboxes. Resource IDs |
| 179 // passed are in the child namespace, and will be translated to the parent | 179 // passed are in the child namespace, and will be translated to the parent |
| 180 // namespace, added to the child->parent map. | 180 // namespace, added to the child->parent map. |
| 181 // This adds the resources to the working set in the ResourceProvider without | 181 // This adds the resources to the working set in the ResourceProvider without |
| 182 // declaring which resources are in use. Use DeclareUsedResourcesFromChild | 182 // declaring which resources are in use. Use DeclareUsedResourcesFromChild |
| 183 // after calling this method to do that. All calls to ReceiveFromChild should | 183 // after calling this method to do that. All calls to ReceiveFromChild should |
| 184 // be followed by a DeclareUsedResourcesFromChild. | 184 // be followed by a DeclareUsedResourcesFromChild. |
| 185 // NOTE: if the sync_point is set on any TransferableResource, this will | 185 // NOTE: if the sync_token is set on any TransferableResource, this will |
| 186 // wait on it. | 186 // wait on it. |
| 187 void ReceiveFromChild( | 187 void ReceiveFromChild( |
| 188 int child, const TransferableResourceArray& transferable_resources); | 188 int child, const TransferableResourceArray& transferable_resources); |
| 189 | 189 |
| 190 // Once a set of resources have been received, they may or may not be used. | 190 // Once a set of resources have been received, they may or may not be used. |
| 191 // This declares what set of resources are currently in use from the child, | 191 // This declares what set of resources are currently in use from the child, |
| 192 // releasing any other resources back to the child. | 192 // releasing any other resources back to the child. |
| 193 void DeclareUsedResourcesFromChild(int child, | 193 void DeclareUsedResourcesFromChild(int child, |
| 194 const ResourceIdSet& resources_from_child); | 194 const ResourceIdSet& resources_from_child); |
| 195 | 195 |
| 196 // Receives resources from the parent, moving them from mailboxes. Resource | 196 // Receives resources from the parent, moving them from mailboxes. Resource |
| 197 // IDs passed are in the child namespace. | 197 // IDs passed are in the child namespace. |
| 198 // NOTE: if the sync_point is set on any TransferableResource, this will | 198 // NOTE: if the sync_token is set on any TransferableResource, this will |
| 199 // wait on it. | 199 // wait on it. |
| 200 void ReceiveReturnsFromParent( | 200 void ReceiveReturnsFromParent( |
| 201 const ReturnedResourceArray& transferable_resources); | 201 const ReturnedResourceArray& transferable_resources); |
| 202 | 202 |
| 203 // The following lock classes are part of the ResourceProvider API and are | 203 // The following lock classes are part of the ResourceProvider API and are |
| 204 // needed to read and write the resource contents. The user must ensure | 204 // needed to read and write the resource contents. The user must ensure |
| 205 // that they only use GL locks on GL resources, etc, and this is enforced | 205 // that they only use GL locks on GL resources, etc, and this is enforced |
| 206 // by assertions. | 206 // by assertions. |
| 207 class CC_EXPORT ScopedReadLockGL { | 207 class CC_EXPORT ScopedReadLockGL { |
| 208 public: | 208 public: |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 // and has read fences enabled, the resource will not allow writes | 406 // and has read fences enabled, the resource will not allow writes |
| 407 // until this fence has passed. | 407 // until this fence has passed. |
| 408 void SetReadLockFence(Fence* fence) { current_read_lock_fence_ = fence; } | 408 void SetReadLockFence(Fence* fence) { current_read_lock_fence_ = fence; } |
| 409 | 409 |
| 410 // Indicates if we can currently lock this resource for write. | 410 // Indicates if we can currently lock this resource for write. |
| 411 bool CanLockForWrite(ResourceId id); | 411 bool CanLockForWrite(ResourceId id); |
| 412 | 412 |
| 413 // Indicates if this resource may be used for a hardware overlay plane. | 413 // Indicates if this resource may be used for a hardware overlay plane. |
| 414 bool IsOverlayCandidate(ResourceId id); | 414 bool IsOverlayCandidate(ResourceId id); |
| 415 | 415 |
| 416 void WaitSyncPointIfNeeded(ResourceId id); | 416 void WaitSyncTokenIfNeeded(ResourceId id); |
| 417 | 417 |
| 418 static GLint GetActiveTextureUnit(gpu::gles2::GLES2Interface* gl); | 418 static GLint GetActiveTextureUnit(gpu::gles2::GLES2Interface* gl); |
| 419 | 419 |
| 420 OutputSurface* output_surface() { return output_surface_; } | 420 OutputSurface* output_surface() { return output_surface_; } |
| 421 | 421 |
| 422 void ValidateResource(ResourceId id) const; | 422 void ValidateResource(ResourceId id) const; |
| 423 | 423 |
| 424 GLenum GetImageTextureTarget(ResourceFormat format); | 424 GLenum GetImageTextureTarget(ResourceFormat format); |
| 425 | 425 |
| 426 // base::trace_event::MemoryDumpProvider implementation. | 426 // base::trace_event::MemoryDumpProvider implementation. |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 502 typedef base::hash_map<ResourceId, Resource> ResourceMap; | 502 typedef base::hash_map<ResourceId, Resource> ResourceMap; |
| 503 | 503 |
| 504 struct Child { | 504 struct Child { |
| 505 Child(); | 505 Child(); |
| 506 ~Child(); | 506 ~Child(); |
| 507 | 507 |
| 508 ResourceIdMap child_to_parent_map; | 508 ResourceIdMap child_to_parent_map; |
| 509 ResourceIdMap parent_to_child_map; | 509 ResourceIdMap parent_to_child_map; |
| 510 ReturnCallback return_callback; | 510 ReturnCallback return_callback; |
| 511 bool marked_for_deletion; | 511 bool marked_for_deletion; |
| 512 bool needs_sync_points; | 512 bool needs_sync_tokens; |
| 513 }; | 513 }; |
| 514 typedef base::hash_map<int, Child> ChildMap; | 514 typedef base::hash_map<int, Child> ChildMap; |
| 515 | 515 |
| 516 bool ReadLockFenceHasPassed(const Resource* resource) { | 516 bool ReadLockFenceHasPassed(const Resource* resource) { |
| 517 return !resource->read_lock_fence.get() || | 517 return !resource->read_lock_fence.get() || |
| 518 resource->read_lock_fence->HasPassed(); | 518 resource->read_lock_fence->HasPassed(); |
| 519 } | 519 } |
| 520 | 520 |
| 521 ResourceId CreateGLTexture(const gfx::Size& size, | 521 ResourceId CreateGLTexture(const gfx::Size& size, |
| 522 GLenum target, | 522 GLenum target, |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 593 // A process-unique ID used for disambiguating memory dumps from different | 593 // A process-unique ID used for disambiguating memory dumps from different |
| 594 // resource providers. | 594 // resource providers. |
| 595 int tracing_id_; | 595 int tracing_id_; |
| 596 | 596 |
| 597 DISALLOW_COPY_AND_ASSIGN(ResourceProvider); | 597 DISALLOW_COPY_AND_ASSIGN(ResourceProvider); |
| 598 }; | 598 }; |
| 599 | 599 |
| 600 } // namespace cc | 600 } // namespace cc |
| 601 | 601 |
| 602 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_ | 602 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_ |
| OLD | NEW |