| 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 "SkCanvas.h" | 8 #include "SkCanvas.h" |
| 9 #include "SkData.h" | 9 #include "SkData.h" |
| 10 #include "SkDevice.h" | 10 #include "SkDevice.h" |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 } | 223 } |
| 224 }; | 224 }; |
| 225 | 225 |
| 226 // May we (soon) eliminate the need to keep testing this, by hiding the bloody d
evice! | 226 // May we (soon) eliminate the need to keep testing this, by hiding the bloody d
evice! |
| 227 #include "SkDevice.h" | 227 #include "SkDevice.h" |
| 228 static uint32_t get_legacy_gen_id(SkSurface* surf) { | 228 static uint32_t get_legacy_gen_id(SkSurface* surf) { |
| 229 SkBaseDevice* device = surf->getCanvas()->getDevice_just_for_deprecated_comp
atibility_testing(); | 229 SkBaseDevice* device = surf->getCanvas()->getDevice_just_for_deprecated_comp
atibility_testing(); |
| 230 return device->accessBitmap(false).getGenerationID(); | 230 return device->accessBitmap(false).getGenerationID(); |
| 231 } | 231 } |
| 232 | 232 |
| 233 static void test_texture_handle(skiatest::Reporter* reporter, SkSurface* surf) { | 233 template <class F> |
| 234 static void test_backend_handle(skiatest::Reporter* reporter, SkSurface* surf, F
f) { |
| 234 SkAutoTUnref<SkImage> image0(surf->newImageSnapshot()); | 235 SkAutoTUnref<SkImage> image0(surf->newImageSnapshot()); |
| 235 const uint32_t genID0 = get_legacy_gen_id(surf); | 236 const uint32_t genID0 = get_legacy_gen_id(surf); |
| 236 GrBackendObject obj = surf->getTextureHandle(SkSurface::kFlushRead_TextureHa
ndleAccess); | 237 GrBackendObject obj = f(surf, SkSurface::kFlushRead_BackendHandleAccess); |
| 237 REPORTER_ASSERT(reporter, obj != 0); | 238 REPORTER_ASSERT(reporter, obj != 0); |
| 238 SkAutoTUnref<SkImage> image1(surf->newImageSnapshot()); | 239 SkAutoTUnref<SkImage> image1(surf->newImageSnapshot()); |
| 239 const uint32_t genID1 = get_legacy_gen_id(surf); | 240 const uint32_t genID1 = get_legacy_gen_id(surf); |
| 240 // just read access should not affect the snapshot | 241 // just read access should not affect the snapshot |
| 241 REPORTER_ASSERT(reporter, image0->uniqueID() == image1->uniqueID()); | 242 REPORTER_ASSERT(reporter, image0->uniqueID() == image1->uniqueID()); |
| 242 REPORTER_ASSERT(reporter, genID0 == genID1); | 243 REPORTER_ASSERT(reporter, genID0 == genID1); |
| 243 | 244 |
| 244 obj = surf->getTextureHandle(SkSurface::kFlushWrite_TextureHandleAccess); | 245 obj = f(surf, SkSurface::kFlushWrite_BackendHandleAccess); |
| 245 REPORTER_ASSERT(reporter, obj != 0); | 246 REPORTER_ASSERT(reporter, obj != 0); |
| 246 SkAutoTUnref<SkImage> image2(surf->newImageSnapshot()); | 247 SkAutoTUnref<SkImage> image2(surf->newImageSnapshot()); |
| 247 const uint32_t genID2 = get_legacy_gen_id(surf); | 248 const uint32_t genID2 = get_legacy_gen_id(surf); |
| 248 // expect a new image, since we claimed we would write | 249 // expect a new image, since we claimed we would write |
| 249 REPORTER_ASSERT(reporter, image0->uniqueID() != image2->uniqueID()); | 250 REPORTER_ASSERT(reporter, image0->uniqueID() != image2->uniqueID()); |
| 250 REPORTER_ASSERT(reporter, genID0 != genID2); | 251 REPORTER_ASSERT(reporter, genID0 != genID2); |
| 251 | 252 |
| 252 obj = surf->getTextureHandle(SkSurface::kDiscardWrite_TextureHandleAccess); | 253 obj = f(surf, SkSurface::kDiscardWrite_BackendHandleAccess); |
| 253 REPORTER_ASSERT(reporter, obj != 0); | 254 REPORTER_ASSERT(reporter, obj != 0); |
| 254 SkAutoTUnref<SkImage> image3(surf->newImageSnapshot()); | 255 SkAutoTUnref<SkImage> image3(surf->newImageSnapshot()); |
| 255 const uint32_t genID3 = get_legacy_gen_id(surf); | 256 const uint32_t genID3 = get_legacy_gen_id(surf); |
| 256 // expect a new(er) image, since we claimed we would write | 257 // expect a new(er) image, since we claimed we would write |
| 257 REPORTER_ASSERT(reporter, image0->uniqueID() != image3->uniqueID()); | 258 REPORTER_ASSERT(reporter, image0->uniqueID() != image3->uniqueID()); |
| 258 REPORTER_ASSERT(reporter, image2->uniqueID() != image3->uniqueID()); | 259 REPORTER_ASSERT(reporter, image2->uniqueID() != image3->uniqueID()); |
| 259 REPORTER_ASSERT(reporter, genID0 != genID3); | 260 REPORTER_ASSERT(reporter, genID0 != genID3); |
| 260 REPORTER_ASSERT(reporter, genID2 != genID3); | 261 REPORTER_ASSERT(reporter, genID2 != genID3); |
| 261 } | 262 } |
| 262 | 263 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 279 return SkImage::NewRasterData(info, data, rowBytes); | 280 return SkImage::NewRasterData(info, data, rowBytes); |
| 280 case kRasterProc_ImageType: | 281 case kRasterProc_ImageType: |
| 281 SkASSERT(releaseContext); | 282 SkASSERT(releaseContext); |
| 282 releaseContext->fData = SkRef(data.get()); | 283 releaseContext->fData = SkRef(data.get()); |
| 283 return SkImage::NewFromRaster(info, addr, rowBytes, | 284 return SkImage::NewFromRaster(info, addr, rowBytes, |
| 284 ReleaseDataContext::Release, releaseCo
ntext); | 285 ReleaseDataContext::Release, releaseCo
ntext); |
| 285 case kGpu_ImageType: { | 286 case kGpu_ImageType: { |
| 286 SkAutoTUnref<SkSurface> surf( | 287 SkAutoTUnref<SkSurface> surf( |
| 287 SkSurface::NewRenderTarget(context, SkSurface::kNo_Budgeted, inf
o, 0)); | 288 SkSurface::NewRenderTarget(context, SkSurface::kNo_Budgeted, inf
o, 0)); |
| 288 surf->getCanvas()->clear(color); | 289 surf->getCanvas()->clear(color); |
| 289 // test our backing texture while were here... | 290 // test our backing texture / rendertarget while were here... |
| 290 test_texture_handle(reporter, surf); | 291 test_backend_handle(reporter, surf, |
| 292 [](SkSurface* surf, SkSurface::BackendHandleAccess access) -> Gr
BackendObject { |
| 293 return surf->getTextureHandle(access); }); |
| 294 test_backend_handle(reporter, surf, |
| 295 [](SkSurface* surf, SkSurface::BackendHandleAccess access) -> Gr
BackendObject { |
| 296 GrBackendObject obj; |
| 297 bool result = surf->getRenderTargetHandle(&obj, access); |
| 298 SkASSERT(result); |
| 299 return obj; }); |
| 291 // redraw so our returned image looks as expected. | 300 // redraw so our returned image looks as expected. |
| 292 surf->getCanvas()->clear(color); | 301 surf->getCanvas()->clear(color); |
| 293 return surf->newImageSnapshot(); | 302 return surf->newImageSnapshot(); |
| 294 } | 303 } |
| 295 case kCodec_ImageType: { | 304 case kCodec_ImageType: { |
| 296 SkBitmap bitmap; | 305 SkBitmap bitmap; |
| 297 bitmap.installPixels(info, addr, rowBytes); | 306 bitmap.installPixels(info, addr, rowBytes); |
| 298 SkAutoTUnref<SkData> src( | 307 SkAutoTUnref<SkData> src( |
| 299 SkImageEncoder::EncodeData(bitmap, SkImageEncoder::kPNG_Type, 1
00)); | 308 SkImageEncoder::EncodeData(bitmap, SkImageEncoder::kPNG_Type, 1
00)); |
| 300 return SkImage::NewFromEncoded(src); | 309 return SkImage::NewFromEncoded(src); |
| (...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 933 // We expect the ref'd image to see the new color, but cpy'd one should stil
l see the old color | 942 // We expect the ref'd image to see the new color, but cpy'd one should stil
l see the old color |
| 934 test_image_color(reporter, refImg, expected1); | 943 test_image_color(reporter, refImg, expected1); |
| 935 test_image_color(reporter, cpyImg, expected0); | 944 test_image_color(reporter, cpyImg, expected0); |
| 936 | 945 |
| 937 // Now exercise the release proc | 946 // Now exercise the release proc |
| 938 REPORTER_ASSERT(reporter, !releaseCtx.fIsReleased); | 947 REPORTER_ASSERT(reporter, !releaseCtx.fIsReleased); |
| 939 refImg.reset(NULL); // force a release of the image | 948 refImg.reset(NULL); // force a release of the image |
| 940 REPORTER_ASSERT(reporter, releaseCtx.fIsReleased); | 949 REPORTER_ASSERT(reporter, releaseCtx.fIsReleased); |
| 941 } | 950 } |
| 942 #endif | 951 #endif |
| OLD | NEW |