Index: include/core/SkPictureAnalyzer.h |
diff --git a/include/core/SkPictureAnalyzer.h b/include/core/SkPictureAnalyzer.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fa8cdb1fd18b8c890ec3b65a70ed6ca91d64b0d3 |
--- /dev/null |
+++ b/include/core/SkPictureAnalyzer.h |
@@ -0,0 +1,52 @@ |
+/* |
+ * Copyright 2016 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#ifndef SkPictureAnalyzer_DEFINED |
+#define SkPictureAnalyzer_DEFINED |
+ |
+#include "SkRefCnt.h" |
+#include "SkTypes.h" |
+ |
+#if SK_SUPPORT_GPU |
+#include "GrContext.h" |
+ |
+class SkPicture; |
+ |
+/** \class SkPictureGpuAnalyzer |
+ |
+ Gathers GPU-related statistics for one or more SkPictures. |
+*/ |
+class SK_API SkPictureGpuAnalyzer final : public SkNoncopyable { |
+public: |
+ explicit SkPictureGpuAnalyzer(sk_sp<GrContextThreadSafeProxy> = nullptr); |
reed1
2016/05/13 19:35:47
Are we really ref-ing the ctx? Do we need the anal
f(malita)
2016/05/13 19:46:45
Hmm, good question: the current use pattern doesn'
|
+ explicit SkPictureGpuAnalyzer(const sk_sp<SkPicture>& picture, |
+ sk_sp<GrContextThreadSafeProxy> = nullptr); |
+ |
+ /** |
+ * Process the given picture and accumulate its stats. |
+ */ |
+ void analyze(const SkPicture*); |
+ |
+ /** |
+ * Reset all accumulated stats. |
+ */ |
+ void reset(); |
+ |
+ /** |
+ * Returns true if the analyzed pictures are suitable for rendering on the GPU. |
+ */ |
+ bool suitableForGpuRasterization(const char** whyNot = nullptr) const; |
+ |
+private: |
+ uint32_t fNumSlowPaths; |
+ |
+ typedef SkNoncopyable INHERITED; |
+}; |
+ |
+#endif // SK_SUPPORT_GPU |
+ |
+#endif // SkPictureAnalyzer_DEFINED |