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

Side by Side Diff: tests/SpecialImageTest.cpp

Issue 1896383003: Begin removing deprecated (and now, unused) ImageFilter code paths (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix comment 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
« no previous file with comments | « tests/ImageFilterTest.cpp ('k') | tests/SpecialSurfaceTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 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 "SkAutoPixmapStorage.h" 8 #include "SkAutoPixmapStorage.h"
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkCanvas.h" 10 #include "SkCanvas.h"
11 #include "SkImage.h" 11 #include "SkImage.h"
12 #include "SkPixmap.h" 12 #include "SkPixmap.h"
13 #include "SkSpecialImage.h" 13 #include "SkSpecialImage.h"
14 #include "SkSpecialSurface.h" 14 #include "SkSpecialSurface.h"
15 #include "SkSurface.h" 15 #include "SkSurface.h"
16 #include "Test.h" 16 #include "Test.h"
17 #include "TestingSpecialImageAccess.h"
18 17
19 #if SK_SUPPORT_GPU 18 #if SK_SUPPORT_GPU
20 #include "GrContext.h" 19 #include "GrContext.h"
21 #endif 20 #endif
22 21
23 22
24 // This test creates backing resources exactly sized to [kFullSize x kFullSize]. 23 // This test creates backing resources exactly sized to [kFullSize x kFullSize].
25 // It then wraps them in an SkSpecialImage with only the center (red) region bei ng active. 24 // It then wraps them in an SkSpecialImage with only the center (red) region bei ng active.
26 // It then draws the SkSpecialImage to a full sized (all blue) canvas and checks that none 25 // It then draws the SkSpecialImage to a full sized (all blue) canvas and checks that none
27 // of the inactive (green) region leaked out. 26 // of the inactive (green) region leaked out.
(...skipping 18 matching lines...) Expand all
46 SkIntToScalar(kSmallerSize), SkIntToScalar(kS mallerSize)), 45 SkIntToScalar(kSmallerSize), SkIntToScalar(kS mallerSize)),
47 p); 46 p);
48 47
49 return bm; 48 return bm;
50 } 49 }
51 50
52 // Basic test of the SkSpecialImage public API (e.g., peekTexture, peekPixels & draw) 51 // Basic test of the SkSpecialImage public API (e.g., peekTexture, peekPixels & draw)
53 static void test_image(const sk_sp<SkSpecialImage>& img, skiatest::Reporter* rep orter, 52 static void test_image(const sk_sp<SkSpecialImage>& img, skiatest::Reporter* rep orter,
54 GrContext* context, bool peekTextureSucceeds, 53 GrContext* context, bool peekTextureSucceeds,
55 int offset, int size) { 54 int offset, int size) {
56 const SkIRect subset = TestingSpecialImageAccess::Subset(img.get()); 55 const SkIRect subset = img->subset();
57 REPORTER_ASSERT(reporter, offset == subset.left()); 56 REPORTER_ASSERT(reporter, offset == subset.left());
58 REPORTER_ASSERT(reporter, offset == subset.top()); 57 REPORTER_ASSERT(reporter, offset == subset.top());
59 REPORTER_ASSERT(reporter, kSmallerSize == subset.width()); 58 REPORTER_ASSERT(reporter, kSmallerSize == subset.width());
60 REPORTER_ASSERT(reporter, kSmallerSize == subset.height()); 59 REPORTER_ASSERT(reporter, kSmallerSize == subset.height());
61 60
62 //-------------- 61 //--------------
63 // Test that peekTexture reports the correct backing type 62 // Test that peekTexture reports the correct backing type
64 REPORTER_ASSERT(reporter, peekTextureSucceeds == img->isTextureBacked()); 63 REPORTER_ASSERT(reporter, peekTextureSucceeds == img->isTextureBacked());
65 64
66 #if SK_SUPPORT_GPU 65 #if SK_SUPPORT_GPU
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 !!tightSurf->getTextureHandle(SkSurface::kDiscardWrite_Back endHandleAccess)); 132 !!tightSurf->getTextureHandle(SkSurface::kDiscardWrite_Back endHandleAccess));
134 SkPixmap tmpPixmap; 133 SkPixmap tmpPixmap;
135 REPORTER_ASSERT(reporter, peekTextureSucceeds != !!tightSurf->peekPixels (&tmpPixmap)); 134 REPORTER_ASSERT(reporter, peekTextureSucceeds != !!tightSurf->peekPixels (&tmpPixmap));
136 } 135 }
137 } 136 }
138 137
139 DEF_TEST(SpecialImage_Raster, reporter) { 138 DEF_TEST(SpecialImage_Raster, reporter) {
140 SkBitmap bm = create_bm(); 139 SkBitmap bm = create_bm();
141 140
142 sk_sp<SkSpecialImage> fullSImage(SkSpecialImage::MakeFromRaster( 141 sk_sp<SkSpecialImage> fullSImage(SkSpecialImage::MakeFromRaster(
143 nullptr,
144 SkIRect::MakeWH(kFul lSize, kFullSize), 142 SkIRect::MakeWH(kFul lSize, kFullSize),
145 bm)); 143 bm));
146 144
147 const SkIRect& subset = SkIRect::MakeXYWH(kPad, kPad, kSmallerSize, kSmaller Size); 145 const SkIRect& subset = SkIRect::MakeXYWH(kPad, kPad, kSmallerSize, kSmaller Size);
148 146
149 { 147 {
150 sk_sp<SkSpecialImage> subSImg1(SkSpecialImage::MakeFromRaster(nullptr, s ubset, bm)); 148 sk_sp<SkSpecialImage> subSImg1(SkSpecialImage::MakeFromRaster(subset, bm ));
151 test_image(subSImg1, reporter, nullptr, false, kPad, kFullSize); 149 test_image(subSImg1, reporter, nullptr, false, kPad, kFullSize);
152 } 150 }
153 151
154 { 152 {
155 sk_sp<SkSpecialImage> subSImg2(fullSImage->makeSubset(subset)); 153 sk_sp<SkSpecialImage> subSImg2(fullSImage->makeSubset(subset));
156 test_image(subSImg2, reporter, nullptr, false, 0, kSmallerSize); 154 test_image(subSImg2, reporter, nullptr, false, 0, kSmallerSize);
157 } 155 }
158 } 156 }
159 157
160 DEF_TEST(SpecialImage_Image, reporter) { 158 DEF_TEST(SpecialImage_Image, reporter) {
161 SkBitmap bm = create_bm(); 159 SkBitmap bm = create_bm();
162 160
163 sk_sp<SkImage> fullImage(SkImage::MakeFromBitmap(bm)); 161 sk_sp<SkImage> fullImage(SkImage::MakeFromBitmap(bm));
164 162
165 sk_sp<SkSpecialImage> fullSImage(SkSpecialImage::MakeFromImage( 163 sk_sp<SkSpecialImage> fullSImage(SkSpecialImage::MakeFromImage(
166 nullptr,
167 SkIRect::MakeWH(kFul lSize, kFullSize), 164 SkIRect::MakeWH(kFul lSize, kFullSize),
168 fullImage)); 165 fullImage));
169 166
170 const SkIRect& subset = SkIRect::MakeXYWH(kPad, kPad, kSmallerSize, kSmaller Size); 167 const SkIRect& subset = SkIRect::MakeXYWH(kPad, kPad, kSmallerSize, kSmaller Size);
171 168
172 { 169 {
173 sk_sp<SkSpecialImage> subSImg1(SkSpecialImage::MakeFromImage(nullptr, su bset, 170 sk_sp<SkSpecialImage> subSImg1(SkSpecialImage::MakeFromImage(subset, ful lImage));
174 fullImage)) ;
175 test_image(subSImg1, reporter, nullptr, false, kPad, kFullSize); 171 test_image(subSImg1, reporter, nullptr, false, kPad, kFullSize);
176 } 172 }
177 173
178 { 174 {
179 sk_sp<SkSpecialImage> subSImg2(fullSImage->makeSubset(subset)); 175 sk_sp<SkSpecialImage> subSImg2(fullSImage->makeSubset(subset));
180 test_image(subSImg2, reporter, nullptr, false, 0, kSmallerSize); 176 test_image(subSImg2, reporter, nullptr, false, 0, kSmallerSize);
181 } 177 }
182 } 178 }
183 179
184 DEF_TEST(SpecialImage_Pixmap, reporter) { 180 DEF_TEST(SpecialImage_Pixmap, reporter) {
185 SkAutoPixmapStorage pixmap; 181 SkAutoPixmapStorage pixmap;
186 182
187 const SkImageInfo info = SkImageInfo::MakeN32(kFullSize, kFullSize, kOpaque_ SkAlphaType); 183 const SkImageInfo info = SkImageInfo::MakeN32(kFullSize, kFullSize, kOpaque_ SkAlphaType);
188 pixmap.alloc(info); 184 pixmap.alloc(info);
189 pixmap.erase(SK_ColorGREEN); 185 pixmap.erase(SK_ColorGREEN);
190 186
191 const SkIRect& subset = SkIRect::MakeXYWH(kPad, kPad, kSmallerSize, kSmaller Size); 187 const SkIRect& subset = SkIRect::MakeXYWH(kPad, kPad, kSmallerSize, kSmaller Size);
192 188
193 pixmap.erase(SK_ColorRED, subset); 189 pixmap.erase(SK_ColorRED, subset);
194 190
195 { 191 {
196 sk_sp<SkSpecialImage> img(SkSpecialImage::MakeFromPixmap(nullptr, subset , pixmap, 192 sk_sp<SkSpecialImage> img(SkSpecialImage::MakeFromPixmap(subset, pixmap,
197 nullptr, nullpt r)); 193 nullptr, nullpt r));
198 test_image(img, reporter, nullptr, false, kPad, kFullSize); 194 test_image(img, reporter, nullptr, false, kPad, kFullSize);
199 } 195 }
200 } 196 }
201 197
202 198
203 #if SK_SUPPORT_GPU 199 #if SK_SUPPORT_GPU
204 200
205 static void test_texture_backed(skiatest::Reporter* reporter, 201 static void test_texture_backed(skiatest::Reporter* reporter,
206 const sk_sp<SkSpecialImage>& orig, 202 const sk_sp<SkSpecialImage>& orig,
207 const sk_sp<SkSpecialImage>& gpuBacked) { 203 const sk_sp<SkSpecialImage>& gpuBacked) {
208 REPORTER_ASSERT(reporter, gpuBacked); 204 REPORTER_ASSERT(reporter, gpuBacked);
209 REPORTER_ASSERT(reporter, gpuBacked->isTextureBacked()); 205 REPORTER_ASSERT(reporter, gpuBacked->isTextureBacked());
210 REPORTER_ASSERT(reporter, gpuBacked->uniqueID() == orig->uniqueID()); 206 REPORTER_ASSERT(reporter, gpuBacked->uniqueID() == orig->uniqueID());
211 REPORTER_ASSERT(reporter, gpuBacked->subset().width() == orig->subset().widt h() && 207 REPORTER_ASSERT(reporter, gpuBacked->subset().width() == orig->subset().widt h() &&
212 gpuBacked->subset().height() == orig->subset().hei ght()); 208 gpuBacked->subset().height() == orig->subset().hei ght());
213 } 209 }
214 210
215 // Test out the SkSpecialImage::makeTextureImage entry point 211 // Test out the SkSpecialImage::makeTextureImage entry point
216 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SpecialImage_MakeTexture, reporter, ctxInfo) { 212 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SpecialImage_MakeTexture, reporter, ctxInfo) {
217 GrContext* context = ctxInfo.fGrContext; 213 GrContext* context = ctxInfo.fGrContext;
218 SkBitmap bm = create_bm(); 214 SkBitmap bm = create_bm();
219 215
220 const SkIRect& subset = SkIRect::MakeXYWH(kPad, kPad, kSmallerSize, kSmaller Size); 216 const SkIRect& subset = SkIRect::MakeXYWH(kPad, kPad, kSmallerSize, kSmaller Size);
221 217
222 { 218 {
223 // raster 219 // raster
224 sk_sp<SkSpecialImage> rasterImage(SkSpecialImage::MakeFromRaster( 220 sk_sp<SkSpecialImage> rasterImage(SkSpecialImage::MakeFromRaster(
225 nullptr,
226 SkIRect: :MakeWH(kFullSize, 221 SkIRect: :MakeWH(kFullSize,
227 kFullSize), 222 kFullSize),
228 bm)); 223 bm));
229 224
230 { 225 {
231 sk_sp<SkSpecialImage> fromRaster(rasterImage->makeTextureImage(nullp tr, context)); 226 sk_sp<SkSpecialImage> fromRaster(rasterImage->makeTextureImage(conte xt));
232 test_texture_backed(reporter, rasterImage, fromRaster); 227 test_texture_backed(reporter, rasterImage, fromRaster);
233 } 228 }
234 229
235 { 230 {
236 sk_sp<SkSpecialImage> subRasterImage(rasterImage->makeSubset(subset) ); 231 sk_sp<SkSpecialImage> subRasterImage(rasterImage->makeSubset(subset) );
237 232
238 sk_sp<SkSpecialImage> fromSubRaster(subRasterImage->makeTextureImage (nullptr, context)); 233 sk_sp<SkSpecialImage> fromSubRaster(subRasterImage->makeTextureImage (context));
239 test_texture_backed(reporter, subRasterImage, fromSubRaster); 234 test_texture_backed(reporter, subRasterImage, fromSubRaster);
240 } 235 }
241 } 236 }
242 237
243 { 238 {
244 // gpu 239 // gpu
245 GrSurfaceDesc desc; 240 GrSurfaceDesc desc;
246 desc.fConfig = kSkia8888_GrPixelConfig; 241 desc.fConfig = kSkia8888_GrPixelConfig;
247 desc.fFlags = kNone_GrSurfaceFlags; 242 desc.fFlags = kNone_GrSurfaceFlags;
248 desc.fWidth = kFullSize; 243 desc.fWidth = kFullSize;
249 desc.fHeight = kFullSize; 244 desc.fHeight = kFullSize;
250 245
251 SkAutoTUnref<GrTexture> texture(context->textureProvider()->createTextur e(desc, 246 SkAutoTUnref<GrTexture> texture(context->textureProvider()->createTextur e(desc,
252 SkBudgeted::kNo, 247 SkBudgeted::kNo,
253 bm.getPixels(), 248 bm.getPixels(),
254 0)); 249 0));
255 if (!texture) { 250 if (!texture) {
256 return; 251 return;
257 } 252 }
258 253
259 sk_sp<SkSpecialImage> gpuImage(SkSpecialImage::MakeFromGpu( 254 sk_sp<SkSpecialImage> gpuImage(SkSpecialImage::MakeFromGpu(
260 nullptr,
261 SkIRect::MakeWH( kFullSize, 255 SkIRect::MakeWH( kFullSize,
262 kFullSize), 256 kFullSize),
263 kNeedNewImageUni queID_SpecialImage, 257 kNeedNewImageUni queID_SpecialImage,
264 texture)); 258 texture));
265 259
266 { 260 {
267 sk_sp<SkSpecialImage> fromGPU(gpuImage->makeTextureImage(nullptr, co ntext)); 261 sk_sp<SkSpecialImage> fromGPU(gpuImage->makeTextureImage(context));
268 test_texture_backed(reporter, gpuImage, fromGPU); 262 test_texture_backed(reporter, gpuImage, fromGPU);
269 } 263 }
270 264
271 { 265 {
272 sk_sp<SkSpecialImage> subGPUImage(gpuImage->makeSubset(subset)); 266 sk_sp<SkSpecialImage> subGPUImage(gpuImage->makeSubset(subset));
273 267
274 sk_sp<SkSpecialImage> fromSubGPU(subGPUImage->makeTextureImage(nullp tr, context)); 268 sk_sp<SkSpecialImage> fromSubGPU(subGPUImage->makeTextureImage(conte xt));
275 test_texture_backed(reporter, subGPUImage, fromSubGPU); 269 test_texture_backed(reporter, subGPUImage, fromSubGPU);
276 } 270 }
277 } 271 }
278 } 272 }
279 273
280 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SpecialImage_Gpu, reporter, ctxInfo) { 274 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SpecialImage_Gpu, reporter, ctxInfo) {
281 GrContext* context = ctxInfo.fGrContext; 275 GrContext* context = ctxInfo.fGrContext;
282 SkBitmap bm = create_bm(); 276 SkBitmap bm = create_bm();
283 277
284 GrSurfaceDesc desc; 278 GrSurfaceDesc desc;
285 desc.fConfig = kSkia8888_GrPixelConfig; 279 desc.fConfig = kSkia8888_GrPixelConfig;
286 desc.fFlags = kNone_GrSurfaceFlags; 280 desc.fFlags = kNone_GrSurfaceFlags;
287 desc.fWidth = kFullSize; 281 desc.fWidth = kFullSize;
288 desc.fHeight = kFullSize; 282 desc.fHeight = kFullSize;
289 283
290 SkAutoTUnref<GrTexture> texture(context->textureProvider()->createTexture(de sc, 284 SkAutoTUnref<GrTexture> texture(context->textureProvider()->createTexture(de sc,
291 Sk Budgeted::kNo, 285 Sk Budgeted::kNo,
292 bm .getPixels(), 0)); 286 bm .getPixels(), 0));
293 if (!texture) { 287 if (!texture) {
294 return; 288 return;
295 } 289 }
296 290
297 sk_sp<SkSpecialImage> fullSImg(SkSpecialImage::MakeFromGpu( 291 sk_sp<SkSpecialImage> fullSImg(SkSpecialImage::MakeFromGpu(
298 nullptr,
299 SkIRect::MakeWH(kFul lSize, kFullSize), 292 SkIRect::MakeWH(kFul lSize, kFullSize),
300 kNeedNewImageUniqueI D_SpecialImage, 293 kNeedNewImageUniqueI D_SpecialImage,
301 texture)); 294 texture));
302 295
303 const SkIRect& subset = SkIRect::MakeXYWH(kPad, kPad, kSmallerSize, kSmaller Size); 296 const SkIRect& subset = SkIRect::MakeXYWH(kPad, kPad, kSmallerSize, kSmaller Size);
304 297
305 { 298 {
306 sk_sp<SkSpecialImage> subSImg1(SkSpecialImage::MakeFromGpu( 299 sk_sp<SkSpecialImage> subSImg1(SkSpecialImage::MakeFromGpu(
307 nullptr, subset, 300 subset,
308 kNeedNewImageUniq ueID_SpecialImage, 301 kNeedNewImageUniq ueID_SpecialImage,
309 texture)); 302 texture));
310 test_image(subSImg1, reporter, context, true, kPad, kFullSize); 303 test_image(subSImg1, reporter, context, true, kPad, kFullSize);
311 } 304 }
312 305
313 { 306 {
314 sk_sp<SkSpecialImage> subSImg2(fullSImg->makeSubset(subset)); 307 sk_sp<SkSpecialImage> subSImg2(fullSImg->makeSubset(subset));
315 test_image(subSImg2, reporter, context, true, kPad, kFullSize); 308 test_image(subSImg2, reporter, context, true, kPad, kFullSize);
316 } 309 }
317 } 310 }
318 311
319 #endif 312 #endif
OLDNEW
« no previous file with comments | « tests/ImageFilterTest.cpp ('k') | tests/SpecialSurfaceTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698