| 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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 #include "SkGpuDevice.h" | 60 #include "SkGpuDevice.h" |
| 61 typedef GrContextFactory::GLContextType GLContextType; | 61 typedef GrContextFactory::GLContextType GLContextType; |
| 62 #define DEFAULT_CACHE_VALUE -1 | 62 #define DEFAULT_CACHE_VALUE -1 |
| 63 static int gGpuCacheSizeBytes; | 63 static int gGpuCacheSizeBytes; |
| 64 static int gGpuCacheSizeCount; | 64 static int gGpuCacheSizeCount; |
| 65 #else | 65 #else |
| 66 class GrContextFactory; | 66 class GrContextFactory; |
| 67 class GrContext; | 67 class GrContext; |
| 68 class GrSurface; | 68 class GrSurface; |
| 69 typedef int GLContextType; | 69 typedef int GLContextType; |
| 70 typedef int GrGLStandard; |
| 70 #endif | 71 #endif |
| 71 | 72 |
| 72 #define DEBUGFAIL_SEE_STDERR SkDEBUGFAIL("see stderr for message") | 73 #define DEBUGFAIL_SEE_STDERR SkDEBUGFAIL("see stderr for message") |
| 73 | 74 |
| 74 DECLARE_bool(useDocumentInsteadOfDevice); | 75 DECLARE_bool(useDocumentInsteadOfDevice); |
| 75 | 76 |
| 76 #ifdef SK_SUPPORT_PDF | 77 #ifdef SK_SUPPORT_PDF |
| 77 #include "SkPDFDevice.h" | 78 #include "SkPDFDevice.h" |
| 78 #include "SkPDFDocument.h" | 79 #include "SkPDFDocument.h" |
| 79 #endif | 80 #endif |
| (...skipping 1248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1328 #endif | 1329 #endif |
| 1329 #ifdef SK_BUILD_NATIVE_PDF_RENDERER | 1330 #ifdef SK_BUILD_NATIVE_PDF_RENDERER |
| 1330 { &SkNativeRasterizePDF, "native", true }, | 1331 { &SkNativeRasterizePDF, "native", true }, |
| 1331 #endif // SK_BUILD_NATIVE_PDF_RENDERER | 1332 #endif // SK_BUILD_NATIVE_PDF_RENDERER |
| 1332 // The following exists so that this array is never zero length. | 1333 // The following exists so that this array is never zero length. |
| 1333 { &SkNoRasterizePDF, "none", false}, | 1334 { &SkNoRasterizePDF, "none", false}, |
| 1334 }; | 1335 }; |
| 1335 | 1336 |
| 1336 static const char kDefaultsConfigStr[] = "defaults"; | 1337 static const char kDefaultsConfigStr[] = "defaults"; |
| 1337 static const char kExcludeConfigChar = '~'; | 1338 static const char kExcludeConfigChar = '~'; |
| 1339 #if SK_SUPPORT_GPU |
| 1340 static const char kGpuAPINameGL[] = "gl"; |
| 1341 static const char kGpuAPINameGLES[] = "gles"; |
| 1342 #endif |
| 1338 | 1343 |
| 1339 static SkString configUsage() { | 1344 static SkString configUsage() { |
| 1340 SkString result; | 1345 SkString result; |
| 1341 result.appendf("Space delimited list of which configs to run. Possible optio
ns: ["); | 1346 result.appendf("Space delimited list of which configs to run. Possible optio
ns: ["); |
| 1342 for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) { | 1347 for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) { |
| 1343 SkASSERT(gRec[i].fName != kDefaultsConfigStr); | 1348 SkASSERT(gRec[i].fName != kDefaultsConfigStr); |
| 1344 if (i > 0) { | 1349 if (i > 0) { |
| 1345 result.append("|"); | 1350 result.append("|"); |
| 1346 } | 1351 } |
| 1347 result.appendf("%s", gRec[i].fName); | 1352 result.appendf("%s", gRec[i].fName); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1417 #define TOSTRING(x) TOSTRING_INTERNAL(x) | 1422 #define TOSTRING(x) TOSTRING_INTERNAL(x) |
| 1418 | 1423 |
| 1419 // Alphabetized ignoring "no" prefix ("readPath", "noreplay", "resourcePath"). | 1424 // Alphabetized ignoring "no" prefix ("readPath", "noreplay", "resourcePath"). |
| 1420 DEFINE_string(config, "", configUsage().c_str()); | 1425 DEFINE_string(config, "", configUsage().c_str()); |
| 1421 DEFINE_string(pdfRasterizers, "default", pdfRasterizerUsage().c_str()); | 1426 DEFINE_string(pdfRasterizers, "default", pdfRasterizerUsage().c_str()); |
| 1422 DEFINE_bool(deferred, false, "Exercise the deferred rendering test pass."); | 1427 DEFINE_bool(deferred, false, "Exercise the deferred rendering test pass."); |
| 1423 DEFINE_bool(dryRun, false, "Don't actually run the tests, just print what would
have been done."); | 1428 DEFINE_bool(dryRun, false, "Don't actually run the tests, just print what would
have been done."); |
| 1424 DEFINE_string(excludeConfig, "", "Space delimited list of configs to skip."); | 1429 DEFINE_string(excludeConfig, "", "Space delimited list of configs to skip."); |
| 1425 DEFINE_bool(forceBWtext, false, "Disable text anti-aliasing."); | 1430 DEFINE_bool(forceBWtext, false, "Disable text anti-aliasing."); |
| 1426 #if SK_SUPPORT_GPU | 1431 #if SK_SUPPORT_GPU |
| 1432 DEFINE_string(gpuAPI, "", "Force use of specific gpu API. Using \"gl\" " |
| 1433 "forces OpenGL API. Using \"gles\" forces OpenGL ES API. " |
| 1434 "Defaults to empty string, which selects the API native to the " |
| 1435 "system."); |
| 1427 DEFINE_string(gpuCacheSize, "", "<bytes> <count>: Limit the gpu cache to byte si
ze or " | 1436 DEFINE_string(gpuCacheSize, "", "<bytes> <count>: Limit the gpu cache to byte si
ze or " |
| 1428 "object count. " TOSTRING(DEFAULT_CACHE_VALUE) " for either value
means " | 1437 "object count. " TOSTRING(DEFAULT_CACHE_VALUE) " for either value
means " |
| 1429 "use the default. 0 for either disables the cache."); | 1438 "use the default. 0 for either disables the cache."); |
| 1430 #endif | 1439 #endif |
| 1431 DEFINE_bool(hierarchy, false, "Whether to use multilevel directory structure " | 1440 DEFINE_bool(hierarchy, false, "Whether to use multilevel directory structure " |
| 1432 "when reading/writing files."); | 1441 "when reading/writing files."); |
| 1433 DEFINE_string(ignoreErrorTypes, kDefaultIgnorableErrorTypes.asString(" ").c_str(
), | 1442 DEFINE_string(ignoreErrorTypes, kDefaultIgnorableErrorTypes.asString(" ").c_str(
), |
| 1434 "Space-separated list of ErrorTypes that should be ignored. If any
*other* error " | 1443 "Space-separated list of ErrorTypes that should be ignored. If any
*other* error " |
| 1435 "types are encountered, the tool will exit with a nonzero return v
alue."); | 1444 "types are encountered, the tool will exit with a nonzero return v
alue."); |
| 1436 DEFINE_string(ignoreFailuresFile, "", "Path to file containing a list of tests f
or which we " | 1445 DEFINE_string(ignoreFailuresFile, "", "Path to file containing a list of tests f
or which we " |
| (...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1694 * Run this test in a number of different configs (8888, 565, PDF, | 1703 * Run this test in a number of different configs (8888, 565, PDF, |
| 1695 * etc.), confirming that the resulting bitmaps match expectations | 1704 * etc.), confirming that the resulting bitmaps match expectations |
| 1696 * (which may be different for each config). | 1705 * (which may be different for each config). |
| 1697 * | 1706 * |
| 1698 * Returns all errors encountered while doing so. | 1707 * Returns all errors encountered while doing so. |
| 1699 */ | 1708 */ |
| 1700 ErrorCombination run_multiple_configs(GMMain &gmmain, GM *gm, | 1709 ErrorCombination run_multiple_configs(GMMain &gmmain, GM *gm, |
| 1701 const SkTDArray<size_t> &configs, | 1710 const SkTDArray<size_t> &configs, |
| 1702 const SkTDArray<const PDFRasterizerData*>
&pdfRasterizers, | 1711 const SkTDArray<const PDFRasterizerData*>
&pdfRasterizers, |
| 1703 const SkTDArray<SkScalar> &tileGridReplayS
cales, | 1712 const SkTDArray<SkScalar> &tileGridReplayS
cales, |
| 1704 GrContextFactory *grFactory); | 1713 GrContextFactory *grFactory, |
| 1714 GrGLStandard gpuAPI); |
| 1705 ErrorCombination run_multiple_configs(GMMain &gmmain, GM *gm, | 1715 ErrorCombination run_multiple_configs(GMMain &gmmain, GM *gm, |
| 1706 const SkTDArray<size_t> &configs, | 1716 const SkTDArray<size_t> &configs, |
| 1707 const SkTDArray<const PDFRasterizerData*>
&pdfRasterizers, | 1717 const SkTDArray<const PDFRasterizerData*>
&pdfRasterizers, |
| 1708 const SkTDArray<SkScalar> &tileGridReplayS
cales, | 1718 const SkTDArray<SkScalar> &tileGridReplayS
cales, |
| 1709 GrContextFactory *grFactory) { | 1719 GrContextFactory *grFactory, |
| 1720 GrGLStandard gpuAPI) { |
| 1710 const char renderModeDescriptor[] = ""; | 1721 const char renderModeDescriptor[] = ""; |
| 1711 ErrorCombination errorsForAllConfigs; | 1722 ErrorCombination errorsForAllConfigs; |
| 1712 uint32_t gmFlags = gm->getFlags(); | 1723 uint32_t gmFlags = gm->getFlags(); |
| 1713 | 1724 |
| 1714 for (int i = 0; i < configs.count(); i++) { | 1725 for (int i = 0; i < configs.count(); i++) { |
| 1715 ConfigData config = gRec[configs[i]]; | 1726 ConfigData config = gRec[configs[i]]; |
| 1716 const SkString shortNamePlusConfig = gmmain.make_shortname_plus_config(g
m->getName(), | 1727 const SkString shortNamePlusConfig = gmmain.make_shortname_plus_config(g
m->getName(), |
| 1717 c
onfig.fName); | 1728 c
onfig.fName); |
| 1718 | 1729 |
| 1719 // Skip any tests that we don't even need to try. | 1730 // Skip any tests that we don't even need to try. |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1749 // Now we know that we want to run this test and record its | 1760 // Now we know that we want to run this test and record its |
| 1750 // success or failure. | 1761 // success or failure. |
| 1751 ErrorCombination errorsForThisConfig; | 1762 ErrorCombination errorsForThisConfig; |
| 1752 GrSurface* gpuTarget = NULL; | 1763 GrSurface* gpuTarget = NULL; |
| 1753 #if SK_SUPPORT_GPU | 1764 #if SK_SUPPORT_GPU |
| 1754 SkAutoTUnref<GrSurface> auGpuTarget; | 1765 SkAutoTUnref<GrSurface> auGpuTarget; |
| 1755 if ((errorsForThisConfig.isEmpty()) && (kGPU_Backend == config.fBackend)
) { | 1766 if ((errorsForThisConfig.isEmpty()) && (kGPU_Backend == config.fBackend)
) { |
| 1756 if (FLAGS_resetGpuContext) { | 1767 if (FLAGS_resetGpuContext) { |
| 1757 grFactory->destroyContexts(); | 1768 grFactory->destroyContexts(); |
| 1758 } | 1769 } |
| 1759 GrContext* gr = grFactory->get(config.fGLContextType); | 1770 GrContext* gr = grFactory->get(config.fGLContextType, gpuAPI); |
| 1760 bool grSuccess = false; | 1771 bool grSuccess = false; |
| 1761 if (gr) { | 1772 if (gr) { |
| 1762 // create a render target to back the device | 1773 // create a render target to back the device |
| 1763 GrTextureDesc desc; | 1774 GrTextureDesc desc; |
| 1764 desc.fConfig = kSkia8888_GrPixelConfig; | 1775 desc.fConfig = kSkia8888_GrPixelConfig; |
| 1765 desc.fFlags = kRenderTarget_GrTextureFlagBit; | 1776 desc.fFlags = kRenderTarget_GrTextureFlagBit; |
| 1766 desc.fWidth = gm->getISize().width(); | 1777 desc.fWidth = gm->getISize().width(); |
| 1767 desc.fHeight = gm->getISize().height(); | 1778 desc.fHeight = gm->getISize().height(); |
| 1768 desc.fSampleCnt = config.fSampleCnt; | 1779 desc.fSampleCnt = config.fSampleCnt; |
| 1769 auGpuTarget.reset(gr->createUncachedTexture(desc, NULL, 0)); | 1780 auGpuTarget.reset(gr->createUncachedTexture(desc, NULL, 0)); |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1920 return false; | 1931 return false; |
| 1921 } | 1932 } |
| 1922 } | 1933 } |
| 1923 } | 1934 } |
| 1924 } | 1935 } |
| 1925 } | 1936 } |
| 1926 return true; | 1937 return true; |
| 1927 } | 1938 } |
| 1928 | 1939 |
| 1929 static bool parse_flags_configs(SkTDArray<size_t>* outConfigs, | 1940 static bool parse_flags_configs(SkTDArray<size_t>* outConfigs, |
| 1930 GrContextFactory* grFactory) { | 1941 GrContextFactory* grFactory, GrGLStandard gpuAPI) { |
| 1931 SkTDArray<size_t> excludeConfigs; | 1942 SkTDArray<size_t> excludeConfigs; |
| 1932 | 1943 |
| 1933 for (int i = 0; i < FLAGS_config.count(); i++) { | 1944 for (int i = 0; i < FLAGS_config.count(); i++) { |
| 1934 const char* config = FLAGS_config[i]; | 1945 const char* config = FLAGS_config[i]; |
| 1935 bool exclude = false; | 1946 bool exclude = false; |
| 1936 if (*config == kExcludeConfigChar) { | 1947 if (*config == kExcludeConfigChar) { |
| 1937 exclude = true; | 1948 exclude = true; |
| 1938 config += 1; | 1949 config += 1; |
| 1939 } | 1950 } |
| 1940 int index = findConfig(config); | 1951 int index = findConfig(config); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1987 // now assert that there was only one copy in configs[] | 1998 // now assert that there was only one copy in configs[] |
| 1988 SkASSERT(outConfigs->find(excludeConfigs[i]) < 0); | 1999 SkASSERT(outConfigs->find(excludeConfigs[i]) < 0); |
| 1989 } | 2000 } |
| 1990 } | 2001 } |
| 1991 | 2002 |
| 1992 #if SK_SUPPORT_GPU | 2003 #if SK_SUPPORT_GPU |
| 1993 SkASSERT(grFactory != NULL); | 2004 SkASSERT(grFactory != NULL); |
| 1994 for (int i = 0; i < outConfigs->count(); ++i) { | 2005 for (int i = 0; i < outConfigs->count(); ++i) { |
| 1995 size_t index = (*outConfigs)[i]; | 2006 size_t index = (*outConfigs)[i]; |
| 1996 if (kGPU_Backend == gRec[index].fBackend) { | 2007 if (kGPU_Backend == gRec[index].fBackend) { |
| 1997 GrContext* ctx = grFactory->get(gRec[index].fGLContextType); | 2008 GrContext* ctx = grFactory->get(gRec[index].fGLContextType, gpuAPI); |
| 1998 if (NULL == ctx) { | 2009 if (NULL == ctx) { |
| 1999 SkDebugf("GrContext could not be created for config %s. Config w
ill be skipped.\n", | 2010 SkDebugf("GrContext could not be created for config %s. Config w
ill be skipped.\n", |
| 2000 gRec[index].fName); | 2011 gRec[index].fName); |
| 2001 outConfigs->remove(i); | 2012 outConfigs->remove(i); |
| 2002 --i; | 2013 --i; |
| 2003 continue; | 2014 continue; |
| 2004 } | 2015 } |
| 2005 if (gRec[index].fSampleCnt > ctx->getMaxSampleCount()) { | 2016 if (gRec[index].fSampleCnt > ctx->getMaxSampleCount()) { |
| 2006 SkDebugf("Sample count (%d) of config %s is not supported." | 2017 SkDebugf("Sample count (%d) of config %s is not supported." |
| 2007 " Config will be skipped.\n", | 2018 " Config will be skipped.\n", |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2141 return false; | 2152 return false; |
| 2142 } | 2153 } |
| 2143 *sizeBytes = atoi(FLAGS_gpuCacheSize[0]); | 2154 *sizeBytes = atoi(FLAGS_gpuCacheSize[0]); |
| 2144 *sizeCount = atoi(FLAGS_gpuCacheSize[1]); | 2155 *sizeCount = atoi(FLAGS_gpuCacheSize[1]); |
| 2145 } else { | 2156 } else { |
| 2146 *sizeBytes = DEFAULT_CACHE_VALUE; | 2157 *sizeBytes = DEFAULT_CACHE_VALUE; |
| 2147 *sizeCount = DEFAULT_CACHE_VALUE; | 2158 *sizeCount = DEFAULT_CACHE_VALUE; |
| 2148 } | 2159 } |
| 2149 return true; | 2160 return true; |
| 2150 } | 2161 } |
| 2162 |
| 2163 static bool parse_flags_gl_standard(GrGLStandard* gpuAPI) { |
| 2164 if (0 == FLAGS_gpuAPI.count()) { |
| 2165 *gpuAPI = kNone_GrGLStandard; |
| 2166 return true; |
| 2167 } |
| 2168 if (1 == FLAGS_gpuAPI.count()) { |
| 2169 if (FLAGS_gpuAPI.contains(kGpuAPINameGL)) { |
| 2170 *gpuAPI = kGL_GrGLStandard; |
| 2171 return true; |
| 2172 } |
| 2173 if (FLAGS_gpuAPI.contains(kGpuAPINameGLES)) { |
| 2174 *gpuAPI = kGLES_GrGLStandard; |
| 2175 return true; |
| 2176 } |
| 2177 } |
| 2178 SkDebugf("--gpuAPI invalid api value"); |
| 2179 return false; |
| 2180 } |
| 2151 #endif | 2181 #endif |
| 2152 | 2182 |
| 2153 static bool parse_flags_tile_grid_replay_scales(SkTDArray<SkScalar>* outScales)
{ | 2183 static bool parse_flags_tile_grid_replay_scales(SkTDArray<SkScalar>* outScales)
{ |
| 2154 *outScales->append() = SK_Scalar1; // By default only test at scale 1.0 | 2184 *outScales->append() = SK_Scalar1; // By default only test at scale 1.0 |
| 2155 if (FLAGS_tileGridReplayScales.count() > 0) { | 2185 if (FLAGS_tileGridReplayScales.count() > 0) { |
| 2156 outScales->reset(); | 2186 outScales->reset(); |
| 2157 for (int i = 0; i < FLAGS_tileGridReplayScales.count(); i++) { | 2187 for (int i = 0; i < FLAGS_tileGridReplayScales.count(); i++) { |
| 2158 double val = atof(FLAGS_tileGridReplayScales[i]); | 2188 double val = atof(FLAGS_tileGridReplayScales[i]); |
| 2159 if (0 < val) { | 2189 if (0 < val) { |
| 2160 *outScales->append() = SkDoubleToScalar(val); | 2190 *outScales->append() = SkDoubleToScalar(val); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2231 setSystemPreferences(); | 2261 setSystemPreferences(); |
| 2232 GMMain gmmain; | 2262 GMMain gmmain; |
| 2233 | 2263 |
| 2234 SkTDArray<size_t> configs; | 2264 SkTDArray<size_t> configs; |
| 2235 | 2265 |
| 2236 int moduloRemainder = -1; | 2266 int moduloRemainder = -1; |
| 2237 int moduloDivisor = -1; | 2267 int moduloDivisor = -1; |
| 2238 SkTDArray<const PDFRasterizerData*> pdfRasterizers; | 2268 SkTDArray<const PDFRasterizerData*> pdfRasterizers; |
| 2239 SkTDArray<SkScalar> tileGridReplayScales; | 2269 SkTDArray<SkScalar> tileGridReplayScales; |
| 2240 #if SK_SUPPORT_GPU | 2270 #if SK_SUPPORT_GPU |
| 2271 GrGLStandard gpuAPI = kNone_GrGLStandard; |
| 2241 GrContextFactory* grFactory = new GrContextFactory; | 2272 GrContextFactory* grFactory = new GrContextFactory; |
| 2242 #else | 2273 #else |
| 2274 GrGLStandard gpuAPI = 0; |
| 2243 GrContextFactory* grFactory = NULL; | 2275 GrContextFactory* grFactory = NULL; |
| 2244 #endif | 2276 #endif |
| 2245 | 2277 |
| 2246 if (FLAGS_dryRun) { | 2278 if (FLAGS_dryRun) { |
| 2247 SkDebugf( "Doing a dry run; no tests will actually be executed.\n"); | 2279 SkDebugf( "Doing a dry run; no tests will actually be executed.\n"); |
| 2248 } | 2280 } |
| 2249 | 2281 |
| 2250 if (!parse_flags_modulo(&moduloRemainder, &moduloDivisor) || | 2282 if (!parse_flags_modulo(&moduloRemainder, &moduloDivisor) || |
| 2251 !parse_flags_ignore_error_types(&gmmain.fIgnorableErrorTypes) || | 2283 !parse_flags_ignore_error_types(&gmmain.fIgnorableErrorTypes) || |
| 2252 !parse_flags_ignore_tests(gmmain.fIgnorableTestNames) || | 2284 !parse_flags_ignore_tests(gmmain.fIgnorableTestNames) || |
| 2253 #if SK_SUPPORT_GPU | 2285 #if SK_SUPPORT_GPU |
| 2254 !parse_flags_gpu_cache(&gGpuCacheSizeBytes, &gGpuCacheSizeCount) || | 2286 !parse_flags_gpu_cache(&gGpuCacheSizeBytes, &gGpuCacheSizeCount) || |
| 2287 !parse_flags_gl_standard(&gpuAPI) || |
| 2255 #endif | 2288 #endif |
| 2256 !parse_flags_tile_grid_replay_scales(&tileGridReplayScales) || | 2289 !parse_flags_tile_grid_replay_scales(&tileGridReplayScales) || |
| 2257 !parse_flags_jpeg_quality() || | 2290 !parse_flags_jpeg_quality() || |
| 2258 !parse_flags_configs(&configs, grFactory) || | 2291 !parse_flags_configs(&configs, grFactory, gpuAPI) || |
| 2259 !parse_flags_pdf_rasterizers(configs, &pdfRasterizers) || | 2292 !parse_flags_pdf_rasterizers(configs, &pdfRasterizers) || |
| 2260 !parse_flags_gmmain_paths(&gmmain)) { | 2293 !parse_flags_gmmain_paths(&gmmain)) { |
| 2261 return -1; | 2294 return -1; |
| 2262 } | 2295 } |
| 2263 | 2296 |
| 2264 if (FLAGS_verbose) { | 2297 if (FLAGS_verbose) { |
| 2265 if (FLAGS_writePath.count() == 1) { | 2298 if (FLAGS_writePath.count() == 1) { |
| 2266 SkDebugf("writing to %s\n", FLAGS_writePath[0]); | 2299 SkDebugf("writing to %s\n", FLAGS_writePath[0]); |
| 2267 } | 2300 } |
| 2268 if (NULL != gmmain.fMismatchPath) { | 2301 if (NULL != gmmain.fMismatchPath) { |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2330 | 2363 |
| 2331 if (SkCommandLineFlags::ShouldSkip(FLAGS_match, shortName)) { | 2364 if (SkCommandLineFlags::ShouldSkip(FLAGS_match, shortName)) { |
| 2332 continue; | 2365 continue; |
| 2333 } | 2366 } |
| 2334 | 2367 |
| 2335 gmsRun++; | 2368 gmsRun++; |
| 2336 SkISize size = gm->getISize(); | 2369 SkISize size = gm->getISize(); |
| 2337 SkDebugf("%sdrawing... %s [%d %d]\n", moduloStr.c_str(), shortName, | 2370 SkDebugf("%sdrawing... %s [%d %d]\n", moduloStr.c_str(), shortName, |
| 2338 size.width(), size.height()); | 2371 size.width(), size.height()); |
| 2339 if (!FLAGS_dryRun) | 2372 if (!FLAGS_dryRun) |
| 2340 run_multiple_configs(gmmain, gm, configs, pdfRasterizers, tileGridRe
playScales, grFactory); | 2373 run_multiple_configs(gmmain, gm, configs, pdfRasterizers, tileGridRe
playScales, |
| 2374 grFactory, gpuAPI); |
| 2341 } | 2375 } |
| 2342 | 2376 |
| 2343 if (FLAGS_dryRun) | 2377 if (FLAGS_dryRun) |
| 2344 return 0; | 2378 return 0; |
| 2345 | 2379 |
| 2346 SkTArray<SkString> modes; | 2380 SkTArray<SkString> modes; |
| 2347 gmmain.GetRenderModesEncountered(modes); | 2381 gmmain.GetRenderModesEncountered(modes); |
| 2348 int modeCount = modes.count(); | 2382 int modeCount = modes.count(); |
| 2349 | 2383 |
| 2350 // Now that we have run all the tests and thus know the full set of renderMo
des that we | 2384 // Now that we have run all the tests and thus know the full set of renderMo
des that we |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2407 stream.write(jsonStdString.c_str(), jsonStdString.length()); | 2441 stream.write(jsonStdString.c_str(), jsonStdString.length()); |
| 2408 } | 2442 } |
| 2409 | 2443 |
| 2410 #if SK_SUPPORT_GPU | 2444 #if SK_SUPPORT_GPU |
| 2411 | 2445 |
| 2412 #if GR_CACHE_STATS | 2446 #if GR_CACHE_STATS |
| 2413 for (int i = 0; i < configs.count(); i++) { | 2447 for (int i = 0; i < configs.count(); i++) { |
| 2414 ConfigData config = gRec[configs[i]]; | 2448 ConfigData config = gRec[configs[i]]; |
| 2415 | 2449 |
| 2416 if (FLAGS_verbose && (kGPU_Backend == config.fBackend)) { | 2450 if (FLAGS_verbose && (kGPU_Backend == config.fBackend)) { |
| 2417 GrContext* gr = grFactory->get(config.fGLContextType); | 2451 GrContext* gr = grFactory->get(config.fGLContextType, gpuAPI); |
| 2418 | 2452 |
| 2419 SkDebugf("config: %s %x\n", config.fName, gr); | 2453 SkDebugf("config: %s %x\n", config.fName, gr); |
| 2420 gr->printCacheStats(); | 2454 gr->printCacheStats(); |
| 2421 } | 2455 } |
| 2422 } | 2456 } |
| 2423 #endif | 2457 #endif |
| 2424 | 2458 |
| 2425 #if GR_DUMP_FONT_CACHE | 2459 #if GR_DUMP_FONT_CACHE |
| 2426 for (int i = 0; i < configs.count(); i++) { | 2460 for (int i = 0; i < configs.count(); i++) { |
| 2427 ConfigData config = gRec[configs[i]]; | 2461 ConfigData config = gRec[configs[i]]; |
| 2428 | 2462 |
| 2429 if (kGPU_Backend == config.fBackend) { | 2463 if (kGPU_Backend == config.fBackend) { |
| 2430 GrContext* gr = grFactory->get(config.fGLContextType); | 2464 GrContext* gr = grFactory->get(config.fGLContextType, gpuAPI); |
| 2431 | 2465 |
| 2432 gr->dumpFontCache(); | 2466 gr->dumpFontCache(); |
| 2433 } | 2467 } |
| 2434 } | 2468 } |
| 2435 #endif | 2469 #endif |
| 2436 | 2470 |
| 2437 delete grFactory; | 2471 delete grFactory; |
| 2438 #endif | 2472 #endif |
| 2439 SkGraphics::Term(); | 2473 SkGraphics::Term(); |
| 2440 | 2474 |
| 2441 return (reportError) ? -1 : 0; | 2475 return (reportError) ? -1 : 0; |
| 2442 } | 2476 } |
| 2443 | 2477 |
| 2444 void GMMain::installFilter(SkCanvas* canvas) { | 2478 void GMMain::installFilter(SkCanvas* canvas) { |
| 2445 if (FLAGS_forceBWtext) { | 2479 if (FLAGS_forceBWtext) { |
| 2446 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref(); | 2480 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref(); |
| 2447 } | 2481 } |
| 2448 } | 2482 } |
| 2449 | 2483 |
| 2450 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) | 2484 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) |
| 2451 int main(int argc, char * const argv[]) { | 2485 int main(int argc, char * const argv[]) { |
| 2452 return tool_main(argc, (char**) argv); | 2486 return tool_main(argc, (char**) argv); |
| 2453 } | 2487 } |
| 2454 #endif | 2488 #endif |
| OLD | NEW |