aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkColorSpaceXform.cpp
diff options
context:
space:
mode:
authorGravatar Matt Sarett <msarett@google.com>2017-01-17 12:22:48 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-01-18 15:56:34 +0000
commit7a090c403da1dad6a2e19f2011158bd894a62d91 (patch)
tree8ab2f90ee290754b3bd8d6eea9881df4fb3e79c8 /src/core/SkColorSpaceXform.cpp
parent98cf99b3ae4cc956158d1fd843fc8a84059ae132 (diff)
Respect full precision for RGB16 PNGs
BUG=skia: CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: If58d201daae97bce2f8efbc453c2ec452e682493 Reviewed-on: https://skia-review.googlesource.com/7085 Commit-Queue: Matt Sarett <msarett@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org> Reviewed-by: Leon Scroggins <scroggo@google.com> Reviewed-by: Mike Reed <reed@google.com>
Diffstat (limited to 'src/core/SkColorSpaceXform.cpp')
-rw-r--r--src/core/SkColorSpaceXform.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/core/SkColorSpaceXform.cpp b/src/core/SkColorSpaceXform.cpp
index bdb3784681..dccb92ee9a 100644
--- a/src/core/SkColorSpaceXform.cpp
+++ b/src/core/SkColorSpaceXform.cpp
@@ -1104,7 +1104,10 @@ bool SkColorSpaceXform_XYZ<kCSM>
}
}
- if (kRGBA_F32_ColorFormat == dstColorFormat || kRGBA_U16_BE_ColorFormat == srcColorFormat) {
+ if (kRGBA_F32_ColorFormat == dstColorFormat ||
+ kRGBA_U16_BE_ColorFormat == srcColorFormat ||
+ kRGB_U16_BE_ColorFormat == srcColorFormat)
+ {
return this->applyPipeline(dstColorFormat, dst, srcColorFormat, src, len, alphaType);
}
@@ -1221,6 +1224,24 @@ bool SkColorSpaceXform_XYZ<kCSM>
break;
}
break;
+ case kRGB_U16_BE_ColorFormat:
+ switch (fSrcGamma) {
+ case kLinear_SrcGamma:
+ pipeline.append(SkRasterPipeline::load_rgb_u16_be, &src);
+ break;
+ case kSRGB_SrcGamma:
+ pipeline.append(SkRasterPipeline::load_rgb_u16_be, &src);
+ pipeline.append_from_srgb(kUnpremul_SkAlphaType);
+ break;
+ case kTable_SrcGamma:
+ loadTables.fSrc = src;
+ loadTables.fR = fSrcGammaTables[0];
+ loadTables.fG = fSrcGammaTables[1];
+ loadTables.fB = fSrcGammaTables[2];
+ pipeline.append(SkRasterPipeline::load_tables_rgb_u16_be, &loadTables);
+ break;
+ }
+ break;
default:
return false;
}