| 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 CCResourceProvider_h | 5 #ifndef CCResourceProvider_h |
| 6 #define CCResourceProvider_h | 6 #define CCResourceProvider_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" |
| 11 #include "cc/cc_export.h" |
| 11 #include "cc/graphics_context.h" | 12 #include "cc/graphics_context.h" |
| 12 #include "cc/texture_copier.h" | 13 #include "cc/texture_copier.h" |
| 13 #include "third_party/khronos/GLES2/gl2.h" | 14 #include "third_party/khronos/GLES2/gl2.h" |
| 14 #include "third_party/skia/include/core/SkBitmap.h" | 15 #include "third_party/skia/include/core/SkBitmap.h" |
| 15 #include "third_party/skia/include/core/SkCanvas.h" | 16 #include "third_party/skia/include/core/SkCanvas.h" |
| 16 #include "ui/gfx/size.h" | 17 #include "ui/gfx/size.h" |
| 17 #include <deque> | 18 #include <deque> |
| 18 #include <vector> | 19 #include <vector> |
| 19 | 20 |
| 20 namespace WebKit { | 21 namespace WebKit { |
| 21 class WebGraphicsContext3D; | 22 class WebGraphicsContext3D; |
| 22 } | 23 } |
| 23 | 24 |
| 24 namespace gfx { | 25 namespace gfx { |
| 25 class Rect; | 26 class Rect; |
| 26 class Vector2d; | 27 class Vector2d; |
| 27 } | 28 } |
| 28 | 29 |
| 29 namespace cc { | 30 namespace cc { |
| 30 | 31 |
| 31 class LayerTextureSubImage; | |
| 32 class TextureCopier; | |
| 33 class TextureUploader; | 32 class TextureUploader; |
| 34 | 33 |
| 35 // Thread-safety notes: this class is not thread-safe and can only be called | 34 // Thread-safety notes: this class is not thread-safe and can only be called |
| 36 // from the thread it was created on (in practice, the compositor thread). | 35 // from the thread it was created on (in practice, the compositor thread). |
| 37 class ResourceProvider { | 36 class CC_EXPORT ResourceProvider { |
| 38 public: | 37 public: |
| 39 typedef unsigned ResourceId; | 38 typedef unsigned ResourceId; |
| 40 typedef std::vector<ResourceId> ResourceIdArray; | 39 typedef std::vector<ResourceId> ResourceIdArray; |
| 41 typedef base::hash_map<ResourceId, ResourceId> ResourceIdMap; | 40 typedef base::hash_map<ResourceId, ResourceId> ResourceIdMap; |
| 42 enum TextureUsageHint { TextureUsageAny, TextureUsageFramebuffer }; | 41 enum TextureUsageHint { TextureUsageAny, TextureUsageFramebuffer }; |
| 43 enum ResourceType { | 42 enum ResourceType { |
| 44 GLTexture = 1, | 43 GLTexture = 1, |
| 45 Bitmap, | 44 Bitmap, |
| 46 }; | 45 }; |
| 47 struct Mailbox { | 46 struct Mailbox { |
| 48 GLbyte name[64]; | 47 GLbyte name[64]; |
| 49 }; | 48 }; |
| 50 struct TransferableResource { | 49 struct TransferableResource { |
| 51 unsigned id; | 50 unsigned id; |
| 52 GLenum format; | 51 GLenum format; |
| 53 gfx::Size size; | 52 gfx::Size size; |
| 54 Mailbox mailbox; | 53 Mailbox mailbox; |
| 55 }; | 54 }; |
| 56 typedef std::vector<TransferableResource> TransferableResourceArray; | 55 typedef std::vector<TransferableResource> TransferableResourceArray; |
| 57 struct TransferableResourceList { | 56 struct CC_EXPORT TransferableResourceList { |
| 58 TransferableResourceList(); | 57 TransferableResourceList(); |
| 59 ~TransferableResourceList(); | 58 ~TransferableResourceList(); |
| 60 | 59 |
| 61 TransferableResourceArray resources; | 60 TransferableResourceArray resources; |
| 62 unsigned syncPoint; | 61 unsigned syncPoint; |
| 63 }; | 62 }; |
| 64 | 63 |
| 65 static scoped_ptr<ResourceProvider> create(GraphicsContext*); | 64 static scoped_ptr<ResourceProvider> create(GraphicsContext*); |
| 66 | 65 |
| 67 virtual ~ResourceProvider(); | 66 virtual ~ResourceProvider(); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 // will wait on it. | 146 // will wait on it. |
| 148 void receiveFromParent(const TransferableResourceList&); | 147 void receiveFromParent(const TransferableResourceList&); |
| 149 | 148 |
| 150 // Only for testing | 149 // Only for testing |
| 151 size_t mailboxCount() const { return m_mailboxes.size(); } | 150 size_t mailboxCount() const { return m_mailboxes.size(); } |
| 152 | 151 |
| 153 // The following lock classes are part of the ResourceProvider API and are | 152 // The following lock classes are part of the ResourceProvider API and are |
| 154 // needed to read and write the resource contents. The user must ensure | 153 // needed to read and write the resource contents. The user must ensure |
| 155 // that they only use GL locks on GL resources, etc, and this is enforced | 154 // that they only use GL locks on GL resources, etc, and this is enforced |
| 156 // by assertions. | 155 // by assertions. |
| 157 class ScopedReadLockGL { | 156 class CC_EXPORT ScopedReadLockGL { |
| 158 public: | 157 public: |
| 159 ScopedReadLockGL(ResourceProvider*, ResourceProvider::ResourceId); | 158 ScopedReadLockGL(ResourceProvider*, ResourceProvider::ResourceId); |
| 160 ~ScopedReadLockGL(); | 159 ~ScopedReadLockGL(); |
| 161 | 160 |
| 162 unsigned textureId() const { return m_textureId; } | 161 unsigned textureId() const { return m_textureId; } |
| 163 | 162 |
| 164 private: | 163 private: |
| 165 ResourceProvider* m_resourceProvider; | 164 ResourceProvider* m_resourceProvider; |
| 166 ResourceProvider::ResourceId m_resourceId; | 165 ResourceProvider::ResourceId m_resourceId; |
| 167 unsigned m_textureId; | 166 unsigned m_textureId; |
| 168 | 167 |
| 169 DISALLOW_COPY_AND_ASSIGN(ScopedReadLockGL); | 168 DISALLOW_COPY_AND_ASSIGN(ScopedReadLockGL); |
| 170 }; | 169 }; |
| 171 | 170 |
| 172 class ScopedWriteLockGL { | 171 class CC_EXPORT ScopedWriteLockGL { |
| 173 public: | 172 public: |
| 174 ScopedWriteLockGL(ResourceProvider*, ResourceProvider::ResourceId); | 173 ScopedWriteLockGL(ResourceProvider*, ResourceProvider::ResourceId); |
| 175 ~ScopedWriteLockGL(); | 174 ~ScopedWriteLockGL(); |
| 176 | 175 |
| 177 unsigned textureId() const { return m_textureId; } | 176 unsigned textureId() const { return m_textureId; } |
| 178 | 177 |
| 179 private: | 178 private: |
| 180 ResourceProvider* m_resourceProvider; | 179 ResourceProvider* m_resourceProvider; |
| 181 ResourceProvider::ResourceId m_resourceId; | 180 ResourceProvider::ResourceId m_resourceId; |
| 182 unsigned m_textureId; | 181 unsigned m_textureId; |
| 183 | 182 |
| 184 DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockGL); | 183 DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockGL); |
| 185 }; | 184 }; |
| 186 | 185 |
| 187 class ScopedReadLockSoftware { | 186 class CC_EXPORT ScopedReadLockSoftware { |
| 188 public: | 187 public: |
| 189 ScopedReadLockSoftware(ResourceProvider*, ResourceProvider::ResourceId); | 188 ScopedReadLockSoftware(ResourceProvider*, ResourceProvider::ResourceId); |
| 190 ~ScopedReadLockSoftware(); | 189 ~ScopedReadLockSoftware(); |
| 191 | 190 |
| 192 const SkBitmap* skBitmap() const { return &m_skBitmap; } | 191 const SkBitmap* skBitmap() const { return &m_skBitmap; } |
| 193 | 192 |
| 194 private: | 193 private: |
| 195 ResourceProvider* m_resourceProvider; | 194 ResourceProvider* m_resourceProvider; |
| 196 ResourceProvider::ResourceId m_resourceId; | 195 ResourceProvider::ResourceId m_resourceId; |
| 197 SkBitmap m_skBitmap; | 196 SkBitmap m_skBitmap; |
| 198 | 197 |
| 199 DISALLOW_COPY_AND_ASSIGN(ScopedReadLockSoftware); | 198 DISALLOW_COPY_AND_ASSIGN(ScopedReadLockSoftware); |
| 200 }; | 199 }; |
| 201 | 200 |
| 202 class ScopedWriteLockSoftware { | 201 class CC_EXPORT ScopedWriteLockSoftware { |
| 203 public: | 202 public: |
| 204 ScopedWriteLockSoftware(ResourceProvider*, ResourceProvider::ResourceId)
; | 203 ScopedWriteLockSoftware(ResourceProvider*, ResourceProvider::ResourceId)
; |
| 205 ~ScopedWriteLockSoftware(); | 204 ~ScopedWriteLockSoftware(); |
| 206 | 205 |
| 207 SkCanvas* skCanvas() { return m_skCanvas.get(); } | 206 SkCanvas* skCanvas() { return m_skCanvas.get(); } |
| 208 | 207 |
| 209 private: | 208 private: |
| 210 ResourceProvider* m_resourceProvider; | 209 ResourceProvider* m_resourceProvider; |
| 211 ResourceProvider::ResourceId m_resourceId; | 210 ResourceProvider::ResourceId m_resourceId; |
| 212 SkBitmap m_skBitmap; | 211 SkBitmap m_skBitmap; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 277 scoped_ptr<TextureUploader> m_textureUploader; | 276 scoped_ptr<TextureUploader> m_textureUploader; |
| 278 scoped_ptr<AcceleratedTextureCopier> m_textureCopier; | 277 scoped_ptr<AcceleratedTextureCopier> m_textureCopier; |
| 279 int m_maxTextureSize; | 278 int m_maxTextureSize; |
| 280 | 279 |
| 281 DISALLOW_COPY_AND_ASSIGN(ResourceProvider); | 280 DISALLOW_COPY_AND_ASSIGN(ResourceProvider); |
| 282 }; | 281 }; |
| 283 | 282 |
| 284 } | 283 } |
| 285 | 284 |
| 286 #endif | 285 #endif |
| OLD | NEW |