Chromium Code Reviews| 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 |