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 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 } else if (FLAGS_writeEncodedImages) { | 165 } else if (FLAGS_writeEncodedImages) { |
166 SkASSERT(!FLAGS_writePath.isEmpty()); | 166 SkASSERT(!FLAGS_writePath.isEmpty()); |
167 reset_image_file_base_name(inputFilename); | 167 reset_image_file_base_name(inputFilename); |
168 proc = &write_image_to_file; | 168 proc = &write_image_to_file; |
169 } else { | 169 } else { |
170 proc = &SkImageDecoder::DecodeMemory; | 170 proc = &SkImageDecoder::DecodeMemory; |
171 } | 171 } |
172 | 172 |
173 SkDebugf("deserializing... %s\n", inputPath.c_str()); | 173 SkDebugf("deserializing... %s\n", inputPath.c_str()); |
174 | 174 |
175 SkPicture* picture = SkPicture::CreateFromStream(&inputStream, proc); | 175 SkAutoTUnref<SkPicture> picture(SkPicture::CreateFromStream(&inputStream, pr
oc)); |
176 | 176 |
177 if (NULL == picture) { | 177 if (NULL == picture) { |
178 SkDebugf("Could not read an SkPicture from %s\n", inputPath.c_str()); | 178 SkDebugf("Could not read an SkPicture from %s\n", inputPath.c_str()); |
179 return false; | 179 return false; |
180 } | 180 } |
181 | 181 |
| 182 if (FLAGS_preprocess) { |
| 183 // Because the GPU preprocessing step relies on the in-memory picture |
| 184 // statistics we need to rerecord the picture here |
| 185 SkPictureRecorder recorder; |
| 186 picture->draw(recorder.beginRecording(picture->width(), picture->height(
), NULL, 0)); |
| 187 picture.reset(recorder.endRecording()); |
| 188 } |
| 189 |
182 while (FLAGS_bench_record) { | 190 while (FLAGS_bench_record) { |
183 SkPictureRecorder recorder; | 191 SkPictureRecorder recorder; |
184 picture->draw(recorder.beginRecording(picture->width(), picture->height(
), NULL, 0)); | 192 picture->draw(recorder.beginRecording(picture->width(), picture->height(
), NULL, 0)); |
185 SkAutoTUnref<SkPicture> other(recorder.endRecording()); | 193 SkAutoTUnref<SkPicture> other(recorder.endRecording()); |
186 } | 194 } |
187 | 195 |
188 SkDebugf("drawing... [%i %i] %s\n", picture->width(), picture->height(), | 196 SkDebugf("drawing... [%i %i] %s\n", picture->width(), picture->height(), |
189 inputPath.c_str()); | 197 inputPath.c_str()); |
190 | 198 |
191 renderer.init(picture, &writePathString, &mismatchPathString, &inputFilename
, | 199 renderer.init(picture, &writePathString, &mismatchPathString, &inputFilename
, |
192 FLAGS_writeChecksumBasedFilenames); | 200 FLAGS_writeChecksumBasedFilenames); |
193 | 201 |
194 if (FLAGS_preprocess) { | 202 if (FLAGS_preprocess) { |
195 if (NULL != renderer.getCanvas()) { | 203 if (NULL != renderer.getCanvas()) { |
196 renderer.getCanvas()->EXPERIMENTAL_optimize(renderer.getPicture()); | 204 renderer.getCanvas()->EXPERIMENTAL_optimize(renderer.getPicture()); |
197 } | 205 } |
198 } | 206 } |
199 | 207 |
200 renderer.setup(); | 208 renderer.setup(); |
201 renderer.enableWrites(); | 209 renderer.enableWrites(); |
202 | 210 |
203 bool success = renderer.render(out); | 211 bool success = renderer.render(out); |
204 if (!success) { | 212 if (!success) { |
205 SkDebugf("Failed to render %s\n", inputFilename.c_str()); | 213 SkDebugf("Failed to render %s\n", inputFilename.c_str()); |
206 } | 214 } |
207 | 215 |
208 renderer.end(); | 216 renderer.end(); |
209 | 217 |
210 SkDELETE(picture); | |
211 return success; | 218 return success; |
212 } | 219 } |
213 | 220 |
214 static inline int getByte(uint32_t value, int index) { | 221 static inline int getByte(uint32_t value, int index) { |
215 SkASSERT(0 <= index && index < 4); | 222 SkASSERT(0 <= index && index < 4); |
216 return (value >> (index * 8)) & 0xFF; | 223 return (value >> (index * 8)) & 0xFF; |
217 } | 224 } |
218 | 225 |
219 static int MaxByteDiff(uint32_t v1, uint32_t v2) { | 226 static int MaxByteDiff(uint32_t v1, uint32_t v2) { |
220 return SkMax32(SkMax32(abs(getByte(v1, 0) - getByte(v2, 0)), abs(getByte(v1,
1) - getByte(v2, 1))), | 227 return SkMax32(SkMax32(abs(getByte(v1, 0) - getByte(v2, 0)), abs(getByte(v1,
1) - getByte(v2, 1))), |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
482 jsonSummary.writeToFile(FLAGS_writeJsonSummaryPath[0]); | 489 jsonSummary.writeToFile(FLAGS_writeJsonSummaryPath[0]); |
483 } | 490 } |
484 return 0; | 491 return 0; |
485 } | 492 } |
486 | 493 |
487 #if !defined SK_BUILD_FOR_IOS | 494 #if !defined SK_BUILD_FOR_IOS |
488 int main(int argc, char * const argv[]) { | 495 int main(int argc, char * const argv[]) { |
489 return tool_main(argc, (char**) argv); | 496 return tool_main(argc, (char**) argv); |
490 } | 497 } |
491 #endif | 498 #endif |
OLD | NEW |