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

Side by Side Diff: tests/ImageFilterTest.cpp

Issue 1896383003: Begin removing deprecated (and now, unused) ImageFilter code paths (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: update Created 4 years, 8 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 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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698