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

Unified Diff: cc/overdraw_metrics.h

Issue 12728002: cc: Chromify the OverdrawMetrics class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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
« no previous file with comments | « cc/occlusion_tracker.cc ('k') | cc/overdraw_metrics.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/overdraw_metrics.h
diff --git a/cc/overdraw_metrics.h b/cc/overdraw_metrics.h
index 81595e7fc159f32adb699ce8017e2898abf97f02..f9ac0919188738faf0d0fcb61144d1018fcd66f1 100644
--- a/cc/overdraw_metrics.h
+++ b/cc/overdraw_metrics.h
@@ -5,6 +5,7 @@
#ifndef CC_OVERDRAW_METRICS_H_
#define CC_OVERDRAW_METRICS_H_
+#include "base/basictypes.h"
#include "base/memory/scoped_ptr.h"
namespace gfx {
@@ -16,82 +17,99 @@ namespace cc {
class LayerTreeHost;
class LayerTreeHostImpl;
-// FIXME: compute overdraw metrics only occasionally, not every frame.
class OverdrawMetrics {
-public:
- static scoped_ptr<OverdrawMetrics> create(bool recordMetricsForFrame) { return make_scoped_ptr(new OverdrawMetrics(recordMetricsForFrame)); }
-
- // These methods are used for saving metrics during update/commit.
-
- // Record pixels painted by WebKit into the texture updater, but does not mean the pixels were rasterized in main memory.
- void didPaint(const gfx::Rect& paintedRect);
- // Records that an invalid tile was culled and did not need to be painted/uploaded, and did not contribute to other tiles needing to be painted.
- void didCullTilesForUpload(int count);
- // Records pixels that were uploaded to texture memory.
- void didUpload(const gfx::Transform& transformToTarget, const gfx::Rect& uploadRect, const gfx::Rect& opaqueRect);
- // Record contents texture(s) behind present using the given number of bytes.
- void didUseContentsTextureMemoryBytes(size_t contentsTextureUseBytes);
- // Record RenderSurfaceImpl texture(s) being present using the given number of bytes.
- void didUseRenderSurfaceTextureMemoryBytes(size_t renderSurfaceUseBytes);
-
- // These methods are used for saving metrics during draw.
-
- // Record pixels that were not drawn to screen.
- void didCullForDrawing(const gfx::Transform& transformToTarget, const gfx::Rect& beforeCullRect, const gfx::Rect& afterCullRect);
- // Record pixels that were drawn to screen.
- void didDraw(const gfx::Transform& transformToTarget, const gfx::Rect& afterCullRect, const gfx::Rect& opaqueRect);
-
- void recordMetrics(const LayerTreeHost*) const;
- void recordMetrics(const LayerTreeHostImpl*) const;
-
- // Accessors for tests.
- float pixelsDrawnOpaque() const { return m_pixelsDrawnOpaque; }
- float pixelsDrawnTranslucent() const { return m_pixelsDrawnTranslucent; }
- float pixelsCulledForDrawing() const { return m_pixelsCulledForDrawing; }
- float pixelsPainted() const { return m_pixelsPainted; }
- float pixelsUploadedOpaque() const { return m_pixelsUploadedOpaque; }
- float pixelsUploadedTranslucent() const { return m_pixelsUploadedTranslucent; }
- int tilesCulledForUpload() const { return m_tilesCulledForUpload; }
-
-private:
- enum MetricsType {
- UpdateAndCommit,
- DrawingToScreen
- };
-
- explicit OverdrawMetrics(bool recordMetricsForFrame);
-
- template<typename LayerTreeHostType>
- void recordMetricsInternal(MetricsType, const LayerTreeHostType*) const;
-
- // When false this class is a giant no-op.
- bool m_recordMetricsForFrame;
-
- // These values are used for saving metrics during update/commit.
-
- // Count of pixels that were painted due to invalidation.
- float m_pixelsPainted;
- // Count of pixels uploaded to textures and known to be opaque.
- float m_pixelsUploadedOpaque;
- // Count of pixels uploaded to textures and not known to be opaque.
- float m_pixelsUploadedTranslucent;
- // Count of tiles that were invalidated but not uploaded.
- int m_tilesCulledForUpload;
- // Count the number of bytes in contents textures.
- unsigned long long m_contentsTextureUseBytes;
- // Count the number of bytes in RenderSurfaceImpl textures.
- unsigned long long m_renderSurfaceTextureUseBytes;
-
- // These values are used for saving metrics during draw.
-
- // Count of pixels that are opaque (and thus occlude). Ideally this is no more than wiewport width x height.
- float m_pixelsDrawnOpaque;
- // Count of pixels that are possibly translucent, and cannot occlude.
- float m_pixelsDrawnTranslucent;
- // Count of pixels not drawn as they are occluded by somthing opaque.
- float m_pixelsCulledForDrawing;
+ public:
+ static scoped_ptr<OverdrawMetrics> Create(bool record_metrics_for_frame) {
+ return make_scoped_ptr(new OverdrawMetrics(record_metrics_for_frame));
+ }
+
+ // These methods are used for saving metrics during update/commit.
+
+ // Record pixels painted by WebKit into the texture updater, but does not mean
+ // the pixels were rasterized in main memory.
+ void DidPaint(gfx::Rect painted_rect);
+ // Records that an invalid tile was culled and did not need to be
+ // painted/uploaded, and did not contribute to other tiles needing to be
+ // painted.
+ void DidCullTilesForUpload(int count);
+ // Records pixels that were uploaded to texture memory.
+ void DidUpload(const gfx::Transform& transform_to_target,
+ gfx::Rect upload_rect,
+ gfx::Rect opaque_rect);
+ // Record contents texture(s) behind present using the given number of bytes.
+ void DidUseContentsTextureMemoryBytes(size_t contents_texture_use_bytes);
+ // Record RenderSurfaceImpl texture(s) being present using the given number of
+ // bytes.
+ void DidUseRenderSurfaceTextureMemoryBytes(size_t render_surface_use_bytes);
+
+ // These methods are used for saving metrics during draw.
+
+ // Record pixels that were not drawn to screen.
+ void DidCullForDrawing(const gfx::Transform& transform_to_target,
+ gfx::Rect before_cull_rect,
+ gfx::Rect after_cull_rect);
+ // Record pixels that were drawn to screen.
+ void DidDraw(const gfx::Transform& transform_to_target,
+ gfx::Rect after_cull_rect,
+ gfx::Rect opaque_rect);
+
+ void RecordMetrics(const LayerTreeHost* layer_tree_host) const;
+ void RecordMetrics(const LayerTreeHostImpl* layer_tree_host_impl) const;
+
+ // Accessors for tests.
+ float pixels_drawn_opaque() const { return pixels_drawn_opaque_; }
+ float pixels_drawn_translucent() const { return pixels_drawn_translucent_; }
+ float pixels_culled_for_drawing() const { return pixels_culled_for_drawing_; }
+ float pixels_painted() const { return pixels_painted_; }
+ float pixels_uploaded_opaque() const { return pixels_uploaded_opaque_; }
+ float pixels_uploaded_translucent() const {
+ return pixels_uploaded_translucent_;
+ }
+ int tiles_culled_for_upload() const { return tiles_culled_for_upload_; }
+
+ private:
+ enum MetricsType {
+ UpdateAndCommit,
+ DrawingToScreen
+ };
+
+ explicit OverdrawMetrics(bool record_metrics_for_frame);
+
+ template <typename LayerTreeHostType>
+ void RecordMetricsInternal(MetricsType metrics_type,
+ const LayerTreeHostType* layer_tree_host) const;
+
+ // When false this class is a giant no-op.
+ bool record_metrics_for_frame_;
+
+ // These values are used for saving metrics during update/commit.
+
+ // Count of pixels that were painted due to invalidation.
+ float pixels_painted_;
+ // Count of pixels uploaded to textures and known to be opaque.
+ float pixels_uploaded_opaque_;
+ // Count of pixels uploaded to textures and not known to be opaque.
+ float pixels_uploaded_translucent_;
+ // Count of tiles that were invalidated but not uploaded.
+ int tiles_culled_for_upload_;
+ // Count the number of bytes in contents textures.
+ unsigned long long contents_texture_use_bytes_;
+ // Count the number of bytes in RenderSurfaceImpl textures.
+ unsigned long long render_surface_texture_use_bytes_;
+
+ // These values are used for saving metrics during draw.
+
+ // Count of pixels that are opaque (and thus occlude). Ideally this is no more
+ // than wiewport width x height.
+ float pixels_drawn_opaque_;
+ // Count of pixels that are possibly translucent, and cannot occlude.
+ float pixels_drawn_translucent_;
+ // Count of pixels not drawn as they are occluded by somthing opaque.
+ float pixels_culled_for_drawing_;
+
+ DISALLOW_COPY_AND_ASSIGN(OverdrawMetrics);
};
-} // namespace cc
+} // namespace cc
#endif // CC_OVERDRAW_METRICS_H_
« no previous file with comments | « cc/occlusion_tracker.cc ('k') | cc/overdraw_metrics.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698