summaryrefslogtreecommitdiffstats
path: root/cc/LayerTextureUpdater.h
diff options
context:
space:
mode:
authorjamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-25 00:09:14 +0000
committerjamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-25 00:09:14 +0000
commit94f206c1c75eb8cc4df2225a1c5c9c7b6fc96679 (patch)
tree530f51d5c75459999e4adf2a6895884ce1c15ce0 /cc/LayerTextureUpdater.h
parent56235947f2b023fc63cfad692c56df4e92199848 (diff)
downloadchromium_src-94f206c1c75eb8cc4df2225a1c5c9c7b6fc96679.zip
chromium_src-94f206c1c75eb8cc4df2225a1c5c9c7b6fc96679.tar.gz
chromium_src-94f206c1c75eb8cc4df2225a1c5c9c7b6fc96679.tar.bz2
Here are gyp targets and stubs for compiling libcc and the webkit_compositor bindings in chromium. Everything is guarded behind the off-by-default use_libcc_for_compositor gyp variable. I haven't included the actual code here, but there are scripts to sync. I plan to land + manually sync the code into place until we're ready to flip the gyp switch.
Snapshot from r126652 BUG= Review URL: https://chromiumcodereview.appspot.com/10828381 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@153354 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/LayerTextureUpdater.h')
-rw-r--r--cc/LayerTextureUpdater.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/cc/LayerTextureUpdater.h b/cc/LayerTextureUpdater.h
new file mode 100644
index 0000000..9750498
--- /dev/null
+++ b/cc/LayerTextureUpdater.h
@@ -0,0 +1,63 @@
+// Copyright 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+
+#ifndef LayerTextureUpdater_h
+#define LayerTextureUpdater_h
+
+#if USE(ACCELERATED_COMPOSITING)
+
+#include "CCPrioritizedTexture.h"
+#include "GraphicsTypes3D.h"
+#include <wtf/RefCounted.h>
+
+namespace WebCore {
+
+class IntRect;
+class IntSize;
+class TextureManager;
+struct CCRenderingStats;
+
+class LayerTextureUpdater : public RefCounted<LayerTextureUpdater> {
+public:
+ // Allows texture uploaders to store per-tile resources.
+ class Texture {
+ public:
+ virtual ~Texture() { }
+
+ CCPrioritizedTexture* texture() { return m_texture.get(); }
+ void swapTextureWith(OwnPtr<CCPrioritizedTexture>& texture) { m_texture.swap(texture); }
+ virtual void prepareRect(const IntRect& /* sourceRect */, CCRenderingStats&) { }
+ virtual void updateRect(CCResourceProvider*, const IntRect& sourceRect, const IntSize& destOffset) = 0;
+ protected:
+ explicit Texture(PassOwnPtr<CCPrioritizedTexture> texture) : m_texture(texture) { }
+
+ private:
+ OwnPtr<CCPrioritizedTexture> m_texture;
+ };
+
+ virtual ~LayerTextureUpdater() { }
+
+ enum SampledTexelFormat {
+ SampledTexelFormatRGBA,
+ SampledTexelFormatBGRA,
+ SampledTexelFormatInvalid,
+ };
+ virtual PassOwnPtr<Texture> createTexture(CCPrioritizedTextureManager*) = 0;
+ // Returns the format of the texel uploaded by this interface.
+ // This format should not be confused by texture internal format.
+ // This format specifies the component order in the sampled texel.
+ // If the format is TexelFormatBGRA, vec4.x is blue and vec4.z is red.
+ virtual SampledTexelFormat sampledTexelFormat(GC3Denum textureFormat) = 0;
+ // The |resultingOpaqueRect| gives back a region of the layer that was painted opaque. If the layer is marked opaque in the updater,
+ // then this region should be ignored in preference for the entire layer's area.
+ virtual void prepareToUpdate(const IntRect& contentRect, const IntSize& tileSize, float contentsWidthScale, float contentsHeightScale, IntRect& resultingOpaqueRect, CCRenderingStats&) { }
+
+ // Set true by the layer when it is known that the entire output is going to be opaque.
+ virtual void setOpaque(bool) { }
+};
+
+} // namespace WebCore
+#endif // USE(ACCELERATED_COMPOSITING)
+#endif // LayerTextureUpdater_h