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

Side by Side Diff: gm/gmmain.cpp

Issue 23567032: Have GMs read the GrContext via a setter/getter rather than a global. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: use Brian's suggestion Created 7 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « gm/gm.cpp ('k') | gm/image.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 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 1446 matching lines...) Expand 10 before | Expand all | Expand 10 after
1457 1457
1458 static const PDFRasterizerData* findPDFRasterizer(const char rasterizer[]) { 1458 static const PDFRasterizerData* findPDFRasterizer(const char rasterizer[]) {
1459 for (int i = 0; i < (int)SK_ARRAY_COUNT(kPDFRasterizers); i++) { 1459 for (int i = 0; i < (int)SK_ARRAY_COUNT(kPDFRasterizers); i++) {
1460 if (!strcmp(rasterizer, kPDFRasterizers[i].fName)) { 1460 if (!strcmp(rasterizer, kPDFRasterizers[i].fName)) {
1461 return &kPDFRasterizers[i]; 1461 return &kPDFRasterizers[i];
1462 } 1462 }
1463 } 1463 }
1464 return NULL; 1464 return NULL;
1465 } 1465 }
1466 1466
1467 namespace skiagm {
1468 #if SK_SUPPORT_GPU
1469 SkAutoTUnref<GrContext> gGrContext;
1470 /**
1471 * Sets the global GrContext, accessible by individual GMs
1472 */
1473 static void SetGr(GrContext* grContext) {
1474 SkSafeRef(grContext);
1475 gGrContext.reset(grContext);
1476 }
1477
1478 /**
1479 * Gets the global GrContext, can be called by GM tests.
1480 */
1481 GrContext* GetGr();
1482 GrContext* GetGr() {
1483 return gGrContext.get();
1484 }
1485
1486 /**
1487 * Sets the global GrContext and then resets it to its previous value at
1488 * destruction.
1489 */
1490 class AutoResetGr : SkNoncopyable {
1491 public:
1492 AutoResetGr() : fOld(NULL) {}
1493 void set(GrContext* context) {
1494 SkASSERT(NULL == fOld);
1495 fOld = GetGr();
1496 SkSafeRef(fOld);
1497 SetGr(context);
1498 }
1499 ~AutoResetGr() { SetGr(fOld); SkSafeUnref(fOld); }
1500 private:
1501 GrContext* fOld;
1502 };
1503 #else
1504 GrContext* GetGr();
1505 GrContext* GetGr() { return NULL; }
1506 #endif
1507 }
1508
1509 template <typename T> void appendUnique(SkTDArray<T>* array, const T& value) { 1467 template <typename T> void appendUnique(SkTDArray<T>* array, const T& value) {
1510 int index = array->find(value); 1468 int index = array->find(value);
1511 if (index < 0) { 1469 if (index < 0) {
1512 *array->append() = value; 1470 *array->append() = value;
1513 } 1471 }
1514 } 1472 }
1515 1473
1516 /** 1474 /**
1517 * Run this test in a number of different configs (8888, 565, PDF, 1475 * Run this test in a number of different configs (8888, 565, PDF,
1518 * etc.), confirming that the resulting bitmaps match expectations 1476 * etc.), confirming that the resulting bitmaps match expectations
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1566 errorsForAllConfigs.add(kIntentionallySkipped_ErrorType); 1524 errorsForAllConfigs.add(kIntentionallySkipped_ErrorType);
1567 continue; 1525 continue;
1568 } 1526 }
1569 1527
1570 // Now we know that we want to run this test and record its 1528 // Now we know that we want to run this test and record its
1571 // success or failure. 1529 // success or failure.
1572 ErrorCombination errorsForThisConfig; 1530 ErrorCombination errorsForThisConfig;
1573 GrSurface* gpuTarget = NULL; 1531 GrSurface* gpuTarget = NULL;
1574 #if SK_SUPPORT_GPU 1532 #if SK_SUPPORT_GPU
1575 SkAutoTUnref<GrSurface> auGpuTarget; 1533 SkAutoTUnref<GrSurface> auGpuTarget;
1576 AutoResetGr autogr;
1577 if ((errorsForThisConfig.isEmpty()) && (kGPU_Backend == config.fBackend) ) { 1534 if ((errorsForThisConfig.isEmpty()) && (kGPU_Backend == config.fBackend) ) {
1578 GrContext* gr = grFactory->get(config.fGLContextType); 1535 GrContext* gr = grFactory->get(config.fGLContextType);
1579 bool grSuccess = false; 1536 bool grSuccess = false;
1580 if (gr) { 1537 if (gr) {
1581 // create a render target to back the device 1538 // create a render target to back the device
1582 GrTextureDesc desc; 1539 GrTextureDesc desc;
1583 desc.fConfig = kSkia8888_GrPixelConfig; 1540 desc.fConfig = kSkia8888_GrPixelConfig;
1584 desc.fFlags = kRenderTarget_GrTextureFlagBit; 1541 desc.fFlags = kRenderTarget_GrTextureFlagBit;
1585 desc.fWidth = gm->getISize().width(); 1542 desc.fWidth = gm->getISize().width();
1586 desc.fHeight = gm->getISize().height(); 1543 desc.fHeight = gm->getISize().height();
1587 desc.fSampleCnt = config.fSampleCnt; 1544 desc.fSampleCnt = config.fSampleCnt;
1588 auGpuTarget.reset(gr->createUncachedTexture(desc, NULL, 0)); 1545 auGpuTarget.reset(gr->createUncachedTexture(desc, NULL, 0));
1589 if (NULL != auGpuTarget) { 1546 if (NULL != auGpuTarget) {
1590 gpuTarget = auGpuTarget; 1547 gpuTarget = auGpuTarget;
1591 grSuccess = true; 1548 grSuccess = true;
1592 autogr.set(gr);
1593 // Set the user specified cache limits if non-default. 1549 // Set the user specified cache limits if non-default.
1594 size_t bytes; 1550 size_t bytes;
1595 int count; 1551 int count;
1596 gr->getTextureCacheLimits(&count, &bytes); 1552 gr->getTextureCacheLimits(&count, &bytes);
1597 if (DEFAULT_CACHE_VALUE != gGpuCacheSizeBytes) { 1553 if (DEFAULT_CACHE_VALUE != gGpuCacheSizeBytes) {
1598 bytes = static_cast<size_t>(gGpuCacheSizeBytes); 1554 bytes = static_cast<size_t>(gGpuCacheSizeBytes);
1599 } 1555 }
1600 if (DEFAULT_CACHE_VALUE != gGpuCacheSizeCount) { 1556 if (DEFAULT_CACHE_VALUE != gGpuCacheSizeCount) {
1601 count = gGpuCacheSizeCount; 1557 count = gGpuCacheSizeCount;
1602 } 1558 }
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after
2290 if (FLAGS_forceBWtext) { 2246 if (FLAGS_forceBWtext) {
2291 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref(); 2247 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref();
2292 } 2248 }
2293 } 2249 }
2294 2250
2295 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) 2251 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL)
2296 int main(int argc, char * const argv[]) { 2252 int main(int argc, char * const argv[]) {
2297 return tool_main(argc, (char**) argv); 2253 return tool_main(argc, (char**) argv);
2298 } 2254 }
2299 #endif 2255 #endif
OLDNEW
« no previous file with comments | « gm/gm.cpp ('k') | gm/image.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698