| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "LazyDecodeBitmap.h" | 8 #include "LazyDecodeBitmap.h" |
| 9 #include "CopyTilesRenderer.h" | 9 #include "CopyTilesRenderer.h" |
| 10 #include "SkBitmap.h" | 10 #include "SkBitmap.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 DEFINE_string(imageBaseGSUrl, "", "The Google Storage image base URL the images
are stored in."); | 33 DEFINE_string(imageBaseGSUrl, "", "The Google Storage image base URL the images
are stored in."); |
| 34 DEFINE_int32(maxComponentDiff, 256, "Maximum diff on a component, 0 - 256. Compo
nents that differ " | 34 DEFINE_int32(maxComponentDiff, 256, "Maximum diff on a component, 0 - 256. Compo
nents that differ " |
| 35 "by more than this amount are considered errors, though all diffs a
re reported. " | 35 "by more than this amount are considered errors, though all diffs a
re reported. " |
| 36 "Requires --validate."); | 36 "Requires --validate."); |
| 37 DEFINE_string(mismatchPath, "", "Write images for tests that failed due to " | 37 DEFINE_string(mismatchPath, "", "Write images for tests that failed due to " |
| 38 "pixel mismatches into this directory."); | 38 "pixel mismatches into this directory."); |
| 39 #if GR_GPU_STATS | 39 #if GR_GPU_STATS |
| 40 DEFINE_bool(gpuStats, false, "Only meaningful with gpu configurations. " | 40 DEFINE_bool(gpuStats, false, "Only meaningful with gpu configurations. " |
| 41 "Report some GPU call statistics."); | 41 "Report some GPU call statistics."); |
| 42 #endif | 42 #endif |
| 43 DEFINE_bool(preprocess, false, "If true, perform device specific preprocessing b
efore rendering."); | 43 DEFINE_bool(mpd, false, "If true, use MultiPictureDraw for rendering."); |
| 44 DEFINE_string(readJsonSummaryPath, "", "JSON file to read image expectations fro
m."); | 44 DEFINE_string(readJsonSummaryPath, "", "JSON file to read image expectations fro
m."); |
| 45 DECLARE_string(readPath); | 45 DECLARE_string(readPath); |
| 46 DEFINE_bool(writeChecksumBasedFilenames, false, | 46 DEFINE_bool(writeChecksumBasedFilenames, false, |
| 47 "When writing out images, use checksum-based filenames."); | 47 "When writing out images, use checksum-based filenames."); |
| 48 DEFINE_bool(writeEncodedImages, false, "Any time the skp contains an encoded ima
ge, write it to a " | 48 DEFINE_bool(writeEncodedImages, false, "Any time the skp contains an encoded ima
ge, write it to a " |
| 49 "file rather than decoding it. Requires writePath to be set. Skips d
rawing the full " | 49 "file rather than decoding it. Requires writePath to be set. Skips d
rawing the full " |
| 50 "skp to a file. Not compatible with deferImageDecoding."); | 50 "skp to a file. Not compatible with deferImageDecoding."); |
| 51 DEFINE_string(writeJsonSummaryPath, "", "File to write a JSON summary of image r
esults to."); | 51 DEFINE_string(writeJsonSummaryPath, "", "File to write a JSON summary of image r
esults to."); |
| 52 DEFINE_string2(writePath, w, "", "Directory to write the rendered images into.")
; | 52 DEFINE_string2(writePath, w, "", "Directory to write the rendered images into.")
; |
| 53 DEFINE_bool(writeWholeImage, false, "In tile mode, write the entire rendered ima
ge to a " | 53 DEFINE_bool(writeWholeImage, false, "In tile mode, write the entire rendered ima
ge to a " |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 | 177 |
| 178 SkDebugf("deserializing... %s\n", inputPath.c_str()); | 178 SkDebugf("deserializing... %s\n", inputPath.c_str()); |
| 179 | 179 |
| 180 SkAutoTUnref<SkPicture> picture(SkPicture::CreateFromStream(&inputStream, pr
oc)); | 180 SkAutoTUnref<SkPicture> picture(SkPicture::CreateFromStream(&inputStream, pr
oc)); |
| 181 | 181 |
| 182 if (NULL == picture) { | 182 if (NULL == picture) { |
| 183 SkDebugf("Could not read an SkPicture from %s\n", inputPath.c_str()); | 183 SkDebugf("Could not read an SkPicture from %s\n", inputPath.c_str()); |
| 184 return false; | 184 return false; |
| 185 } | 185 } |
| 186 | 186 |
| 187 if (FLAGS_preprocess) { | |
| 188 // Because the GPU preprocessing step relies on the in-memory picture | |
| 189 // statistics we need to rerecord the picture here | |
| 190 SkPictureRecorder recorder; | |
| 191 picture->playback(recorder.beginRecording(picture->cullRect().width(), | |
| 192 picture->cullRect().height(), | |
| 193 NULL, 0)); | |
| 194 picture.reset(recorder.endRecording()); | |
| 195 } | |
| 196 | |
| 197 while (FLAGS_bench_record) { | 187 while (FLAGS_bench_record) { |
| 198 SkPictureRecorder recorder; | 188 SkPictureRecorder recorder; |
| 199 picture->playback(recorder.beginRecording(picture->cullRect().width(), | 189 picture->playback(recorder.beginRecording(picture->cullRect().width(), |
| 200 picture->cullRect().height(), | 190 picture->cullRect().height(), |
| 201 NULL, 0)); | 191 NULL, 0)); |
| 202 SkAutoTUnref<SkPicture> other(recorder.endRecording()); | 192 SkAutoTUnref<SkPicture> other(recorder.endRecording()); |
| 203 } | 193 } |
| 204 | 194 |
| 205 SkDebugf("drawing... [%f %f %f %f] %s\n", | 195 SkDebugf("drawing... [%f %f %f %f] %s\n", |
| 206 picture->cullRect().fLeft, picture->cullRect().fTop, | 196 picture->cullRect().fLeft, picture->cullRect().fTop, |
| 207 picture->cullRect().fRight, picture->cullRect().fBottom, | 197 picture->cullRect().fRight, picture->cullRect().fBottom, |
| 208 inputPath.c_str()); | 198 inputPath.c_str()); |
| 209 | 199 |
| 210 renderer.init(picture, &writePathString, &mismatchPathString, &inputFilename
, | 200 renderer.init(picture, &writePathString, &mismatchPathString, &inputFilename
, |
| 211 FLAGS_writeChecksumBasedFilenames); | 201 FLAGS_writeChecksumBasedFilenames, FLAGS_mpd); |
| 212 | |
| 213 if (FLAGS_preprocess) { | |
| 214 if (renderer.getCanvas()) { | |
| 215 renderer.getCanvas()->EXPERIMENTAL_optimize(renderer.getPicture()); | |
| 216 } | |
| 217 } | |
| 218 | 202 |
| 219 renderer.setup(); | 203 renderer.setup(); |
| 220 renderer.enableWrites(); | 204 renderer.enableWrites(); |
| 221 | 205 |
| 222 bool success = renderer.render(out); | 206 bool success = renderer.render(out); |
| 223 if (!success) { | 207 if (!success) { |
| 224 SkDebugf("Failed to render %s\n", inputFilename.c_str()); | 208 SkDebugf("Failed to render %s\n", inputFilename.c_str()); |
| 225 } | 209 } |
| 226 | 210 |
| 227 renderer.end(); | 211 renderer.end(); |
| (...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 522 jsonSummary.writeToFile(FLAGS_writeJsonSummaryPath[0]); | 506 jsonSummary.writeToFile(FLAGS_writeJsonSummaryPath[0]); |
| 523 } | 507 } |
| 524 return 0; | 508 return 0; |
| 525 } | 509 } |
| 526 | 510 |
| 527 #if !defined SK_BUILD_FOR_IOS | 511 #if !defined SK_BUILD_FOR_IOS |
| 528 int main(int argc, char * const argv[]) { | 512 int main(int argc, char * const argv[]) { |
| 529 return tool_main(argc, (char**) argv); | 513 return tool_main(argc, (char**) argv); |
| 530 } | 514 } |
| 531 #endif | 515 #endif |
| OLD | NEW |