From f576839c6401c5b33b41ffa6dc2f4bf22cb251fe Mon Sep 17 00:00:00 2001 From: "skcms-skia-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com" Date: Mon, 2 Jul 2018 18:40:45 +0000 Subject: Roll skia/third_party/skcms 4268c0b12bf2..14ea609fa6ca (1 commits) https://skia.googlesource.com/skcms.git/+log/4268c0b12bf2..14ea609fa6ca 2018-07-02 mtklein@chromium.org centralize internal headers into skcms_internal.h The AutoRoll server is located here: https://skcms-skia-roll.skia.org Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel TBR=ethannicholas@google.com Change-Id: I8324a33256f7c1c4b766027f9823b6401ba09a78 Reviewed-on: https://skia-review.googlesource.com/138947 Commit-Queue: skcms-skia-autoroll Reviewed-by: skcms-skia-autoroll --- third_party/skcms/skcms.gni | 10 +- third_party/skcms/skcms_internal.h | 162 +++++++++++++++++++++++++++++++ third_party/skcms/src/Curve.c | 4 +- third_party/skcms/src/Curve.h | 15 --- third_party/skcms/src/ICCProfile.c | 7 +- third_party/skcms/src/ICCProfile.h | 12 --- third_party/skcms/src/LinearAlgebra.c | 3 +- third_party/skcms/src/LinearAlgebra.h | 18 ---- third_party/skcms/src/Macros.h | 17 ---- third_party/skcms/src/PortableMath.c | 2 +- third_party/skcms/src/PortableMath.h | 30 ------ third_party/skcms/src/RandomBytes.h | 14 --- third_party/skcms/src/TransferFunction.c | 6 +- third_party/skcms/src/TransferFunction.h | 22 ----- third_party/skcms/src/Transform.c | 7 +- third_party/skcms/src/Transform.h | 70 ------------- third_party/skcms/src/Transform_inl.h | 2 +- third_party/skcms/version.sha1 | 2 +- 18 files changed, 172 insertions(+), 231 deletions(-) create mode 100644 third_party/skcms/skcms_internal.h delete mode 100644 third_party/skcms/src/Curve.h delete mode 100644 third_party/skcms/src/ICCProfile.h delete mode 100644 third_party/skcms/src/LinearAlgebra.h delete mode 100644 third_party/skcms/src/Macros.h delete mode 100644 third_party/skcms/src/PortableMath.h delete mode 100644 third_party/skcms/src/RandomBytes.h delete mode 100644 third_party/skcms/src/TransferFunction.h delete mode 100644 third_party/skcms/src/Transform.h (limited to 'third_party') diff --git a/third_party/skcms/skcms.gni b/third_party/skcms/skcms.gni index f2004ad0a1..fbd816cf4e 100644 --- a/third_party/skcms/skcms.gni +++ b/third_party/skcms/skcms.gni @@ -4,19 +4,13 @@ # found in the LICENSE file. skcms_sources = [ + "skcms.h", + "skcms_internal.h", "src/Curve.c", - "src/Curve.h", "src/ICCProfile.c", - "src/ICCProfile.h", "src/LinearAlgebra.c", - "src/LinearAlgebra.h", - "src/Macros.h", "src/PortableMath.c", - "src/PortableMath.h", - "src/RandomBytes.h", "src/TransferFunction.c", - "src/TransferFunction.h", "src/Transform.c", - "src/Transform.h", "src/Transform_inl.h", ] diff --git a/third_party/skcms/skcms_internal.h b/third_party/skcms/skcms_internal.h new file mode 100644 index 0000000000..97fc8dea8d --- /dev/null +++ b/third_party/skcms/skcms_internal.h @@ -0,0 +1,162 @@ +/* + * Copyright 2018 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#pragma once + +// skcms_internal.h contains APIs shared by skcms' internals and its test tools. +// Please don't use this header from outside the skcms repo. + +#include "skcms.h" +#include +#include + +#if defined(__cpluscplus) +extern "C" { +#endif + +// ~~~~ General Helper Macros ~~~~ + + // sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others. + // We have better testing on 64-bit machines, so force 32-bit machines to behave like 64-bit. + #define SAFE_SIZEOF(x) ((uint64_t)sizeof(x)) + + // Please do not use sizeof() directly, and size_t only when required. + // (We have no way of enforcing these requests...) + + #define ARRAY_COUNT(arr) (int)(SAFE_SIZEOF((arr)) / SAFE_SIZEOF(*(arr))) + + +// ~~~~ skcms_Curve ~~~~ + + // Evaluate an skcms_Curve at x. + float skcms_eval_curve(const skcms_Curve*, float x); + float skcms_MaxRoundtripError(const skcms_Curve*, const skcms_TransferFunction*); + + +// ~~~~ skcms_TransferFunction ~~~~ + bool skcms_TransferFunction_isValid(const skcms_TransferFunction*); + + float skcms_TransferFunction_eval(const skcms_TransferFunction*, float); + + bool skcms_TransferFunction_invert(const skcms_TransferFunction*, skcms_TransferFunction*); + + // Fit c,d,f parameters of an skcms_TransferFunction to the first 2 ≤ L ≤ N + // evenly-spaced points on an skcms_Curve within a given tolerance, returning L. + int skcms_fit_linear(const skcms_Curve*, int N, float tol, float* c, float* d, float* f); + + +// ~~~~ skcms_ICCProfile ~~~~ + + bool skcms_GetCHAD(const skcms_ICCProfile* profile, skcms_Matrix3x3* m); + + // 252 of a random shuffle of all possible bytes. + // 252 is evenly divisible by 3 and 4. Only 192, 10, 241, and 43 are missing. + // Used for ICC profile equivalence testing. + extern const uint8_t skcms_252_random_bytes[252]; + + +// ~~~~ Linear Algebra ~~~~ + + typedef struct { float vals[3]; } skcms_Vector3; + + // It is _not_ safe to alias the pointers to invert in-place. + bool skcms_Matrix3x3_invert(const skcms_Matrix3x3*, skcms_Matrix3x3*); + skcms_Matrix3x3 skcms_Matrix3x3_concat(const skcms_Matrix3x3* A, const skcms_Matrix3x3* B); + + skcms_Vector3 skcms_MV_mul(const skcms_Matrix3x3*, const skcms_Vector3*); + + +// ~~~~ Portable Math ~~~~ + + static const union { + uint32_t bits; + float f; + } inf_ = { 0x7f800000 }; + + #define INFINITY_ inf_.f + + static inline float floorf_(float x) { + float roundtrip = (float)((int)x); + return roundtrip > x ? roundtrip - 1 : roundtrip; + } + + static inline float fmaxf_(float x, float y) { return x > y ? x : y; } + static inline float fminf_(float x, float y) { return x < y ? x : y; } + static inline float fabsf_(float x) { return x < 0 ? -x : x; } + + float log2f_(float); + float exp2f_(float); + float powf_(float, float); + + static inline bool isfinitef_(float x) { return 0 == x*0; } + + +// ~~~~ Transform ~~~~ + + #define FOREACH_Op(M) \ + M(noop) \ + M(load_a8) \ + M(load_g8) \ + M(load_4444) \ + M(load_565) \ + M(load_888) \ + M(load_8888) \ + M(load_1010102) \ + M(load_161616) \ + M(load_16161616) \ + M(load_hhh) \ + M(load_hhhh) \ + M(load_fff) \ + M(load_ffff) \ + M(swap_rb) \ + M(clamp) \ + M(invert) \ + M(force_opaque) \ + M(premul) \ + M(unpremul) \ + M(matrix_3x3) \ + M(matrix_3x4) \ + M(lab_to_xyz) \ + M(tf_r) \ + M(tf_g) \ + M(tf_b) \ + M(tf_a) \ + M(table_8_r) \ + M(table_8_g) \ + M(table_8_b) \ + M(table_8_a) \ + M(table_16_r) \ + M(table_16_g) \ + M(table_16_b) \ + M(table_16_a) \ + M(clut_3D_8) \ + M(clut_3D_16) \ + M(clut_4D_8) \ + M(clut_4D_16) \ + M(store_a8) \ + M(store_g8) \ + M(store_4444) \ + M(store_565) \ + M(store_888) \ + M(store_8888) \ + M(store_1010102) \ + M(store_161616) \ + M(store_16161616) \ + M(store_hhh) \ + M(store_hhhh) \ + M(store_fff) \ + M(store_ffff) + + typedef enum { + #define M(op) Op_##op, + FOREACH_Op(M) + #undef M + } Op; + +#if defined(__cpluscplus) +} // extern "C" +#endif diff --git a/third_party/skcms/src/Curve.c b/third_party/skcms/src/Curve.c index a1a3c62a3d..2b99fd7bf4 100644 --- a/third_party/skcms/src/Curve.c +++ b/third_party/skcms/src/Curve.c @@ -5,9 +5,7 @@ * found in the LICENSE file. */ -#include "Curve.h" -#include "PortableMath.h" -#include "TransferFunction.h" +#include "../skcms_internal.h" #include static float minus_1_ulp(float x) { diff --git a/third_party/skcms/src/Curve.h b/third_party/skcms/src/Curve.h deleted file mode 100644 index 1316562b56..0000000000 --- a/third_party/skcms/src/Curve.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#pragma once - -#include "../skcms.h" - -// Evaluate an skcms_Curve at x. -float skcms_eval_curve(const skcms_Curve*, float x); - -float skcms_MaxRoundtripError(const skcms_Curve* curve, const skcms_TransferFunction* inv_tf); diff --git a/third_party/skcms/src/ICCProfile.c b/third_party/skcms/src/ICCProfile.c index 1f25d1611f..257e111025 100644 --- a/third_party/skcms/src/ICCProfile.c +++ b/third_party/skcms/src/ICCProfile.c @@ -6,12 +6,7 @@ */ #include "../skcms.h" -#include "ICCProfile.h" -#include "LinearAlgebra.h" -#include "Macros.h" -#include "PortableMath.h" -#include "RandomBytes.h" -#include "TransferFunction.h" +#include "../skcms_internal.h" #include #include #include diff --git a/third_party/skcms/src/ICCProfile.h b/third_party/skcms/src/ICCProfile.h deleted file mode 100644 index 39967a1cb2..0000000000 --- a/third_party/skcms/src/ICCProfile.h +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#pragma once - -#include - -bool skcms_GetCHAD(const skcms_ICCProfile* profile, skcms_Matrix3x3* m); diff --git a/third_party/skcms/src/LinearAlgebra.c b/third_party/skcms/src/LinearAlgebra.c index fb35e5c65c..1cd8b3cb32 100644 --- a/third_party/skcms/src/LinearAlgebra.c +++ b/third_party/skcms/src/LinearAlgebra.c @@ -6,8 +6,7 @@ */ #include "../skcms.h" -#include "LinearAlgebra.h" -#include "PortableMath.h" +#include "../skcms_internal.h" #include bool skcms_Matrix3x3_invert(const skcms_Matrix3x3* src, skcms_Matrix3x3* dst) { diff --git a/third_party/skcms/src/LinearAlgebra.h b/third_party/skcms/src/LinearAlgebra.h deleted file mode 100644 index 10b122645a..0000000000 --- a/third_party/skcms/src/LinearAlgebra.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#pragma once - -#include - -typedef struct { float vals[3]; } skcms_Vector3; - -// It is _not_ safe to alias the pointers to invert in-place. -bool skcms_Matrix3x3_invert(const skcms_Matrix3x3*, skcms_Matrix3x3*); -skcms_Matrix3x3 skcms_Matrix3x3_concat(const skcms_Matrix3x3* A, const skcms_Matrix3x3* B); - -skcms_Vector3 skcms_MV_mul(const skcms_Matrix3x3*, const skcms_Vector3*); diff --git a/third_party/skcms/src/Macros.h b/third_party/skcms/src/Macros.h deleted file mode 100644 index 6bf9c5eb3e..0000000000 --- a/third_party/skcms/src/Macros.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#pragma once - -// sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others. -// We have better testing on 64-bit machines, so force 32-bit machines to behave like 64-bit. -#define SAFE_SIZEOF(x) ((uint64_t)sizeof(x)) - -// Please do not use sizeof() directly, and size_t only when required. -// (We have no way of enforcing these requests...) - -#define ARRAY_COUNT(arr) (int)(SAFE_SIZEOF((arr)) / SAFE_SIZEOF(*(arr))) diff --git a/third_party/skcms/src/PortableMath.c b/third_party/skcms/src/PortableMath.c index b50cb0f1c2..52e8b7d1c8 100644 --- a/third_party/skcms/src/PortableMath.c +++ b/third_party/skcms/src/PortableMath.c @@ -6,7 +6,7 @@ */ #include "../skcms.h" -#include "PortableMath.h" +#include "../skcms_internal.h" #include #include diff --git a/third_party/skcms/src/PortableMath.h b/third_party/skcms/src/PortableMath.h deleted file mode 100644 index 58a2fa8751..0000000000 --- a/third_party/skcms/src/PortableMath.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#pragma once - -static const union { - uint32_t bits; - float f; -} inf_ = { 0x7f800000 }; - -#define INFINITY_ inf_.f - -static inline float floorf_(float x) { - float roundtrip = (float)((int)x); - return roundtrip > x ? roundtrip - 1 : roundtrip; -} - -static inline float fmaxf_(float x, float y) { return x > y ? x : y; } -static inline float fminf_(float x, float y) { return x < y ? x : y; } -static inline float fabsf_(float x) { return x < 0 ? -x : x; } - -float log2f_(float); -float exp2f_(float); -float powf_(float, float); - -static inline bool isfinitef_(float x) { return 0 == x*0; } diff --git a/third_party/skcms/src/RandomBytes.h b/third_party/skcms/src/RandomBytes.h deleted file mode 100644 index a6191a5e96..0000000000 --- a/third_party/skcms/src/RandomBytes.h +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#pragma once - -#include - -// 252 of a random shuffle of all possible bytes. -// 252 is evenly divisible by 3 and 4. Only 192, 10, 241, and 43 are missing. -extern const uint8_t skcms_252_random_bytes[252]; diff --git a/third_party/skcms/src/TransferFunction.c b/third_party/skcms/src/TransferFunction.c index 0e3467c13f..7bab9d9286 100644 --- a/third_party/skcms/src/TransferFunction.c +++ b/third_party/skcms/src/TransferFunction.c @@ -6,11 +6,7 @@ */ #include "../skcms.h" -#include "Curve.h" -#include "LinearAlgebra.h" -#include "Macros.h" -#include "PortableMath.h" -#include "TransferFunction.h" +#include "../skcms_internal.h" #include #include #include diff --git a/third_party/skcms/src/TransferFunction.h b/third_party/skcms/src/TransferFunction.h deleted file mode 100644 index 1f32831db4..0000000000 --- a/third_party/skcms/src/TransferFunction.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#pragma once - -// TransferFunction.h contains skcms-private APIs for working with skcms_TransferFunction. - -#include - -bool skcms_TransferFunction_isValid(const skcms_TransferFunction*); - -float skcms_TransferFunction_eval(const skcms_TransferFunction*, float); - -bool skcms_TransferFunction_invert(const skcms_TransferFunction*, skcms_TransferFunction*); - -// Fit c,d,f parameters of an skcms_TransferFunction to the first 2 < L ≤ N -// evenly-spaced points on an skcms_Curve within a given tolerance, returning L. -int skcms_fit_linear(const skcms_Curve*, int N, float tol, float* c, float* d, float* f); diff --git a/third_party/skcms/src/Transform.c b/third_party/skcms/src/Transform.c index ebfd0cef5b..2f4216ba8b 100644 --- a/third_party/skcms/src/Transform.c +++ b/third_party/skcms/src/Transform.c @@ -6,12 +6,7 @@ */ #include "../skcms.h" -#include "Curve.h" -#include "LinearAlgebra.h" -#include "Macros.h" -#include "PortableMath.h" -#include "TransferFunction.h" -#include "Transform.h" +#include "../skcms_internal.h" #include #include #include diff --git a/third_party/skcms/src/Transform.h b/third_party/skcms/src/Transform.h deleted file mode 100644 index 6eda8992ba..0000000000 --- a/third_party/skcms/src/Transform.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -// Op is a type used by both Transform.c and Transform_inl.h. - -#pragma once - -#define FOREACH_Op(M) \ - M(noop) \ - M(load_a8) \ - M(load_g8) \ - M(load_4444) \ - M(load_565) \ - M(load_888) \ - M(load_8888) \ - M(load_1010102) \ - M(load_161616) \ - M(load_16161616) \ - M(load_hhh) \ - M(load_hhhh) \ - M(load_fff) \ - M(load_ffff) \ - M(swap_rb) \ - M(clamp) \ - M(invert) \ - M(force_opaque) \ - M(premul) \ - M(unpremul) \ - M(matrix_3x3) \ - M(matrix_3x4) \ - M(lab_to_xyz) \ - M(tf_r) \ - M(tf_g) \ - M(tf_b) \ - M(tf_a) \ - M(table_8_r) \ - M(table_8_g) \ - M(table_8_b) \ - M(table_8_a) \ - M(table_16_r) \ - M(table_16_g) \ - M(table_16_b) \ - M(table_16_a) \ - M(clut_3D_8) \ - M(clut_3D_16) \ - M(clut_4D_8) \ - M(clut_4D_16) \ - M(store_a8) \ - M(store_g8) \ - M(store_4444) \ - M(store_565) \ - M(store_888) \ - M(store_8888) \ - M(store_1010102) \ - M(store_161616) \ - M(store_16161616) \ - M(store_hhh) \ - M(store_hhhh) \ - M(store_fff) \ - M(store_ffff) - -typedef enum { - #define M(op) Op_##op, - FOREACH_Op(M) - #undef M -} Op; diff --git a/third_party/skcms/src/Transform_inl.h b/third_party/skcms/src/Transform_inl.h index fd3100aa60..34dcbbfff6 100644 --- a/third_party/skcms/src/Transform_inl.h +++ b/third_party/skcms/src/Transform_inl.h @@ -7,7 +7,7 @@ // Intentionally NO #pragma once -#include "Transform.h" +#include "../skcms_internal.h" // This file is included from src/Transform.c, with some values and types pre-defined: // N: depth of all vectors, 1,4,8, or 16 diff --git a/third_party/skcms/version.sha1 b/third_party/skcms/version.sha1 index 455eb8c7d9..f5367dddbc 100755 --- a/third_party/skcms/version.sha1 +++ b/third_party/skcms/version.sha1 @@ -1 +1 @@ -4268c0b12bf2af34a696576f8783f42026ed2d69 \ No newline at end of file +14ea609fa6cae4cb61529e967a6bfae15a0a1c4d \ No newline at end of file -- cgit v1.2.3