Index: src/codec/SkCodecPriv.h |
diff --git a/src/codec/SkCodecPriv.h b/src/codec/SkCodecPriv.h |
index 27e2a63722d8ff095911846ece0d45d46cc7479f..4ae049744c3017b4a1a87da9800845c2404df04c 100644 |
--- a/src/codec/SkCodecPriv.h |
+++ b/src/codec/SkCodecPriv.h |
@@ -75,11 +75,14 @@ inline bool is_coord_necessary(int srcCoord, int sampleFactor, int scaledDim) { |
} |
inline bool valid_alpha(SkAlphaType dstAlpha, SkAlphaType srcAlpha) { |
- // Check for supported alpha types |
+ if (kUnknown_SkAlphaType == dstAlpha) { |
+ return false; |
+ } |
+ |
if (srcAlpha != dstAlpha) { |
if (kOpaque_SkAlphaType == srcAlpha) { |
- // If the source is opaque, we must decode to opaque |
- return false; |
+ // If the source is opaque, we can support any. |
+ return true; |
} |
// The source is not opaque |
@@ -99,7 +102,8 @@ inline bool valid_alpha(SkAlphaType dstAlpha, SkAlphaType srcAlpha) { |
/* |
* Most of our codecs support the same conversions: |
* - profileType must be the same |
- * - opaque only to opaque (and 565 only if opaque) |
+ * - opaque to any alpha type |
+ * - 565 only if opaque |
* - premul to unpremul and vice versa |
* - always support N32 |
* - otherwise match the src color type |