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

Side by Side Diff: cc/resource_provider.h

Issue 11266030: Use gfx:: Geometry types for the resource provider and layer updater classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: uint8 Created 8 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 | Annotate | Revision Log
« no previous file with comments | « cc/prioritized_texture_unittest.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 CCResourceProvider_h 5 #ifndef CCResourceProvider_h
6 #define CCResourceProvider_h 6 #define CCResourceProvider_h
7 7
8 #include "IntSize.h"
9 #include "base/basictypes.h" 8 #include "base/basictypes.h"
10 #include "base/hash_tables.h" 9 #include "base/hash_tables.h"
11 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
12 #include "cc/graphics_context.h" 11 #include "cc/graphics_context.h"
13 #include "cc/texture_copier.h" 12 #include "cc/texture_copier.h"
14 #include "third_party/khronos/GLES2/gl2.h" 13 #include "third_party/khronos/GLES2/gl2.h"
15 #include "third_party/skia/include/core/SkBitmap.h" 14 #include "third_party/skia/include/core/SkBitmap.h"
16 #include "third_party/skia/include/core/SkCanvas.h" 15 #include "third_party/skia/include/core/SkCanvas.h"
16 #include "ui/gfx/size.h"
17 #include <deque> 17 #include <deque>
18 #include <vector> 18 #include <vector>
19 19
20 namespace WebKit { 20 namespace WebKit {
21 class WebGraphicsContext3D; 21 class WebGraphicsContext3D;
22 } 22 }
23 23
24 namespace gfx {
25 class Rect;
26 class Vector2d;
27 }
28
24 namespace cc { 29 namespace cc {
25 30
26 class IntRect;
27 class LayerTextureSubImage; 31 class LayerTextureSubImage;
28 class TextureCopier; 32 class TextureCopier;
29 class TextureUploader; 33 class TextureUploader;
30 34
31 // Thread-safety notes: this class is not thread-safe and can only be called 35 // Thread-safety notes: this class is not thread-safe and can only be called
32 // from the thread it was created on (in practice, the compositor thread). 36 // from the thread it was created on (in practice, the compositor thread).
33 class ResourceProvider { 37 class ResourceProvider {
34 public: 38 public:
35 typedef unsigned ResourceId; 39 typedef unsigned ResourceId;
36 typedef std::vector<ResourceId> ResourceIdArray; 40 typedef std::vector<ResourceId> ResourceIdArray;
37 typedef base::hash_map<ResourceId, ResourceId> ResourceIdMap; 41 typedef base::hash_map<ResourceId, ResourceId> ResourceIdMap;
38 enum TextureUsageHint { TextureUsageAny, TextureUsageFramebuffer }; 42 enum TextureUsageHint { TextureUsageAny, TextureUsageFramebuffer };
39 enum ResourceType { 43 enum ResourceType {
40 GLTexture = 1, 44 GLTexture = 1,
41 Bitmap, 45 Bitmap,
42 }; 46 };
43 struct Mailbox { 47 struct Mailbox {
44 GLbyte name[64]; 48 GLbyte name[64];
45 }; 49 };
46 struct TransferableResource { 50 struct TransferableResource {
47 unsigned id; 51 unsigned id;
48 GLenum format; 52 GLenum format;
49 IntSize size; 53 gfx::Size size;
50 Mailbox mailbox; 54 Mailbox mailbox;
51 }; 55 };
52 typedef std::vector<TransferableResource> TransferableResourceArray; 56 typedef std::vector<TransferableResource> TransferableResourceArray;
53 struct TransferableResourceList { 57 struct TransferableResourceList {
54 TransferableResourceList(); 58 TransferableResourceList();
55 ~TransferableResourceList(); 59 ~TransferableResourceList();
56 60
57 TransferableResourceArray resources; 61 TransferableResourceArray resources;
58 unsigned syncPoint; 62 unsigned syncPoint;
59 }; 63 };
(...skipping 11 matching lines...) Expand all
71 bool inUseByConsumer(ResourceId); 75 bool inUseByConsumer(ResourceId);
72 76
73 77
74 // Producer interface. 78 // Producer interface.
75 79
76 void setDefaultResourceType(ResourceType type) { m_defaultResourceType = typ e; } 80 void setDefaultResourceType(ResourceType type) { m_defaultResourceType = typ e; }
77 ResourceType defaultResourceType() const { return m_defaultResourceType; } 81 ResourceType defaultResourceType() const { return m_defaultResourceType; }
78 ResourceType resourceType(ResourceId); 82 ResourceType resourceType(ResourceId);
79 83
80 // Creates a resource of the default resource type. 84 // Creates a resource of the default resource type.
81 ResourceId createResource(int pool, const IntSize&, GLenum format, TextureUs ageHint); 85 ResourceId createResource(int pool, const gfx::Size&, GLenum format, Texture UsageHint);
82 86
83 // You can also explicitly create a specific resource type. 87 // You can also explicitly create a specific resource type.
84 ResourceId createGLTexture(int pool, const IntSize&, GLenum format, TextureU sageHint); 88 ResourceId createGLTexture(int pool, const gfx::Size&, GLenum format, Textur eUsageHint);
85 ResourceId createBitmap(int pool, const IntSize&); 89 ResourceId createBitmap(int pool, const gfx::Size&);
86 // Wraps an external texture into a GL resource. 90 // Wraps an external texture into a GL resource.
87 ResourceId createResourceFromExternalTexture(unsigned textureId); 91 ResourceId createResourceFromExternalTexture(unsigned textureId);
88 92
89 void deleteResource(ResourceId); 93 void deleteResource(ResourceId);
90 94
91 // Deletes all resources owned by a given pool. 95 // Deletes all resources owned by a given pool.
92 void deleteOwnedResources(int pool); 96 void deleteOwnedResources(int pool);
93 97
94 // Upload data from image, copying sourceRect (in image) into destRect (in t he resource). 98 // Upload data from image, copying sourceRect (in image) into destRect (in t he resource).
95 void upload(ResourceId, const uint8_t* image, const IntRect& imageRect, cons t IntRect& sourceRect, const IntSize& destOffset); 99 void upload(ResourceId, const uint8_t* image, const gfx::Rect& imageRect, co nst gfx::Rect& sourceRect, const gfx::Vector2d& destOffset);
96 100
97 // Check upload status. 101 // Check upload status.
98 size_t numBlockingUploads(); 102 size_t numBlockingUploads();
99 void markPendingUploadsAsNonBlocking(); 103 void markPendingUploadsAsNonBlocking();
100 double estimatedUploadsPerSecond(); 104 double estimatedUploadsPerSecond();
101 105
102 // Flush all context operations, kicking uploads and ensuring ordering with 106 // Flush all context operations, kicking uploads and ensuring ordering with
103 // respect to other contexts. 107 // respect to other contexts.
104 void flush(); 108 void flush();
105 109
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 }; 216 };
213 217
214 // Temporary functions for debugging crashes in issue 151428 in canary. 218 // Temporary functions for debugging crashes in issue 151428 in canary.
215 // Do not use these! 219 // Do not use these!
216 static void debugNotifyEnterZone(unsigned int index); 220 static void debugNotifyEnterZone(unsigned int index);
217 static void debugNotifyLeaveZone(); 221 static void debugNotifyLeaveZone();
218 222
219 private: 223 private:
220 struct Resource { 224 struct Resource {
221 Resource(); 225 Resource();
222 Resource(unsigned textureId, int pool, const IntSize& size, GLenum forma t); 226 Resource(unsigned textureId, int pool, const gfx::Size& size, GLenum for mat);
223 Resource(uint8_t* pixels, int pool, const IntSize& size, GLenum format); 227 Resource(uint8_t* pixels, int pool, const gfx::Size& size, GLenum format );
224 228
225 unsigned glId; 229 unsigned glId;
226 uint8_t* pixels; 230 uint8_t* pixels;
227 int pool; 231 int pool;
228 int lockForReadCount; 232 int lockForReadCount;
229 bool lockedForWrite; 233 bool lockedForWrite;
230 bool external; 234 bool external;
231 bool exported; 235 bool exported;
232 bool markedForDeletion; 236 bool markedForDeletion;
233 IntSize size; 237 gfx::Size size;
234 GLenum format; 238 GLenum format;
235 ResourceType type; 239 ResourceType type;
236 }; 240 };
237 typedef base::hash_map<ResourceId, Resource> ResourceMap; 241 typedef base::hash_map<ResourceId, Resource> ResourceMap;
238 struct Child { 242 struct Child {
239 Child(); 243 Child();
240 ~Child(); 244 ~Child();
241 245
242 int pool; 246 int pool;
243 ResourceIdMap childToParentMap; 247 ResourceIdMap childToParentMap;
(...skipping 29 matching lines...) Expand all
273 scoped_ptr<TextureUploader> m_textureUploader; 277 scoped_ptr<TextureUploader> m_textureUploader;
274 scoped_ptr<AcceleratedTextureCopier> m_textureCopier; 278 scoped_ptr<AcceleratedTextureCopier> m_textureCopier;
275 int m_maxTextureSize; 279 int m_maxTextureSize;
276 280
277 DISALLOW_COPY_AND_ASSIGN(ResourceProvider); 281 DISALLOW_COPY_AND_ASSIGN(ResourceProvider);
278 }; 282 };
279 283
280 } 284 }
281 285
282 #endif 286 #endif
OLDNEW
« no previous file with comments | « cc/prioritized_texture_unittest.cc ('k') | cc/resource_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698