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 "SkBitmap.h" | 8 #include "SkBitmap.h" |
9 #include "SkBitmapDevice.h" | |
10 #include "SkBlurImageFilter.h" | 9 #include "SkBlurImageFilter.h" |
11 #include "SkCanvas.h" | 10 #include "SkCanvas.h" |
12 #include "SkColorFilterImageFilter.h" | 11 #include "SkColorFilterImageFilter.h" |
13 #include "SkColorMatrixFilter.h" | 12 #include "SkColorMatrixFilter.h" |
14 #include "SkComposeImageFilter.h" | 13 #include "SkComposeImageFilter.h" |
15 #include "SkDisplacementMapEffect.h" | 14 #include "SkDisplacementMapEffect.h" |
16 #include "SkDropShadowImageFilter.h" | 15 #include "SkDropShadowImageFilter.h" |
17 #include "SkFlattenableSerialization.h" | 16 #include "SkFlattenableSerialization.h" |
18 #include "SkGradientShader.h" | 17 #include "SkGradientShader.h" |
19 #include "SkImage.h" | 18 #include "SkImage.h" |
(...skipping 11 matching lines...) Expand all Loading... | |
31 #include "SkPoint3.h" | 30 #include "SkPoint3.h" |
32 #include "SkReadBuffer.h" | 31 #include "SkReadBuffer.h" |
33 #include "SkRect.h" | 32 #include "SkRect.h" |
34 #include "SkSpecialImage.h" | 33 #include "SkSpecialImage.h" |
35 #include "SkSpecialSurface.h" | 34 #include "SkSpecialSurface.h" |
36 #include "SkSurface.h" | 35 #include "SkSurface.h" |
37 #include "SkTableColorFilter.h" | 36 #include "SkTableColorFilter.h" |
38 #include "SkTileImageFilter.h" | 37 #include "SkTileImageFilter.h" |
39 #include "SkXfermodeImageFilter.h" | 38 #include "SkXfermodeImageFilter.h" |
40 #include "Test.h" | 39 #include "Test.h" |
41 #include "TestingSpecialImageAccess.h" | |
42 | 40 |
43 #if SK_SUPPORT_GPU | 41 #if SK_SUPPORT_GPU |
44 #include "GrContext.h" | 42 #include "GrContext.h" |
45 #include "SkGpuDevice.h" | |
46 #endif | 43 #endif |
47 | 44 |
48 static const int kBitmapSize = 4; | 45 static const int kBitmapSize = 4; |
49 | 46 |
50 namespace { | 47 namespace { |
51 | 48 |
52 class MatrixTestImageFilter : public SkImageFilter { | 49 class MatrixTestImageFilter : public SkImageFilter { |
53 public: | 50 public: |
54 static sk_sp<SkImageFilter> Make(skiatest::Reporter* reporter, | 51 static sk_sp<SkImageFilter> Make(skiatest::Reporter* reporter, |
55 const SkMatrix& expectedMatrix) { | 52 const SkMatrix& expectedMatrix) { |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
363 return SkColorFilterImageFilter::Make(std::move(filter), std::move(input), c ropRect); | 360 return SkColorFilterImageFilter::Make(std::move(filter), std::move(input), c ropRect); |
364 } | 361 } |
365 | 362 |
366 static sk_sp<SkImageFilter> make_blue(sk_sp<SkImageFilter> input, | 363 static sk_sp<SkImageFilter> make_blue(sk_sp<SkImageFilter> input, |
367 const SkImageFilter::CropRect* cropRect) { | 364 const SkImageFilter::CropRect* cropRect) { |
368 sk_sp<SkColorFilter> filter(SkColorFilter::MakeModeFilter(SK_ColorBLUE, | 365 sk_sp<SkColorFilter> filter(SkColorFilter::MakeModeFilter(SK_ColorBLUE, |
369 SkXfermode::kSrcIn _Mode)); | 366 SkXfermode::kSrcIn _Mode)); |
370 return SkColorFilterImageFilter::Make(std::move(filter), std::move(input), c ropRect); | 367 return SkColorFilterImageFilter::Make(std::move(filter), std::move(input), c ropRect); |
371 } | 368 } |
372 | 369 |
373 static sk_sp<SkSpecialSurface> create_empty_special_surface(GrContext* context, | 370 static sk_sp<SkSpecialSurface> create_empty_special_surface(GrContext* context, int widthHeight) { |
374 SkImageFilter::Proxy * proxy, | |
375 int widthHeight) { | |
376 if (context) { | 371 if (context) { |
377 GrSurfaceDesc desc; | 372 GrSurfaceDesc desc; |
378 desc.fConfig = kSkia8888_GrPixelConfig; | 373 desc.fConfig = kSkia8888_GrPixelConfig; |
379 desc.fFlags = kRenderTarget_GrSurfaceFlag; | 374 desc.fFlags = kRenderTarget_GrSurfaceFlag; |
380 desc.fWidth = widthHeight; | 375 desc.fWidth = widthHeight; |
381 desc.fHeight = widthHeight; | 376 desc.fHeight = widthHeight; |
382 return SkSpecialSurface::MakeRenderTarget(proxy, context, desc); | 377 return SkSpecialSurface::MakeRenderTarget(context, desc); |
383 } else { | 378 } else { |
384 const SkImageInfo info = SkImageInfo::MakeN32(widthHeight, widthHeight, | 379 const SkImageInfo info = SkImageInfo::MakeN32(widthHeight, widthHeight, |
385 kOpaque_SkAlphaType); | 380 kOpaque_SkAlphaType); |
386 return SkSpecialSurface::MakeRaster(proxy, info); | 381 return SkSpecialSurface::MakeRaster(info); |
387 } | 382 } |
388 } | 383 } |
389 | 384 |
390 static sk_sp<SkSpecialImage> create_empty_special_image(GrContext* context, | 385 static sk_sp<SkSpecialImage> create_empty_special_image(GrContext* context, int widthHeight) { |
391 SkImageFilter::Proxy* pr oxy, | 386 sk_sp<SkSpecialSurface> surf(create_empty_special_surface(context, widthHeig ht)); |
392 int widthHeight) { | |
393 sk_sp<SkSpecialSurface> surf(create_empty_special_surface(context, proxy, wi dthHeight)); | |
394 | 387 |
395 SkASSERT(surf); | 388 SkASSERT(surf); |
396 | 389 |
397 SkCanvas* canvas = surf->getCanvas(); | 390 SkCanvas* canvas = surf->getCanvas(); |
398 SkASSERT(canvas); | 391 SkASSERT(canvas); |
399 | 392 |
400 canvas->clear(0x0); | 393 canvas->clear(0x0); |
401 | 394 |
402 return surf->makeImageSnapshot(); | 395 return surf->makeImageSnapshot(); |
403 } | 396 } |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
514 0xFFFFFFFF, SK_Scalar1, SK_Scalar1, SK_Scalar1, | 507 0xFFFFFFFF, SK_Scalar1, SK_Scalar1, SK_Scalar1, |
515 std::move(bmSrc))); | 508 std::move(bmSrc))); |
516 SkCanvas canvas(result); | 509 SkCanvas canvas(result); |
517 SkRect r = SkRect::MakeWH(SkIntToScalar(kBitmapSize), | 510 SkRect r = SkRect::MakeWH(SkIntToScalar(kBitmapSize), |
518 SkIntToScalar(kBitmapSize)); | 511 SkIntToScalar(kBitmapSize)); |
519 canvas.drawRect(r, paint); | 512 canvas.drawRect(r, paint); |
520 } | 513 } |
521 } | 514 } |
522 } | 515 } |
523 | 516 |
524 static void test_crop_rects(SkImageFilter::Proxy* proxy, | 517 static void test_crop_rects(skiatest::Reporter* reporter, |
525 skiatest::Reporter* reporter, | |
526 GrContext* context) { | 518 GrContext* context) { |
527 // Check that all filters offset to their absolute crop rect, | 519 // Check that all filters offset to their absolute crop rect, |
528 // unaffected by the input crop rect. | 520 // unaffected by the input crop rect. |
529 // Tests pass by not asserting. | 521 // Tests pass by not asserting. |
530 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 100) ); | 522 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 100)); |
531 SkASSERT(srcImg); | 523 SkASSERT(srcImg); |
532 | 524 |
533 SkImageFilter::CropRect inputCropRect(SkRect::MakeXYWH(8, 13, 80, 80)); | 525 SkImageFilter::CropRect inputCropRect(SkRect::MakeXYWH(8, 13, 80, 80)); |
534 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(20, 30, 60, 60)); | 526 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(20, 30, 60, 60)); |
535 sk_sp<SkImageFilter> input(make_grayscale(nullptr, &inputCropRect)); | 527 sk_sp<SkImageFilter> input(make_grayscale(nullptr, &inputCropRect)); |
536 | 528 |
537 FilterList filters(input, &cropRect); | 529 FilterList filters(input, &cropRect); |
538 | 530 |
539 for (int i = 0; i < filters.count(); ++i) { | 531 for (int i = 0; i < filters.count(); ++i) { |
540 SkImageFilter* filter = filters.getFilter(i); | 532 SkImageFilter* filter = filters.getFilter(i); |
541 SkIPoint offset; | 533 SkIPoint offset; |
542 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nul lptr); | 534 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nul lptr); |
543 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, & offset)); | 535 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, & offset)); |
544 REPORTER_ASSERT_MESSAGE(reporter, resultImg, filters.getName(i)); | 536 REPORTER_ASSERT_MESSAGE(reporter, resultImg, filters.getName(i)); |
545 REPORTER_ASSERT_MESSAGE(reporter, offset.fX == 20 && offset.fY == 30, fi lters.getName(i)); | 537 REPORTER_ASSERT_MESSAGE(reporter, offset.fX == 20 && offset.fY == 30, fi lters.getName(i)); |
546 } | 538 } |
547 } | 539 } |
548 | 540 |
549 static void test_negative_blur_sigma(SkImageFilter::Proxy* proxy, | 541 static void test_negative_blur_sigma(skiatest::Reporter* reporter, |
550 skiatest::Reporter* reporter, | |
551 GrContext* context) { | 542 GrContext* context) { |
552 // Check that SkBlurImageFilter will accept a negative sigma, either in | 543 // Check that SkBlurImageFilter will accept a negative sigma, either in |
553 // the given arguments or after CTM application. | 544 // the given arguments or after CTM application. |
554 const int width = 32, height = 32; | 545 const int width = 32, height = 32; |
555 const SkScalar five = SkIntToScalar(5); | 546 const SkScalar five = SkIntToScalar(5); |
556 | 547 |
557 sk_sp<SkImageFilter> positiveFilter(SkBlurImageFilter::Make(five, five, null ptr)); | 548 sk_sp<SkImageFilter> positiveFilter(SkBlurImageFilter::Make(five, five, null ptr)); |
558 sk_sp<SkImageFilter> negativeFilter(SkBlurImageFilter::Make(-five, five, nul lptr)); | 549 sk_sp<SkImageFilter> negativeFilter(SkBlurImageFilter::Make(-five, five, nul lptr)); |
559 | 550 |
560 SkBitmap gradient = make_gradient_circle(width, height); | 551 SkBitmap gradient = make_gradient_circle(width, height); |
561 sk_sp<SkSpecialImage> imgSrc(SkSpecialImage::MakeFromRaster(proxy, | 552 sk_sp<SkSpecialImage> imgSrc(SkSpecialImage::MakeFromRaster(SkIRect::MakeWH( width, height), |
562 SkIRect::MakeWH( width, height), | |
563 gradient)); | 553 gradient)); |
564 | 554 |
565 SkIPoint offset; | 555 SkIPoint offset; |
566 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(32, 32), nullptr); | 556 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(32, 32), nullptr); |
567 | 557 |
568 sk_sp<SkSpecialImage> positiveResult1(positiveFilter->filterImage(imgSrc.get (), ctx, &offset)); | 558 sk_sp<SkSpecialImage> positiveResult1(positiveFilter->filterImage(imgSrc.get (), ctx, &offset)); |
569 REPORTER_ASSERT(reporter, positiveResult1); | 559 REPORTER_ASSERT(reporter, positiveResult1); |
570 | 560 |
571 sk_sp<SkSpecialImage> negativeResult1(negativeFilter->filterImage(imgSrc.get (), ctx, &offset)); | 561 sk_sp<SkSpecialImage> negativeResult1(negativeFilter->filterImage(imgSrc.get (), ctx, &offset)); |
572 REPORTER_ASSERT(reporter, negativeResult1); | 562 REPORTER_ASSERT(reporter, negativeResult1); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
616 diffs = memcmp(positiveResultBM1.getAddr32(0, y), | 606 diffs = memcmp(positiveResultBM1.getAddr32(0, y), |
617 positiveResultBM2.getAddr32(0, y), | 607 positiveResultBM2.getAddr32(0, y), |
618 positiveResultBM1.rowBytes()); | 608 positiveResultBM1.rowBytes()); |
619 REPORTER_ASSERT(reporter, !diffs); | 609 REPORTER_ASSERT(reporter, !diffs); |
620 if (diffs) { | 610 if (diffs) { |
621 break; | 611 break; |
622 } | 612 } |
623 } | 613 } |
624 } | 614 } |
625 | 615 |
626 typedef void (*PFTest)(SkImageFilter::Proxy* proxy, | 616 typedef void (*PFTest)(skiatest::Reporter* reporter, GrContext* context); |
627 skiatest::Reporter* reporter, | |
628 GrContext* context); | |
629 | 617 |
630 static void run_raster_test(skiatest::Reporter* reporter, | 618 static void run_raster_test(skiatest::Reporter* reporter, |
631 int widthHeight, | 619 int widthHeight, |
632 PFTest test) { | 620 PFTest test) { |
633 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); | 621 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); |
Stephen White
2016/04/20 16:53:13
Remove this?
robertphillips
2016/04/20 17:50:20
Done.
| |
634 | 622 |
635 const SkImageInfo info = SkImageInfo::MakeN32Premul(widthHeight, widthHeight ); | 623 const SkImageInfo info = SkImageInfo::MakeN32Premul(widthHeight, widthHeight ); |
Stephen White
2016/04/20 16:53:13
and this?
robertphillips
2016/04/20 17:50:20
Done.
| |
636 | 624 |
637 sk_sp<SkBaseDevice> device(SkBitmapDevice::Create(info, props)); | 625 (*test)(reporter, nullptr); |
638 SkImageFilter::DeviceProxy proxy(device.get()); | |
639 | |
640 (*test)(&proxy, reporter, nullptr); | |
641 } | 626 } |
642 | 627 |
643 #if SK_SUPPORT_GPU | 628 #if SK_SUPPORT_GPU |
644 static void run_gpu_test(skiatest::Reporter* reporter, | 629 static void run_gpu_test(skiatest::Reporter* reporter, |
645 GrContext* context, | 630 GrContext* context, |
646 int widthHeight, | 631 int widthHeight, |
647 PFTest test) { | 632 PFTest test) { |
648 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); | 633 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); |
Stephen White
2016/04/20 16:53:13
and this?
robertphillips
2016/04/20 17:50:20
Done.
| |
649 | 634 |
650 sk_sp<SkGpuDevice> device(SkGpuDevice::Create(context, | 635 (*test)(reporter, context); |
651 SkBudgeted::kNo, | |
652 SkImageInfo::MakeN32Premul(wid thHeight, | |
653 wid thHeight), | |
654 0, | |
655 &props, | |
656 SkGpuDevice::kUninit_InitConte nts)); | |
657 SkImageFilter::DeviceProxy proxy(device.get()); | |
658 | |
659 (*test)(&proxy, reporter, context); | |
660 } | 636 } |
661 #endif | 637 #endif |
662 | 638 |
663 DEF_TEST(ImageFilterNegativeBlurSigma, reporter) { | 639 DEF_TEST(ImageFilterNegativeBlurSigma, reporter) { |
664 run_raster_test(reporter, 100, test_negative_blur_sigma); | 640 run_raster_test(reporter, 100, test_negative_blur_sigma); |
665 } | 641 } |
666 | 642 |
667 #if SK_SUPPORT_GPU | 643 #if SK_SUPPORT_GPU |
668 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterNegativeBlurSigma_Gpu, reporter, c txInfo) { | 644 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterNegativeBlurSigma_Gpu, reporter, c txInfo) { |
669 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_negative_blur_sigma); | 645 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_negative_blur_sigma); |
670 } | 646 } |
671 #endif | 647 #endif |
672 | 648 |
673 static void test_zero_blur_sigma(SkImageFilter::Proxy* proxy, | 649 static void test_zero_blur_sigma(skiatest::Reporter* reporter, GrContext* contex t) { |
674 skiatest::Reporter* reporter, | |
675 GrContext* context) { | |
676 // Check that SkBlurImageFilter with a zero sigma and a non-zero srcOffset w orks correctly. | 650 // Check that SkBlurImageFilter with a zero sigma and a non-zero srcOffset w orks correctly. |
677 SkImageFilter::CropRect cropRect(SkRect::Make(SkIRect::MakeXYWH(5, 0, 5, 10) )); | 651 SkImageFilter::CropRect cropRect(SkRect::Make(SkIRect::MakeXYWH(5, 0, 5, 10) )); |
678 sk_sp<SkImageFilter> input(SkOffsetImageFilter::Make(0, 0, nullptr, &cropRec t)); | 652 sk_sp<SkImageFilter> input(SkOffsetImageFilter::Make(0, 0, nullptr, &cropRec t)); |
679 sk_sp<SkImageFilter> filter(SkBlurImageFilter::Make(0, 0, std::move(input), &cropRect)); | 653 sk_sp<SkImageFilter> filter(SkBlurImageFilter::Make(0, 0, std::move(input), &cropRect)); |
680 | 654 |
681 sk_sp<SkSpecialSurface> surf(create_empty_special_surface(context, proxy, 10 )); | 655 sk_sp<SkSpecialSurface> surf(create_empty_special_surface(context, 10)); |
682 surf->getCanvas()->clear(SK_ColorGREEN); | 656 surf->getCanvas()->clear(SK_ColorGREEN); |
683 sk_sp<SkSpecialImage> image(surf->makeImageSnapshot()); | 657 sk_sp<SkSpecialImage> image(surf->makeImageSnapshot()); |
684 | 658 |
685 SkIPoint offset; | 659 SkIPoint offset; |
686 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(32, 32), nullptr); | 660 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(32, 32), nullptr); |
687 | 661 |
688 sk_sp<SkSpecialImage> result(filter->filterImage(image.get(), ctx, &offset)) ; | 662 sk_sp<SkSpecialImage> result(filter->filterImage(image.get(), ctx, &offset)) ; |
689 REPORTER_ASSERT(reporter, offset.fX == 5 && offset.fY == 0); | 663 REPORTER_ASSERT(reporter, offset.fX == 5 && offset.fY == 0); |
690 REPORTER_ASSERT(reporter, result); | 664 REPORTER_ASSERT(reporter, result); |
691 REPORTER_ASSERT(reporter, result->width() == 5 && result->height() == 10); | 665 REPORTER_ASSERT(reporter, result->width() == 5 && result->height() == 10); |
(...skipping 20 matching lines...) Expand all Loading... | |
712 | 686 |
713 #if SK_SUPPORT_GPU | 687 #if SK_SUPPORT_GPU |
714 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterZeroBlurSigma_Gpu, reporter, ctxIn fo) { | 688 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterZeroBlurSigma_Gpu, reporter, ctxIn fo) { |
715 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_zero_blur_sigma); | 689 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_zero_blur_sigma); |
716 } | 690 } |
717 #endif | 691 #endif |
718 | 692 |
719 | 693 |
720 // Tests that, even when an upstream filter has returned null (due to failure or clipping), a | 694 // Tests that, even when an upstream filter has returned null (due to failure or clipping), a |
721 // downstream filter that affects transparent black still does so even with a nu llptr input. | 695 // downstream filter that affects transparent black still does so even with a nu llptr input. |
722 static void test_fail_affects_transparent_black(SkImageFilter::Proxy* proxy, | 696 static void test_fail_affects_transparent_black(skiatest::Reporter* reporter, Gr Context* context) { |
723 skiatest::Reporter* reporter, | |
724 GrContext* context) { | |
725 sk_sp<FailImageFilter> failFilter(new FailImageFilter()); | 697 sk_sp<FailImageFilter> failFilter(new FailImageFilter()); |
726 sk_sp<SkSpecialImage> source(create_empty_special_image(context, proxy, 5)); | 698 sk_sp<SkSpecialImage> source(create_empty_special_image(context, 5)); |
727 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 1, 1), nul lptr); | 699 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 1, 1), nul lptr); |
728 sk_sp<SkColorFilter> green(SkColorFilter::MakeModeFilter(SK_ColorGREEN, SkXf ermode::kSrc_Mode)); | 700 sk_sp<SkColorFilter> green(SkColorFilter::MakeModeFilter(SK_ColorGREEN, SkXf ermode::kSrc_Mode)); |
729 SkASSERT(green->affectsTransparentBlack()); | 701 SkASSERT(green->affectsTransparentBlack()); |
730 sk_sp<SkImageFilter> greenFilter(SkColorFilterImageFilter::Make(std::move(gr een), | 702 sk_sp<SkImageFilter> greenFilter(SkColorFilterImageFilter::Make(std::move(gr een), |
731 std::move(fa ilFilter))); | 703 std::move(fa ilFilter))); |
732 SkIPoint offset; | 704 SkIPoint offset; |
733 sk_sp<SkSpecialImage> result(greenFilter->filterImage(source.get(), ctx, &of fset)); | 705 sk_sp<SkSpecialImage> result(greenFilter->filterImage(source.get(), ctx, &of fset)); |
734 REPORTER_ASSERT(reporter, nullptr != result.get()); | 706 REPORTER_ASSERT(reporter, nullptr != result.get()); |
735 if (result.get()) { | 707 if (result.get()) { |
736 SkBitmap resultBM; | 708 SkBitmap resultBM; |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
928 { | 900 { |
929 sk_sp<SkImageFilter> composite(SkXfermodeImageFilter::Make(nullptr, null ptr, | 901 sk_sp<SkImageFilter> composite(SkXfermodeImageFilter::Make(nullptr, null ptr, |
930 offset, nullp tr)); | 902 offset, nullp tr)); |
931 SkRect bounds = SkRect::MakeWH(100, 100); | 903 SkRect bounds = SkRect::MakeWH(100, 100); |
932 // Intentionally aliasing here, as that's what the real callers do. | 904 // Intentionally aliasing here, as that's what the real callers do. |
933 bounds = composite->computeFastBounds(bounds); | 905 bounds = composite->computeFastBounds(bounds); |
934 REPORTER_ASSERT(reporter, bounds == SkRect::MakeWH(150, 100)); | 906 REPORTER_ASSERT(reporter, bounds == SkRect::MakeWH(150, 100)); |
935 } | 907 } |
936 } | 908 } |
937 | 909 |
938 static void test_imagefilter_merge_result_size(SkImageFilter::Proxy* proxy, | 910 static void test_imagefilter_merge_result_size(skiatest::Reporter* reporter, GrC ontext* context) { |
939 skiatest::Reporter* reporter, | |
940 GrContext* context) { | |
941 SkBitmap greenBM; | 911 SkBitmap greenBM; |
942 greenBM.allocN32Pixels(20, 20); | 912 greenBM.allocN32Pixels(20, 20); |
943 greenBM.eraseColor(SK_ColorGREEN); | 913 greenBM.eraseColor(SK_ColorGREEN); |
944 sk_sp<SkImage> greenImage(SkImage::MakeFromBitmap(greenBM)); | 914 sk_sp<SkImage> greenImage(SkImage::MakeFromBitmap(greenBM)); |
945 sk_sp<SkImageFilter> source(SkImageSource::Make(std::move(greenImage))); | 915 sk_sp<SkImageFilter> source(SkImageSource::Make(std::move(greenImage))); |
946 sk_sp<SkImageFilter> merge(SkMergeImageFilter::Make(source, source)); | 916 sk_sp<SkImageFilter> merge(SkMergeImageFilter::Make(source, source)); |
947 | 917 |
948 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 1)); | 918 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 1)); |
949 | 919 |
950 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 100, 100), nullptr); | 920 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 100, 100), nullptr); |
951 SkIPoint offset; | 921 SkIPoint offset; |
952 | 922 |
953 sk_sp<SkSpecialImage> resultImg(merge->filterImage(srcImg.get(), ctx, &offse t)); | 923 sk_sp<SkSpecialImage> resultImg(merge->filterImage(srcImg.get(), ctx, &offse t)); |
954 REPORTER_ASSERT(reporter, resultImg); | 924 REPORTER_ASSERT(reporter, resultImg); |
955 | 925 |
956 REPORTER_ASSERT(reporter, resultImg->width() == 20 && resultImg->height() == 20); | 926 REPORTER_ASSERT(reporter, resultImg->width() == 20 && resultImg->height() == 20); |
957 } | 927 } |
958 | 928 |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1085 SkPaint filterPaint; | 1055 SkPaint filterPaint; |
1086 filterPaint.setImageFilter(std::move(filter)); | 1056 filterPaint.setImageFilter(std::move(filter)); |
1087 SkRect bounds = SkRect::MakeWH(1, 10); | 1057 SkRect bounds = SkRect::MakeWH(1, 10); |
1088 SkRect rect = SkRect::Make(SkIRect::MakeWH(width, height)); | 1058 SkRect rect = SkRect::Make(SkIRect::MakeWH(width, height)); |
1089 SkPaint rectPaint; | 1059 SkPaint rectPaint; |
1090 canvas.saveLayer(&bounds, &filterPaint); | 1060 canvas.saveLayer(&bounds, &filterPaint); |
1091 canvas.drawRect(rect, rectPaint); | 1061 canvas.drawRect(rect, rectPaint); |
1092 canvas.restore(); | 1062 canvas.restore(); |
1093 } | 1063 } |
1094 | 1064 |
1095 static void test_big_kernel(SkImageFilter::Proxy* proxy, | 1065 static void test_big_kernel(skiatest::Reporter* reporter, GrContext* context) { |
1096 skiatest::Reporter* reporter, | |
1097 GrContext* context) { | |
1098 // Check that a kernel that is too big for the GPU still works | 1066 // Check that a kernel that is too big for the GPU still works |
1099 SkScalar identityKernel[49] = { | 1067 SkScalar identityKernel[49] = { |
1100 0, 0, 0, 0, 0, 0, 0, | 1068 0, 0, 0, 0, 0, 0, 0, |
1101 0, 0, 0, 0, 0, 0, 0, | 1069 0, 0, 0, 0, 0, 0, 0, |
1102 0, 0, 0, 0, 0, 0, 0, | 1070 0, 0, 0, 0, 0, 0, 0, |
1103 0, 0, 0, 1, 0, 0, 0, | 1071 0, 0, 0, 1, 0, 0, 0, |
1104 0, 0, 0, 0, 0, 0, 0, | 1072 0, 0, 0, 0, 0, 0, 0, |
1105 0, 0, 0, 0, 0, 0, 0, | 1073 0, 0, 0, 0, 0, 0, 0, |
1106 0, 0, 0, 0, 0, 0, 0 | 1074 0, 0, 0, 0, 0, 0, 0 |
1107 }; | 1075 }; |
1108 SkISize kernelSize = SkISize::Make(7, 7); | 1076 SkISize kernelSize = SkISize::Make(7, 7); |
1109 SkScalar gain = SK_Scalar1, bias = 0; | 1077 SkScalar gain = SK_Scalar1, bias = 0; |
1110 SkIPoint kernelOffset = SkIPoint::Make(0, 0); | 1078 SkIPoint kernelOffset = SkIPoint::Make(0, 0); |
1111 | 1079 |
1112 sk_sp<SkImageFilter> filter(SkMatrixConvolutionImageFilter::Make( | 1080 sk_sp<SkImageFilter> filter(SkMatrixConvolutionImageFilter::Make( |
1113 kernelSize, identityKernel, gain, bias, kernelOffset, | 1081 kernelSize, identityKernel, gain, bias, kernelOffset, |
1114 SkMatrixConvolutionImageFilter::kClamp_T ileMode, | 1082 SkMatrixConvolutionImageFilter::kClamp_T ileMode, |
1115 true, nullptr)); | 1083 true, nullptr)); |
1116 | 1084 |
1117 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 100) ); | 1085 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 100)); |
1118 SkASSERT(srcImg); | 1086 SkASSERT(srcImg); |
1119 | 1087 |
1120 SkIPoint offset; | 1088 SkIPoint offset; |
1121 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr ); | 1089 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr ); |
1122 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, &offs et)); | 1090 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, &offs et)); |
1123 REPORTER_ASSERT(reporter, resultImg); | 1091 REPORTER_ASSERT(reporter, resultImg); |
1124 REPORTER_ASSERT(reporter, SkToBool(context) == resultImg->isTextureBacked()) ; | 1092 REPORTER_ASSERT(reporter, SkToBool(context) == resultImg->isTextureBacked()) ; |
1125 REPORTER_ASSERT(reporter, resultImg->width() == 100 && resultImg->height() = = 100); | 1093 REPORTER_ASSERT(reporter, resultImg->width() == 100 && resultImg->height() = = 100); |
1126 REPORTER_ASSERT(reporter, offset.fX == 0 && offset.fY == 0); | 1094 REPORTER_ASSERT(reporter, offset.fX == 0 && offset.fY == 0); |
1127 } | 1095 } |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1225 | 1193 |
1226 canvas.clear(0x0); | 1194 canvas.clear(0x0); |
1227 canvas.drawPicture(crossProcessPicture); | 1195 canvas.drawPicture(crossProcessPicture); |
1228 pixel = *bitmap.getAddr32(0, 0); | 1196 pixel = *bitmap.getAddr32(0, 0); |
1229 // If the security precautions are enabled, the result here should not be gr een, since the | 1197 // If the security precautions are enabled, the result here should not be gr een, since the |
1230 // filter draws nothing. | 1198 // filter draws nothing. |
1231 REPORTER_ASSERT(reporter, SkPicture::PictureIOSecurityPrecautionsEnabled() | 1199 REPORTER_ASSERT(reporter, SkPicture::PictureIOSecurityPrecautionsEnabled() |
1232 ? pixel != SK_ColorGREEN : pixel == SK_ColorGREEN); | 1200 ? pixel != SK_ColorGREEN : pixel == SK_ColorGREEN); |
1233 } | 1201 } |
1234 | 1202 |
1235 static void test_clipped_picture_imagefilter(SkImageFilter::Proxy* proxy, | 1203 static void test_clipped_picture_imagefilter(skiatest::Reporter* reporter, GrCon text* context) { |
1236 skiatest::Reporter* reporter, | |
1237 GrContext* context) { | |
1238 sk_sp<SkPicture> picture; | 1204 sk_sp<SkPicture> picture; |
1239 | 1205 |
1240 { | 1206 { |
1241 SkRTreeFactory factory; | 1207 SkRTreeFactory factory; |
1242 SkPictureRecorder recorder; | 1208 SkPictureRecorder recorder; |
1243 SkCanvas* recordingCanvas = recorder.beginRecording(1, 1, &factory, 0); | 1209 SkCanvas* recordingCanvas = recorder.beginRecording(1, 1, &factory, 0); |
1244 | 1210 |
1245 // Create an SkPicture which simply draws a green 1x1 rectangle. | 1211 // Create an SkPicture which simply draws a green 1x1 rectangle. |
1246 SkPaint greenPaint; | 1212 SkPaint greenPaint; |
1247 greenPaint.setColor(SK_ColorGREEN); | 1213 greenPaint.setColor(SK_ColorGREEN); |
1248 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), greenPain t); | 1214 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), greenPain t); |
1249 picture = recorder.finishRecordingAsPicture(); | 1215 picture = recorder.finishRecordingAsPicture(); |
1250 } | 1216 } |
1251 | 1217 |
1252 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 2)); | 1218 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 2)); |
1253 | 1219 |
1254 sk_sp<SkImageFilter> imageFilter(SkPictureImageFilter::Make(picture)); | 1220 sk_sp<SkImageFilter> imageFilter(SkPictureImageFilter::Make(picture)); |
1255 | 1221 |
1256 SkIPoint offset; | 1222 SkIPoint offset; |
1257 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(1, 1, 1, 1), nul lptr); | 1223 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(1, 1, 1, 1), nul lptr); |
1258 | 1224 |
1259 sk_sp<SkSpecialImage> resultImage(imageFilter->filterImage(srcImg.get(), ctx , &offset)); | 1225 sk_sp<SkSpecialImage> resultImage(imageFilter->filterImage(srcImg.get(), ctx , &offset)); |
1260 REPORTER_ASSERT(reporter, !resultImage); | 1226 REPORTER_ASSERT(reporter, !resultImage); |
1261 } | 1227 } |
1262 | 1228 |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1493 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); | 1459 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); |
1494 } | 1460 } |
1495 | 1461 |
1496 DEF_TEST(XfermodeImageFilterCroppedInput, reporter) { | 1462 DEF_TEST(XfermodeImageFilterCroppedInput, reporter) { |
1497 SkBitmap temp; | 1463 SkBitmap temp; |
1498 temp.allocN32Pixels(100, 100); | 1464 temp.allocN32Pixels(100, 100); |
1499 SkCanvas canvas(temp); | 1465 SkCanvas canvas(temp); |
1500 test_xfermode_cropped_input(&canvas, reporter); | 1466 test_xfermode_cropped_input(&canvas, reporter); |
1501 } | 1467 } |
1502 | 1468 |
1503 static void test_composed_imagefilter_offset(SkImageFilter::Proxy* proxy, | 1469 static void test_composed_imagefilter_offset(skiatest::Reporter* reporter, GrCon text* context) { |
1504 skiatest::Reporter* reporter, | 1470 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 100)); |
1505 GrContext* context) { | |
1506 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 100) ); | |
1507 | 1471 |
1508 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(1, 0, 20, 20)); | 1472 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(1, 0, 20, 20)); |
1509 sk_sp<SkImageFilter> offsetFilter(SkOffsetImageFilter::Make(0, 0, nullptr, & cropRect)); | 1473 sk_sp<SkImageFilter> offsetFilter(SkOffsetImageFilter::Make(0, 0, nullptr, & cropRect)); |
1510 sk_sp<SkImageFilter> blurFilter(SkBlurImageFilter::Make(SK_Scalar1, SK_Scala r1, | 1474 sk_sp<SkImageFilter> blurFilter(SkBlurImageFilter::Make(SK_Scalar1, SK_Scala r1, |
1511 nullptr, &cropRect)) ; | 1475 nullptr, &cropRect)) ; |
1512 sk_sp<SkImageFilter> composedFilter(SkComposeImageFilter::Make(std::move(blu rFilter), | 1476 sk_sp<SkImageFilter> composedFilter(SkComposeImageFilter::Make(std::move(blu rFilter), |
1513 std::move(off setFilter))); | 1477 std::move(off setFilter))); |
1514 SkIPoint offset; | 1478 SkIPoint offset; |
1515 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr ); | 1479 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr ); |
1516 | 1480 |
1517 sk_sp<SkSpecialImage> resultImg(composedFilter->filterImage(srcImg.get(), ct x, &offset)); | 1481 sk_sp<SkSpecialImage> resultImg(composedFilter->filterImage(srcImg.get(), ct x, &offset)); |
1518 REPORTER_ASSERT(reporter, resultImg); | 1482 REPORTER_ASSERT(reporter, resultImg); |
1519 REPORTER_ASSERT(reporter, offset.fX == 1 && offset.fY == 0); | 1483 REPORTER_ASSERT(reporter, offset.fX == 1 && offset.fY == 0); |
1520 } | 1484 } |
1521 | 1485 |
1522 DEF_TEST(ComposedImageFilterOffset, reporter) { | 1486 DEF_TEST(ComposedImageFilterOffset, reporter) { |
1523 run_raster_test(reporter, 100, test_composed_imagefilter_offset); | 1487 run_raster_test(reporter, 100, test_composed_imagefilter_offset); |
1524 } | 1488 } |
1525 | 1489 |
1526 #if SK_SUPPORT_GPU | 1490 #if SK_SUPPORT_GPU |
1527 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ComposedImageFilterOffset_Gpu, reporter, ctxI nfo) { | 1491 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ComposedImageFilterOffset_Gpu, reporter, ctxI nfo) { |
1528 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_composed_imagefilter_of fset); | 1492 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_composed_imagefilter_of fset); |
1529 } | 1493 } |
1530 #endif | 1494 #endif |
1531 | 1495 |
1532 static void test_composed_imagefilter_bounds(SkImageFilter::Proxy* proxy, | 1496 static void test_composed_imagefilter_bounds(skiatest::Reporter* reporter, GrCon text* context) { |
1533 skiatest::Reporter* reporter, | |
1534 GrContext* context) { | |
1535 // The bounds passed to the inner filter must be filtered by the outer | 1497 // The bounds passed to the inner filter must be filtered by the outer |
1536 // filter, so that the inner filter produces the pixels that the outer | 1498 // filter, so that the inner filter produces the pixels that the outer |
1537 // filter requires as input. This matters if the outer filter moves pixels. | 1499 // filter requires as input. This matters if the outer filter moves pixels. |
1538 // Here, accounting for the outer offset is necessary so that the green | 1500 // Here, accounting for the outer offset is necessary so that the green |
1539 // pixels of the picture are not clipped. | 1501 // pixels of the picture are not clipped. |
1540 | 1502 |
1541 SkPictureRecorder recorder; | 1503 SkPictureRecorder recorder; |
1542 SkCanvas* recordingCanvas = recorder.beginRecording(SkRect::MakeWH(200, 100) ); | 1504 SkCanvas* recordingCanvas = recorder.beginRecording(SkRect::MakeWH(200, 100) ); |
1543 recordingCanvas->clipRect(SkRect::MakeXYWH(100, 0, 100, 100)); | 1505 recordingCanvas->clipRect(SkRect::MakeXYWH(100, 0, 100, 100)); |
1544 recordingCanvas->clear(SK_ColorGREEN); | 1506 recordingCanvas->clear(SK_ColorGREEN); |
1545 sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture()); | 1507 sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture()); |
1546 sk_sp<SkImageFilter> pictureFilter(SkPictureImageFilter::Make(picture)); | 1508 sk_sp<SkImageFilter> pictureFilter(SkPictureImageFilter::Make(picture)); |
1547 SkImageFilter::CropRect cropRect(SkRect::MakeWH(100, 100)); | 1509 SkImageFilter::CropRect cropRect(SkRect::MakeWH(100, 100)); |
1548 sk_sp<SkImageFilter> offsetFilter(SkOffsetImageFilter::Make(-100, 0, nullptr , &cropRect)); | 1510 sk_sp<SkImageFilter> offsetFilter(SkOffsetImageFilter::Make(-100, 0, nullptr , &cropRect)); |
1549 sk_sp<SkImageFilter> composedFilter(SkComposeImageFilter::Make(std::move(off setFilter), | 1511 sk_sp<SkImageFilter> composedFilter(SkComposeImageFilter::Make(std::move(off setFilter), |
1550 std::move(pic tureFilter))); | 1512 std::move(pic tureFilter))); |
1551 | 1513 |
1552 sk_sp<SkSpecialImage> sourceImage(create_empty_special_image(context, proxy, 100)); | 1514 sk_sp<SkSpecialImage> sourceImage(create_empty_special_image(context, 100)); |
1553 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr ); | 1515 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr ); |
1554 SkIPoint offset; | 1516 SkIPoint offset; |
1555 sk_sp<SkSpecialImage> result(composedFilter->filterImage(sourceImage.get(), ctx, &offset)); | 1517 sk_sp<SkSpecialImage> result(composedFilter->filterImage(sourceImage.get(), ctx, &offset)); |
1556 REPORTER_ASSERT(reporter, offset.isZero()); | 1518 REPORTER_ASSERT(reporter, offset.isZero()); |
1557 REPORTER_ASSERT(reporter, result); | 1519 REPORTER_ASSERT(reporter, result); |
1558 REPORTER_ASSERT(reporter, result->subset().size() == SkISize::Make(100, 100) ); | 1520 REPORTER_ASSERT(reporter, result->subset().size() == SkISize::Make(100, 100) ); |
1559 | 1521 |
1560 SkBitmap resultBM; | 1522 SkBitmap resultBM; |
1561 REPORTER_ASSERT(reporter, result->getROPixels(&resultBM)); | 1523 REPORTER_ASSERT(reporter, result->getROPixels(&resultBM)); |
1562 SkAutoLockPixels lock(resultBM); | 1524 SkAutoLockPixels lock(resultBM); |
1563 REPORTER_ASSERT(reporter, resultBM.getColor(50, 50) == SK_ColorGREEN); | 1525 REPORTER_ASSERT(reporter, resultBM.getColor(50, 50) == SK_ColorGREEN); |
1564 } | 1526 } |
1565 | 1527 |
1566 DEF_TEST(ComposedImageFilterBounds, reporter) { | 1528 DEF_TEST(ComposedImageFilterBounds, reporter) { |
1567 run_raster_test(reporter, 100, test_composed_imagefilter_bounds); | 1529 run_raster_test(reporter, 100, test_composed_imagefilter_bounds); |
1568 } | 1530 } |
1569 | 1531 |
1570 #if SK_SUPPORT_GPU | 1532 #if SK_SUPPORT_GPU |
1571 DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(ComposedImageFilterBounds_Gpu, reporter, c txInfo) { | 1533 DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(ComposedImageFilterBounds_Gpu, reporter, c txInfo) { |
1572 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_composed_imagefilter_bo unds); | 1534 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_composed_imagefilter_bo unds); |
1573 } | 1535 } |
1574 #endif | 1536 #endif |
1575 | 1537 |
1576 static void test_partial_crop_rect(SkImageFilter::Proxy* proxy, | 1538 static void test_partial_crop_rect(skiatest::Reporter* reporter, GrContext* cont ext) { |
1577 skiatest::Reporter* reporter, | 1539 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 100)); |
1578 GrContext* context) { | |
1579 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 100) ); | |
1580 | 1540 |
1581 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(100, 0, 20, 30), | 1541 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(100, 0, 20, 30), |
1582 SkImageFilter::CropRect::kHasWidth_CropEdge | SkImageFilter::CropRect::k HasHeight_CropEdge); | 1542 SkImageFilter::CropRect::kHasWidth_CropEdge | SkImageFilter::CropRect::k HasHeight_CropEdge); |
1583 sk_sp<SkImageFilter> filter(make_grayscale(nullptr, &cropRect)); | 1543 sk_sp<SkImageFilter> filter(make_grayscale(nullptr, &cropRect)); |
1584 SkIPoint offset; | 1544 SkIPoint offset; |
1585 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr ); | 1545 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr ); |
1586 | 1546 |
1587 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, &offs et)); | 1547 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, &offs et)); |
1588 REPORTER_ASSERT(reporter, resultImg); | 1548 REPORTER_ASSERT(reporter, resultImg); |
1589 | 1549 |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1733 } | 1693 } |
1734 | 1694 |
1735 DEF_TEST(ImageFilterBlurLargeImage, reporter) { | 1695 DEF_TEST(ImageFilterBlurLargeImage, reporter) { |
1736 auto surface(SkSurface::MakeRaster(SkImageInfo::MakeN32Premul(100, 100))); | 1696 auto surface(SkSurface::MakeRaster(SkImageInfo::MakeN32Premul(100, 100))); |
1737 test_large_blur_input(reporter, surface->getCanvas()); | 1697 test_large_blur_input(reporter, surface->getCanvas()); |
1738 } | 1698 } |
1739 | 1699 |
1740 #if SK_SUPPORT_GPU | 1700 #if SK_SUPPORT_GPU |
1741 | 1701 |
1742 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterHugeBlur_Gpu, reporter, ctxInfo) { | 1702 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterHugeBlur_Gpu, reporter, ctxInfo) { |
1743 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); | |
1744 | 1703 |
1745 sk_sp<SkGpuDevice> device(SkGpuDevice::Create(ctxInfo.fGrContext, | 1704 sk_sp<SkSurface> surf(SkSurface::MakeRenderTarget(ctxInfo.fGrContext, |
1746 SkBudgeted::kNo, | 1705 SkBudgeted::kNo, |
1747 SkImageInfo::MakeN32Premul(100 , 100), | 1706 SkImageInfo::MakeN32Premul (100, 100))); |
1748 0, | |
1749 &props, | |
1750 SkGpuDevice::kUninit_InitConte nts)); | |
1751 SkCanvas canvas(device.get()); | |
1752 | 1707 |
1753 test_huge_blur(&canvas, reporter); | 1708 |
1709 SkCanvas* canvas = surf->getCanvas(); | |
1710 | |
1711 test_huge_blur(canvas, reporter); | |
1754 } | 1712 } |
1755 | 1713 |
1756 DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(XfermodeImageFilterCroppedInput_Gpu, repor ter, ctxInfo) { | 1714 DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(XfermodeImageFilterCroppedInput_Gpu, repor ter, ctxInfo) { |
1757 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); | |
1758 | 1715 |
1759 sk_sp<SkGpuDevice> device(SkGpuDevice::Create(ctxInfo.fGrContext, | 1716 sk_sp<SkSurface> surf(SkSurface::MakeRenderTarget(ctxInfo.fGrContext, |
1760 SkBudgeted::kNo, | 1717 SkBudgeted::kNo, |
1761 SkImageInfo::MakeN32Premul(1, 1), | 1718 SkImageInfo::MakeN32Premul (1, 1))); |
1762 0, | |
1763 &props, | |
1764 SkGpuDevice::kUninit_InitConte nts)); | |
1765 SkCanvas canvas(device.get()); | |
1766 | 1719 |
1767 test_xfermode_cropped_input(&canvas, reporter); | 1720 |
1721 SkCanvas* canvas = surf->getCanvas(); | |
1722 | |
1723 test_xfermode_cropped_input(canvas, reporter); | |
1768 } | 1724 } |
1769 | 1725 |
1770 DEF_GPUTEST_FOR_ALL_GL_CONTEXTS(ImageFilterBlurLargeImage_Gpu, reporter, ctxInfo ) { | 1726 DEF_GPUTEST_FOR_ALL_GL_CONTEXTS(ImageFilterBlurLargeImage_Gpu, reporter, ctxInfo ) { |
1771 auto surface(SkSurface::MakeRenderTarget(ctxInfo.fGrContext, SkBudgeted::kYe s, | 1727 auto surface(SkSurface::MakeRenderTarget(ctxInfo.fGrContext, SkBudgeted::kYe s, |
1772 SkImageInfo::MakeN32Premul(100, 100 ))); | 1728 SkImageInfo::MakeN32Premul(100, 100 ))); |
1773 test_large_blur_input(reporter, surface->getCanvas()); | 1729 test_large_blur_input(reporter, surface->getCanvas()); |
1774 } | 1730 } |
1775 #endif | 1731 #endif |
OLD | NEW |