From c998f733e3a3da0674fe32acfcec34b4650e4c2a Mon Sep 17 00:00:00 2001 From: Mike Klein Date: Wed, 24 May 2017 19:00:47 -0400 Subject: make sure to_srgb maps 1 to 1 CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-SK_CPU_LIMIT_SSE2,Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-SK_CPU_LIMIT_SSE41,Test-Android-Clang-Nexus10-CPU-Exynos5250-arm-Release-Android,Test-Android-Clang-PixelC-CPU-TegraX1-arm64-Release-Android,Test-Android-Clang-Ci20-CPU-IngenicJZ4780-mipsel-Release-Android BUG=skia:6678,skia:6683 Change-Id: I217084fa0a11ad661a8751f0c3b1cade5cc52473 Reviewed-on: https://skia-review.googlesource.com/17902 Reviewed-by: Herb Derby Commit-Queue: Mike Klein --- tests/SRGBTest.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'tests/SRGBTest.cpp') diff --git a/tests/SRGBTest.cpp b/tests/SRGBTest.cpp index 78855a34c8..b1e4570f50 100644 --- a/tests/SRGBTest.cpp +++ b/tests/SRGBTest.cpp @@ -5,6 +5,7 @@ * found in the LICENSE file. */ +#include "SkPM4f.h" #include "SkRasterPipeline.h" #include "SkSRGB.h" #include "SkTypes.h" @@ -61,3 +62,26 @@ DEF_TEST(sk_pipeline_srgb_roundtrip, r) { } } } + +DEF_TEST(sk_pipeline_srgb_edge_cases, r) { + // We need to run at least 4 pixels to make sure we hit all specializations. + SkPM4f colors[4] = { {{0,1,1,1}}, {{0,0,0,0}}, {{0,0,0,0}}, {{0,0,0,0}} }; + auto& color = colors[0]; + void* dst = &color; + + SkRasterPipeline_<256> p; + p.append(SkRasterPipeline::constant_color, &color); + p.append(SkRasterPipeline::to_srgb); + p.append(SkRasterPipeline::store_f32, &dst); + p.run(0,4); + + if (color.r() != 0.0f) { + ERRORF(r, "expected to_srgb() to map 0.0f to 0.0f, got %f", color.r()); + } + if (color.g() != 1.0f) { + float f = color.g(); + uint32_t x; + memcpy(&x, &f, 4); + ERRORF(r, "expected to_srgb() to map 1.0f to 1.0f, got %f (%08x)", color.g(), x); + } +} -- cgit v1.2.3