| Index: src/codec/SkSwizzler.cpp
|
| diff --git a/src/codec/SkSwizzler.cpp b/src/codec/SkSwizzler.cpp
|
| index 65e521050e7795cfc4be18b55745822308f52afa..45556d6303cc7f818c8f91e2183a798c71b327ab 100644
|
| --- a/src/codec/SkSwizzler.cpp
|
| +++ b/src/codec/SkSwizzler.cpp
|
| @@ -331,7 +331,6 @@ static void fast_swizzle_bgra_to_n32_unpremul(
|
| // sampling, deltaSrc should equal bpp.
|
| SkASSERT(deltaSrc == bpp);
|
|
|
| - // These swizzles trust that the alpha value is already 0xFF.
|
| #ifdef SK_PMCOLOR_IS_RGBA
|
| SkOpts::swaprb_xxxa((uint32_t*) dst, (const uint32_t*) (src + offset), width);
|
| #else
|
| @@ -376,12 +375,25 @@ static void swizzle_rgb_to_n32(
|
| src += offset;
|
| SkPMColor* SK_RESTRICT dst = (SkPMColor*)dstRow;
|
| for (int x = 0; x < dstWidth; x++) {
|
| - dst[x] = SkPackARGB32(0xFF, src[0], src[1], src[2]);
|
| + dst[x] = SkPackARGB32NoCheck(0xFF, src[0], src[1], src[2]);
|
| src += deltaSrc;
|
| }
|
| }
|
|
|
| +static void fast_swizzle_rgb_to_n32(
|
| + void* dst, const uint8_t* src, int width, int bpp, int deltaSrc,
|
| + int offset, const SkPMColor ctable[]) {
|
| +
|
| + // This function must not be called if we are sampling. If we are not
|
| + // sampling, deltaSrc should equal bpp.
|
| + SkASSERT(deltaSrc == bpp);
|
|
|
| +#ifdef SK_PMCOLOR_IS_RGBA
|
| + SkOpts::xxx_xxxa((uint32_t*) dst, (const uint32_t*) (src + offset), width);
|
| +#else
|
| + SkOpts::xxx_swaprb_xxxa((uint32_t*) dst, (const uint32_t*) (src + offset), width);
|
| +#endif
|
| +}
|
|
|
| static void swizzle_rgb_to_565(
|
| void* SK_RESTRICT dstRow, const uint8_t* SK_RESTRICT src, int dstWidth,
|
| @@ -446,7 +458,6 @@ static void fast_swizzle_rgba_to_n32_unpremul(
|
| // sampling, deltaSrc should equal bpp.
|
| SkASSERT(deltaSrc == bpp);
|
|
|
| - // These swizzles trust that the alpha value is already 0xFF.
|
| #ifdef SK_PMCOLOR_IS_RGBA
|
| memcpy(dst, src + offset, width * bpp);
|
| #else
|
| @@ -682,6 +693,7 @@ SkSwizzler* SkSwizzler::CreateSwizzler(SkSwizzler::SrcConfig sc,
|
| switch (dstInfo.colorType()) {
|
| case kN32_SkColorType:
|
| proc = &swizzle_rgb_to_n32;
|
| + fastProc = &fast_swizzle_rgb_to_n32;
|
| break;
|
| case kRGB_565_SkColorType:
|
| proc = &swizzle_rgb_to_565;
|
|
|