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 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 SkData* fData; | 216 SkData* fData; |
217 | 217 |
218 static void Release(const void* pixels, void* context) { | 218 static void Release(const void* pixels, void* context) { |
219 ReleaseDataContext* state = (ReleaseDataContext*)context; | 219 ReleaseDataContext* state = (ReleaseDataContext*)context; |
220 REPORTER_ASSERT(state->fReporter, state->fData); | 220 REPORTER_ASSERT(state->fReporter, state->fData); |
221 state->fData->unref(); | 221 state->fData->unref(); |
222 state->fData = NULL; | 222 state->fData = NULL; |
223 } | 223 } |
224 }; | 224 }; |
225 | 225 |
| 226 // May we (soon) eliminate the need to keep testing this, by hiding the bloody d
evice! |
| 227 #include "SkDevice.h" |
| 228 static uint32_t get_legacy_gen_id(SkSurface* surf) { |
| 229 SkBaseDevice* device = surf->getCanvas()->getDevice_just_for_deprecated_comp
atibility_testing(); |
| 230 return device->accessBitmap(false).getGenerationID(); |
| 231 } |
| 232 |
226 static void test_texture_handle(skiatest::Reporter* reporter, SkSurface* surf) { | 233 static void test_texture_handle(skiatest::Reporter* reporter, SkSurface* surf) { |
227 SkAutoTUnref<SkImage> image0(surf->newImageSnapshot()); | 234 SkAutoTUnref<SkImage> image0(surf->newImageSnapshot()); |
| 235 const uint32_t genID0 = get_legacy_gen_id(surf); |
228 GrBackendObject obj = surf->getTextureHandle(SkSurface::kFlushRead_TextureHa
ndleAccess); | 236 GrBackendObject obj = surf->getTextureHandle(SkSurface::kFlushRead_TextureHa
ndleAccess); |
229 REPORTER_ASSERT(reporter, obj != 0); | 237 REPORTER_ASSERT(reporter, obj != 0); |
230 SkAutoTUnref<SkImage> image1(surf->newImageSnapshot()); | 238 SkAutoTUnref<SkImage> image1(surf->newImageSnapshot()); |
| 239 const uint32_t genID1 = get_legacy_gen_id(surf); |
231 // just read access should not affect the snapshot | 240 // just read access should not affect the snapshot |
232 REPORTER_ASSERT(reporter, image0->uniqueID() == image1->uniqueID()); | 241 REPORTER_ASSERT(reporter, image0->uniqueID() == image1->uniqueID()); |
| 242 REPORTER_ASSERT(reporter, genID0 == genID1); |
233 | 243 |
234 obj = surf->getTextureHandle(SkSurface::kFlushWrite_TextureHandleAccess); | 244 obj = surf->getTextureHandle(SkSurface::kFlushWrite_TextureHandleAccess); |
235 REPORTER_ASSERT(reporter, obj != 0); | 245 REPORTER_ASSERT(reporter, obj != 0); |
236 SkAutoTUnref<SkImage> image2(surf->newImageSnapshot()); | 246 SkAutoTUnref<SkImage> image2(surf->newImageSnapshot()); |
| 247 const uint32_t genID2 = get_legacy_gen_id(surf); |
237 // expect a new image, since we claimed we would write | 248 // expect a new image, since we claimed we would write |
238 REPORTER_ASSERT(reporter, image0->uniqueID() != image2->uniqueID()); | 249 REPORTER_ASSERT(reporter, image0->uniqueID() != image2->uniqueID()); |
| 250 REPORTER_ASSERT(reporter, genID0 != genID2); |
239 | 251 |
240 obj = surf->getTextureHandle(SkSurface::kDiscardWrite_TextureHandleAccess); | 252 obj = surf->getTextureHandle(SkSurface::kDiscardWrite_TextureHandleAccess); |
241 REPORTER_ASSERT(reporter, obj != 0); | 253 REPORTER_ASSERT(reporter, obj != 0); |
242 SkAutoTUnref<SkImage> image3(surf->newImageSnapshot()); | 254 SkAutoTUnref<SkImage> image3(surf->newImageSnapshot()); |
| 255 const uint32_t genID3 = get_legacy_gen_id(surf); |
243 // expect a new(er) image, since we claimed we would write | 256 // expect a new(er) image, since we claimed we would write |
244 REPORTER_ASSERT(reporter, image0->uniqueID() != image3->uniqueID()); | 257 REPORTER_ASSERT(reporter, image0->uniqueID() != image3->uniqueID()); |
245 REPORTER_ASSERT(reporter, image2->uniqueID() != image3->uniqueID()); | 258 REPORTER_ASSERT(reporter, image2->uniqueID() != image3->uniqueID()); |
| 259 REPORTER_ASSERT(reporter, genID0 != genID3); |
| 260 REPORTER_ASSERT(reporter, genID2 != genID3); |
246 } | 261 } |
247 | 262 |
248 static SkImage* create_image(skiatest::Reporter* reporter, | 263 static SkImage* create_image(skiatest::Reporter* reporter, |
249 ImageType imageType, GrContext* context, SkColor co
lor, | 264 ImageType imageType, GrContext* context, SkColor co
lor, |
250 ReleaseDataContext* releaseContext) { | 265 ReleaseDataContext* releaseContext) { |
251 const SkPMColor pmcolor = SkPreMultiplyColor(color); | 266 const SkPMColor pmcolor = SkPreMultiplyColor(color); |
252 const SkImageInfo info = SkImageInfo::MakeN32Premul(10, 10); | 267 const SkImageInfo info = SkImageInfo::MakeN32Premul(10, 10); |
253 const size_t rowBytes = info.minRowBytes(); | 268 const size_t rowBytes = info.minRowBytes(); |
254 const size_t size = rowBytes * info.height(); | 269 const size_t size = rowBytes * info.height(); |
255 | 270 |
(...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
918 // We expect the ref'd image to see the new color, but cpy'd one should stil
l see the old color | 933 // We expect the ref'd image to see the new color, but cpy'd one should stil
l see the old color |
919 test_image_color(reporter, refImg, expected1); | 934 test_image_color(reporter, refImg, expected1); |
920 test_image_color(reporter, cpyImg, expected0); | 935 test_image_color(reporter, cpyImg, expected0); |
921 | 936 |
922 // Now exercise the release proc | 937 // Now exercise the release proc |
923 REPORTER_ASSERT(reporter, !releaseCtx.fIsReleased); | 938 REPORTER_ASSERT(reporter, !releaseCtx.fIsReleased); |
924 refImg.reset(NULL); // force a release of the image | 939 refImg.reset(NULL); // force a release of the image |
925 REPORTER_ASSERT(reporter, releaseCtx.fIsReleased); | 940 REPORTER_ASSERT(reporter, releaseCtx.fIsReleased); |
926 } | 941 } |
927 #endif | 942 #endif |
OLD | NEW |