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

Side by Side Diff: gm/gmmain.cpp

Issue 319043005: Support using OpenGL ES context on desktop (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 6 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
OLDNEW
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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 #include "SkGpuDevice.h" 58 #include "SkGpuDevice.h"
59 typedef GrContextFactory::GLContextType GLContextType; 59 typedef GrContextFactory::GLContextType GLContextType;
60 #define DEFAULT_CACHE_VALUE -1 60 #define DEFAULT_CACHE_VALUE -1
61 static int gGpuCacheSizeBytes; 61 static int gGpuCacheSizeBytes;
62 static int gGpuCacheSizeCount; 62 static int gGpuCacheSizeCount;
63 #else 63 #else
64 class GrContextFactory; 64 class GrContextFactory;
65 class GrContext; 65 class GrContext;
66 class GrSurface; 66 class GrSurface;
67 typedef int GLContextType; 67 typedef int GLContextType;
68 typedef int GrGLStandard;
68 #endif 69 #endif
69 70
70 #define DEBUGFAIL_SEE_STDERR SkDEBUGFAIL("see stderr for message") 71 #define DEBUGFAIL_SEE_STDERR SkDEBUGFAIL("see stderr for message")
71 72
72 DECLARE_bool(useDocumentInsteadOfDevice); 73 DECLARE_bool(useDocumentInsteadOfDevice);
73 74
74 #ifdef SK_SUPPORT_PDF 75 #ifdef SK_SUPPORT_PDF
75 #include "SkPDFDevice.h" 76 #include "SkPDFDevice.h"
76 #include "SkPDFDocument.h" 77 #include "SkPDFDocument.h"
77 #endif 78 #endif
(...skipping 1256 matching lines...) Expand 10 before | Expand all | Expand 10 after
1334 #endif 1335 #endif
1335 #ifdef SK_BUILD_NATIVE_PDF_RENDERER 1336 #ifdef SK_BUILD_NATIVE_PDF_RENDERER
1336 { &SkNativeRasterizePDF, "native", true }, 1337 { &SkNativeRasterizePDF, "native", true },
1337 #endif // SK_BUILD_NATIVE_PDF_RENDERER 1338 #endif // SK_BUILD_NATIVE_PDF_RENDERER
1338 // The following exists so that this array is never zero length. 1339 // The following exists so that this array is never zero length.
1339 { &SkNoRasterizePDF, "none", false}, 1340 { &SkNoRasterizePDF, "none", false},
1340 }; 1341 };
1341 1342
1342 static const char kDefaultsConfigStr[] = "defaults"; 1343 static const char kDefaultsConfigStr[] = "defaults";
1343 static const char kExcludeConfigChar = '~'; 1344 static const char kExcludeConfigChar = '~';
1345 #if SK_SUPPORT_GPU
1346 static const char kGpuApiNameGL[] = "gl";
1347 static const char kGpuApiNameGLES[] = "gles";
1348 #endif
1344 1349
1345 static SkString configUsage() { 1350 static SkString configUsage() {
1346 SkString result; 1351 SkString result;
1347 result.appendf("Space delimited list of which configs to run. Possible optio ns: ["); 1352 result.appendf("Space delimited list of which configs to run. Possible optio ns: [");
1348 for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) { 1353 for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) {
1349 SkASSERT(gRec[i].fName != kDefaultsConfigStr); 1354 SkASSERT(gRec[i].fName != kDefaultsConfigStr);
1350 if (i > 0) { 1355 if (i > 0) {
1351 result.append("|"); 1356 result.append("|");
1352 } 1357 }
1353 result.appendf("%s", gRec[i].fName); 1358 result.appendf("%s", gRec[i].fName);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1423 #define TOSTRING(x) TOSTRING_INTERNAL(x) 1428 #define TOSTRING(x) TOSTRING_INTERNAL(x)
1424 1429
1425 // Alphabetized ignoring "no" prefix ("readPath", "noreplay", "resourcePath"). 1430 // Alphabetized ignoring "no" prefix ("readPath", "noreplay", "resourcePath").
1426 DEFINE_string(config, "", configUsage().c_str()); 1431 DEFINE_string(config, "", configUsage().c_str());
1427 DEFINE_string(pdfRasterizers, "default", pdfRasterizerUsage().c_str()); 1432 DEFINE_string(pdfRasterizers, "default", pdfRasterizerUsage().c_str());
1428 DEFINE_bool(deferred, false, "Exercise the deferred rendering test pass."); 1433 DEFINE_bool(deferred, false, "Exercise the deferred rendering test pass.");
1429 DEFINE_bool(dryRun, false, "Don't actually run the tests, just print what would have been done."); 1434 DEFINE_bool(dryRun, false, "Don't actually run the tests, just print what would have been done.");
1430 DEFINE_string(excludeConfig, "", "Space delimited list of configs to skip."); 1435 DEFINE_string(excludeConfig, "", "Space delimited list of configs to skip.");
1431 DEFINE_bool(forceBWtext, false, "Disable text anti-aliasing."); 1436 DEFINE_bool(forceBWtext, false, "Disable text anti-aliasing.");
1432 #if SK_SUPPORT_GPU 1437 #if SK_SUPPORT_GPU
1438 DEFINE_string(forceGpuApi, "", "Force use of specific gpu API. Using \"gl\" "
1439 "forces OpenGL API. Using \"gles\" forces OpenGL ES API. "
1440 "Defaults to empty string, which selects the API native to the "
1441 "system.");
1433 DEFINE_string(gpuCacheSize, "", "<bytes> <count>: Limit the gpu cache to byte si ze or " 1442 DEFINE_string(gpuCacheSize, "", "<bytes> <count>: Limit the gpu cache to byte si ze or "
1434 "object count. " TOSTRING(DEFAULT_CACHE_VALUE) " for either value means " 1443 "object count. " TOSTRING(DEFAULT_CACHE_VALUE) " for either value means "
1435 "use the default. 0 for either disables the cache."); 1444 "use the default. 0 for either disables the cache.");
1436 #endif 1445 #endif
1437 DEFINE_bool(hierarchy, false, "Whether to use multilevel directory structure " 1446 DEFINE_bool(hierarchy, false, "Whether to use multilevel directory structure "
1438 "when reading/writing files."); 1447 "when reading/writing files.");
1439 DEFINE_string(ignoreErrorTypes, kDefaultIgnorableErrorTypes.asString(" ").c_str( ), 1448 DEFINE_string(ignoreErrorTypes, kDefaultIgnorableErrorTypes.asString(" ").c_str( ),
1440 "Space-separated list of ErrorTypes that should be ignored. If any *other* error " 1449 "Space-separated list of ErrorTypes that should be ignored. If any *other* error "
1441 "types are encountered, the tool will exit with a nonzero return v alue."); 1450 "types are encountered, the tool will exit with a nonzero return v alue.");
1442 DEFINE_string(ignoreFailuresFile, "", "Path to file containing a list of tests f or which we " 1451 DEFINE_string(ignoreFailuresFile, "", "Path to file containing a list of tests f or which we "
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
1704 * Run this test in a number of different configs (8888, 565, PDF, 1713 * Run this test in a number of different configs (8888, 565, PDF,
1705 * etc.), confirming that the resulting bitmaps match expectations 1714 * etc.), confirming that the resulting bitmaps match expectations
1706 * (which may be different for each config). 1715 * (which may be different for each config).
1707 * 1716 *
1708 * Returns all errors encountered while doing so. 1717 * Returns all errors encountered while doing so.
1709 */ 1718 */
1710 ErrorCombination run_multiple_configs(GMMain &gmmain, GM *gm, 1719 ErrorCombination run_multiple_configs(GMMain &gmmain, GM *gm,
1711 const SkTDArray<size_t> &configs, 1720 const SkTDArray<size_t> &configs,
1712 const SkTDArray<const PDFRasterizerData*> &pdfRasterizers, 1721 const SkTDArray<const PDFRasterizerData*> &pdfRasterizers,
1713 const SkTDArray<SkScalar> &tileGridReplayS cales, 1722 const SkTDArray<SkScalar> &tileGridReplayS cales,
1714 GrContextFactory *grFactory); 1723 GrContextFactory *grFactory,
1724 GrGLStandard forcedGpuApi);
1715 ErrorCombination run_multiple_configs(GMMain &gmmain, GM *gm, 1725 ErrorCombination run_multiple_configs(GMMain &gmmain, GM *gm,
1716 const SkTDArray<size_t> &configs, 1726 const SkTDArray<size_t> &configs,
1717 const SkTDArray<const PDFRasterizerData*> &pdfRasterizers, 1727 const SkTDArray<const PDFRasterizerData*> &pdfRasterizers,
1718 const SkTDArray<SkScalar> &tileGridReplayS cales, 1728 const SkTDArray<SkScalar> &tileGridReplayS cales,
1719 GrContextFactory *grFactory) { 1729 GrContextFactory *grFactory,
1730 GrGLStandard forcedGpuApi) {
1720 const char renderModeDescriptor[] = ""; 1731 const char renderModeDescriptor[] = "";
1721 ErrorCombination errorsForAllConfigs; 1732 ErrorCombination errorsForAllConfigs;
1722 uint32_t gmFlags = gm->getFlags(); 1733 uint32_t gmFlags = gm->getFlags();
1723 1734
1724 for (int i = 0; i < configs.count(); i++) { 1735 for (int i = 0; i < configs.count(); i++) {
1725 ConfigData config = gRec[configs[i]]; 1736 ConfigData config = gRec[configs[i]];
1726 const SkString shortNamePlusConfig = gmmain.make_shortname_plus_config(g m->getName(), 1737 const SkString shortNamePlusConfig = gmmain.make_shortname_plus_config(g m->getName(),
1727 c onfig.fName); 1738 c onfig.fName);
1728 1739
1729 // Skip any tests that we don't even need to try. 1740 // Skip any tests that we don't even need to try.
(...skipping 29 matching lines...) Expand all
1759 // Now we know that we want to run this test and record its 1770 // Now we know that we want to run this test and record its
1760 // success or failure. 1771 // success or failure.
1761 ErrorCombination errorsForThisConfig; 1772 ErrorCombination errorsForThisConfig;
1762 GrSurface* gpuTarget = NULL; 1773 GrSurface* gpuTarget = NULL;
1763 #if SK_SUPPORT_GPU 1774 #if SK_SUPPORT_GPU
1764 SkAutoTUnref<GrSurface> auGpuTarget; 1775 SkAutoTUnref<GrSurface> auGpuTarget;
1765 if ((errorsForThisConfig.isEmpty()) && (kGPU_Backend == config.fBackend) ) { 1776 if ((errorsForThisConfig.isEmpty()) && (kGPU_Backend == config.fBackend) ) {
1766 if (FLAGS_resetGpuContext) { 1777 if (FLAGS_resetGpuContext) {
1767 grFactory->destroyContexts(); 1778 grFactory->destroyContexts();
1768 } 1779 }
1769 GrContext* gr = grFactory->get(config.fGLContextType); 1780 GrContext* gr = grFactory->get(config.fGLContextType, forcedGpuApi);
1770 bool grSuccess = false; 1781 bool grSuccess = false;
1771 if (gr) { 1782 if (gr) {
1772 // create a render target to back the device 1783 // create a render target to back the device
1773 GrTextureDesc desc; 1784 GrTextureDesc desc;
1774 desc.fConfig = kSkia8888_GrPixelConfig; 1785 desc.fConfig = kSkia8888_GrPixelConfig;
1775 desc.fFlags = kRenderTarget_GrTextureFlagBit; 1786 desc.fFlags = kRenderTarget_GrTextureFlagBit;
1776 desc.fWidth = gm->getISize().width(); 1787 desc.fWidth = gm->getISize().width();
1777 desc.fHeight = gm->getISize().height(); 1788 desc.fHeight = gm->getISize().height();
1778 desc.fSampleCnt = config.fSampleCnt; 1789 desc.fSampleCnt = config.fSampleCnt;
1779 auGpuTarget.reset(gr->createUncachedTexture(desc, NULL, 0)); 1790 auGpuTarget.reset(gr->createUncachedTexture(desc, NULL, 0));
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1930 return false; 1941 return false;
1931 } 1942 }
1932 } 1943 }
1933 } 1944 }
1934 } 1945 }
1935 } 1946 }
1936 return true; 1947 return true;
1937 } 1948 }
1938 1949
1939 static bool parse_flags_configs(SkTDArray<size_t>* outConfigs, 1950 static bool parse_flags_configs(SkTDArray<size_t>* outConfigs,
1940 GrContextFactory* grFactory) { 1951 GrContextFactory* grFactory, GrGLStandard forcedGpuApi) {
1941 SkTDArray<size_t> excludeConfigs; 1952 SkTDArray<size_t> excludeConfigs;
1942 1953
1943 for (int i = 0; i < FLAGS_config.count(); i++) { 1954 for (int i = 0; i < FLAGS_config.count(); i++) {
1944 const char* config = FLAGS_config[i]; 1955 const char* config = FLAGS_config[i];
1945 bool exclude = false; 1956 bool exclude = false;
1946 if (*config == kExcludeConfigChar) { 1957 if (*config == kExcludeConfigChar) {
1947 exclude = true; 1958 exclude = true;
1948 config += 1; 1959 config += 1;
1949 } 1960 }
1950 int index = findConfig(config); 1961 int index = findConfig(config);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1997 // now assert that there was only one copy in configs[] 2008 // now assert that there was only one copy in configs[]
1998 SkASSERT(outConfigs->find(excludeConfigs[i]) < 0); 2009 SkASSERT(outConfigs->find(excludeConfigs[i]) < 0);
1999 } 2010 }
2000 } 2011 }
2001 2012
2002 #if SK_SUPPORT_GPU 2013 #if SK_SUPPORT_GPU
2003 SkASSERT(grFactory != NULL); 2014 SkASSERT(grFactory != NULL);
2004 for (int i = 0; i < outConfigs->count(); ++i) { 2015 for (int i = 0; i < outConfigs->count(); ++i) {
2005 size_t index = (*outConfigs)[i]; 2016 size_t index = (*outConfigs)[i];
2006 if (kGPU_Backend == gRec[index].fBackend) { 2017 if (kGPU_Backend == gRec[index].fBackend) {
2007 GrContext* ctx = grFactory->get(gRec[index].fGLContextType); 2018 GrContext* ctx = grFactory->get(gRec[index].fGLContextType, forcedGp uApi);
2008 if (NULL == ctx) { 2019 if (NULL == ctx) {
2009 SkDebugf("GrContext could not be created for config %s. Config w ill be skipped.\n", 2020 SkDebugf("GrContext could not be created for config %s. Config w ill be skipped.\n",
2010 gRec[index].fName); 2021 gRec[index].fName);
2011 outConfigs->remove(i); 2022 outConfigs->remove(i);
2012 --i; 2023 --i;
2013 continue; 2024 continue;
2014 } 2025 }
2015 if (gRec[index].fSampleCnt > ctx->getMaxSampleCount()) { 2026 if (gRec[index].fSampleCnt > ctx->getMaxSampleCount()) {
2016 SkDebugf("Sample count (%d) of config %s is not supported." 2027 SkDebugf("Sample count (%d) of config %s is not supported."
2017 " Config will be skipped.\n", 2028 " Config will be skipped.\n",
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
2151 return false; 2162 return false;
2152 } 2163 }
2153 *sizeBytes = atoi(FLAGS_gpuCacheSize[0]); 2164 *sizeBytes = atoi(FLAGS_gpuCacheSize[0]);
2154 *sizeCount = atoi(FLAGS_gpuCacheSize[1]); 2165 *sizeCount = atoi(FLAGS_gpuCacheSize[1]);
2155 } else { 2166 } else {
2156 *sizeBytes = DEFAULT_CACHE_VALUE; 2167 *sizeBytes = DEFAULT_CACHE_VALUE;
2157 *sizeCount = DEFAULT_CACHE_VALUE; 2168 *sizeCount = DEFAULT_CACHE_VALUE;
2158 } 2169 }
2159 return true; 2170 return true;
2160 } 2171 }
2172
2173 static bool parse_flags_gpu_api(GrGLStandard* forcedGpuApi) {
2174 if (0 == FLAGS_forceGpuApi.count()) {
2175 *forcedGpuApi = kNone_GrGLStandard;
2176 return true;
2177 }
2178 if (1 == FLAGS_forceGpuApi.count()) {
2179 if (strcmp(FLAGS_forceGpuApi[0], kGpuApiNameGL) == 0) {
2180 *forcedGpuApi = kGL_GrGLStandard;
2181 return true;
2182 } else if (strcmp(FLAGS_forceGpuApi[0], kGpuApiNameGLES) == 0) {
2183 *forcedGpuApi = kGLES_GrGLStandard;
2184 return true;
2185 }
2186 }
2187 SkDebugf("--forceGpuApi invalid api value");
2188 return false;
2189 }
2161 #endif 2190 #endif
2162 2191
2163 static bool parse_flags_tile_grid_replay_scales(SkTDArray<SkScalar>* outScales) { 2192 static bool parse_flags_tile_grid_replay_scales(SkTDArray<SkScalar>* outScales) {
2164 *outScales->append() = SK_Scalar1; // By default only test at scale 1.0 2193 *outScales->append() = SK_Scalar1; // By default only test at scale 1.0
2165 if (FLAGS_tileGridReplayScales.count() > 0) { 2194 if (FLAGS_tileGridReplayScales.count() > 0) {
2166 outScales->reset(); 2195 outScales->reset();
2167 for (int i = 0; i < FLAGS_tileGridReplayScales.count(); i++) { 2196 for (int i = 0; i < FLAGS_tileGridReplayScales.count(); i++) {
2168 double val = atof(FLAGS_tileGridReplayScales[i]); 2197 double val = atof(FLAGS_tileGridReplayScales[i]);
2169 if (0 < val) { 2198 if (0 < val) {
2170 *outScales->append() = SkDoubleToScalar(val); 2199 *outScales->append() = SkDoubleToScalar(val);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
2249 setSystemPreferences(); 2278 setSystemPreferences();
2250 GMMain gmmain; 2279 GMMain gmmain;
2251 2280
2252 SkTDArray<size_t> configs; 2281 SkTDArray<size_t> configs;
2253 2282
2254 int moduloRemainder = -1; 2283 int moduloRemainder = -1;
2255 int moduloDivisor = -1; 2284 int moduloDivisor = -1;
2256 SkTDArray<const PDFRasterizerData*> pdfRasterizers; 2285 SkTDArray<const PDFRasterizerData*> pdfRasterizers;
2257 SkTDArray<SkScalar> tileGridReplayScales; 2286 SkTDArray<SkScalar> tileGridReplayScales;
2258 #if SK_SUPPORT_GPU 2287 #if SK_SUPPORT_GPU
2288 GrGLStandard forcedGpuApi = kNone_GrGLStandard;
2259 GrContextFactory* grFactory = new GrContextFactory; 2289 GrContextFactory* grFactory = new GrContextFactory;
2260 #else 2290 #else
2291 GrGLStandard forcedGpuApi = 0;
2261 GrContextFactory* grFactory = NULL; 2292 GrContextFactory* grFactory = NULL;
2262 #endif 2293 #endif
2263 2294
2264 if (FLAGS_dryRun) { 2295 if (FLAGS_dryRun) {
2265 SkDebugf( "Doing a dry run; no tests will actually be executed.\n"); 2296 SkDebugf( "Doing a dry run; no tests will actually be executed.\n");
2266 } 2297 }
2267 2298
2268 if (!parse_flags_modulo(&moduloRemainder, &moduloDivisor) || 2299 if (!parse_flags_modulo(&moduloRemainder, &moduloDivisor) ||
2269 !parse_flags_ignore_error_types(&gmmain.fIgnorableErrorTypes) || 2300 !parse_flags_ignore_error_types(&gmmain.fIgnorableErrorTypes) ||
2270 !parse_flags_ignore_tests(gmmain.fIgnorableTestNames) || 2301 !parse_flags_ignore_tests(gmmain.fIgnorableTestNames) ||
2271 #if SK_SUPPORT_GPU 2302 #if SK_SUPPORT_GPU
2272 !parse_flags_gpu_cache(&gGpuCacheSizeBytes, &gGpuCacheSizeCount) || 2303 !parse_flags_gpu_cache(&gGpuCacheSizeBytes, &gGpuCacheSizeCount) ||
2304 !parse_flags_gpu_api(&forcedGpuApi) ||
2273 #endif 2305 #endif
2274 !parse_flags_tile_grid_replay_scales(&tileGridReplayScales) || 2306 !parse_flags_tile_grid_replay_scales(&tileGridReplayScales) ||
2275 !parse_flags_resource_path() || 2307 !parse_flags_resource_path() ||
2276 !parse_flags_jpeg_quality() || 2308 !parse_flags_jpeg_quality() ||
2277 !parse_flags_configs(&configs, grFactory) || 2309 !parse_flags_configs(&configs, grFactory, forcedGpuApi) ||
2278 !parse_flags_pdf_rasterizers(configs, &pdfRasterizers) || 2310 !parse_flags_pdf_rasterizers(configs, &pdfRasterizers) ||
2279 !parse_flags_gmmain_paths(&gmmain)) { 2311 !parse_flags_gmmain_paths(&gmmain)) {
2280 return -1; 2312 return -1;
2281 } 2313 }
2282 2314
2283 if (FLAGS_verbose) { 2315 if (FLAGS_verbose) {
2284 if (FLAGS_writePath.count() == 1) { 2316 if (FLAGS_writePath.count() == 1) {
2285 SkDebugf("writing to %s\n", FLAGS_writePath[0]); 2317 SkDebugf("writing to %s\n", FLAGS_writePath[0]);
2286 } 2318 }
2287 if (NULL != gmmain.fMismatchPath) { 2319 if (NULL != gmmain.fMismatchPath) {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
2349 2381
2350 if (SkCommandLineFlags::ShouldSkip(FLAGS_match, shortName)) { 2382 if (SkCommandLineFlags::ShouldSkip(FLAGS_match, shortName)) {
2351 continue; 2383 continue;
2352 } 2384 }
2353 2385
2354 gmsRun++; 2386 gmsRun++;
2355 SkISize size = gm->getISize(); 2387 SkISize size = gm->getISize();
2356 SkDebugf("%sdrawing... %s [%d %d]\n", moduloStr.c_str(), shortName, 2388 SkDebugf("%sdrawing... %s [%d %d]\n", moduloStr.c_str(), shortName,
2357 size.width(), size.height()); 2389 size.width(), size.height());
2358 if (!FLAGS_dryRun) 2390 if (!FLAGS_dryRun)
2359 run_multiple_configs(gmmain, gm, configs, pdfRasterizers, tileGridRe playScales, grFactory); 2391 run_multiple_configs(gmmain, gm, configs, pdfRasterizers, tileGridRe playScales,
2392 grFactory, forcedGpuApi);
2360 } 2393 }
2361 2394
2362 if (FLAGS_dryRun) 2395 if (FLAGS_dryRun)
2363 return 0; 2396 return 0;
2364 2397
2365 SkTArray<SkString> modes; 2398 SkTArray<SkString> modes;
2366 gmmain.GetRenderModesEncountered(modes); 2399 gmmain.GetRenderModesEncountered(modes);
2367 int modeCount = modes.count(); 2400 int modeCount = modes.count();
2368 2401
2369 // Now that we have run all the tests and thus know the full set of renderMo des that we 2402 // Now that we have run all the tests and thus know the full set of renderMo des that we
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
2428 } 2461 }
2429 #endif 2462 #endif
2430 2463
2431 #if SK_SUPPORT_GPU 2464 #if SK_SUPPORT_GPU
2432 2465
2433 #if GR_CACHE_STATS 2466 #if GR_CACHE_STATS
2434 for (int i = 0; i < configs.count(); i++) { 2467 for (int i = 0; i < configs.count(); i++) {
2435 ConfigData config = gRec[configs[i]]; 2468 ConfigData config = gRec[configs[i]];
2436 2469
2437 if (FLAGS_verbose && (kGPU_Backend == config.fBackend)) { 2470 if (FLAGS_verbose && (kGPU_Backend == config.fBackend)) {
2438 GrContext* gr = grFactory->get(config.fGLContextType); 2471 GrContext* gr = grFactory->get(config.fGLContextType, forcedGpuApi);
2439 2472
2440 SkDebugf("config: %s %x\n", config.fName, gr); 2473 SkDebugf("config: %s %x\n", config.fName, gr);
2441 gr->printCacheStats(); 2474 gr->printCacheStats();
2442 } 2475 }
2443 } 2476 }
2444 #endif 2477 #endif
2445 2478
2446 #if GR_DUMP_FONT_CACHE 2479 #if GR_DUMP_FONT_CACHE
2447 for (int i = 0; i < configs.count(); i++) { 2480 for (int i = 0; i < configs.count(); i++) {
2448 ConfigData config = gRec[configs[i]]; 2481 ConfigData config = gRec[configs[i]];
2449 2482
2450 if (kGPU_Backend == config.fBackend) { 2483 if (kGPU_Backend == config.fBackend) {
2451 GrContext* gr = grFactory->get(config.fGLContextType); 2484 GrContext* gr = grFactory->get(config.fGLContextType, forcedGpuApi);
2452 2485
2453 gr->dumpFontCache(); 2486 gr->dumpFontCache();
2454 } 2487 }
2455 } 2488 }
2456 #endif 2489 #endif
2457 2490
2458 delete grFactory; 2491 delete grFactory;
2459 #endif 2492 #endif
2460 SkGraphics::Term(); 2493 SkGraphics::Term();
2461 2494
2462 return (reportError) ? -1 : 0; 2495 return (reportError) ? -1 : 0;
2463 } 2496 }
2464 2497
2465 void GMMain::installFilter(SkCanvas* canvas) { 2498 void GMMain::installFilter(SkCanvas* canvas) {
2466 if (FLAGS_forceBWtext) { 2499 if (FLAGS_forceBWtext) {
2467 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref(); 2500 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref();
2468 } 2501 }
2469 } 2502 }
2470 2503
2471 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) 2504 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL)
2472 int main(int argc, char * const argv[]) { 2505 int main(int argc, char * const argv[]) {
2473 return tool_main(argc, (char**) argv); 2506 return tool_main(argc, (char**) argv);
2474 } 2507 }
2475 #endif 2508 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698