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

Unified Diff: dm/DMSrcSink.h

Issue 886233004: Print gpu/cache stats from DM. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: minor Created 5 years, 11 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: dm/DMSrcSink.h
diff --git a/dm/DMSrcSink.h b/dm/DMSrcSink.h
index bf8e7d6810d7465957b72b0b23402a62b7b62e88..8daca00f25c05cbff909fde5ce58464a5f433f35 100644
--- a/dm/DMSrcSink.h
+++ b/dm/DMSrcSink.h
@@ -10,6 +10,7 @@
#include "SkGPipe.h"
#include "SkNullCanvas.h"
#include "SkPicture.h"
+#include "SkString.h"
#include "gm.h"
namespace DM {
@@ -33,14 +34,26 @@ struct Src {
struct Sink {
virtual ~Sink() {}
- // You may write to either the bitmap or stream.
- virtual Error SK_WARN_UNUSED_RESULT draw(const Src&, SkBitmap*, SkWStream*) const
- = 0;
+
+ Error SK_WARN_UNUSED_RESULT draw(const Src& src, SkBitmap* bmp, SkWStream* stream) const {
+ fVerboseLog.reset();
+ return this->onDraw(src, bmp, stream);
+ }
+
// Sinks in the same enclave (except kAnyThread_Enclave) will run serially on the same thread.
virtual int enclave() const = 0;
// File extension for the content draw() outputs, e.g. "png", "pdf".
virtual const char* fileExtension() const = 0;
+
+ const SkString& verboseLog() const { return fVerboseLog; }
+
+protected:
+ mutable SkString fVerboseLog;
mtklein 2015/02/02 16:23:17 I don't think this is going to work. Storing muta
bsalomon 2015/02/02 19:44:59 Ah... forgot that the sinks weren't instanced per
+
+private:
+ // You may write to either the bitmap or stream.
+ virtual Error SK_WARN_UNUSED_RESULT onDraw(const Src&, SkBitmap*, SkWStream*) const = 0;
};
enum { kAnyThread_Enclave, kGPU_Enclave, kPDFSink_Enclave };
@@ -90,10 +103,11 @@ class GPUSink : public Sink {
public:
GPUSink(GrContextFactory::GLContextType, GrGLStandard, int samples, bool dfText, bool threaded);
- Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
int enclave() const SK_OVERRIDE;
const char* fileExtension() const SK_OVERRIDE { return "png"; }
private:
+ Error onDraw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
+
GrContextFactory::GLContextType fContextType;
GrGLStandard fGpuAPI;
int fSampleCount;
@@ -105,19 +119,21 @@ class PDFSink : public Sink {
public:
PDFSink();
- Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
int enclave() const SK_OVERRIDE { return kPDFSink_Enclave; }
const char* fileExtension() const SK_OVERRIDE { return "pdf"; }
+private:
+ Error onDraw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
};
class RasterSink : public Sink {
public:
explicit RasterSink(SkColorType);
- Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
int enclave() const SK_OVERRIDE { return kAnyThread_Enclave; }
const char* fileExtension() const SK_OVERRIDE { return "png"; }
private:
+ Error onDraw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
+
SkColorType fColorType;
};
@@ -125,9 +141,10 @@ class SKPSink : public Sink {
public:
SKPSink();
- Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
int enclave() const SK_OVERRIDE { return kAnyThread_Enclave; }
const char* fileExtension() const SK_OVERRIDE { return "skp"; }
+private:
+ Error onDraw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
};
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
@@ -136,10 +153,10 @@ class ViaMatrix : public Sink {
public:
ViaMatrix(SkMatrix, Sink*);
- Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
int enclave() const SK_OVERRIDE { return fSink->enclave(); }
const char* fileExtension() const SK_OVERRIDE { return fSink->fileExtension(); }
private:
+ Error onDraw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
SkMatrix fMatrix;
SkAutoTDelete<Sink> fSink;
};
@@ -148,10 +165,10 @@ class ViaPipe : public Sink {
public:
explicit ViaPipe(Sink*);
- Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
int enclave() const SK_OVERRIDE { return fSink->enclave(); }
const char* fileExtension() const SK_OVERRIDE { return fSink->fileExtension(); }
private:
+ Error onDraw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
SkAutoTDelete<Sink> fSink;
};
@@ -159,10 +176,11 @@ class ViaSerialization : public Sink {
public:
explicit ViaSerialization(Sink*);
- Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
int enclave() const SK_OVERRIDE { return fSink->enclave(); }
const char* fileExtension() const SK_OVERRIDE { return fSink->fileExtension(); }
private:
+ Error onDraw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
+
SkAutoTDelete<Sink> fSink;
};
@@ -170,10 +188,11 @@ class ViaTiles : public Sink {
public:
ViaTiles(int w, int h, SkBBHFactory*, Sink*);
- Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
int enclave() const SK_OVERRIDE { return fSink->enclave(); }
const char* fileExtension() const SK_OVERRIDE { return fSink->fileExtension(); }
private:
+ Error onDraw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
+
const int fW, fH;
SkAutoTDelete<SkBBHFactory> fFactory;
SkAutoTDelete<Sink> fSink;
@@ -181,11 +200,12 @@ private:
class NullSink : public Sink {
public:
- Error draw(const Src& src, SkBitmap*, SkWStream* out) const SK_OVERRIDE {
- return src.draw(SkCreateNullCanvas());
- }
int enclave() const SK_OVERRIDE { return kAnyThread_Enclave; }
const char* fileExtension() const SK_OVERRIDE { return ""; }
+private:
+ Error onDraw(const Src& src, SkBitmap*, SkWStream* out) const SK_OVERRIDE {
+ return src.draw(SkCreateNullCanvas());
+ }
};
} // namespace DM

Powered by Google App Engine
This is Rietveld 408576698