Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(252)

Side by Side Diff: tools/PictureRenderer.h

Issue 639013003: Update old tools to allow MultiPictureDraw rendering (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Update to ToT Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/PictureBenchmark.cpp ('k') | tools/PictureRenderer.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #ifndef PictureRenderer_DEFINED 8 #ifndef PictureRenderer_DEFINED
9 #define PictureRenderer_DEFINED 9 #define PictureRenderer_DEFINED
10 10
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 * Called with each new SkPicture to render. 81 * Called with each new SkPicture to render.
82 * 82 *
83 * @param pict The SkPicture to render. 83 * @param pict The SkPicture to render.
84 * @param writePath The output directory within which this renderer should w rite all images, 84 * @param writePath The output directory within which this renderer should w rite all images,
85 * or NULL if this renderer should not write all images. 85 * or NULL if this renderer should not write all images.
86 * @param mismatchPath The output directory within which this renderer shoul d write any images 86 * @param mismatchPath The output directory within which this renderer shoul d write any images
87 * which do not match expectations, or NULL if this renderer should not write mismatches. 87 * which do not match expectations, or NULL if this renderer should not write mismatches.
88 * @param inputFilename The name of the input file we are rendering. 88 * @param inputFilename The name of the input file we are rendering.
89 * @param useChecksumBasedFilenames Whether to use checksum-based filenames when writing 89 * @param useChecksumBasedFilenames Whether to use checksum-based filenames when writing
90 * bitmap images to disk. 90 * bitmap images to disk.
91 * @param useMultiPictureDraw true if MultiPictureDraw should be used for re ndering
91 */ 92 */
92 virtual void init(const SkPicture* pict, 93 virtual void init(const SkPicture* pict,
93 const SkString* writePath, 94 const SkString* writePath,
94 const SkString* mismatchPath, 95 const SkString* mismatchPath,
95 const SkString* inputFilename, 96 const SkString* inputFilename,
96 bool useChecksumBasedFilenames); 97 bool useChecksumBasedFilenames,
98 bool useMultiPictureDraw);
97 99
98 /** 100 /**
99 * TODO(epoger): Temporary hack, while we work on http://skbug.com/2584 ('be nch_pictures is 101 * TODO(epoger): Temporary hack, while we work on http://skbug.com/2584 ('be nch_pictures is
100 * timing reading pixels and writing json files'), such that: 102 * timing reading pixels and writing json files'), such that:
101 * - render_pictures can call this method and continue to work 103 * - render_pictures can call this method and continue to work
102 * - any other callers (bench_pictures) will skip calls to write() by defaul t 104 * - any other callers (bench_pictures) will skip calls to write() by defaul t
103 */ 105 */
104 void enableWrites() { fEnableWrites = true; } 106 void enableWrites() { fEnableWrites = true; }
105 107
106 /** 108 /**
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 #if SK_SUPPORT_GPU 440 #if SK_SUPPORT_GPU
439 virtual ~PictureRenderer() { 441 virtual ~PictureRenderer() {
440 SkSafeUnref(fGrContext); 442 SkSafeUnref(fGrContext);
441 } 443 }
442 #endif 444 #endif
443 445
444 protected: 446 protected:
445 SkAutoTUnref<SkCanvas> fCanvas; 447 SkAutoTUnref<SkCanvas> fCanvas;
446 SkAutoTUnref<const SkPicture> fPicture; 448 SkAutoTUnref<const SkPicture> fPicture;
447 bool fUseChecksumBasedFilenames; 449 bool fUseChecksumBasedFilenames;
450 bool fUseMultiPictureDraw;
448 ImageResultsAndExpectations* fJsonSummaryPtr; 451 ImageResultsAndExpectations* fJsonSummaryPtr;
449 SkDeviceTypes fDeviceType; 452 SkDeviceTypes fDeviceType;
450 bool fEnableWrites; 453 bool fEnableWrites;
451 BBoxHierarchyType fBBoxHierarchyType; 454 BBoxHierarchyType fBBoxHierarchyType;
452 DrawFilterFlags fDrawFilters[SkDrawFilter::kTypeCount]; 455 DrawFilterFlags fDrawFilters[SkDrawFilter::kTypeCount];
453 SkString fDrawFiltersConfig; 456 SkString fDrawFiltersConfig;
454 SkString fWritePath; 457 SkString fWritePath;
455 SkString fMismatchPath; 458 SkString fMismatchPath;
456 SkString fInputFilename; 459 SkString fInputFilename;
457 SkTileGridFactory::TileGridInfo fGridInfo; // used when fBBoxHierarchyType i s TileGrid 460 SkTileGridFactory::TileGridInfo fGridInfo; // used when fBBoxHierarchyType i s TileGrid
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 class SimplePictureRenderer : public PictureRenderer { 544 class SimplePictureRenderer : public PictureRenderer {
542 public: 545 public:
543 #if SK_SUPPORT_GPU 546 #if SK_SUPPORT_GPU
544 SimplePictureRenderer(const GrContext::Options &opts) : INHERITED(opts) { } 547 SimplePictureRenderer(const GrContext::Options &opts) : INHERITED(opts) { }
545 #endif 548 #endif
546 549
547 virtual void init(const SkPicture* pict, 550 virtual void init(const SkPicture* pict,
548 const SkString* writePath, 551 const SkString* writePath,
549 const SkString* mismatchPath, 552 const SkString* mismatchPath,
550 const SkString* inputFilename, 553 const SkString* inputFilename,
551 bool useChecksumBasedFilenames) SK_OVERRIDE; 554 bool useChecksumBasedFilenames,
555 bool useMultiPictureDraw) SK_OVERRIDE;
552 556
553 virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE; 557 virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE;
554 558
555 private: 559 private:
556 virtual SkString getConfigNameInternal() SK_OVERRIDE; 560 virtual SkString getConfigNameInternal() SK_OVERRIDE;
557 561
558 typedef PictureRenderer INHERITED; 562 typedef PictureRenderer INHERITED;
559 }; 563 };
560 564
561 class TiledPictureRenderer : public PictureRenderer { 565 class TiledPictureRenderer : public PictureRenderer {
562 public: 566 public:
563 #if SK_SUPPORT_GPU 567 #if SK_SUPPORT_GPU
564 TiledPictureRenderer(const GrContext::Options &opts); 568 TiledPictureRenderer(const GrContext::Options &opts);
565 #else 569 #else
566 TiledPictureRenderer(); 570 TiledPictureRenderer();
567 #endif 571 #endif
568 572
569 virtual void init(const SkPicture* pict, 573 virtual void init(const SkPicture* pict,
570 const SkString* writePath, 574 const SkString* writePath,
571 const SkString* mismatchPath, 575 const SkString* mismatchPath,
572 const SkString* inputFilename, 576 const SkString* inputFilename,
573 bool useChecksumBasedFilenames) SK_OVERRIDE; 577 bool useChecksumBasedFilenames,
578 bool useMultiPictureDraw) SK_OVERRIDE;
574 579
575 /** 580 /**
576 * Renders to tiles, rather than a single canvas. 581 * Renders to tiles, rather than a single canvas.
577 * If fWritePath was provided, a separate file is 582 * If fWritePath was provided, a separate file is
578 * created for each tile, named "path0.png", "path1.png", etc. 583 * created for each tile, named "path0.png", "path1.png", etc.
579 */ 584 */
580 virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE; 585 virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE;
581 586
582 virtual void end() SK_OVERRIDE; 587 virtual void end() SK_OVERRIDE;
583 588
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 bool nextTile(int& i, int& j); 657 bool nextTile(int& i, int& j);
653 658
654 /** 659 /**
655 * Render one tile. This will draw the same tile each time it is called unti l nextTile is 660 * Render one tile. This will draw the same tile each time it is called unti l nextTile is
656 * called. The tile rendered will depend on how many calls have been made to nextTile. 661 * called. The tile rendered will depend on how many calls have been made to nextTile.
657 * It is an error to call this without first calling nextTile, or if nextTil e returns false. 662 * It is an error to call this without first calling nextTile, or if nextTil e returns false.
658 */ 663 */
659 void drawCurrentTile(); 664 void drawCurrentTile();
660 665
661 protected: 666 protected:
662 SkTDArray<SkRect> fTileRects; 667 SkTDArray<SkIRect> fTileRects;
663 668
664 virtual SkCanvas* setupCanvas(int width, int height) SK_OVERRIDE; 669 virtual SkCanvas* setupCanvas(int width, int height) SK_OVERRIDE;
665 virtual SkString getConfigNameInternal() SK_OVERRIDE; 670 virtual SkString getConfigNameInternal() SK_OVERRIDE;
666 671
667 private: 672 private:
668 int fTileWidth; 673 int fTileWidth;
669 int fTileHeight; 674 int fTileHeight;
670 double fTileWidthPercentage; 675 double fTileWidthPercentage;
671 double fTileHeightPercentage; 676 double fTileHeightPercentage;
672 int fTileMinPowerOf2Width; 677 int fTileMinPowerOf2Width;
673 678
674 // These variables are only used for timing individual tiles. 679 // These variables are only used for timing individual tiles.
675 // Next tile to draw in fTileRects. 680 // Next tile to draw in fTileRects.
676 int fCurrentTileOffset; 681 int fCurrentTileOffset;
677 // Number of tiles in the x direction. 682 // Number of tiles in the x direction.
678 int fTilesX; 683 int fTilesX;
679 // Number of tiles in the y direction. 684 // Number of tiles in the y direction.
680 int fTilesY; 685 int fTilesY;
681 686
682 void setupTiles(); 687 void setupTiles();
683 void setupPowerOf2Tiles(); 688 void setupPowerOf2Tiles();
689 bool postRender(SkCanvas*, const SkIRect& tileRect,
690 SkBitmap* tempBM, SkBitmap** out,
691 int tileNumber);
684 692
685 typedef PictureRenderer INHERITED; 693 typedef PictureRenderer INHERITED;
686 }; 694 };
687 695
688 /** 696 /**
689 * This class does not do any rendering, but its render function executes turnin g an SkPictureRecord 697 * This class does not do any rendering, but its render function executes turnin g an SkPictureRecord
690 * into an SkPicturePlayback, which we want to time. 698 * into an SkPicturePlayback, which we want to time.
691 */ 699 */
692 class PlaybackCreationRenderer : public PictureRenderer { 700 class PlaybackCreationRenderer : public PictureRenderer {
693 public: 701 public:
(...skipping 19 matching lines...) Expand all
713 721
714 #if SK_SUPPORT_GPU 722 #if SK_SUPPORT_GPU
715 extern PictureRenderer* CreateGatherPixelRefsRenderer(const GrContext::Options& opts); 723 extern PictureRenderer* CreateGatherPixelRefsRenderer(const GrContext::Options& opts);
716 #else 724 #else
717 extern PictureRenderer* CreateGatherPixelRefsRenderer(); 725 extern PictureRenderer* CreateGatherPixelRefsRenderer();
718 #endif 726 #endif
719 727
720 } 728 }
721 729
722 #endif // PictureRenderer_DEFINED 730 #endif // PictureRenderer_DEFINED
OLDNEW
« no previous file with comments | « tools/PictureBenchmark.cpp ('k') | tools/PictureRenderer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698