Index: cc/CCResourceProvider.h |
diff --git a/cc/CCResourceProvider.h b/cc/CCResourceProvider.h |
index f515c112daf7330d370d3c838868b5227c41e410..be760bbdec242cdf8d31fb27ec7675206abb5fbf 100644 |
--- a/cc/CCResourceProvider.h |
+++ b/cc/CCResourceProvider.h |
@@ -2,274 +2,5 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef CCResourceProvider_h |
-#define CCResourceProvider_h |
- |
-#include "base/basictypes.h" |
-#include "CCGraphicsContext.h" |
-#include "GraphicsContext3D.h" |
-#include "IntSize.h" |
-#include "SkBitmap.h" |
-#include "SkCanvas.h" |
-#include "TextureCopier.h" |
-#include <wtf/Deque.h> |
-#include <wtf/HashMap.h> |
-#include <wtf/OwnPtr.h> |
-#include <wtf/PassOwnPtr.h> |
-#include <wtf/PassRefPtr.h> |
-#include <wtf/RefPtr.h> |
-#include <wtf/Vector.h> |
- |
-namespace WebKit { |
-class WebGraphicsContext3D; |
-} |
- |
-namespace cc { |
- |
-class IntRect; |
-class LayerTextureSubImage; |
-class TextureCopier; |
-class TextureUploader; |
- |
-// Thread-safety notes: this class is not thread-safe and can only be called |
-// from the thread it was created on (in practice, the compositor thread). |
-class CCResourceProvider { |
-public: |
- typedef unsigned ResourceId; |
- typedef Vector<ResourceId> ResourceIdArray; |
- typedef HashMap<ResourceId, ResourceId> ResourceIdMap; |
- enum TextureUsageHint { TextureUsageAny, TextureUsageFramebuffer }; |
- enum ResourceType { |
- GLTexture = 1, |
- Bitmap, |
- }; |
- struct Mailbox { |
- GC3Dbyte name[64]; |
- }; |
- struct TransferableResource { |
- unsigned id; |
- GC3Denum format; |
- IntSize size; |
- Mailbox mailbox; |
- }; |
- typedef Vector<TransferableResource> TransferableResourceArray; |
- struct TransferableResourceList { |
- TransferableResourceList(); |
- ~TransferableResourceList(); |
- |
- TransferableResourceArray resources; |
- unsigned syncPoint; |
- }; |
- |
- static PassOwnPtr<CCResourceProvider> create(CCGraphicsContext*); |
- |
- virtual ~CCResourceProvider(); |
- |
- WebKit::WebGraphicsContext3D* graphicsContext3D(); |
- TextureUploader* textureUploader() const { return m_textureUploader.get(); } |
- TextureCopier* textureCopier() const { return m_textureCopier.get(); } |
- int maxTextureSize() const { return m_maxTextureSize; } |
- unsigned numResources() const { return m_resources.size(); } |
- |
- // Checks whether a resource is in use by a consumer. |
- bool inUseByConsumer(ResourceId); |
- |
- |
- // Producer interface. |
- |
- void setDefaultResourceType(ResourceType type) { m_defaultResourceType = type; } |
- ResourceType defaultResourceType() const { return m_defaultResourceType; } |
- ResourceType resourceType(ResourceId); |
- |
- // Creates a resource of the default resource type. |
- ResourceId createResource(int pool, const IntSize&, GC3Denum format, TextureUsageHint); |
- |
- // You can also explicitly create a specific resource type. |
- ResourceId createGLTexture(int pool, const IntSize&, GC3Denum format, TextureUsageHint); |
- ResourceId createBitmap(int pool, const IntSize&); |
- // Wraps an external texture into a GL resource. |
- ResourceId createResourceFromExternalTexture(unsigned textureId); |
- |
- void deleteResource(ResourceId); |
- |
- // Deletes all resources owned by a given pool. |
- void deleteOwnedResources(int pool); |
- |
- // Upload data from image, copying sourceRect (in image) into destRect (in the resource). |
- void upload(ResourceId, const uint8_t* image, const IntRect& imageRect, const IntRect& sourceRect, const IntSize& destOffset); |
- |
- // Flush all context operations, kicking uploads and ensuring ordering with |
- // respect to other contexts. |
- void flush(); |
- |
- // Only flush the command buffer if supported. |
- // Returns true if the shallow flush occurred, false otherwise. |
- bool shallowFlushIfSupported(); |
- |
- // Creates accounting for a child, and associate it with a pool. Resources |
- // transfered from that child will go to that pool. Returns a child ID. |
- int createChild(int pool); |
- |
- // Destroys accounting for the child, deleting all resources from that pool. |
- void destroyChild(int child); |
- |
- // Gets the child->parent resource ID map. |
- const ResourceIdMap& getChildToParentMap(int child) const; |
- |
- // Prepares resources to be transfered to the parent, moving them to |
- // mailboxes and serializing meta-data into TransferableResources. |
- // Resources are not removed from the CCResourceProvider, but are markes as |
- // "in use". |
- TransferableResourceList prepareSendToParent(const ResourceIdArray&); |
- |
- // Prepares resources to be transfered back to the child, moving them to |
- // mailboxes and serializing meta-data into TransferableResources. |
- // Resources are removed from the CCResourceProvider. Note: the resource IDs |
- // passed are in the parent namespace and will be translated to the child |
- // namespace when returned. |
- TransferableResourceList prepareSendToChild(int child, const ResourceIdArray&); |
- |
- // Receives resources from a child, moving them from mailboxes. Resource IDs |
- // passed are in the child namespace, and will be translated to the parent |
- // namespace, added to the child->parent map. |
- // NOTE: if the syncPoint filed in TransferableResourceList is set, this |
- // will wait on it. |
- void receiveFromChild(int child, const TransferableResourceList&); |
- |
- // Receives resources from the parent, moving them from mailboxes. Resource IDs |
- // passed are in the child namespace. |
- // NOTE: if the syncPoint filed in TransferableResourceList is set, this |
- // will wait on it. |
- void receiveFromParent(const TransferableResourceList&); |
- |
- // Only for testing |
- size_t mailboxCount() const { return m_mailboxes.size(); } |
- |
- // The following lock classes are part of the CCResourceProvider API and are |
- // needed to read and write the resource contents. The user must ensure |
- // that they only use GL locks on GL resources, etc, and this is enforced |
- // by assertions. |
- class ScopedReadLockGL { |
- public: |
- ScopedReadLockGL(CCResourceProvider*, CCResourceProvider::ResourceId); |
- ~ScopedReadLockGL(); |
- |
- unsigned textureId() const { return m_textureId; } |
- |
- private: |
- CCResourceProvider* m_resourceProvider; |
- CCResourceProvider::ResourceId m_resourceId; |
- unsigned m_textureId; |
- |
- DISALLOW_COPY_AND_ASSIGN(ScopedReadLockGL); |
- }; |
- |
- class ScopedWriteLockGL { |
- public: |
- ScopedWriteLockGL(CCResourceProvider*, CCResourceProvider::ResourceId); |
- ~ScopedWriteLockGL(); |
- |
- unsigned textureId() const { return m_textureId; } |
- |
- private: |
- CCResourceProvider* m_resourceProvider; |
- CCResourceProvider::ResourceId m_resourceId; |
- unsigned m_textureId; |
- |
- DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockGL); |
- }; |
- |
- class ScopedReadLockSoftware { |
- public: |
- ScopedReadLockSoftware(CCResourceProvider*, CCResourceProvider::ResourceId); |
- ~ScopedReadLockSoftware(); |
- |
- const SkBitmap* skBitmap() const { return &m_skBitmap; } |
- |
- private: |
- CCResourceProvider* m_resourceProvider; |
- CCResourceProvider::ResourceId m_resourceId; |
- SkBitmap m_skBitmap; |
- |
- DISALLOW_COPY_AND_ASSIGN(ScopedReadLockSoftware); |
- }; |
- |
- class ScopedWriteLockSoftware { |
- public: |
- ScopedWriteLockSoftware(CCResourceProvider*, CCResourceProvider::ResourceId); |
- ~ScopedWriteLockSoftware(); |
- |
- SkCanvas* skCanvas() { return m_skCanvas.get(); } |
- |
- private: |
- CCResourceProvider* m_resourceProvider; |
- CCResourceProvider::ResourceId m_resourceId; |
- SkBitmap m_skBitmap; |
- OwnPtr<SkCanvas> m_skCanvas; |
- |
- DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockSoftware); |
- }; |
- |
-private: |
- struct Resource { |
- Resource(); |
- Resource(unsigned textureId, int pool, const IntSize& size, GC3Denum format); |
- Resource(uint8_t* pixels, int pool, const IntSize& size, GC3Denum format); |
- |
- unsigned glId; |
- uint8_t* pixels; |
- int pool; |
- int lockForReadCount; |
- bool lockedForWrite; |
- bool external; |
- bool exported; |
- IntSize size; |
- GC3Denum format; |
- ResourceType type; |
- }; |
- typedef HashMap<ResourceId, Resource> ResourceMap; |
- struct Child { |
- Child(); |
- ~Child(); |
- |
- int pool; |
- ResourceIdMap childToParentMap; |
- ResourceIdMap parentToChildMap; |
- }; |
- typedef HashMap<int, Child> ChildMap; |
- |
- explicit CCResourceProvider(CCGraphicsContext*); |
- bool initialize(); |
- |
- const Resource* lockForRead(ResourceId); |
- void unlockForRead(ResourceId); |
- const Resource* lockForWrite(ResourceId); |
- void unlockForWrite(ResourceId); |
- static void populateSkBitmapWithResource(SkBitmap*, const Resource*); |
- |
- bool transferResource(WebKit::WebGraphicsContext3D*, ResourceId, TransferableResource*); |
- void trimMailboxDeque(); |
- |
- CCGraphicsContext* m_context; |
- ResourceId m_nextId; |
- ResourceMap m_resources; |
- int m_nextChild; |
- ChildMap m_children; |
- |
- Deque<Mailbox> m_mailboxes; |
- |
- ResourceType m_defaultResourceType; |
- bool m_useTextureStorageExt; |
- bool m_useTextureUsageHint; |
- bool m_useShallowFlush; |
- OwnPtr<LayerTextureSubImage> m_texSubImage; |
- OwnPtr<TextureUploader> m_textureUploader; |
- OwnPtr<AcceleratedTextureCopier> m_textureCopier; |
- int m_maxTextureSize; |
- |
- DISALLOW_COPY_AND_ASSIGN(CCResourceProvider); |
-}; |
- |
-} |
- |
-#endif |
+// Temporary forwarding header |
+#include "cc/resource_provider.h" |