summaryrefslogtreecommitdiffstats
path: root/cc/CCResourceProvider.h
diff options
context:
space:
mode:
authorenne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-12 22:43:41 +0000
committerenne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-12 22:43:41 +0000
commitcd57cc5a246367c2558fefa04ae9eca8f4d545d2 (patch)
treea2235045e9c5e4ff028d641b76f5d01aa5461b26 /cc/CCResourceProvider.h
parent3fe7ba055be580443445895c0ee01ada3b628487 (diff)
downloadchromium_src-cd57cc5a246367c2558fefa04ae9eca8f4d545d2.zip
chromium_src-cd57cc5a246367c2558fefa04ae9eca8f4d545d2.tar.gz
chromium_src-cd57cc5a246367c2558fefa04ae9eca8f4d545d2.tar.bz2
[cc] Rename all cc/ filenames to Chromium style
BUG=155413 Review URL: https://codereview.chromium.org/11122003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161671 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/CCResourceProvider.h')
-rw-r--r--cc/CCResourceProvider.h273
1 files changed, 2 insertions, 271 deletions
diff --git a/cc/CCResourceProvider.h b/cc/CCResourceProvider.h
index f515c11..be760bb 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"