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/TiledLayerChromium.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/TiledLayerChromium.h')
-rw-r--r-- | cc/TiledLayerChromium.h | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/cc/TiledLayerChromium.h b/cc/TiledLayerChromium.h new file mode 100644 index 0000000..c7f57f0 --- /dev/null +++ b/cc/TiledLayerChromium.h @@ -0,0 +1,106 @@ +// 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 TiledLayerChromium_h +#define TiledLayerChromium_h + +#if USE(ACCELERATED_COMPOSITING) + +#include "CCLayerTilingData.h" +#include "LayerChromium.h" +#include "LayerTextureUpdater.h" + +namespace WebCore { +class UpdatableTile; + +class TiledLayerChromium : public LayerChromium { +public: + enum TilingOption { AlwaysTile, NeverTile, AutoTile }; + + virtual ~TiledLayerChromium(); + + virtual void setIsMask(bool) OVERRIDE; + + virtual void pushPropertiesTo(CCLayerImpl*) OVERRIDE; + + virtual bool drawsContent() const OVERRIDE; + virtual bool needsContentsScale() const OVERRIDE; + + virtual IntSize contentBounds() const OVERRIDE; + + virtual void setNeedsDisplayRect(const FloatRect&) OVERRIDE; + + virtual void setUseLCDText(bool) OVERRIDE; + + virtual void setLayerTreeHost(CCLayerTreeHost*) OVERRIDE; + + virtual void setTexturePriorities(const CCPriorityCalculator&) OVERRIDE; + + virtual Region visibleContentOpaqueRegion() const OVERRIDE; + + virtual void update(CCTextureUpdateQueue&, const CCOcclusionTracker*, CCRenderingStats&) OVERRIDE; + +protected: + TiledLayerChromium(); + + void updateTileSizeAndTilingOption(); + void updateBounds(); + + // Exposed to subclasses for testing. + void setTileSize(const IntSize&); + void setTextureFormat(GC3Denum textureFormat) { m_textureFormat = textureFormat; } + void setBorderTexelOption(CCLayerTilingData::BorderTexelOption); + void setSampledTexelFormat(LayerTextureUpdater::SampledTexelFormat sampledTexelFormat) { m_sampledTexelFormat = sampledTexelFormat; } + size_t numPaintedTiles() { return m_tiler->tiles().size(); } + + virtual LayerTextureUpdater* textureUpdater() const = 0; + virtual void createTextureUpdaterIfNeeded() = 0; + + // Set invalidations to be potentially repainted during update(). + void invalidateContentRect(const IntRect& contentRect); + + // Reset state on tiles that will be used for updating the layer. + void resetUpdateState(); + + // After preparing an update, returns true if more painting is needed. + bool needsIdlePaint(); + IntRect idlePaintRect(); + + bool skipsDraw() const { return m_skipsDraw; } + + // Virtual for testing + virtual CCPrioritizedTextureManager* textureManager() const; + +private: + virtual PassOwnPtr<CCLayerImpl> createCCLayerImpl() OVERRIDE; + + void createTilerIfNeeded(); + void setTilingOption(TilingOption); + + bool tileOnlyNeedsPartialUpdate(UpdatableTile*); + bool tileNeedsBufferedUpdate(UpdatableTile*); + + void markOcclusionsAndRequestTextures(int left, int top, int right, int bottom, const CCOcclusionTracker*); + + bool updateTiles(int left, int top, int right, int bottom, CCTextureUpdateQueue&, const CCOcclusionTracker*, CCRenderingStats&, bool& didPaint); + bool haveTexturesForTiles(int left, int top, int right, int bottom, bool ignoreOcclusions); + IntRect markTilesForUpdate(int left, int top, int right, int bottom, bool ignoreOcclusions); + void updateTileTextures(const IntRect& paintRect, int left, int top, int right, int bottom, CCTextureUpdateQueue&, const CCOcclusionTracker*, CCRenderingStats&); + + UpdatableTile* tileAt(int, int) const; + UpdatableTile* createTile(int, int); + + GC3Denum m_textureFormat; + bool m_skipsDraw; + bool m_failedUpdate; + LayerTextureUpdater::SampledTexelFormat m_sampledTexelFormat; + + TilingOption m_tilingOption; + OwnPtr<CCLayerTilingData> m_tiler; +}; + +} +#endif // USE(ACCELERATED_COMPOSITING) + +#endif |