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() { |