Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Unified Diff: cc/layers/layer_impl.h

Issue 16211002: Skip drawing unsupported layers in forced software mode (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase on r203584 Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/layers/layer_impl.h
diff --git a/cc/layers/layer_impl.h b/cc/layers/layer_impl.h
index fbe0963042b2c8030d94e1b182c237fd6259007c..e27e74352b403c3729afe8c34fa4d2fb37c546b7 100644
--- a/cc/layers/layer_impl.h
+++ b/cc/layers/layer_impl.h
@@ -49,6 +49,13 @@ class Layer;
struct AppendQuadsData;
+enum DrawMode {
+ DRAW_MODE_NONE,
+ DRAW_MODE_HARDWARE,
+ DRAW_MODE_SOFTWARE,
+ DRAW_MODE_RESOURCELESS_SOFTWARE
+};
+
class CC_EXPORT LayerImpl : LayerAnimationValueObserver {
public:
static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) {
@@ -99,11 +106,14 @@ class CC_EXPORT LayerImpl : LayerAnimationValueObserver {
LayerTreeImpl* layer_tree_impl() const { return layer_tree_impl_; }
scoped_ptr<SharedQuadState> CreateSharedQuadState() const;
- // WillDraw must be called before AppendQuads. If WillDraw is called,
+ // WillDraw must be called before AppendQuads. If WillDraw returns false,
+ // AppendQuads and DidDraw will not be called. If WillDraw returns true,
// DidDraw is guaranteed to be called before another WillDraw or before
// the layer is destroyed. To enforce this, any class that overrides
- // WillDraw/DqidDraw must call the base class version.
- virtual void WillDraw(ResourceProvider* resource_provider);
+ // WillDraw/DidDraw must call the base class version only if WillDraw
+ // returns true.
+ virtual bool WillDraw(DrawMode draw_mode,
+ ResourceProvider* resource_provider);
virtual void AppendQuads(QuadSink* quad_sink,
AppendQuadsData* append_quads_data) {}
virtual void DidDraw(ResourceProvider* resource_provider);
@@ -530,10 +540,10 @@ class CC_EXPORT LayerImpl : LayerAnimationValueObserver {
WebKit::WebFilterOperations background_filters_;
skia::RefPtr<SkImageFilter> filter_;
-#ifndef NDEBUG
- bool between_will_draw_and_did_draw_;
-#endif
+ protected:
+ DrawMode current_draw_mode_;
+ private:
// Rect indicating what was repainted/updated during update.
// Note that plugin layers bypass this and leave it empty.
// Uses layer's content space.

Powered by Google App Engine
This is Rietveld 408576698