summaryrefslogtreecommitdiffstats
path: root/cc/TiledLayerChromium.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/TiledLayerChromium.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/TiledLayerChromium.h')
-rw-r--r--cc/TiledLayerChromium.h106
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