| 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 "SkImageEncoder.h" | 10 #include "SkImageEncoder.h" |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 | 132 |
| 133 for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) { | 133 for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) { |
| 134 SkImageInfo info; | 134 SkImageInfo info; |
| 135 size_t rowBytes; | 135 size_t rowBytes; |
| 136 | 136 |
| 137 SkAutoTUnref<SkImage> image(createImage(gRec[i].fType, NULL, color)); | 137 SkAutoTUnref<SkImage> image(createImage(gRec[i].fType, NULL, color)); |
| 138 if (!image.get()) { | 138 if (!image.get()) { |
| 139 continue; // gpu may not be enabled | 139 continue; // gpu may not be enabled |
| 140 } | 140 } |
| 141 const void* addr = image->peekPixels(&info, &rowBytes); | 141 const void* addr = image->peekPixels(&info, &rowBytes); |
| 142 bool success = (NULL != addr); | 142 bool success = SkToBool(addr); |
| 143 REPORTER_ASSERT(reporter, gRec[i].fPeekShouldSucceed == success); | 143 REPORTER_ASSERT(reporter, gRec[i].fPeekShouldSucceed == success); |
| 144 if (success) { | 144 if (success) { |
| 145 REPORTER_ASSERT(reporter, 10 == info.width()); | 145 REPORTER_ASSERT(reporter, 10 == info.width()); |
| 146 REPORTER_ASSERT(reporter, 10 == info.height()); | 146 REPORTER_ASSERT(reporter, 10 == info.height()); |
| 147 REPORTER_ASSERT(reporter, kN32_SkColorType == info.colorType()); | 147 REPORTER_ASSERT(reporter, kN32_SkColorType == info.colorType()); |
| 148 REPORTER_ASSERT(reporter, kPremul_SkAlphaType == info.alphaType() || | 148 REPORTER_ASSERT(reporter, kPremul_SkAlphaType == info.alphaType() || |
| 149 kOpaque_SkAlphaType == info.alphaType()); | 149 kOpaque_SkAlphaType == info.alphaType()); |
| 150 REPORTER_ASSERT(reporter, info.minRowBytes() <= rowBytes); | 150 REPORTER_ASSERT(reporter, info.minRowBytes() <= rowBytes); |
| 151 REPORTER_ASSERT(reporter, pmcolor == *(const SkPMColor*)addr); | 151 REPORTER_ASSERT(reporter, pmcolor == *(const SkPMColor*)addr); |
| 152 } | 152 } |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 #endif | 192 #endif |
| 193 for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) { | 193 for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) { |
| 194 SkImageInfo info, requestInfo; | 194 SkImageInfo info, requestInfo; |
| 195 size_t rowBytes; | 195 size_t rowBytes; |
| 196 | 196 |
| 197 SkAutoTUnref<SkSurface> surface(createSurface(gRec[i].fType, context
, | 197 SkAutoTUnref<SkSurface> surface(createSurface(gRec[i].fType, context
, |
| 198 &requestInfo)); | 198 &requestInfo)); |
| 199 surface->getCanvas()->clear(color); | 199 surface->getCanvas()->clear(color); |
| 200 | 200 |
| 201 const void* addr = surface->getCanvas()->peekPixels(&info, &rowBytes
); | 201 const void* addr = surface->getCanvas()->peekPixels(&info, &rowBytes
); |
| 202 bool success = (NULL != addr); | 202 bool success = SkToBool(addr); |
| 203 REPORTER_ASSERT(reporter, gRec[i].fPeekShouldSucceed == success); | 203 REPORTER_ASSERT(reporter, gRec[i].fPeekShouldSucceed == success); |
| 204 | 204 |
| 205 SkImageInfo info2; | 205 SkImageInfo info2; |
| 206 size_t rb2; | 206 size_t rb2; |
| 207 const void* addr2 = surface->peekPixels(&info2, &rb2); | 207 const void* addr2 = surface->peekPixels(&info2, &rb2); |
| 208 | 208 |
| 209 if (success) { | 209 if (success) { |
| 210 REPORTER_ASSERT(reporter, requestInfo == info); | 210 REPORTER_ASSERT(reporter, requestInfo == info); |
| 211 REPORTER_ASSERT(reporter, requestInfo.minRowBytes() <= rowBytes)
; | 211 REPORTER_ASSERT(reporter, requestInfo.minRowBytes() <= rowBytes)
; |
| 212 REPORTER_ASSERT(reporter, pmcolor == *(const SkPMColor*)addr); | 212 REPORTER_ASSERT(reporter, pmcolor == *(const SkPMColor*)addr); |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 REPORTER_ASSERT(reporter, image2->getTexture() != image1->getTexture()); | 382 REPORTER_ASSERT(reporter, image2->getTexture() != image1->getTexture()); |
| 383 } | 383 } |
| 384 | 384 |
| 385 static void TestGetTexture(skiatest::Reporter* reporter, | 385 static void TestGetTexture(skiatest::Reporter* reporter, |
| 386 SurfaceType surfaceType, | 386 SurfaceType surfaceType, |
| 387 GrContext* context) { | 387 GrContext* context) { |
| 388 SkAutoTUnref<SkSurface> surface(createSurface(surfaceType, context)); | 388 SkAutoTUnref<SkSurface> surface(createSurface(surfaceType, context)); |
| 389 SkAutoTUnref<SkImage> image(surface->newImageSnapshot()); | 389 SkAutoTUnref<SkImage> image(surface->newImageSnapshot()); |
| 390 GrTexture* texture = image->getTexture(); | 390 GrTexture* texture = image->getTexture(); |
| 391 if (surfaceType == kGpu_SurfaceType || surfaceType == kGpuScratch_SurfaceTyp
e) { | 391 if (surfaceType == kGpu_SurfaceType || surfaceType == kGpuScratch_SurfaceTyp
e) { |
| 392 REPORTER_ASSERT(reporter, NULL != texture); | 392 REPORTER_ASSERT(reporter, texture); |
| 393 REPORTER_ASSERT(reporter, 0 != texture->getTextureHandle()); | 393 REPORTER_ASSERT(reporter, 0 != texture->getTextureHandle()); |
| 394 } else { | 394 } else { |
| 395 REPORTER_ASSERT(reporter, NULL == texture); | 395 REPORTER_ASSERT(reporter, NULL == texture); |
| 396 } | 396 } |
| 397 surface->notifyContentWillChange(SkSurface::kDiscard_ContentChangeMode); | 397 surface->notifyContentWillChange(SkSurface::kDiscard_ContentChangeMode); |
| 398 REPORTER_ASSERT(reporter, image->getTexture() == texture); | 398 REPORTER_ASSERT(reporter, image->getTexture() == texture); |
| 399 } | 399 } |
| 400 #endif | 400 #endif |
| 401 | 401 |
| 402 static void TestSurfaceNoCanvas(skiatest::Reporter* reporter, | 402 static void TestSurfaceNoCanvas(skiatest::Reporter* reporter, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 TestSurfaceCopyOnWrite(reporter, kRaster_SurfaceType, NULL); | 437 TestSurfaceCopyOnWrite(reporter, kRaster_SurfaceType, NULL); |
| 438 TestSurfaceWritableAfterSnapshotRelease(reporter, kRaster_SurfaceType, NULL)
; | 438 TestSurfaceWritableAfterSnapshotRelease(reporter, kRaster_SurfaceType, NULL)
; |
| 439 TestSurfaceNoCanvas(reporter, kRaster_SurfaceType, NULL, SkSurface::kDiscard
_ContentChangeMode); | 439 TestSurfaceNoCanvas(reporter, kRaster_SurfaceType, NULL, SkSurface::kDiscard
_ContentChangeMode); |
| 440 TestSurfaceNoCanvas(reporter, kRaster_SurfaceType, NULL, SkSurface::kRetain_
ContentChangeMode); | 440 TestSurfaceNoCanvas(reporter, kRaster_SurfaceType, NULL, SkSurface::kRetain_
ContentChangeMode); |
| 441 | 441 |
| 442 test_imagepeek(reporter); | 442 test_imagepeek(reporter); |
| 443 test_canvaspeek(reporter, factory); | 443 test_canvaspeek(reporter, factory); |
| 444 | 444 |
| 445 #if SK_SUPPORT_GPU | 445 #if SK_SUPPORT_GPU |
| 446 TestGetTexture(reporter, kRaster_SurfaceType, NULL); | 446 TestGetTexture(reporter, kRaster_SurfaceType, NULL); |
| 447 if (NULL != factory) { | 447 if (factory) { |
| 448 for (int i= 0; i < GrContextFactory::kGLContextTypeCnt; ++i) { | 448 for (int i= 0; i < GrContextFactory::kGLContextTypeCnt; ++i) { |
| 449 GrContextFactory::GLContextType glCtxType = (GrContextFactory::GLCon
textType) i; | 449 GrContextFactory::GLContextType glCtxType = (GrContextFactory::GLCon
textType) i; |
| 450 if (!GrContextFactory::IsRenderingGLContext(glCtxType)) { | 450 if (!GrContextFactory::IsRenderingGLContext(glCtxType)) { |
| 451 continue; | 451 continue; |
| 452 } | 452 } |
| 453 GrContext* context = factory->get(glCtxType); | 453 GrContext* context = factory->get(glCtxType); |
| 454 if (NULL != context) { | 454 if (context) { |
| 455 TestSurfaceInCache(reporter, kGpu_SurfaceType, context); | 455 TestSurfaceInCache(reporter, kGpu_SurfaceType, context); |
| 456 TestSurfaceInCache(reporter, kGpuScratch_SurfaceType, context); | 456 TestSurfaceInCache(reporter, kGpuScratch_SurfaceType, context); |
| 457 Test_crbug263329(reporter, kGpu_SurfaceType, context); | 457 Test_crbug263329(reporter, kGpu_SurfaceType, context); |
| 458 Test_crbug263329(reporter, kGpuScratch_SurfaceType, context); | 458 Test_crbug263329(reporter, kGpuScratch_SurfaceType, context); |
| 459 TestSurfaceCopyOnWrite(reporter, kGpu_SurfaceType, context); | 459 TestSurfaceCopyOnWrite(reporter, kGpu_SurfaceType, context); |
| 460 TestSurfaceCopyOnWrite(reporter, kGpuScratch_SurfaceType, contex
t); | 460 TestSurfaceCopyOnWrite(reporter, kGpuScratch_SurfaceType, contex
t); |
| 461 TestSurfaceWritableAfterSnapshotRelease(reporter, kGpu_SurfaceTy
pe, context); | 461 TestSurfaceWritableAfterSnapshotRelease(reporter, kGpu_SurfaceTy
pe, context); |
| 462 TestSurfaceWritableAfterSnapshotRelease(reporter, kGpuScratch_Su
rfaceType, context); | 462 TestSurfaceWritableAfterSnapshotRelease(reporter, kGpuScratch_Su
rfaceType, context); |
| 463 TestSurfaceNoCanvas(reporter, kGpu_SurfaceType, context, SkSurfa
ce::kDiscard_ContentChangeMode); | 463 TestSurfaceNoCanvas(reporter, kGpu_SurfaceType, context, SkSurfa
ce::kDiscard_ContentChangeMode); |
| 464 TestSurfaceNoCanvas(reporter, kGpuScratch_SurfaceType, context,
SkSurface::kDiscard_ContentChangeMode); | 464 TestSurfaceNoCanvas(reporter, kGpuScratch_SurfaceType, context,
SkSurface::kDiscard_ContentChangeMode); |
| 465 TestSurfaceNoCanvas(reporter, kGpu_SurfaceType, context, SkSurfa
ce::kRetain_ContentChangeMode); | 465 TestSurfaceNoCanvas(reporter, kGpu_SurfaceType, context, SkSurfa
ce::kRetain_ContentChangeMode); |
| 466 TestSurfaceNoCanvas(reporter, kGpuScratch_SurfaceType, context,
SkSurface::kRetain_ContentChangeMode); | 466 TestSurfaceNoCanvas(reporter, kGpuScratch_SurfaceType, context,
SkSurface::kRetain_ContentChangeMode); |
| 467 TestGetTexture(reporter, kGpu_SurfaceType, context); | 467 TestGetTexture(reporter, kGpu_SurfaceType, context); |
| 468 TestGetTexture(reporter, kGpuScratch_SurfaceType, context); | 468 TestGetTexture(reporter, kGpuScratch_SurfaceType, context); |
| 469 } | 469 } |
| 470 } | 470 } |
| 471 } | 471 } |
| 472 #endif | 472 #endif |
| 473 } | 473 } |
| OLD | NEW |