Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(149)

Unified Diff: src/core/SkBlitter.cpp

Issue 1697863002: blitters for sRGB and float16 (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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() {

Powered by Google App Engine
This is Rietveld 408576698