OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 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 <functional> | 8 #include <functional> |
9 #include <initializer_list> | 9 #include <initializer_list> |
10 #include <vector> | 10 #include <vector> |
(...skipping 25 matching lines...) Expand all Loading... |
36 SkImage* b) { | 36 SkImage* b) { |
37 const int widthA = subsetA ? subsetA->width() : a->width(); | 37 const int widthA = subsetA ? subsetA->width() : a->width(); |
38 const int heightA = subsetA ? subsetA->height() : a->height(); | 38 const int heightA = subsetA ? subsetA->height() : a->height(); |
39 | 39 |
40 REPORTER_ASSERT(reporter, widthA == b->width()); | 40 REPORTER_ASSERT(reporter, widthA == b->width()); |
41 REPORTER_ASSERT(reporter, heightA == b->height()); | 41 REPORTER_ASSERT(reporter, heightA == b->height()); |
42 | 42 |
43 // see https://bug.skia.org/3965 | 43 // see https://bug.skia.org/3965 |
44 //REPORTER_ASSERT(reporter, a->isOpaque() == b->isOpaque()); | 44 //REPORTER_ASSERT(reporter, a->isOpaque() == b->isOpaque()); |
45 | 45 |
46 SkImageInfo info = SkImageInfo::MakeN32(widthA, heightA, | 46 SkImageInfo info = SkImageInfo::MakeN32(widthA, heightA, a->alphaType()); |
47 a->isOpaque() ? kOpaque_SkAlphaType : kP
remul_SkAlphaType); | |
48 SkAutoPixmapStorage pmapA, pmapB; | 47 SkAutoPixmapStorage pmapA, pmapB; |
49 pmapA.alloc(info); | 48 pmapA.alloc(info); |
50 pmapB.alloc(info); | 49 pmapB.alloc(info); |
51 | 50 |
52 const int srcX = subsetA ? subsetA->x() : 0; | 51 const int srcX = subsetA ? subsetA->x() : 0; |
53 const int srcY = subsetA ? subsetA->y() : 0; | 52 const int srcY = subsetA ? subsetA->y() : 0; |
54 | 53 |
55 REPORTER_ASSERT(reporter, a->readPixels(pmapA, srcX, srcY)); | 54 REPORTER_ASSERT(reporter, a->readPixels(pmapA, srcX, srcY)); |
56 REPORTER_ASSERT(reporter, b->readPixels(pmapB, 0, 0)); | 55 REPORTER_ASSERT(reporter, b->readPixels(pmapB, 0, 0)); |
57 | 56 |
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
498 continue; | 497 continue; |
499 } | 498 } |
500 if (origTexture) { | 499 if (origTexture) { |
501 if (origTexture != copyTexture) { | 500 if (origTexture != copyTexture) { |
502 ERRORF(reporter, "newTextureImage made unnecessary texture copy.
"); | 501 ERRORF(reporter, "newTextureImage made unnecessary texture copy.
"); |
503 } | 502 } |
504 } | 503 } |
505 if (image->width() != texImage->width() || image->height() != texImage->
height()) { | 504 if (image->width() != texImage->width() || image->height() != texImage->
height()) { |
506 ERRORF(reporter, "newTextureImage changed the image size."); | 505 ERRORF(reporter, "newTextureImage changed the image size."); |
507 } | 506 } |
508 if (image->isOpaque() != texImage->isOpaque()) { | 507 if (image->alphaType() != texImage->alphaType()) { |
509 ERRORF(reporter, "newTextureImage changed image opaqueness."); | 508 ERRORF(reporter, "newTextureImage changed image alpha type."); |
510 } | 509 } |
511 } | 510 } |
512 } | 511 } |
513 | 512 |
514 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SkImage_makeNonTextureImage, reporter, contex
tInfo) { | 513 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SkImage_makeNonTextureImage, reporter, contex
tInfo) { |
515 GrContext* context = contextInfo.grContext(); | 514 GrContext* context = contextInfo.grContext(); |
516 | 515 |
517 std::function<sk_sp<SkImage>()> imageFactories[] = { | 516 std::function<sk_sp<SkImage>()> imageFactories[] = { |
518 create_image, | 517 create_image, |
519 create_codec_image, | 518 create_codec_image, |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
662 #if SK_SUPPORT_GPU | 661 #if SK_SUPPORT_GPU |
663 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageReadPixels_Gpu, reporter, ctxInfo) { | 662 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageReadPixels_Gpu, reporter, ctxInfo) { |
664 test_read_pixels(reporter, create_gpu_image(ctxInfo.grContext()).get()); | 663 test_read_pixels(reporter, create_gpu_image(ctxInfo.grContext()).get()); |
665 } | 664 } |
666 #endif | 665 #endif |
667 | 666 |
668 static void check_legacy_bitmap(skiatest::Reporter* reporter, const SkImage* ima
ge, | 667 static void check_legacy_bitmap(skiatest::Reporter* reporter, const SkImage* ima
ge, |
669 const SkBitmap& bitmap, SkImage::LegacyBitmapMod
e mode) { | 668 const SkBitmap& bitmap, SkImage::LegacyBitmapMod
e mode) { |
670 REPORTER_ASSERT(reporter, image->width() == bitmap.width()); | 669 REPORTER_ASSERT(reporter, image->width() == bitmap.width()); |
671 REPORTER_ASSERT(reporter, image->height() == bitmap.height()); | 670 REPORTER_ASSERT(reporter, image->height() == bitmap.height()); |
672 REPORTER_ASSERT(reporter, image->isOpaque() == bitmap.isOpaque()); | 671 REPORTER_ASSERT(reporter, image->alphaType() == bitmap.alphaType()); |
673 | 672 |
674 if (SkImage::kRO_LegacyBitmapMode == mode) { | 673 if (SkImage::kRO_LegacyBitmapMode == mode) { |
675 REPORTER_ASSERT(reporter, bitmap.isImmutable()); | 674 REPORTER_ASSERT(reporter, bitmap.isImmutable()); |
676 } | 675 } |
677 | 676 |
678 SkAutoLockPixels alp(bitmap); | 677 SkAutoLockPixels alp(bitmap); |
679 REPORTER_ASSERT(reporter, bitmap.getPixels()); | 678 REPORTER_ASSERT(reporter, bitmap.getPixels()); |
680 | 679 |
681 const SkImageInfo info = SkImageInfo::MakeN32(1, 1, bitmap.alphaType()); | 680 const SkImageInfo info = SkImageInfo::MakeN32(1, 1, bitmap.alphaType()); |
682 SkPMColor imageColor; | 681 SkPMColor imageColor; |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
805 REPORTER_ASSERT(reporter, 1 == releaseChecker.fReleaseCount); | 804 REPORTER_ASSERT(reporter, 1 == releaseChecker.fReleaseCount); |
806 | 805 |
807 ctxInfo.grContext()->getGpu()->deleteTestingOnlyBackendTexture(backendDesc.f
TextureHandle); | 806 ctxInfo.grContext()->getGpu()->deleteTestingOnlyBackendTexture(backendDesc.f
TextureHandle); |
808 } | 807 } |
809 | 808 |
810 static void check_images_same(skiatest::Reporter* reporter, const SkImage* a, co
nst SkImage* b) { | 809 static void check_images_same(skiatest::Reporter* reporter, const SkImage* a, co
nst SkImage* b) { |
811 if (a->width() != b->width() || a->height() != b->height()) { | 810 if (a->width() != b->width() || a->height() != b->height()) { |
812 ERRORF(reporter, "Images must have the same size"); | 811 ERRORF(reporter, "Images must have the same size"); |
813 return; | 812 return; |
814 } | 813 } |
815 if (a->isOpaque() != b->isOpaque()) { | 814 if (a->alphaType() != b->alphaType()) { |
816 ERRORF(reporter, "Images must have the same opaquness"); | 815 ERRORF(reporter, "Images must have the same alpha type"); |
817 return; | 816 return; |
818 } | 817 } |
819 | 818 |
820 SkImageInfo info = SkImageInfo::MakeN32Premul(a->width(), a->height()); | 819 SkImageInfo info = SkImageInfo::MakeN32Premul(a->width(), a->height()); |
821 SkAutoPixmapStorage apm; | 820 SkAutoPixmapStorage apm; |
822 SkAutoPixmapStorage bpm; | 821 SkAutoPixmapStorage bpm; |
823 | 822 |
824 apm.alloc(info); | 823 apm.alloc(info); |
825 bpm.alloc(info); | 824 bpm.alloc(info); |
826 | 825 |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
941 buffer)) { | 940 buffer)) { |
942 ERRORF(reporter, "deferred image size succeeded but creation fai
led."); | 941 ERRORF(reporter, "deferred image size succeeded but creation fai
led."); |
943 } else { | 942 } else { |
944 for (auto budgeted : { SkBudgeted::kNo, SkBudgeted::kYes }) { | 943 for (auto budgeted : { SkBudgeted::kNo, SkBudgeted::kYes }) { |
945 sk_sp<SkImage> newImage( | 944 sk_sp<SkImage> newImage( |
946 SkImage::MakeFromDeferredTextureImageData(context, buffe
r, budgeted)); | 945 SkImage::MakeFromDeferredTextureImageData(context, buffe
r, budgeted)); |
947 REPORTER_ASSERT(reporter, newImage != nullptr); | 946 REPORTER_ASSERT(reporter, newImage != nullptr); |
948 if (newImage) { | 947 if (newImage) { |
949 // Scale the image in software for comparison. | 948 // Scale the image in software for comparison. |
950 SkImageInfo scaled_info = SkImageInfo::MakeN32( | 949 SkImageInfo scaled_info = SkImageInfo::MakeN32( |
951 image->width() / testCase.fExpectedScaleFactor, | 950 image->width() / testCase.fE
xpectedScaleFactor, |
952 image->height() / testCase.fExpectedScaleFactor, | 951 image->height() / testCase.f
ExpectedScaleFactor, |
953 image->isOpaque() ? kOpaque_SkAlphaType : kPremu
l_SkAlphaType); | 952 image->alphaType()); |
954 SkAutoPixmapStorage scaled; | 953 SkAutoPixmapStorage scaled; |
955 scaled.alloc(scaled_info); | 954 scaled.alloc(scaled_info); |
956 image->scalePixels(scaled, testCase.fExpectedQuality); | 955 image->scalePixels(scaled, testCase.fExpectedQuality); |
957 sk_sp<SkImage> scaledImage = SkImage::MakeRasterCopy(sca
led); | 956 sk_sp<SkImage> scaledImage = SkImage::MakeRasterCopy(sca
led); |
958 check_images_same(reporter, scaledImage.get(), newImage.
get()); | 957 check_images_same(reporter, scaledImage.get(), newImage.
get()); |
959 } | 958 } |
960 // The other context should not be able to create images fro
m texture data | 959 // The other context should not be able to create images fro
m texture data |
961 // created by the original context. | 960 // created by the original context. |
962 sk_sp<SkImage> newImage2(SkImage::MakeFromDeferredTextureIma
geData( | 961 sk_sp<SkImage> newImage2(SkImage::MakeFromDeferredTextureIma
geData( |
963 otherContextInfo.grContext(), buffer, budgeted)); | 962 otherContextInfo.grContext(), buffer, budgeted)); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1017 SkBitmap bm1; | 1016 SkBitmap bm1; |
1018 bm1.allocPixels(SkImageInfo::MakeN32(256, 256, kUnpremul_SkAlphaType)); | 1017 bm1.allocPixels(SkImageInfo::MakeN32(256, 256, kUnpremul_SkAlphaType)); |
1019 bm0.readPixels(bm1.info(), bm1.getPixels(), bm1.rowBytes(), 0, 0); | 1018 bm0.readPixels(bm1.info(), bm1.getPixels(), bm1.rowBytes(), 0, 0); |
1020 | 1019 |
1021 SkBitmap bm2; | 1020 SkBitmap bm2; |
1022 bm2.allocPixels(SkImageInfo::MakeN32(256, 256, kPremul_SkAlphaType)); | 1021 bm2.allocPixels(SkImageInfo::MakeN32(256, 256, kPremul_SkAlphaType)); |
1023 bm1.readPixels(bm2.info(), bm2.getPixels(), bm2.rowBytes(), 0, 0); | 1022 bm1.readPixels(bm2.info(), bm2.getPixels(), bm2.rowBytes(), 0, 0); |
1024 | 1023 |
1025 REPORTER_ASSERT(reporter, equal(bm0, bm2)); | 1024 REPORTER_ASSERT(reporter, equal(bm0, bm2)); |
1026 } | 1025 } |
OLD | NEW |