Index: tools/gpuveto.cpp |
=================================================================== |
--- tools/gpuveto.cpp (revision 0) |
+++ tools/gpuveto.cpp (revision 0) |
@@ -0,0 +1,78 @@ |
+/* |
+ * Copyright 2014 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#include "LazyDecodeBitmap.h" |
+#include "SkCommandLineFlags.h" |
+#include "SkPicture.h" |
+#include "SkPictureRecorder.h" |
+#include "SkStream.h" |
+ |
+DEFINE_string2(readFile, r, "", "skp file to process."); |
+DEFINE_bool2(quiet, q, false, "quiet"); |
+ |
+// This tool just loads a single skp, replays into a new SkPicture (to |
+// regenerate the GPU-specific tracking information) and reports |
+// the value of the suitableForGpuRasterization method. |
+// Return codes: |
+static const int kSuccess = 0; |
+static const int kError = 1; |
+ |
+int tool_main(int argc, char** argv); |
+int tool_main(int argc, char** argv) { |
+#if SK_SUPPORT_GPU |
+ SkCommandLineFlags::SetUsage("Reports on an skp file's suitability for GPU rasterization"); |
+ SkCommandLineFlags::Parse(argc, argv); |
+ |
+ if (FLAGS_readFile.count() != 1) { |
+ if (!FLAGS_quiet) { |
+ SkDebugf("Missing input file\n"); |
+ } |
+ return kError; |
+ } |
+ |
+ SkFILEStream inputStream(FLAGS_readFile[0]); |
+ if (!inputStream.isValid()) { |
+ if (!FLAGS_quiet) { |
+ SkDebugf("Couldn't open file\n"); |
+ } |
+ return kError; |
+ } |
+ |
+ SkPicture::InstallPixelRefProc proc = &sk_tools::LazyDecodeBitmap; |
+ |
+ SkAutoTUnref<SkPicture> picture(SkPicture::CreateFromStream(&inputStream, proc)); |
+ if (NULL == picture.get()) { |
+ if (!FLAGS_quiet) { |
+ SkDebugf("Could not read the SkPicture\n"); |
+ } |
+ return kError; |
+ } |
+ |
+ // The SkPicture tracking information is only generated during recording |
+ // an isn't serialized. Replay the picture to regenerated the tracking data. |
+ SkPictureRecorder recorder; |
+ picture->draw(recorder.beginRecording(picture->width(), picture->height(), NULL, 0)); |
+ SkAutoTUnref<SkPicture> recorded(recorder.endRecording()); |
+ |
+ if (recorded->suitableForGpuRasterization(NULL)) { |
bsalomon
2014/04/25 19:41:31
don't we need to pass a grcontext? I guess the cur
robertphillips
2014/04/25 21:05:08
Right - this is just the first pass. We will also
|
+ SkDebugf("suitable\n"); |
+ } else { |
+ SkDebugf("unsuitable\n"); |
+ } |
+ |
+ return kSuccess; |
+#else |
+ SkDebugf("gpuveto is only useful when GPU rendering is enabled\n"); |
+ return kError; |
+#endif |
+} |
+ |
+#if !defined SK_BUILD_FOR_IOS |
+int main(int argc, char * const argv[]) { |
+ return tool_main(argc, (char**) argv); |
+} |
+#endif |
Property changes on: tools\gpuveto.cpp |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |