Chromium Code Reviews| 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 1075 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1086 SkPaint filterPaint; | 1086 SkPaint filterPaint; |
| 1087 filterPaint.setImageFilter(std::move(filter)); | 1087 filterPaint.setImageFilter(std::move(filter)); |
| 1088 SkRect bounds = SkRect::MakeWH(1, 10); | 1088 SkRect bounds = SkRect::MakeWH(1, 10); |
| 1089 SkRect rect = SkRect::Make(SkIRect::MakeWH(width, height)); | 1089 SkRect rect = SkRect::Make(SkIRect::MakeWH(width, height)); |
| 1090 SkPaint rectPaint; | 1090 SkPaint rectPaint; |
| 1091 canvas.saveLayer(&bounds, &filterPaint); | 1091 canvas.saveLayer(&bounds, &filterPaint); |
| 1092 canvas.drawRect(rect, rectPaint); | 1092 canvas.drawRect(rect, rectPaint); |
| 1093 canvas.restore(); | 1093 canvas.restore(); |
| 1094 } | 1094 } |
| 1095 | 1095 |
| 1096 static void test_big_kernel(SkImageFilter::Proxy* proxy, | |
| 1097 skiatest::Reporter* reporter, | |
| 1098 GrContext* context) { | |
| 1099 // Check that a kernel that is too big for the GPU still works | |
|
Stephen White
2016/04/12 19:06:28
Thanks for the new test! This is an important case
robertphillips
2016/04/12 19:31:41
This test actually checks that, even though the bi
| |
| 1100 SkScalar identityKernel[49] = { | |
| 1101 0, 0, 0, 0, 0, 0, 0, | |
| 1102 0, 0, 0, 0, 0, 0, 0, | |
| 1103 0, 0, 0, 0, 0, 0, 0, | |
| 1104 0, 0, 0, 1, 0, 0, 0, | |
| 1105 0, 0, 0, 0, 0, 0, 0, | |
| 1106 0, 0, 0, 0, 0, 0, 0, | |
| 1107 0, 0, 0, 0, 0, 0, 0 | |
| 1108 }; | |
| 1109 SkISize kernelSize = SkISize::Make(7, 7); | |
| 1110 SkScalar gain = SK_Scalar1, bias = 0; | |
| 1111 SkIPoint kernelOffset = SkIPoint::Make(0, 0); | |
| 1112 | |
| 1113 sk_sp<SkImageFilter> filter(SkMatrixConvolutionImageFilter::Make( | |
| 1114 kernelSize, identityKernel, gain, bias, kernelOffset, | |
| 1115 SkMatrixConvolutionImageFilter::kClamp_T ileMode, | |
| 1116 true, nullptr)); | |
| 1117 | |
| 1118 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 100) ); | |
| 1119 SkASSERT(srcImg); | |
| 1120 | |
| 1121 SkIPoint offset; | |
| 1122 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr ); | |
| 1123 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, &offs et)); | |
| 1124 REPORTER_ASSERT(reporter, resultImg); | |
| 1125 REPORTER_ASSERT(reporter, SkToBool(context) == resultImg->isTextureBacked()) ; | |
| 1126 REPORTER_ASSERT(reporter, resultImg->width() == 100 && resultImg->height() = = 100); | |
| 1127 REPORTER_ASSERT(reporter, offset.fX == 0 && offset.fY == 0); | |
| 1128 } | |
| 1129 | |
| 1130 DEF_TEST(ImageFilterMatrixConvolutionBigKernel, reporter) { | |
| 1131 run_raster_test(reporter, 100, test_big_kernel); | |
| 1132 } | |
| 1133 | |
| 1134 #if SK_SUPPORT_GPU | |
| 1135 DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(ImageFilterMatrixConvolutionBigKernel_Gpu, | |
| 1136 reporter, ctxInfo) { | |
| 1137 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_big_kernel); | |
| 1138 } | |
| 1139 #endif | |
| 1140 | |
| 1096 DEF_TEST(ImageFilterCropRect, reporter) { | 1141 DEF_TEST(ImageFilterCropRect, reporter) { |
| 1097 run_raster_test(reporter, 100, test_crop_rects); | 1142 run_raster_test(reporter, 100, test_crop_rects); |
| 1098 } | 1143 } |
| 1099 | 1144 |
| 1100 #if SK_SUPPORT_GPU | 1145 #if SK_SUPPORT_GPU |
| 1101 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterCropRect_Gpu, reporter, ctxInfo) { | 1146 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterCropRect_Gpu, reporter, ctxInfo) { |
| 1102 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_crop_rects); | 1147 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_crop_rects); |
| 1103 } | 1148 } |
| 1104 #endif | 1149 #endif |
| 1105 | 1150 |
| (...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1722 | 1767 |
| 1723 test_xfermode_cropped_input(&canvas, reporter); | 1768 test_xfermode_cropped_input(&canvas, reporter); |
| 1724 } | 1769 } |
| 1725 | 1770 |
| 1726 DEF_GPUTEST_FOR_ALL_GL_CONTEXTS(ImageFilterBlurLargeImage_Gpu, reporter, ctxInfo ) { | 1771 DEF_GPUTEST_FOR_ALL_GL_CONTEXTS(ImageFilterBlurLargeImage_Gpu, reporter, ctxInfo ) { |
| 1727 auto surface(SkSurface::MakeRenderTarget(ctxInfo.fGrContext, SkBudgeted::kYe s, | 1772 auto surface(SkSurface::MakeRenderTarget(ctxInfo.fGrContext, SkBudgeted::kYe s, |
| 1728 SkImageInfo::MakeN32Premul(100, 100 ))); | 1773 SkImageInfo::MakeN32Premul(100, 100 ))); |
| 1729 test_large_blur_input(reporter, surface->getCanvas()); | 1774 test_large_blur_input(reporter, surface->getCanvas()); |
| 1730 } | 1775 } |
| 1731 #endif | 1776 #endif |
| OLD | NEW |