| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 #include "GrContext.h" | 8 #include "GrContext.h" |
| 9 #include "GrContextFactory.h" | 9 #include "GrContextFactory.h" |
| 10 #include "GrRenderTarget.h" | 10 #include "GrRenderTarget.h" |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 static void writePict(const SkBitmap& bitmap, const char* outDir, const char* pn
gName) { | 371 static void writePict(const SkBitmap& bitmap, const char* outDir, const char* pn
gName) { |
| 372 SkString outFile = make_filepath(0, outDir, pngName); | 372 SkString outFile = make_filepath(0, outDir, pngName); |
| 373 if (!SkImageEncoder::EncodeFile(outFile.c_str(), bitmap, | 373 if (!SkImageEncoder::EncodeFile(outFile.c_str(), bitmap, |
| 374 SkImageEncoder::kPNG_Type, 100)) { | 374 SkImageEncoder::kPNG_Type, 100)) { |
| 375 SkDebugf("unable to encode gr %s (width=%d height=%d)br \n", pngName, | 375 SkDebugf("unable to encode gr %s (width=%d height=%d)br \n", pngName, |
| 376 bitmap.width(), bitmap.height()); | 376 bitmap.width(), bitmap.height()); |
| 377 } | 377 } |
| 378 } | 378 } |
| 379 | 379 |
| 380 void TestResult::testOne() { | 380 void TestResult::testOne() { |
| 381 SkPicture* pic = nullptr; | 381 sk_sp<SkPicture> pic; |
| 382 { | 382 { |
| 383 SkString d; | 383 SkString d; |
| 384 d.printf(" {%d, \"%s\"},", fDirNo, fFilename); | 384 d.printf(" {%d, \"%s\"},", fDirNo, fFilename); |
| 385 SkString path = make_filepath(fDirNo, IN_DIR, fFilename); | 385 SkString path = make_filepath(fDirNo, IN_DIR, fFilename); |
| 386 SkFILEStream stream(path.c_str()); | 386 SkFILEStream stream(path.c_str()); |
| 387 if (!stream.isValid()) { | 387 if (!stream.isValid()) { |
| 388 SkDebugf("invalid stream %s\n", path.c_str()); | 388 SkDebugf("invalid stream %s\n", path.c_str()); |
| 389 goto finish; | 389 goto finish; |
| 390 } | 390 } |
| 391 if (fTestStep == kEncodeFiles) { | 391 if (fTestStep == kEncodeFiles) { |
| 392 size_t length = stream.getLength(); | 392 size_t length = stream.getLength(); |
| 393 SkTArray<char, true> bytes; | 393 SkTArray<char, true> bytes; |
| 394 bytes.push_back_n(length); | 394 bytes.push_back_n(length); |
| 395 stream.read(&bytes[0], length); | 395 stream.read(&bytes[0], length); |
| 396 stream.rewind(); | 396 stream.rewind(); |
| 397 SkString wPath = make_filepath(0, outSkpDir, fFilename); | 397 SkString wPath = make_filepath(0, outSkpDir, fFilename); |
| 398 SkFILEWStream wStream(wPath.c_str()); | 398 SkFILEWStream wStream(wPath.c_str()); |
| 399 wStream.write(&bytes[0], length); | 399 wStream.write(&bytes[0], length); |
| 400 wStream.flush(); | 400 wStream.flush(); |
| 401 } | 401 } |
| 402 pic = SkPicture::CreateFromStream(&stream); | 402 pic = SkPicture::MakeFromStream(&stream); |
| 403 if (!pic) { | 403 if (!pic) { |
| 404 SkDebugf("unable to decode %s\n", fFilename); | 404 SkDebugf("unable to decode %s\n", fFilename); |
| 405 goto finish; | 405 goto finish; |
| 406 } | 406 } |
| 407 int pWidth = pic->width(); | 407 int pWidth = pic->width(); |
| 408 int pHeight = pic->height(); | 408 int pHeight = pic->height(); |
| 409 int pLargerWH = SkTMax(pWidth, pHeight); | 409 int pLargerWH = SkTMax(pWidth, pHeight); |
| 410 GrContextFactory contextFactory; | 410 GrContextFactory contextFactory; |
| 411 #ifdef SK_BUILD_FOR_WIN | 411 #ifdef SK_BUILD_FOR_WIN |
| 412 GrContext* context = contextFactory.get(kAngle); | 412 GrContext* context = contextFactory.get(kAngle); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 429 dim.fY = (pHeight + scale - 1) / scale; | 429 dim.fY = (pHeight + scale - 1) / scale; |
| 430 bool success = bitmap.allocN32Pixels(dim.fX, dim.fY); | 430 bool success = bitmap.allocN32Pixels(dim.fX, dim.fY); |
| 431 if (success) { | 431 if (success) { |
| 432 break; | 432 break; |
| 433 } | 433 } |
| 434 SkDebugf("-%d-", scale); | 434 SkDebugf("-%d-", scale); |
| 435 } while ((scale *= 2) < 256); | 435 } while ((scale *= 2) < 256); |
| 436 if (scale >= 256) { | 436 if (scale >= 256) { |
| 437 SkDebugf("unable to allocate bitmap for %s (w=%d h=%d) (sw=%d sh=%d)
\n", | 437 SkDebugf("unable to allocate bitmap for %s (w=%d h=%d) (sw=%d sh=%d)
\n", |
| 438 fFilename, pWidth, pHeight, dim.fX, dim.fY); | 438 fFilename, pWidth, pHeight, dim.fX, dim.fY); |
| 439 goto finish; | 439 return; |
| 440 } | 440 } |
| 441 SkCanvas skCanvas(bitmap); | 441 SkCanvas skCanvas(bitmap); |
| 442 drawPict(pic, &skCanvas, fScaleOversized ? scale : 1); | 442 drawPict(pic, &skCanvas, fScaleOversized ? scale : 1); |
| 443 GrTextureDesc desc; | 443 GrTextureDesc desc; |
| 444 desc.fConfig = kSkia8888_GrPixelConfig; | 444 desc.fConfig = kSkia8888_GrPixelConfig; |
| 445 desc.fFlags = kRenderTarget_GrTextureFlagBit; | 445 desc.fFlags = kRenderTarget_GrTextureFlagBit; |
| 446 desc.fWidth = dim.fX; | 446 desc.fWidth = dim.fX; |
| 447 desc.fHeight = dim.fY; | 447 desc.fHeight = dim.fY; |
| 448 desc.fSampleCnt = 0; | 448 desc.fSampleCnt = 0; |
| 449 SkAutoTUnref<GrTexture> texture(context->createUncachedTexture(desc, nul
lptr, 0)); | 449 SkAutoTUnref<GrTexture> texture(context->createUncachedTexture(desc, nul
lptr, 0)); |
| 450 if (!texture) { | 450 if (!texture) { |
| 451 SkDebugf("unable to allocate texture for %s (w=%d h=%d)\n", fFilenam
e, | 451 SkDebugf("unable to allocate texture for %s (w=%d h=%d)\n", fFilenam
e, |
| 452 dim.fX, dim.fY); | 452 dim.fX, dim.fY); |
| 453 goto finish; | 453 return; |
| 454 } | 454 } |
| 455 SkGpuDevice grDevice(context, texture.get()); | 455 SkGpuDevice grDevice(context, texture.get()); |
| 456 SkCanvas grCanvas(&grDevice); | 456 SkCanvas grCanvas(&grDevice); |
| 457 drawPict(pic, &grCanvas, fScaleOversized ? scale : 1); | 457 drawPict(pic.get(), &grCanvas, fScaleOversized ? scale : 1); |
| 458 | 458 |
| 459 SkBitmap grBitmap; | 459 SkBitmap grBitmap; |
| 460 grBitmap.allocPixels(grCanvas.imageInfo()); | 460 grBitmap.allocPixels(grCanvas.imageInfo()); |
| 461 grCanvas.readPixels(&grBitmap, 0, 0); | 461 grCanvas.readPixels(&grBitmap, 0, 0); |
| 462 | 462 |
| 463 if (fTestStep == kCompareBits) { | 463 if (fTestStep == kCompareBits) { |
| 464 fPixelError = similarBits(grBitmap, bitmap); | 464 fPixelError = similarBits(grBitmap, bitmap); |
| 465 int skTime = timePict(pic, &skCanvas); | 465 int skTime = timePict(pic, &skCanvas); |
| 466 int grTime = timePict(pic, &grCanvas); | 466 int grTime = timePict(pic, &grCanvas); |
| 467 fTime = skTime - grTime; | 467 fTime = skTime - grTime; |
| 468 } else if (fTestStep == kEncodeFiles) { | 468 } else if (fTestStep == kEncodeFiles) { |
| 469 SkString pngStr = make_png_name(fFilename); | 469 SkString pngStr = make_png_name(fFilename); |
| 470 const char* pngName = pngStr.c_str(); | 470 const char* pngName = pngStr.c_str(); |
| 471 writePict(grBitmap, outGrDir, pngName); | 471 writePict(grBitmap, outGrDir, pngName); |
| 472 writePict(bitmap, outSkDir, pngName); | 472 writePict(bitmap, outSkDir, pngName); |
| 473 } | 473 } |
| 474 } | 474 } |
| 475 finish: | |
| 476 delete pic; | |
| 477 } | 475 } |
| 478 | 476 |
| 479 static SkString makeStatusString(int dirNo) { | 477 static SkString makeStatusString(int dirNo) { |
| 480 SkString statName; | 478 SkString statName; |
| 481 statName.printf("stats%d.txt", dirNo); | 479 statName.printf("stats%d.txt", dirNo); |
| 482 SkString statusFile = make_filepath(0, outStatusDir, statName.c_str()); | 480 SkString statusFile = make_filepath(0, outStatusDir, statName.c_str()); |
| 483 return statusFile; | 481 return statusFile; |
| 484 } | 482 } |
| 485 | 483 |
| 486 class PreParser { | 484 class PreParser { |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 int testIndex = 166; | 745 int testIndex = 166; |
| 748 int dirIndex = skipOverSkGr[testIndex - 166].directory; | 746 int dirIndex = skipOverSkGr[testIndex - 166].directory; |
| 749 SkString pictDir = make_in_dir_name(dirIndex); | 747 SkString pictDir = make_in_dir_name(dirIndex); |
| 750 if (pictDir.size() == 0) { | 748 if (pictDir.size() == 0) { |
| 751 return; | 749 return; |
| 752 } | 750 } |
| 753 SkString filename(skipOverSkGr[testIndex - 166].filename); | 751 SkString filename(skipOverSkGr[testIndex - 166].filename); |
| 754 TestResult::Test(dirIndex, filename.c_str(), kCompareBits, reporter->verbose
()); | 752 TestResult::Test(dirIndex, filename.c_str(), kCompareBits, reporter->verbose
()); |
| 755 TestResult::Test(dirIndex, filename.c_str(), kEncodeFiles, reporter->verbose
()); | 753 TestResult::Test(dirIndex, filename.c_str(), kEncodeFiles, reporter->verbose
()); |
| 756 } | 754 } |
| OLD | NEW |