| Index: dm/DMSrcSink.cpp
|
| diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp
|
| index baf1871ba3520b405efea00198745a0d3d807787..83705733b8d2b9098063f07e704619a1aa0487ba 100644
|
| --- a/dm/DMSrcSink.cpp
|
| +++ b/dm/DMSrcSink.cpp
|
| @@ -131,6 +131,8 @@ Name SKPSrc::name() const { return SkOSPath::Basename(fPath.c_str()); }
|
|
|
| /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
|
| +DEFINE_bool(gpuStats, false, "Append GPU stats to the log for each GPU task?");
|
| +
|
| GPUSink::GPUSink(GrContextFactory::GLContextType ct,
|
| GrGLStandard api,
|
| int samples,
|
| @@ -146,7 +148,7 @@ int GPUSink::enclave() const {
|
| return fThreaded ? kAnyThread_Enclave : kGPU_Enclave;
|
| }
|
|
|
| -Error GPUSink::draw(const Src& src, SkBitmap* dst, SkWStream*) const {
|
| +Error GPUSink::draw(const Src& src, SkBitmap* dst, SkWStream*, SkString* log) const {
|
| GrContextFactory factory;
|
| const SkISize size = src.size();
|
| const SkImageInfo info =
|
| @@ -162,6 +164,10 @@ Error GPUSink::draw(const Src& src, SkBitmap* dst, SkWStream*) const {
|
| return err;
|
| }
|
| canvas->flush();
|
| + if (FLAGS_gpuStats) {
|
| + canvas->getGrContext()->dumpCacheStats(log);
|
| + canvas->getGrContext()->dumpGpuStats(log);
|
| + }
|
| dst->allocPixels(info);
|
| canvas->readPixels(dst, 0,0);
|
| if (FLAGS_abandonGpuContext) {
|
| @@ -174,7 +180,7 @@ Error GPUSink::draw(const Src& src, SkBitmap* dst, SkWStream*) const {
|
|
|
| PDFSink::PDFSink() {}
|
|
|
| -Error PDFSink::draw(const Src& src, SkBitmap*, SkWStream* dst) const {
|
| +Error PDFSink::draw(const Src& src, SkBitmap*, SkWStream* dst, SkString*) const {
|
| // Print the given DM:Src to a PDF, breaking on 8.5x11 pages.
|
| SkAutoTUnref<SkDocument> doc(SkDocument::CreatePDF(dst));
|
|
|
| @@ -213,7 +219,7 @@ Error PDFSink::draw(const Src& src, SkBitmap*, SkWStream* dst) const {
|
|
|
| SKPSink::SKPSink() {}
|
|
|
| -Error SKPSink::draw(const Src& src, SkBitmap*, SkWStream* dst) const {
|
| +Error SKPSink::draw(const Src& src, SkBitmap*, SkWStream* dst, SkString*) const {
|
| SkSize size;
|
| size = src.size();
|
| SkPictureRecorder recorder;
|
| @@ -230,7 +236,7 @@ Error SKPSink::draw(const Src& src, SkBitmap*, SkWStream* dst) const {
|
|
|
| SVGSink::SVGSink() {}
|
|
|
| -Error SVGSink::draw(const Src& src, SkBitmap*, SkWStream* dst) const {
|
| +Error SVGSink::draw(const Src& src, SkBitmap*, SkWStream* dst, SkString*) const {
|
| SkAutoTUnref<SkBaseDevice> device(SkSVGDevice::Create(src.size(), dst));
|
| SkCanvas canvas(device);
|
| return src.draw(&canvas);
|
| @@ -240,7 +246,7 @@ Error SVGSink::draw(const Src& src, SkBitmap*, SkWStream* dst) const {
|
|
|
| RasterSink::RasterSink(SkColorType colorType) : fColorType(colorType) {}
|
|
|
| -Error RasterSink::draw(const Src& src, SkBitmap* dst, SkWStream*) const {
|
| +Error RasterSink::draw(const Src& src, SkBitmap* dst, SkWStream*, SkString*) const {
|
| const SkISize size = src.size();
|
| // If there's an appropriate alpha type for this color type, use it, otherwise use premul.
|
| SkAlphaType alphaType = kPremul_SkAlphaType;
|
| @@ -256,7 +262,7 @@ Error RasterSink::draw(const Src& src, SkBitmap* dst, SkWStream*) const {
|
|
|
| ViaMatrix::ViaMatrix(SkMatrix matrix, Sink* sink) : fMatrix(matrix), fSink(sink) {}
|
|
|
| -Error ViaMatrix::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream) const {
|
| +Error ViaMatrix::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream, SkString* log) const {
|
| // We turn our arguments into a Src, then draw that Src into our Sink to fill bitmap or stream.
|
| struct ProxySrc : public Src {
|
| const Src& fSrc;
|
| @@ -270,14 +276,14 @@ Error ViaMatrix::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream) const
|
| SkISize size() const SK_OVERRIDE { return fSrc.size(); }
|
| Name name() const SK_OVERRIDE { sk_throw(); return ""; } // No one should be calling this.
|
| } proxy(src, fMatrix);
|
| - return fSink->draw(proxy, bitmap, stream);
|
| + return fSink->draw(proxy, bitmap, stream, log);
|
| }
|
|
|
| /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
|
| ViaPipe::ViaPipe(Sink* sink) : fSink(sink) {}
|
|
|
| -Error ViaPipe::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream) const {
|
| +Error ViaPipe::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream, SkString* log) const {
|
| // We turn ourselves into another Src that draws our argument into bitmap/stream via pipe.
|
| struct ProxySrc : public Src {
|
| const Src& fSrc;
|
| @@ -293,14 +299,15 @@ Error ViaPipe::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream) const {
|
| SkISize size() const SK_OVERRIDE { return fSrc.size(); }
|
| Name name() const SK_OVERRIDE { sk_throw(); return ""; } // No one should be calling this.
|
| } proxy(src);
|
| - return fSink->draw(proxy, bitmap, stream);
|
| + return fSink->draw(proxy, bitmap, stream, log);
|
| }
|
|
|
| /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
|
| ViaSerialization::ViaSerialization(Sink* sink) : fSink(sink) {}
|
|
|
| -Error ViaSerialization::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream) const {
|
| +Error ViaSerialization::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream, SkString* log)
|
| + const {
|
| // Record our Src into a picture.
|
| SkSize size;
|
| size = src.size();
|
| @@ -330,7 +337,7 @@ Error ViaSerialization::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream
|
| SkISize size() const SK_OVERRIDE { return fSize; }
|
| Name name() const SK_OVERRIDE { sk_throw(); return ""; } // No one should be calling this.
|
| } proxy(deserialized, src.size());
|
| - return fSink->draw(proxy, bitmap, stream);
|
| + return fSink->draw(proxy, bitmap, stream, log);
|
| }
|
|
|
| /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
| @@ -341,7 +348,7 @@ ViaTiles::ViaTiles(int w, int h, SkBBHFactory* factory, Sink* sink)
|
| , fFactory(factory)
|
| , fSink(sink) {}
|
|
|
| -Error ViaTiles::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream) const {
|
| +Error ViaTiles::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream, SkString* log) const {
|
| // Record our Src into a picture.
|
| SkSize size;
|
| size = src.size();
|
| @@ -396,7 +403,7 @@ Error ViaTiles::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream) const
|
| SkISize size() const SK_OVERRIDE { return fSize; }
|
| Name name() const SK_OVERRIDE { sk_throw(); return ""; } // No one should be calling this.
|
| } proxy(fW, fH, pic, src.size());
|
| - return fSink->draw(proxy, bitmap, stream);
|
| + return fSink->draw(proxy, bitmap, stream, log);
|
| }
|
|
|
| } // namespace DM
|
|
|