OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 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 /* | 8 /* |
9 * Code for the "gm" (Golden Master) rendering comparison tool. | 9 * Code for the "gm" (Golden Master) rendering comparison tool. |
10 * | 10 * |
(...skipping 20 matching lines...) Expand all Loading... |
31 #include "SkImageDecoder.h" | 31 #include "SkImageDecoder.h" |
32 #include "SkImageEncoder.h" | 32 #include "SkImageEncoder.h" |
33 #include "SkJSONCPP.h" | 33 #include "SkJSONCPP.h" |
34 #include "SkOSFile.h" | 34 #include "SkOSFile.h" |
35 #include "SkPDFRasterizer.h" | 35 #include "SkPDFRasterizer.h" |
36 #include "SkPicture.h" | 36 #include "SkPicture.h" |
37 #include "SkRefCnt.h" | 37 #include "SkRefCnt.h" |
38 #include "SkScalar.h" | 38 #include "SkScalar.h" |
39 #include "SkStream.h" | 39 #include "SkStream.h" |
40 #include "SkString.h" | 40 #include "SkString.h" |
| 41 #include "SkSurface.h" |
41 #include "SkTArray.h" | 42 #include "SkTArray.h" |
42 #include "SkTDict.h" | 43 #include "SkTDict.h" |
43 #include "SkTileGridPicture.h" | 44 #include "SkTileGridPicture.h" |
44 #include "SamplePipeControllers.h" | 45 #include "SamplePipeControllers.h" |
45 | 46 |
46 #ifdef SK_DEBUG | 47 #ifdef SK_DEBUG |
47 static const bool kDebugOnly = true; | 48 static const bool kDebugOnly = true; |
48 #else | 49 #else |
49 static const bool kDebugOnly = false; | 50 static const bool kDebugOnly = false; |
50 #endif | 51 #endif |
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
552 gm->draw(canvas); | 553 gm->draw(canvas); |
553 canvas->setDrawFilter(NULL); | 554 canvas->setDrawFilter(NULL); |
554 } | 555 } |
555 | 556 |
556 static ErrorCombination generate_image(GM* gm, const ConfigData& gRec, | 557 static ErrorCombination generate_image(GM* gm, const ConfigData& gRec, |
557 GrSurface* gpuTarget, | 558 GrSurface* gpuTarget, |
558 SkBitmap* bitmap, | 559 SkBitmap* bitmap, |
559 bool deferred) { | 560 bool deferred) { |
560 SkISize size (gm->getISize()); | 561 SkISize size (gm->getISize()); |
561 setup_bitmap(gRec, size, bitmap); | 562 setup_bitmap(gRec, size, bitmap); |
| 563 SkImageInfo info; |
| 564 bitmap->asImageInfo(&info); |
562 | 565 |
| 566 SkAutoTUnref<SkSurface> surface; |
563 SkAutoTUnref<SkCanvas> canvas; | 567 SkAutoTUnref<SkCanvas> canvas; |
564 | 568 |
565 if (gRec.fBackend == kRaster_Backend) { | 569 if (gRec.fBackend == kRaster_Backend) { |
566 SkAutoTUnref<SkBaseDevice> device(SkNEW_ARGS(SkBitmapDevice, (*bitma
p))); | 570 surface.reset(SkSurface::NewRasterDirect(info, |
| 571 bitmap->getPixels(), |
| 572 bitmap->rowBytes())); |
567 if (deferred) { | 573 if (deferred) { |
568 canvas.reset(SkDeferredCanvas::Create(device)); | 574 canvas.reset(SkDeferredCanvas::Create(surface)); |
569 } else { | 575 } else { |
570 canvas.reset(SkNEW_ARGS(SkCanvas, (device))); | 576 canvas.reset(SkRef(surface->getCanvas())); |
571 } | 577 } |
572 invokeGM(gm, canvas, false, deferred); | 578 invokeGM(gm, canvas, false, deferred); |
573 canvas->flush(); | 579 canvas->flush(); |
574 } | 580 } |
575 #if SK_SUPPORT_GPU | 581 #if SK_SUPPORT_GPU |
576 else { // GPU | 582 else { // GPU |
577 SkAutoTUnref<SkBaseDevice> device(SkGpuDevice::Create(gpuTarget)); | 583 surface.reset(SkSurface::NewRenderTargetDirect(gpuTarget->asRenderTa
rget())); |
578 if (deferred) { | 584 if (deferred) { |
579 canvas.reset(SkDeferredCanvas::Create(device)); | 585 canvas.reset(SkDeferredCanvas::Create(surface)); |
580 } else { | 586 } else { |
581 canvas.reset(SkNEW_ARGS(SkCanvas, (device))); | 587 canvas.reset(SkRef(surface->getCanvas())); |
582 } | 588 } |
583 invokeGM(gm, canvas, false, deferred); | 589 invokeGM(gm, canvas, false, deferred); |
584 // the device is as large as the current rendertarget, so | 590 // the device is as large as the current rendertarget, so |
585 // we explicitly only readback the amount we expect (in | 591 // we explicitly only readback the amount we expect (in |
586 // size) overwrite our previous allocation | 592 // size) overwrite our previous allocation |
587 bitmap->setConfig(SkBitmap::kARGB_8888_Config, size.fWidth, | 593 bitmap->setConfig(SkBitmap::kARGB_8888_Config, size.fWidth, |
588 size.fHeight); | 594 size.fHeight); |
589 canvas->readPixels(bitmap, 0, 0); | 595 canvas->readPixels(bitmap, 0, 0); |
590 } | 596 } |
591 #endif | 597 #endif |
(...skipping 1821 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2413 if (FLAGS_forceBWtext) { | 2419 if (FLAGS_forceBWtext) { |
2414 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref(); | 2420 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref(); |
2415 } | 2421 } |
2416 } | 2422 } |
2417 | 2423 |
2418 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) | 2424 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) |
2419 int main(int argc, char * const argv[]) { | 2425 int main(int argc, char * const argv[]) { |
2420 return tool_main(argc, (char**) argv); | 2426 return tool_main(argc, (char**) argv); |
2421 } | 2427 } |
2422 #endif | 2428 #endif |
OLD | NEW |