Index: dm/DM.cpp |
diff --git a/dm/DM.cpp b/dm/DM.cpp |
index c7c3628d8a82e8236c83a6991a402f5ee194cb2b..1fbc9535a91af3d38b0f54348de832d5600e8a15 100644 |
--- a/dm/DM.cpp |
+++ b/dm/DM.cpp |
@@ -248,9 +248,6 @@ static void push_codec_src(Path path, CodecSrc::Mode mode, CodecSrc::DstColorTyp |
case CodecSrc::kSubset_Mode: |
folder.append("codec_subset"); |
break; |
- case CodecSrc::kGen_Mode: |
- folder.append("gen"); |
- break; |
} |
switch (dstColorType) { |
@@ -331,6 +328,39 @@ static void push_android_codec_src(Path path, AndroidCodecSrc::Mode mode, |
push_src("image", folder, src); |
} |
+static void push_image_gen_src(Path path, ImageGenSrc::Mode mode, SkAlphaType alphaType, bool isGpu) { |
scroggo
2016/03/07 13:04:30
nit: 100 chars
msarett
2016/03/08 23:20:17
Done.
|
+ SkString folder; |
+ switch (mode) { |
+ case ImageGenSrc::kCodec_Mode: |
+ folder.append("gen_codec"); |
+ break; |
+ case ImageGenSrc::kCG_Mode: |
+ folder.append("gen_cg"); |
+ break; |
+ } |
+ |
+ if (isGpu) { |
+ folder.append("_gpu"); |
+ } else { |
+ switch (alphaType) { |
+ case kOpaque_SkAlphaType: |
+ folder.append("_opaque"); |
+ break; |
+ case kPremul_SkAlphaType: |
+ folder.append("_premul"); |
+ break; |
+ case kUnpremul_SkAlphaType: |
+ folder.append("_unpremul"); |
+ break; |
+ default: |
+ break; |
+ } |
+ } |
+ |
+ ImageGenSrc* src = new ImageGenSrc(path, mode, alphaType, isGpu); |
+ push_src("image", folder, src); |
+} |
+ |
static void push_codec_srcs(Path path) { |
SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(path.c_str())); |
if (!encoded) { |
@@ -352,7 +382,6 @@ static void push_codec_srcs(Path path) { |
SkTArray<CodecSrc::Mode> nativeModes; |
nativeModes.push_back(CodecSrc::kCodec_Mode); |
nativeModes.push_back(CodecSrc::kCodecZeroInit_Mode); |
- nativeModes.push_back(CodecSrc::kGen_Mode); |
switch (codec->getEncodedFormat()) { |
case SkEncodedFormat::kJPEG_SkEncodedFormat: |
nativeModes.push_back(CodecSrc::kScanline_Mode); |
@@ -394,19 +423,6 @@ static void push_codec_srcs(Path path) { |
} |
for (CodecSrc::Mode mode : nativeModes) { |
- // SkCodecImageGenerator only runs for the default colorType |
- // recommended by SkCodec. There is no need to generate multiple |
- // tests for different colorTypes. |
- // TODO (msarett): Add scaling support to SkCodecImageGenerator. |
- if (CodecSrc::kGen_Mode == mode) { |
- // FIXME: The gpu backend does not draw kGray sources correctly. (skbug.com/4822) |
- if (kGray_8_SkColorType != codec->getInfo().colorType()) { |
- push_codec_src(path, mode, CodecSrc::kGetFromCanvas_DstColorType, |
- codec->getInfo().alphaType(), 1.0f); |
- } |
- continue; |
- } |
- |
for (float scale : nativeScales) { |
for (CodecSrc::DstColorType colorType : colorTypes) { |
for (SkAlphaType alphaType : alphaModes) { |
@@ -452,6 +468,26 @@ static void push_codec_srcs(Path path) { |
} |
} |
} |
+ |
+ // Push image generator GPU test. |
+ // FIXME: The gpu backend does not draw kGray sources correctly. (skbug.com/4822) |
+ if (kGray_8_SkColorType != codec->getInfo().colorType()) { |
+ push_image_gen_src(path, ImageGenSrc::kCodec_Mode, codec->getInfo().alphaType(), true); |
+ } |
+ |
+ // Push image generator CPU tests. |
+ for (SkAlphaType alphaType : alphaModes) { |
+ push_image_gen_src(path, ImageGenSrc::kCodec_Mode, alphaType, false); |
+ |
+#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) |
+ if (kWEBP_SkEncodedFormat != codec->getEncodedFormat() && |
+ kWBMP_SkEncodedFormat != codec->getEncodedFormat() && |
+ kUnpremul_SkAlphaType != alphaType) |
+ { |
+ push_image_gen_src(path, ImageGenSrc::kCG_Mode, alphaType, false); |
+ } |
+#endif |
+ } |
} |
static bool brd_color_type_supported(SkBitmapRegionDecoder::Strategy strategy, |