diff options
author | Matt Sarett <msarett@google.com> | 2017-01-17 12:22:48 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-01-18 15:56:34 +0000 |
commit | 7a090c403da1dad6a2e19f2011158bd894a62d91 (patch) | |
tree | 8ab2f90ee290754b3bd8d6eea9881df4fb3e79c8 /src/core/SkColorSpaceXform.cpp | |
parent | 98cf99b3ae4cc956158d1fd843fc8a84059ae132 (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.cpp | 23 |
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; } |