aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2018-07-13 13:18:56 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-13 13:19:04 +0000
commit4a17501f5bbd5e45a49d76d7a733393fec9701ee (patch)
treecfef179372e83944b91c183133cc4ccde6e103ac /tests
parentbc8133b4adf481edf62158f07951e06e20c2f92a (diff)
Revert "update SkColor4f::FromColor() to preserve transfer function"
This reverts commit 9e229233a67b36a508d3c753a5b93a022369c5f7. Reason for revert: See if blocking Android roll Original change's description: > update SkColor4f::FromColor() to preserve transfer function > > This kills off some sRGB tables, > and lots of call sites can now use SkColor4f::FromColor(). > > It doesn't seem important to keep this test. > > Change-Id: Ia79ec8ace45e80bbc7a1e33f560f59289e61b2fb > Reviewed-on: https://skia-review.googlesource.com/141046 > Commit-Queue: Mike Klein <mtklein@chromium.org> > Reviewed-by: Brian Osman <brianosman@google.com> TBR=mtklein@chromium.org,brianosman@google.com Change-Id: I9d76e4ccf8a101853a7404abb33bdab9e0c64c25 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://skia-review.googlesource.com/141181 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/SRGBTest.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/SRGBTest.cpp b/tests/SRGBTest.cpp
index cf8aaa120b..44daeda34a 100644
--- a/tests/SRGBTest.cpp
+++ b/tests/SRGBTest.cpp
@@ -13,6 +13,34 @@
#include <math.h>
#include "../src/jumper/SkJumper.h"
+static uint8_t linear_to_srgb(float l) {
+ return (uint8_t)sk_linear_to_srgb(Sk4f{l})[0];
+}
+
+DEF_TEST(sk_linear_to_srgb, r) {
+ // All bytes should round trip.
+ for (int i = 0; i < 256; i++) {
+ int actual = linear_to_srgb(sk_linear_from_srgb[i]);
+ if (i != actual) {
+ ERRORF(r, "%d -> %d\n", i, actual);
+ }
+ }
+
+ // Should be monotonic between 0 and 1.
+ uint8_t prev = 0;
+ for (float f = FLT_MIN; f <= 1.0f; ) { // We don't bother checking denorm values.
+ uint8_t srgb = linear_to_srgb(f);
+
+ REPORTER_ASSERT(r, srgb >= prev);
+ prev = srgb;
+
+ union { float flt; uint32_t bits; } pun = { f };
+ pun.bits++;
+ SkDEBUGCODE(pun.bits += 127);
+ f = pun.flt;
+ }
+}
+
DEF_TEST(sk_pipeline_srgb_roundtrip, r) {
uint32_t reds[256];
for (int i = 0; i < 256; i++) {