diff options
author | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-25 00:09:14 +0000 |
---|---|---|
committer | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-25 00:09:14 +0000 |
commit | 94f206c1c75eb8cc4df2225a1c5c9c7b6fc96679 (patch) | |
tree | 530f51d5c75459999e4adf2a6895884ce1c15ce0 /cc/LayerTextureUpdater.h | |
parent | 56235947f2b023fc63cfad692c56df4e92199848 (diff) | |
download | chromium_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.h | 63 |
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 |