| 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 637 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 648             if (useMPD) { | 648             if (useMPD) { | 
| 649                 SkMultiPictureDraw mpd; | 649                 SkMultiPictureDraw mpd; | 
| 650                 mpd.add(surf->getCanvas(), pict, &matrix, NULL); | 650                 mpd.add(surf->getCanvas(), pict, &matrix, NULL); | 
| 651                 mpd.draw(); | 651                 mpd.draw(); | 
| 652             } else { | 652             } else { | 
| 653                 surf->getCanvas()->drawPicture(pict, &matrix, NULL); | 653                 surf->getCanvas()->drawPicture(pict, &matrix, NULL); | 
| 654             } | 654             } | 
| 655         } | 655         } | 
| 656     } | 656     } | 
| 657 | 657 | 
| 658     static void generate_image_from_picture(GM* gm, const ConfigData& gRec, | 658     static void generate_image_from_picture(GM* gm, const ConfigData& config, | 
|  | 659                                             GrSurface* gpuTarget, | 
| 659                                             SkPicture* pict, SkBitmap* bitmap, | 660                                             SkPicture* pict, SkBitmap* bitmap, | 
| 660                                             SkScalar scale = SK_Scalar1, | 661                                             SkScalar scale = SK_Scalar1, | 
| 661                                             bool tile = false) { | 662                                             bool tile = false) { | 
| 662         SkISize size = gm->getISize(); | 663         const SkISize size = gm->getISize(); | 
| 663         setup_bitmap(gRec, size, bitmap); |  | 
| 664 | 664 | 
| 665         SkAutoTUnref<SkSurface> surf(SkSurface::NewRasterDirect(bitmap->info(), | 665         SkAutoTUnref<SkSurface> surf(CreateSurface(config, size, gpuTarget)); | 
| 666                                                                 bitmap->getPixel
      s(), |  | 
| 667                                                                 bitmap->rowBytes
      ())); |  | 
| 668 | 666 | 
| 669         DrawPictureToSurface(surf, pict, scale, tile, false); | 667         DrawPictureToSurface(surf, pict, scale, tile, false); | 
|  | 668 | 
|  | 669         setup_bitmap(config, size, bitmap); | 
|  | 670 | 
|  | 671         surf->readPixels(bitmap->info(), bitmap->getPixels(), bitmap->rowBytes()
      , 0, 0); | 
|  | 672 | 
| 670         complete_bitmap(bitmap); | 673         complete_bitmap(bitmap); | 
| 671     } | 674     } | 
| 672 | 675 | 
| 673     static bool generate_pdf(GM* gm, SkDynamicMemoryWStream& pdf) { | 676     static bool generate_pdf(GM* gm, SkDynamicMemoryWStream& pdf) { | 
| 674 #ifdef SK_SUPPORT_PDF | 677 #ifdef SK_SUPPORT_PDF | 
| 675         SkMatrix initialTransform = gm->getInitialTransform(); | 678         SkMatrix initialTransform = gm->getInitialTransform(); | 
| 676         if (FLAGS_useDocumentInsteadOfDevice) { | 679         if (FLAGS_useDocumentInsteadOfDevice) { | 
| 677             SkISize pageISize = gm->getISize(); | 680             SkISize pageISize = gm->getISize(); | 
| 678             SkAutoTUnref<SkDocument> pdfDoc( | 681             SkAutoTUnref<SkDocument> pdfDoc( | 
| 679                     SkDocument::CreatePDF(&pdf, NULL, | 682                     SkDocument::CreatePDF(&pdf, NULL, | 
| (...skipping 943 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1623     } | 1626     } | 
| 1624 } | 1627 } | 
| 1625 | 1628 | 
| 1626 /** | 1629 /** | 
| 1627  * Run this test in a number of different drawing modes (pipe, | 1630  * Run this test in a number of different drawing modes (pipe, | 
| 1628  * deferred, tiled, etc.), confirming that the resulting bitmaps all | 1631  * deferred, tiled, etc.), confirming that the resulting bitmaps all | 
| 1629  * *exactly* match comparisonBitmap. | 1632  * *exactly* match comparisonBitmap. | 
| 1630  * | 1633  * | 
| 1631  * Returns all errors encountered while doing so. | 1634  * Returns all errors encountered while doing so. | 
| 1632  */ | 1635  */ | 
| 1633 ErrorCombination run_multiple_modes(GMMain &gmmain, GM *gm, const ConfigData &co
      mpareConfig, | 1636 ErrorCombination run_multiple_modes(GMMain &gmmain, GM *gm, | 
|  | 1637                                     const ConfigData &compareConfig, GrSurface* 
      gpuTarget, | 
| 1634                                     const SkBitmap &comparisonBitmap, | 1638                                     const SkBitmap &comparisonBitmap, | 
| 1635                                     const SkTDArray<SkScalar> &tileGridReplaySca
      les); | 1639                                     const SkTDArray<SkScalar> &tileGridReplaySca
      les); | 
| 1636 ErrorCombination run_multiple_modes(GMMain &gmmain, GM *gm, const ConfigData &co
      mpareConfig, | 1640 ErrorCombination run_multiple_modes(GMMain &gmmain, GM *gm, | 
|  | 1641                                     const ConfigData &compareConfig, GrSurface* 
      gpuTarget, | 
| 1637                                     const SkBitmap &comparisonBitmap, | 1642                                     const SkBitmap &comparisonBitmap, | 
| 1638                                     const SkTDArray<SkScalar> &tileGridReplaySca
      les) { | 1643                                     const SkTDArray<SkScalar> &tileGridReplaySca
      les) { | 
| 1639     ErrorCombination errorsForAllModes; | 1644     ErrorCombination errorsForAllModes; | 
| 1640     uint32_t gmFlags = gm->getFlags(); | 1645     uint32_t gmFlags = gm->getFlags(); | 
| 1641     const SkString shortNamePlusConfig = gmmain.make_shortname_plus_config(gm->g
      etName(), | 1646     const SkString shortNamePlusConfig = gmmain.make_shortname_plus_config(gm->g
      etName(), | 
| 1642                                                                            compa
      reConfig.fName); | 1647                                                                            compa
      reConfig.fName); | 
| 1643 | 1648 | 
| 1644     SkPicture* pict = gmmain.generate_new_picture(gm, kNone_BbhType, 0); | 1649     SkPicture* pict = gmmain.generate_new_picture(gm, kNone_BbhType, 0); | 
| 1645     SkAutoTUnref<SkPicture> aur(pict); | 1650     SkAutoTUnref<SkPicture> aur(pict); | 
| 1646     if (FLAGS_replay) { | 1651     if (FLAGS_replay) { | 
| 1647         const char renderModeDescriptor[] = "-replay"; | 1652         const char renderModeDescriptor[] = "-replay"; | 
| 1648         if (gmFlags & GM::kSkipPicture_Flag) { | 1653         if (gmFlags & GM::kSkipPicture_Flag) { | 
| 1649             gmmain.RecordTestResults(kIntentionallySkipped_ErrorType, shortNameP
      lusConfig, | 1654             gmmain.RecordTestResults(kIntentionallySkipped_ErrorType, shortNameP
      lusConfig, | 
| 1650                                      renderModeDescriptor); | 1655                                      renderModeDescriptor); | 
| 1651             errorsForAllModes.add(kIntentionallySkipped_ErrorType); | 1656             errorsForAllModes.add(kIntentionallySkipped_ErrorType); | 
| 1652         } else { | 1657         } else { | 
| 1653             SkBitmap bitmap; | 1658             SkBitmap bitmap; | 
| 1654             gmmain.generate_image_from_picture(gm, compareConfig, pict, &bitmap)
      ; | 1659             gmmain.generate_image_from_picture(gm, compareConfig, gpuTarget, pic
      t, &bitmap); | 
|  | 1660 | 
| 1655             errorsForAllModes.add(gmmain.compare_test_results_to_reference_bitma
      p( | 1661             errorsForAllModes.add(gmmain.compare_test_results_to_reference_bitma
      p( | 
| 1656                 gm->getName(), compareConfig.fName, renderModeDescriptor, bitmap
      , | 1662                 gm->getName(), compareConfig.fName, renderModeDescriptor, bitmap
      , | 
| 1657                 &comparisonBitmap)); | 1663                 &comparisonBitmap)); | 
| 1658         } | 1664         } | 
| 1659     } | 1665     } | 
| 1660 | 1666 | 
| 1661     if (FLAGS_serialize) { | 1667     if (FLAGS_serialize) { | 
| 1662         const char renderModeDescriptor[] = "-serialize"; | 1668         const char renderModeDescriptor[] = "-serialize"; | 
| 1663         if (gmFlags & GM::kSkipPicture_Flag) { | 1669         if (gmFlags & GM::kSkipPicture_Flag) { | 
| 1664             gmmain.RecordTestResults(kIntentionallySkipped_ErrorType, shortNameP
      lusConfig, | 1670             gmmain.RecordTestResults(kIntentionallySkipped_ErrorType, shortNameP
      lusConfig, | 
| 1665                                      renderModeDescriptor); | 1671                                      renderModeDescriptor); | 
| 1666             errorsForAllModes.add(kIntentionallySkipped_ErrorType); | 1672             errorsForAllModes.add(kIntentionallySkipped_ErrorType); | 
| 1667         } else { | 1673         } else { | 
| 1668             SkPicture* repict = gmmain.stream_to_new_picture(*pict); | 1674             SkPicture* repict = gmmain.stream_to_new_picture(*pict); | 
| 1669             SkAutoTUnref<SkPicture> aurr(repict); | 1675             SkAutoTUnref<SkPicture> aurr(repict); | 
| 1670             SkBitmap bitmap; | 1676             SkBitmap bitmap; | 
| 1671             gmmain.generate_image_from_picture(gm, compareConfig, repict, &bitma
      p); | 1677             gmmain.generate_image_from_picture(gm, compareConfig, gpuTarget, rep
      ict, &bitmap); | 
| 1672             errorsForAllModes.add(gmmain.compare_test_results_to_reference_bitma
      p( | 1678             errorsForAllModes.add(gmmain.compare_test_results_to_reference_bitma
      p( | 
| 1673                 gm->getName(), compareConfig.fName, renderModeDescriptor, bitmap
      , | 1679                 gm->getName(), compareConfig.fName, renderModeDescriptor, bitmap
      , | 
| 1674                 &comparisonBitmap)); | 1680                 &comparisonBitmap)); | 
| 1675         } | 1681         } | 
| 1676     } | 1682     } | 
| 1677 | 1683 | 
| 1678     if ((1 == FLAGS_writePicturePath.count()) && | 1684     if ((1 == FLAGS_writePicturePath.count()) && | 
| 1679         !(gmFlags & GM::kSkipPicture_Flag)) { | 1685         !(gmFlags & GM::kSkipPicture_Flag)) { | 
| 1680         const char* pictureSuffix = "skp"; | 1686         const char* pictureSuffix = "skp"; | 
| 1681         // TODO(epoger): Make sure this still works even though the | 1687         // TODO(epoger): Make sure this still works even though the | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
| 1694     if (FLAGS_rtree) { | 1700     if (FLAGS_rtree) { | 
| 1695         const char renderModeDescriptor[] = "-rtree"; | 1701         const char renderModeDescriptor[] = "-rtree"; | 
| 1696         if ((gmFlags & GM::kSkipPicture_Flag) || (gmFlags & GM::kSkipTiled_Flag)
      ) { | 1702         if ((gmFlags & GM::kSkipPicture_Flag) || (gmFlags & GM::kSkipTiled_Flag)
      ) { | 
| 1697             gmmain.RecordTestResults(kIntentionallySkipped_ErrorType, shortNameP
      lusConfig, | 1703             gmmain.RecordTestResults(kIntentionallySkipped_ErrorType, shortNameP
      lusConfig, | 
| 1698                                      renderModeDescriptor); | 1704                                      renderModeDescriptor); | 
| 1699             errorsForAllModes.add(kIntentionallySkipped_ErrorType); | 1705             errorsForAllModes.add(kIntentionallySkipped_ErrorType); | 
| 1700         } else { | 1706         } else { | 
| 1701             SkPicture* pict = gmmain.generate_new_picture(gm, kRTree_BbhType, 0)
      ; | 1707             SkPicture* pict = gmmain.generate_new_picture(gm, kRTree_BbhType, 0)
      ; | 
| 1702             SkAutoTUnref<SkPicture> aur(pict); | 1708             SkAutoTUnref<SkPicture> aur(pict); | 
| 1703             SkBitmap bitmap; | 1709             SkBitmap bitmap; | 
| 1704             gmmain.generate_image_from_picture(gm, compareConfig, pict, &bitmap)
      ; | 1710             gmmain.generate_image_from_picture(gm, compareConfig, gpuTarget, pic
      t, &bitmap); | 
| 1705             errorsForAllModes.add(gmmain.compare_test_results_to_reference_bitma
      p( | 1711             errorsForAllModes.add(gmmain.compare_test_results_to_reference_bitma
      p( | 
| 1706                 gm->getName(), compareConfig.fName, renderModeDescriptor, bitmap
      , | 1712                 gm->getName(), compareConfig.fName, renderModeDescriptor, bitmap
      , | 
| 1707                 &comparisonBitmap)); | 1713                 &comparisonBitmap)); | 
| 1708         } | 1714         } | 
| 1709     } | 1715     } | 
| 1710 | 1716 | 
| 1711     if (FLAGS_tileGrid) { | 1717     if (FLAGS_tileGrid) { | 
| 1712         for(int scaleIndex = 0; scaleIndex < tileGridReplayScales.count(); ++sca
      leIndex) { | 1718         for(int scaleIndex = 0; scaleIndex < tileGridReplayScales.count(); ++sca
      leIndex) { | 
| 1713             SkScalar replayScale = tileGridReplayScales[scaleIndex]; | 1719             SkScalar replayScale = tileGridReplayScales[scaleIndex]; | 
| 1714             SkString renderModeDescriptor("-tilegrid"); | 1720             SkString renderModeDescriptor("-tilegrid"); | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
| 1727                 // We record with the reciprocal scale to obtain a replay | 1733                 // We record with the reciprocal scale to obtain a replay | 
| 1728                 // result that can be validated against comparisonBitmap. | 1734                 // result that can be validated against comparisonBitmap. | 
| 1729                 SkScalar recordScale = SkScalarInvert(replayScale); | 1735                 SkScalar recordScale = SkScalarInvert(replayScale); | 
| 1730                 SkPicture* pict = gmmain.generate_new_picture( | 1736                 SkPicture* pict = gmmain.generate_new_picture( | 
| 1731                     gm, kTileGrid_BbhType, 0, recordScale); | 1737                     gm, kTileGrid_BbhType, 0, recordScale); | 
| 1732                 SkAutoTUnref<SkPicture> aur(pict); | 1738                 SkAutoTUnref<SkPicture> aur(pict); | 
| 1733                 SkBitmap bitmap; | 1739                 SkBitmap bitmap; | 
| 1734                 // We cannot yet pass 'true' to generate_image_from_picture to | 1740                 // We cannot yet pass 'true' to generate_image_from_picture to | 
| 1735                 // perform actual tiled rendering (see Issue 1198 - | 1741                 // perform actual tiled rendering (see Issue 1198 - | 
| 1736                 // https://code.google.com/p/skia/issues/detail?id=1198) | 1742                 // https://code.google.com/p/skia/issues/detail?id=1198) | 
| 1737                 gmmain.generate_image_from_picture(gm, compareConfig, pict, &bit
      map, | 1743                 gmmain.generate_image_from_picture(gm, compareConfig, gpuTarget,
       pict, &bitmap, | 
| 1738                                                    replayScale /*, true */); | 1744                                                    replayScale /*, true */); | 
| 1739                 errorsForAllModes.add(gmmain.compare_test_results_to_reference_b
      itmap( | 1745                 errorsForAllModes.add(gmmain.compare_test_results_to_reference_b
      itmap( | 
| 1740                     gm->getName(), compareConfig.fName, renderModeDescriptor.c_s
      tr(), bitmap, | 1746                     gm->getName(), compareConfig.fName, renderModeDescriptor.c_s
      tr(), bitmap, | 
| 1741                     &comparisonBitmap)); | 1747                     &comparisonBitmap)); | 
| 1742             } | 1748             } | 
| 1743         } | 1749         } | 
| 1744     } | 1750     } | 
| 1745 | 1751 | 
| 1746     // run the pipe centric GM steps | 1752     // run the pipe centric GM steps | 
| 1747     if (FLAGS_pipe) { | 1753     if (FLAGS_pipe) { | 
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1868 | 1874 | 
| 1869         if (errorsForThisConfig.isEmpty()) { | 1875         if (errorsForThisConfig.isEmpty()) { | 
| 1870             errorsForThisConfig.add(gmmain.test_drawing(gm, config, pdfRasterize
      rs, | 1876             errorsForThisConfig.add(gmmain.test_drawing(gm, config, pdfRasterize
      rs, | 
| 1871                                                         writePath, gpuTarget, | 1877                                                         writePath, gpuTarget, | 
| 1872                                                         &comparisonBitmap)); | 1878                                                         &comparisonBitmap)); | 
| 1873             gmmain.RecordTestResults(errorsForThisConfig, shortNamePlusConfig, "
      "); | 1879             gmmain.RecordTestResults(errorsForThisConfig, shortNamePlusConfig, "
      "); | 
| 1874         } | 1880         } | 
| 1875 | 1881 | 
| 1876         // TODO: run only if gmmain.test_drawing succeeded. | 1882         // TODO: run only if gmmain.test_drawing succeeded. | 
| 1877         if (kRaster_Backend == config.fBackend) { | 1883         if (kRaster_Backend == config.fBackend) { | 
| 1878             run_multiple_modes(gmmain, gm, config, comparisonBitmap, tileGridRep
      layScales); | 1884             run_multiple_modes(gmmain, gm, config, gpuTarget, comparisonBitmap, 
      tileGridReplayScales); | 
| 1879         } | 1885         } | 
| 1880 | 1886 | 
| 1881         if (FLAGS_deferred && errorsForThisConfig.isEmpty() && | 1887         if (FLAGS_deferred && errorsForThisConfig.isEmpty() && | 
| 1882             (kGPU_Backend == config.fBackend || kRaster_Backend == config.fBacke
      nd)) { | 1888             (kGPU_Backend == config.fBackend || kRaster_Backend == config.fBacke
      nd)) { | 
| 1883             errorsForThisConfig.add(gmmain.test_deferred_drawing(gm, config, com
      parisonBitmap, | 1889             errorsForThisConfig.add(gmmain.test_deferred_drawing(gm, config, com
      parisonBitmap, | 
| 1884                                                                  gpuTarget)); | 1890                                                                  gpuTarget)); | 
| 1885         } | 1891         } | 
| 1886 | 1892 | 
| 1887         if (FLAGS_mpd && (kGPU_Backend == config.fBackend || kRaster_Backend == 
      config.fBackend)) { | 1893         if (FLAGS_mpd && (kGPU_Backend == config.fBackend || kRaster_Backend == 
      config.fBackend)) { | 
| 1888 | 1894 | 
| (...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2564     if (FLAGS_forceBWtext) { | 2570     if (FLAGS_forceBWtext) { | 
| 2565         canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref(); | 2571         canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref(); | 
| 2566     } | 2572     } | 
| 2567 } | 2573 } | 
| 2568 | 2574 | 
| 2569 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) | 2575 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) | 
| 2570 int main(int argc, char * const argv[]) { | 2576 int main(int argc, char * const argv[]) { | 
| 2571     return tool_main(argc, (char**) argv); | 2577     return tool_main(argc, (char**) argv); | 
| 2572 } | 2578 } | 
| 2573 #endif | 2579 #endif | 
| OLD | NEW | 
|---|