add rec2020 configs to DM
Change-Id: Ibbfb69610e8821ff3a7f0c01875c34132ee4d718
Reviewed-on: https://skia-review.googlesource.com/147962
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
diff --git a/dm/DM.cpp b/dm/DM.cpp
index f4b7bf13..459e51a 100644
--- a/dm/DM.cpp
+++ b/dm/DM.cpp
@@ -921,19 +921,36 @@
SkMatrix44 narrow_gamut(SkMatrix44::kUninitialized_Constructor);
narrow_gamut.set3x3RowMajorf(gNarrow_toXYZD50);
+ // See https://en.wikipedia.org/wiki/Rec._2020
+ float alpha = 1.09929682680944f,
+ beta = 0.018053968510807f,
+ gamma = 0.45f;
+ SkColorSpaceTransferFn rec2020_TF = SkColorSpaceTransferFn{
+ gamma,
+ powf(alpha, 1/gamma),
+ 0.0f,
+ 4.5f,
+ beta,
+ 1 - alpha,
+ 0.0f,
+ }.invert();
+
auto narrow = SkColorSpace::MakeRGB(k2Dot2Curve_SkGammaNamed, narrow_gamut),
srgb = SkColorSpace::MakeSRGB(),
srgbLinear = SkColorSpace::MakeSRGBLinear(),
p3 = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma,
- SkColorSpace::kDCIP3_D65_Gamut);
+ SkColorSpace::kDCIP3_D65_Gamut),
+ rec2020 = SkColorSpace::MakeRGB(rec2020_TF, SkColorSpace::kRec2020_Gamut);
- SINK( "f16", RasterSink, kRGBA_F16_SkColorType, srgbLinear);
- SINK( "srgb", RasterSink, kRGBA_8888_SkColorType, srgb );
- SINK( "esrgb", RasterSink, kRGBA_F16_SkColorType, srgb );
- SINK( "narrow", RasterSink, kRGBA_8888_SkColorType, narrow );
- SINK("enarrow", RasterSink, kRGBA_F16_SkColorType, narrow );
- SINK( "p3", RasterSink, kRGBA_8888_SkColorType, p3 );
- SINK( "ep3", RasterSink, kRGBA_F16_SkColorType, p3 );
+ SINK( "f16", RasterSink, kRGBA_F16_SkColorType, srgbLinear);
+ SINK( "srgb", RasterSink, kRGBA_8888_SkColorType, srgb );
+ SINK( "esrgb", RasterSink, kRGBA_F16_SkColorType, srgb );
+ SINK( "narrow", RasterSink, kRGBA_8888_SkColorType, narrow );
+ SINK( "enarrow", RasterSink, kRGBA_F16_SkColorType, narrow );
+ SINK( "p3", RasterSink, kRGBA_8888_SkColorType, p3 );
+ SINK( "ep3", RasterSink, kRGBA_F16_SkColorType, p3 );
+ SINK( "rec2020", RasterSink, kRGBA_8888_SkColorType, rec2020 );
+ SINK("erec2020", RasterSink, kRGBA_F16_SkColorType, rec2020 );
SINK( "f32", RasterSink, kRGBA_F32_SkColorType, srgbLinear);
}