| 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" | 9 #include "SkBitmapDevice.h" |
| 10 #include "SkBlurImageFilter.h" | 10 #include "SkBlurImageFilter.h" |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 SkBitmap make_gradient_circle(int width, int height) { | 136 SkBitmap make_gradient_circle(int width, int height) { |
| 137 SkBitmap bitmap; | 137 SkBitmap bitmap; |
| 138 bitmap.allocN32Pixels(width, height); | 138 bitmap.allocN32Pixels(width, height); |
| 139 SkCanvas canvas(bitmap); | 139 SkCanvas canvas(bitmap); |
| 140 draw_gradient_circle(&canvas, width, height); | 140 draw_gradient_circle(&canvas, width, height); |
| 141 return bitmap; | 141 return bitmap; |
| 142 } | 142 } |
| 143 | 143 |
| 144 class FilterList { | 144 class FilterList { |
| 145 public: | 145 public: |
| 146 FilterList(SkImageFilter* input = nullptr, const SkImageFilter::CropRect* cr
opRect = nullptr) { | 146 FilterList(sk_sp<SkImageFilter> input, const SkImageFilter::CropRect* cropRe
ct = nullptr) { |
| 147 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); | 147 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); |
| 148 SkScalar kernel[9] = { | 148 SkScalar kernel[9] = { |
| 149 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), | 149 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), |
| 150 SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1), | 150 SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1), |
| 151 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), | 151 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), |
| 152 }; | 152 }; |
| 153 const SkISize kernelSize = SkISize::Make(3, 3); | 153 const SkISize kernelSize = SkISize::Make(3, 3); |
| 154 const SkScalar gain = SK_Scalar1, bias = 0; | 154 const SkScalar gain = SK_Scalar1, bias = 0; |
| 155 const SkScalar five = SkIntToScalar(5); | 155 const SkScalar five = SkIntToScalar(5); |
| 156 | 156 |
| 157 SkMatrix matrix; | 157 SkMatrix matrix; |
| 158 | 158 |
| 159 matrix.setTranslate(SK_Scalar1, SK_Scalar1); | 159 matrix.setTranslate(SK_Scalar1, SK_Scalar1); |
| 160 matrix.postRotate(SkIntToScalar(45), SK_Scalar1, SK_Scalar1); | 160 matrix.postRotate(SkIntToScalar(45), SK_Scalar1, SK_Scalar1); |
| 161 | 161 |
| 162 { | 162 { |
| 163 sk_sp<SkColorFilter> cf(SkColorFilter::MakeModeFilter(SK_ColorRED, | 163 sk_sp<SkColorFilter> cf(SkColorFilter::MakeModeFilter(SK_ColorRED, |
| 164 SkXfermode::kS
rcIn_Mode)); | 164 SkXfermode::kS
rcIn_Mode)); |
| 165 | 165 |
| 166 this->addFilter("color filter", | 166 this->addFilter("color filter", |
| 167 SkColorFilterImageFilter::Create(cf.get(), input, cropRect)); | 167 SkColorFilterImageFilter::Create(cf.get(), input.get(), cropRect
)); |
| 168 } | 168 } |
| 169 | 169 |
| 170 { | 170 { |
| 171 sk_sp<SkImage> gradientImage(SkImage::MakeFromBitmap(make_gradient_c
ircle(64, 64))); | 171 sk_sp<SkImage> gradientImage(SkImage::MakeFromBitmap(make_gradient_c
ircle(64, 64))); |
| 172 sk_sp<SkImageFilter> gradientSource(SkImageSource::Make(std::move(gr
adientImage))); | 172 sk_sp<SkImageFilter> gradientSource(SkImageSource::Make(std::move(gr
adientImage))); |
| 173 | 173 |
| 174 this->addFilter("displacement map", SkDisplacementMapEffect::Create( | 174 this->addFilter("displacement map", SkDisplacementMapEffect::Create( |
| 175 SkDisplacementMapEffect::kR_ChannelSelectorType, | 175 SkDisplacementMapEffect::kR_ChannelSelectorType, |
| 176 SkDisplacementMapEffect::kB_ChannelSelectorType, | 176 SkDisplacementMapEffect::kB_ChannelSelectorType, |
| 177 20.0f, gradientSource.get(), input, cropRect)); | 177 20.0f, gradientSource.get(), input.get(), cropRect)); |
| 178 } | 178 } |
| 179 | 179 |
| 180 this->addFilter("blur", SkBlurImageFilter::Make(SK_Scalar1, | 180 this->addFilter("blur", SkBlurImageFilter::Make(SK_Scalar1, |
| 181 SK_Scalar1, | 181 SK_Scalar1, |
| 182 sk_ref_sp<SkImageFilter>
(input), | 182 input, |
| 183 cropRect).release()); | 183 cropRect).release()); |
| 184 this->addFilter("drop shadow", SkDropShadowImageFilter::Create( | 184 this->addFilter("drop shadow", SkDropShadowImageFilter::Create( |
| 185 SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_ColorGREEN, | 185 SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_ColorGREEN, |
| 186 SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode,
input, cropRect)); | 186 SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, |
| 187 input.get(), cropRect)); |
| 187 this->addFilter("diffuse lighting", SkLightingImageFilter::CreatePointLi
tDiffuse( | 188 this->addFilter("diffuse lighting", SkLightingImageFilter::CreatePointLi
tDiffuse( |
| 188 location, SK_ColorGREEN, 0, 0, input, cropRect)); | 189 location, SK_ColorGREEN, 0, 0, input.get(), cropRect)); |
| 189 this->addFilter("specular lighting", | 190 this->addFilter("specular lighting", |
| 190 SkLightingImageFilter::CreatePointLitSpecular(location, SK_Col
orGREEN, 0, 0, 0, | 191 SkLightingImageFilter::CreatePointLitSpecular(location, SK_Col
orGREEN, 0, 0, 0, |
| 191 input, cropRect)
); | 192 input.get(), cro
pRect)); |
| 192 this->addFilter("matrix convolution", | 193 this->addFilter("matrix convolution", |
| 193 SkMatrixConvolutionImageFilter::Create( | 194 SkMatrixConvolutionImageFilter::Create( |
| 194 kernelSize, kernel, gain, bias, SkIPoint::Make(1, 1), | 195 kernelSize, kernel, gain, bias, SkIPoint::Make(1, 1), |
| 195 SkMatrixConvolutionImageFilter::kRepeat_TileMode, false, i
nput, cropRect)); | 196 SkMatrixConvolutionImageFilter::kRepeat_TileMode, false, |
| 196 this->addFilter("merge", SkMergeImageFilter::Make(sk_ref_sp<SkImageFilte
r>(input), | 197 input.get(), cropRect)); |
| 197 sk_ref_sp<SkImageFilte
r>(input), | 198 this->addFilter("merge", SkMergeImageFilter::Make(input, input, |
| 198 SkXfermode::kSrcOver_M
ode, | 199 SkXfermode::kSrcOver_M
ode, |
| 199 cropRect).release()); | 200 cropRect).release()); |
| 200 { | 201 { |
| 201 SkPaint greenColorShaderPaint; | 202 SkPaint greenColorShaderPaint; |
| 202 greenColorShaderPaint.setShader(SkShader::MakeColorShader(SK_ColorGR
EEN)); | 203 greenColorShaderPaint.setShader(SkShader::MakeColorShader(SK_ColorGR
EEN)); |
| 203 | 204 |
| 204 SkImageFilter::CropRect leftSideCropRect(SkRect::MakeXYWH(0, 0, 32,
64)); | 205 SkImageFilter::CropRect leftSideCropRect(SkRect::MakeXYWH(0, 0, 32,
64)); |
| 205 sk_sp<SkImageFilter> paintFilterLeft(SkPaintImageFilter::Make(greenC
olorShaderPaint, | 206 sk_sp<SkImageFilter> paintFilterLeft(SkPaintImageFilter::Make(greenC
olorShaderPaint, |
| 206 &leftS
ideCropRect)); | 207 &leftS
ideCropRect)); |
| 207 SkImageFilter::CropRect rightSideCropRect(SkRect::MakeXYWH(32, 0, 32
, 64)); | 208 SkImageFilter::CropRect rightSideCropRect(SkRect::MakeXYWH(32, 0, 32
, 64)); |
| 208 sk_sp<SkImageFilter> paintFilterRight(SkPaintImageFilter::Make(green
ColorShaderPaint, | 209 sk_sp<SkImageFilter> paintFilterRight(SkPaintImageFilter::Make(green
ColorShaderPaint, |
| 209 &righ
tSideCropRect)); | 210 &righ
tSideCropRect)); |
| 210 | 211 |
| 211 | 212 |
| 212 this->addFilter("merge with disjoint inputs", SkMergeImageFilter::Ma
ke( | 213 this->addFilter("merge with disjoint inputs", SkMergeImageFilter::Ma
ke( |
| 213 std::move(paintFilterLeft), std::move(paintFilterRight), | 214 std::move(paintFilterLeft), std::move(paintFilterRight), |
| 214 SkXfermode::kSrcOver_Mode, cropRect).release()); | 215 SkXfermode::kSrcOver_Mode, cropRect).release()); |
| 215 } | 216 } |
| 216 | 217 |
| 217 this->addFilter("offset", | 218 this->addFilter("offset", |
| 218 SkOffsetImageFilter::Make(SK_Scalar1, SK_Scalar1, | 219 SkOffsetImageFilter::Make(SK_Scalar1, SK_Scalar1, input, |
| 219 sk_ref_sp<SkImageFilter>(input
), | |
| 220 cropRect).release()); | 220 cropRect).release()); |
| 221 this->addFilter("dilate", SkDilateImageFilter::Create(3, 2, input, cropR
ect)); | 221 this->addFilter("dilate", SkDilateImageFilter::Make(3, 2, input, cropRec
t).release()); |
| 222 this->addFilter("erode", SkErodeImageFilter::Create(2, 3, input, cropRec
t)); | 222 this->addFilter("erode", SkErodeImageFilter::Make(2, 3, input, cropRect)
.release()); |
| 223 this->addFilter("tile", SkTileImageFilter::Create( | 223 this->addFilter("tile", SkTileImageFilter::Create( |
| 224 SkRect::MakeXYWH(0, 0, 50, 50), | 224 SkRect::MakeXYWH(0, 0, 50, 50), |
| 225 cropRect ? cropRect->rect() : SkRect::MakeXYWH(0, 0, 100, 100), | 225 cropRect ? cropRect->rect() : SkRect::MakeXYWH(0, 0, 100, 100), |
| 226 input)); | 226 input.get())); |
| 227 if (!cropRect) { | 227 if (!cropRect) { |
| 228 this->addFilter("matrix", SkImageFilter::CreateMatrixFilter( | 228 this->addFilter("matrix", SkImageFilter::CreateMatrixFilter( |
| 229 matrix, kLow_SkFilterQuality, input)); | 229 matrix, kLow_SkFilterQuality, input.get())); |
| 230 } | 230 } |
| 231 | 231 |
| 232 { | 232 { |
| 233 sk_sp<SkImageFilter> blur(SkBlurImageFilter::Make(five, five, | 233 sk_sp<SkImageFilter> blur(SkBlurImageFilter::Make(five, five, input)
); |
| 234 sk_ref_sp<SkImageF
ilter>(input))); | |
| 235 | 234 |
| 236 this->addFilter("blur and offset", SkOffsetImageFilter::Make(five, f
ive, | 235 this->addFilter("blur and offset", SkOffsetImageFilter::Make(five, f
ive, |
| 237 std::mo
ve(blur), | 236 std::mo
ve(blur), |
| 238 cropRec
t).release()); | 237 cropRec
t).release()); |
| 239 } | 238 } |
| 240 { | 239 { |
| 241 SkRTreeFactory factory; | 240 SkRTreeFactory factory; |
| 242 SkPictureRecorder recorder; | 241 SkPictureRecorder recorder; |
| 243 SkCanvas* recordingCanvas = recorder.beginRecording(64, 64, &factory
, 0); | 242 SkCanvas* recordingCanvas = recorder.beginRecording(64, 64, &factory
, 0); |
| 244 | 243 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 255 { | 254 { |
| 256 SkPaint paint; | 255 SkPaint paint; |
| 257 paint.setShader(SkPerlinNoiseShader::MakeTurbulence(SK_Scalar1, SK_S
calar1, 1, 0)); | 256 paint.setShader(SkPerlinNoiseShader::MakeTurbulence(SK_Scalar1, SK_S
calar1, 1, 0)); |
| 258 sk_sp<SkImageFilter> paintFilter(SkPaintImageFilter::Make(paint)); | 257 sk_sp<SkImageFilter> paintFilter(SkPaintImageFilter::Make(paint)); |
| 259 | 258 |
| 260 this->addFilter("paint and blur", SkBlurImageFilter::Make(five, five
, | 259 this->addFilter("paint and blur", SkBlurImageFilter::Make(five, five
, |
| 261 std::move(
paintFilter), | 260 std::move(
paintFilter), |
| 262 cropRect).
release()); | 261 cropRect).
release()); |
| 263 } | 262 } |
| 264 this->addFilter("xfermode", SkXfermodeImageFilter::Make( | 263 this->addFilter("xfermode", SkXfermodeImageFilter::Make( |
| 265 SkXfermode::Make(SkXfermode::kSrc_Mode), input, input, cropRect).rel
ease()); | 264 SkXfermode::Make(SkXfermode::kSrc_Mode), input.get(), input.get(), |
| 265 cropRect).release()); |
| 266 } | 266 } |
| 267 int count() const { return fFilters.count(); } | 267 int count() const { return fFilters.count(); } |
| 268 SkImageFilter* getFilter(int index) const { return fFilters[index].fFilter.g
et(); } | 268 SkImageFilter* getFilter(int index) const { return fFilters[index].fFilter.g
et(); } |
| 269 const char* getName(int index) const { return fFilters[index].fName; } | 269 const char* getName(int index) const { return fFilters[index].fName; } |
| 270 private: | 270 private: |
| 271 struct Filter { | 271 struct Filter { |
| 272 Filter() : fName(nullptr), fFilter(nullptr) {} | 272 Filter() : fName(nullptr), fFilter(nullptr) {} |
| 273 Filter(const char* name, SkImageFilter* filter) : fName(name), fFilter(f
ilter) {} | 273 Filter(const char* name, SkImageFilter* filter) : fName(name), fFilter(f
ilter) {} |
| 274 const char* fName; | 274 const char* fName; |
| 275 sk_sp<SkImageFilter> fFilter; | 275 sk_sp<SkImageFilter> fFilter; |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 512 skiatest::Reporter* reporter, | 512 skiatest::Reporter* reporter, |
| 513 GrContext* context) { | 513 GrContext* context) { |
| 514 // Check that all filters offset to their absolute crop rect, | 514 // Check that all filters offset to their absolute crop rect, |
| 515 // unaffected by the input crop rect. | 515 // unaffected by the input crop rect. |
| 516 // Tests pass by not asserting. | 516 // Tests pass by not asserting. |
| 517 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 100)
); | 517 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 100)
); |
| 518 SkASSERT(srcImg); | 518 SkASSERT(srcImg); |
| 519 | 519 |
| 520 SkImageFilter::CropRect inputCropRect(SkRect::MakeXYWH(8, 13, 80, 80)); | 520 SkImageFilter::CropRect inputCropRect(SkRect::MakeXYWH(8, 13, 80, 80)); |
| 521 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(20, 30, 60, 60)); | 521 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(20, 30, 60, 60)); |
| 522 SkAutoTUnref<SkImageFilter> input(make_grayscale(nullptr, &inputCropRect)); | 522 sk_sp<SkImageFilter> input(make_grayscale(nullptr, &inputCropRect)); |
| 523 | 523 |
| 524 FilterList filters(input.get(), &cropRect); | 524 FilterList filters(input, &cropRect); |
| 525 | 525 |
| 526 for (int i = 0; i < filters.count(); ++i) { | 526 for (int i = 0; i < filters.count(); ++i) { |
| 527 SkImageFilter* filter = filters.getFilter(i); | 527 SkImageFilter* filter = filters.getFilter(i); |
| 528 SkIPoint offset; | 528 SkIPoint offset; |
| 529 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nul
lptr); | 529 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nul
lptr); |
| 530 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, &
offset)); | 530 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, &
offset)); |
| 531 REPORTER_ASSERT_MESSAGE(reporter, resultImg, filters.getName(i)); | 531 REPORTER_ASSERT_MESSAGE(reporter, resultImg, filters.getName(i)); |
| 532 REPORTER_ASSERT_MESSAGE(reporter, offset.fX == 20 && offset.fY == 30, fi
lters.getName(i)); | 532 REPORTER_ASSERT_MESSAGE(reporter, offset.fX == 20 && offset.fY == 30, fi
lters.getName(i)); |
| 533 } | 533 } |
| 534 } | 534 } |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 735 DEF_GPUTEST_FOR_NATIVE_CONTEXT(ImageFilterFailAffectsTransparentBlack_Gpu, repor
ter, context) { | 735 DEF_GPUTEST_FOR_NATIVE_CONTEXT(ImageFilterFailAffectsTransparentBlack_Gpu, repor
ter, context) { |
| 736 run_gpu_test(reporter, context, 100, test_fail_affects_transparent_black); | 736 run_gpu_test(reporter, context, 100, test_fail_affects_transparent_black); |
| 737 } | 737 } |
| 738 #endif | 738 #endif |
| 739 | 739 |
| 740 DEF_TEST(ImageFilterDrawTiled, reporter) { | 740 DEF_TEST(ImageFilterDrawTiled, reporter) { |
| 741 // Check that all filters when drawn tiled (with subsequent clip rects) exac
tly | 741 // Check that all filters when drawn tiled (with subsequent clip rects) exac
tly |
| 742 // match the same filters drawn with a single full-canvas bitmap draw. | 742 // match the same filters drawn with a single full-canvas bitmap draw. |
| 743 // Tests pass by not asserting. | 743 // Tests pass by not asserting. |
| 744 | 744 |
| 745 FilterList filters; | 745 FilterList filters(nullptr); |
| 746 | 746 |
| 747 SkBitmap untiledResult, tiledResult; | 747 SkBitmap untiledResult, tiledResult; |
| 748 const int width = 64, height = 64; | 748 const int width = 64, height = 64; |
| 749 untiledResult.allocN32Pixels(width, height); | 749 untiledResult.allocN32Pixels(width, height); |
| 750 tiledResult.allocN32Pixels(width, height); | 750 tiledResult.allocN32Pixels(width, height); |
| 751 SkCanvas tiledCanvas(tiledResult); | 751 SkCanvas tiledCanvas(tiledResult); |
| 752 SkCanvas untiledCanvas(untiledResult); | 752 SkCanvas untiledCanvas(untiledResult); |
| 753 int tileSize = 8; | 753 int tileSize = 8; |
| 754 | 754 |
| 755 for (int scale = 1; scale <= 2; ++scale) { | 755 for (int scale = 1; scale <= 2; ++scale) { |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 868 sk_sp<SkImageFilter> filter2(make_blur(std::move(filter1))); | 868 sk_sp<SkImageFilter> filter2(make_blur(std::move(filter1))); |
| 869 | 869 |
| 870 SkIRect bounds = SkIRect::MakeXYWH(0, 0, 100, 100); | 870 SkIRect bounds = SkIRect::MakeXYWH(0, 0, 100, 100); |
| 871 SkIRect expectedBounds = SkIRect::MakeXYWH(-133, -133, 236, 236); | 871 SkIRect expectedBounds = SkIRect::MakeXYWH(-133, -133, 236, 236); |
| 872 bounds = filter2->filterBounds(bounds, SkMatrix::I()); | 872 bounds = filter2->filterBounds(bounds, SkMatrix::I()); |
| 873 | 873 |
| 874 REPORTER_ASSERT(reporter, bounds == expectedBounds); | 874 REPORTER_ASSERT(reporter, bounds == expectedBounds); |
| 875 } | 875 } |
| 876 | 876 |
| 877 DEF_TEST(ImageFilterDilateThenBlurBounds, reporter) { | 877 DEF_TEST(ImageFilterDilateThenBlurBounds, reporter) { |
| 878 sk_sp<SkImageFilter> filter1(SkDilateImageFilter::Create(2, 2)); | 878 sk_sp<SkImageFilter> filter1(SkDilateImageFilter::Make(2, 2, nullptr)); |
| 879 sk_sp<SkImageFilter> filter2(make_drop_shadow(std::move(filter1))); | 879 sk_sp<SkImageFilter> filter2(make_drop_shadow(std::move(filter1))); |
| 880 | 880 |
| 881 SkIRect bounds = SkIRect::MakeXYWH(0, 0, 100, 100); | 881 SkIRect bounds = SkIRect::MakeXYWH(0, 0, 100, 100); |
| 882 SkIRect expectedBounds = SkIRect::MakeXYWH(-132, -132, 234, 234); | 882 SkIRect expectedBounds = SkIRect::MakeXYWH(-132, -132, 234, 234); |
| 883 bounds = filter2->filterBounds(bounds, SkMatrix::I()); | 883 bounds = filter2->filterBounds(bounds, SkMatrix::I()); |
| 884 | 884 |
| 885 REPORTER_ASSERT(reporter, bounds == expectedBounds); | 885 REPORTER_ASSERT(reporter, bounds == expectedBounds); |
| 886 } | 886 } |
| 887 | 887 |
| 888 DEF_TEST(ImageFilterComposedBlurFastBounds, reporter) { | 888 DEF_TEST(ImageFilterComposedBlurFastBounds, reporter) { |
| (...skipping 804 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1693 | 1693 |
| 1694 test_xfermode_cropped_input(&canvas, reporter); | 1694 test_xfermode_cropped_input(&canvas, reporter); |
| 1695 } | 1695 } |
| 1696 | 1696 |
| 1697 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { | 1697 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { |
| 1698 auto surface(SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, | 1698 auto surface(SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, |
| 1699 SkImageInfo::MakeN32Premul(100, 100
))); | 1699 SkImageInfo::MakeN32Premul(100, 100
))); |
| 1700 test_large_blur_input(reporter, surface->getCanvas()); | 1700 test_large_blur_input(reporter, surface->getCanvas()); |
| 1701 } | 1701 } |
| 1702 #endif | 1702 #endif |
| OLD | NEW |