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

Side by Side Diff: cc/resource_provider.h

Issue 11578019: Remove the pools from the ResourceProvider. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Re-resolve against HEAD Created 8 years 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 | Annotate | Revision Log
« no previous file with comments | « cc/resource_pool.cc ('k') | cc/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_RESOURCE_PROVIDER_H_ 5 #ifndef CC_RESOURCE_PROVIDER_H_
6 #define CC_RESOURCE_PROVIDER_H_ 6 #define CC_RESOURCE_PROVIDER_H_
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/hash_tables.h" 9 #include "base/hash_tables.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 22 matching lines...) Expand all
33 33
34 class TextureUploader; 34 class TextureUploader;
35 35
36 // This class is not thread-safe and can only be called from the thread it was 36 // This class is not thread-safe and can only be called from the thread it was
37 // created on (in practice, the impl thread). 37 // created on (in practice, the impl thread).
38 class CC_EXPORT ResourceProvider { 38 class CC_EXPORT ResourceProvider {
39 public: 39 public:
40 typedef unsigned ResourceId; 40 typedef unsigned ResourceId;
41 typedef std::vector<ResourceId> ResourceIdArray; 41 typedef std::vector<ResourceId> ResourceIdArray;
42 typedef base::hash_map<ResourceId, ResourceId> ResourceIdMap; 42 typedef base::hash_map<ResourceId, ResourceId> ResourceIdMap;
43 enum TextureUsageHint { TextureUsageAny, TextureUsageFramebuffer }; 43 enum TextureUsageHint {
44 TextureUsageAny,
45 TextureUsageFramebuffer,
46 };
44 enum ResourceType { 47 enum ResourceType {
45 GLTexture = 1, 48 GLTexture = 1,
46 Bitmap, 49 Bitmap,
47 }; 50 };
48 51
49 static scoped_ptr<ResourceProvider> create(OutputSurface*); 52 static scoped_ptr<ResourceProvider> create(OutputSurface*);
50 53
51 virtual ~ResourceProvider(); 54 virtual ~ResourceProvider();
52 55
53 WebKit::WebGraphicsContext3D* graphicsContext3D(); 56 WebKit::WebGraphicsContext3D* graphicsContext3D();
54 TextureCopier* textureCopier() const { return m_textureCopier.get(); } 57 TextureCopier* textureCopier() const { return m_textureCopier.get(); }
55 int maxTextureSize() const { return m_maxTextureSize; } 58 int maxTextureSize() const { return m_maxTextureSize; }
56 GLenum bestTextureFormat() const { return m_bestTextureFormat; } 59 GLenum bestTextureFormat() const { return m_bestTextureFormat; }
57 unsigned numResources() const { return m_resources.size(); } 60 unsigned numResources() const { return m_resources.size(); }
58 61
59 // Checks whether a resource is in use by a consumer. 62 // Checks whether a resource is in use by a consumer.
60 bool inUseByConsumer(ResourceId); 63 bool inUseByConsumer(ResourceId);
61 64
62 65
63 // Producer interface. 66 // Producer interface.
64 67
65 void setDefaultResourceType(ResourceType type) { m_defaultResourceType = typ e; } 68 void setDefaultResourceType(ResourceType type) { m_defaultResourceType = typ e; }
66 ResourceType defaultResourceType() const { return m_defaultResourceType; } 69 ResourceType defaultResourceType() const { return m_defaultResourceType; }
67 ResourceType resourceType(ResourceId); 70 ResourceType resourceType(ResourceId);
68 71
69 // Creates a resource of the default resource type. 72 // Creates a resource of the default resource type.
70 ResourceId createResource(int pool, const gfx::Size&, GLenum format, Texture UsageHint); 73 ResourceId createResource(const gfx::Size&, GLenum format, TextureUsageHint) ;
71 74
72 // You can also explicitly create a specific resource type. 75 // You can also explicitly create a specific resource type.
73 ResourceId createGLTexture(int pool, const gfx::Size&, GLenum format, Textur eUsageHint); 76 ResourceId createGLTexture(const gfx::Size&, GLenum format, TextureUsageHint );
74 ResourceId createBitmap(int pool, const gfx::Size&); 77 ResourceId createBitmap(const gfx::Size&);
75 // Wraps an external texture into a GL resource. 78 // Wraps an external texture into a GL resource.
76 ResourceId createResourceFromExternalTexture(unsigned textureId); 79 ResourceId createResourceFromExternalTexture(unsigned textureId);
77 80
78 void deleteResource(ResourceId); 81 void deleteResource(ResourceId);
79 82
80 // Deletes all resources owned by a given pool.
81 void deleteOwnedResources(int pool);
82
83 // Update pixels from image, copying sourceRect (in image) into destRect (in the resource). 83 // Update pixels from image, copying sourceRect (in image) into destRect (in the resource).
84 void setPixels(ResourceId, const uint8_t* image, const gfx::Rect& imageRect, const gfx::Rect& sourceRect, const gfx::Vector2d& destOffset); 84 void setPixels(ResourceId, const uint8_t* image, const gfx::Rect& imageRect, const gfx::Rect& sourceRect, const gfx::Vector2d& destOffset);
85 85
86 // Check upload status. 86 // Check upload status.
87 size_t numBlockingUploads(); 87 size_t numBlockingUploads();
88 void markPendingUploadsAsNonBlocking(); 88 void markPendingUploadsAsNonBlocking();
89 double estimatedUploadsPerSecond(); 89 double estimatedUploadsPerSecond();
90 void flushUploads(); 90 void flushUploads();
91 91
92 // Flush all context operations, kicking uploads and ensuring ordering with 92 // Flush all context operations, kicking uploads and ensuring ordering with
93 // respect to other contexts. 93 // respect to other contexts.
94 void flush(); 94 void flush();
95 95
96 // Only flush the command buffer if supported. 96 // Only flush the command buffer if supported.
97 // Returns true if the shallow flush occurred, false otherwise. 97 // Returns true if the shallow flush occurred, false otherwise.
98 bool shallowFlushIfSupported(); 98 bool shallowFlushIfSupported();
99 99
100 // Creates accounting for a child, and associate it with a pool. Resources 100 // Creates accounting for a child. Returns a child ID.
101 // transfered from that child will go to that pool. Returns a child ID. 101 int createChild();
102 int createChild(int pool);
103 102
104 // Destroys accounting for the child, deleting all resources from that pool. 103 // Destroys accounting for the child, deleting all accounted resources.
105 void destroyChild(int child); 104 void destroyChild(int child);
106 105
107 // Gets the child->parent resource ID map. 106 // Gets the child->parent resource ID map.
108 const ResourceIdMap& getChildToParentMap(int child) const; 107 const ResourceIdMap& getChildToParentMap(int child) const;
109 108
110 // Prepares resources to be transfered to the parent, moving them to 109 // Prepares resources to be transfered to the parent, moving them to
111 // mailboxes and serializing meta-data into TransferableResources. 110 // mailboxes and serializing meta-data into TransferableResources.
112 // Resources are not removed from the ResourceProvider, but are marked as 111 // Resources are not removed from the ResourceProvider, but are marked as
113 // "in use". 112 // "in use".
114 void prepareSendToParent(const ResourceIdArray&, TransferableResourceList*); 113 void prepareSendToParent(const ResourceIdArray&, TransferableResourceList*);
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 // Update pixels from acquired pixel buffer. 222 // Update pixels from acquired pixel buffer.
224 void setPixelsFromBuffer(ResourceId id); 223 void setPixelsFromBuffer(ResourceId id);
225 224
226 // Asynchronously update pixels from acquired pixel buffer. 225 // Asynchronously update pixels from acquired pixel buffer.
227 void beginSetPixels(ResourceId id); 226 void beginSetPixels(ResourceId id);
228 bool didSetPixelsComplete(ResourceId id); 227 bool didSetPixelsComplete(ResourceId id);
229 228
230 private: 229 private:
231 struct Resource { 230 struct Resource {
232 Resource(); 231 Resource();
233 Resource(unsigned textureId, int pool, const gfx::Size& size, GLenum for mat, GLenum filter); 232 Resource(unsigned textureId, const gfx::Size& size, GLenum format, GLenu m filter);
234 Resource(uint8_t* pixels, int pool, const gfx::Size& size, GLenum format , GLenum filter); 233 Resource(uint8_t* pixels, const gfx::Size& size, GLenum format, GLenum f ilter);
235 234
236 unsigned glId; 235 unsigned glId;
237 // Pixel buffer used for set pixels without unnecessary copying. 236 // Pixel buffer used for set pixels without unnecessary copying.
238 unsigned glPixelBufferId; 237 unsigned glPixelBufferId;
239 // Query used to determine when asynchronous set pixels complete. 238 // Query used to determine when asynchronous set pixels complete.
240 unsigned glUploadQueryId; 239 unsigned glUploadQueryId;
241 Mailbox mailbox; 240 Mailbox mailbox;
242 uint8_t* pixels; 241 uint8_t* pixels;
243 uint8_t* pixelBuffer; 242 uint8_t* pixelBuffer;
244 int pool;
245 int lockForReadCount; 243 int lockForReadCount;
246 bool lockedForWrite; 244 bool lockedForWrite;
247 bool external; 245 bool external;
248 bool exported; 246 bool exported;
249 bool markedForDeletion; 247 bool markedForDeletion;
250 bool pendingSetPixels; 248 bool pendingSetPixels;
251 gfx::Size size; 249 gfx::Size size;
252 GLenum format; 250 GLenum format;
253 // TODO(skyostil): Use a separate sampler object for filter state. 251 // TODO(skyostil): Use a separate sampler object for filter state.
254 GLenum filter; 252 GLenum filter;
255 ResourceType type; 253 ResourceType type;
256 }; 254 };
257 typedef base::hash_map<ResourceId, Resource> ResourceMap; 255 typedef base::hash_map<ResourceId, Resource> ResourceMap;
258 struct Child { 256 struct Child {
259 Child(); 257 Child();
260 ~Child(); 258 ~Child();
261 259
262 int pool;
263 ResourceIdMap childToParentMap; 260 ResourceIdMap childToParentMap;
264 ResourceIdMap parentToChildMap; 261 ResourceIdMap parentToChildMap;
265 }; 262 };
266 typedef base::hash_map<int, Child> ChildMap; 263 typedef base::hash_map<int, Child> ChildMap;
267 264
268 explicit ResourceProvider(OutputSurface*); 265 explicit ResourceProvider(OutputSurface*);
269 bool initialize(); 266 bool initialize();
270 267
271 const Resource* lockForRead(ResourceId); 268 const Resource* lockForRead(ResourceId);
272 void unlockForRead(ResourceId); 269 void unlockForRead(ResourceId);
(...skipping 20 matching lines...) Expand all
293 GLenum m_bestTextureFormat; 290 GLenum m_bestTextureFormat;
294 291
295 base::ThreadChecker m_threadChecker; 292 base::ThreadChecker m_threadChecker;
296 293
297 DISALLOW_COPY_AND_ASSIGN(ResourceProvider); 294 DISALLOW_COPY_AND_ASSIGN(ResourceProvider);
298 }; 295 };
299 296
300 } 297 }
301 298
302 #endif // CC_RESOURCE_PROVIDER_H_ 299 #endif // CC_RESOURCE_PROVIDER_H_
OLDNEW
« no previous file with comments | « cc/resource_pool.cc ('k') | cc/resource_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698