| Index: src/core/SkBlitter.cpp
|
| diff --git a/src/core/SkBlitter.cpp b/src/core/SkBlitter.cpp
|
| index eec31525a63548abfb3bf377d7c541c8275de09f..72694b266e939979fe95d9bf4039c64804043aa9 100644
|
| --- a/src/core/SkBlitter.cpp
|
| +++ b/src/core/SkBlitter.cpp
|
| @@ -913,23 +913,27 @@ SkBlitter* SkBlitter::Choose(const SkPixmap& device,
|
| break;
|
|
|
| case kN32_SkColorType:
|
| - if (shader) {
|
| - if (shaderContext->supports4f() && ALLOW_SRGB) {
|
| - blitter = allocator->createT<SkARGB32_Shader4f_Blitter>(
|
| - device, *paint, shaderContext);
|
| + if (device.info().isSRGB()) {
|
| + blitter = SkBlitter_ARGB32_Create(device, *paint, shaderContext, allocator);
|
| + } else {
|
| + if (shader) {
|
| + blitter = allocator->createT<SkARGB32_Shader_Blitter>(
|
| + device, *paint, shaderContext);
|
| + } else if (paint->getColor() == SK_ColorBLACK) {
|
| + blitter = allocator->createT<SkARGB32_Black_Blitter>(device, *paint);
|
| + } else if (paint->getAlpha() == 0xFF) {
|
| + blitter = allocator->createT<SkARGB32_Opaque_Blitter>(device, *paint);
|
| } else {
|
| - blitter = allocator->createT<SkARGB32_Shader_Blitter>(
|
| - device, *paint, shaderContext);
|
| + blitter = allocator->createT<SkARGB32_Blitter>(device, *paint);
|
| }
|
| - } else if (paint->getColor() == SK_ColorBLACK) {
|
| - blitter = allocator->createT<SkARGB32_Black_Blitter>(device, *paint);
|
| - } else if (paint->getAlpha() == 0xFF) {
|
| - blitter = allocator->createT<SkARGB32_Opaque_Blitter>(device, *paint);
|
| - } else {
|
| - blitter = allocator->createT<SkARGB32_Blitter>(device, *paint);
|
| }
|
| break;
|
|
|
| + case kRGBA_F16_SkColorType:
|
| + // kU16_SkColorType:
|
| + blitter = SkBlitter_ARGB64_Create(device, *paint, shaderContext, allocator);
|
| + break;
|
| +
|
| default:
|
| SkDEBUGFAIL("unsupported device config");
|
| blitter = allocator->createT<SkNullBlitter>();
|
| @@ -972,6 +976,7 @@ SkShaderBlitter::SkShaderBlitter(const SkPixmap& device, const SkPaint& paint,
|
|
|
| fShader->ref();
|
| fShaderFlags = fShaderContext->getFlags();
|
| + fConstInY = SkToBool(fShaderFlags & SkShader::kConstInY32_Flag);
|
| }
|
|
|
| SkShaderBlitter::~SkShaderBlitter() {
|
|
|