aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/core/SkScalar.h7
-rw-r--r--include/core/SkScalarCompare.h12
2 files changed, 15 insertions, 4 deletions
diff --git a/include/core/SkScalar.h b/include/core/SkScalar.h
index 86341eb996..5be809f9e3 100644
--- a/include/core/SkScalar.h
+++ b/include/core/SkScalar.h
@@ -232,8 +232,8 @@
/* <= is slower than < for floats, so we use < for our tolerance test
*/
-inline bool SkScalarNearlyZero(SkScalar x, SkScalar tolerance = SK_ScalarNearlyZero)
-{
+static inline bool SkScalarNearlyZero(SkScalar x,
+ SkScalar tolerance = SK_ScalarNearlyZero) {
SkASSERT(tolerance > 0);
return SkScalarAbs(x) < tolerance;
}
@@ -244,8 +244,7 @@ inline bool SkScalarNearlyZero(SkScalar x, SkScalar tolerance = SK_ScalarNearlyZ
else interpolate.
t must be [0..SK_Scalar1]
*/
-inline SkScalar SkScalarInterp(SkScalar A, SkScalar B, SkScalar t)
-{
+static inline SkScalar SkScalarInterp(SkScalar A, SkScalar B, SkScalar t) {
SkASSERT(t >= 0 && t <= SK_Scalar1);
return A + SkScalarMul(B - A, t);
}
diff --git a/include/core/SkScalarCompare.h b/include/core/SkScalarCompare.h
index fee554cd2b..537d6d6dce 100644
--- a/include/core/SkScalarCompare.h
+++ b/include/core/SkScalarCompare.h
@@ -20,6 +20,18 @@
#include "SkFloatBits.h"
#include "SkRect.h"
+/** Skia can spend a lot of time just comparing scalars (e.g. quickReject).
+ When scalar==fixed, this is very fast, and when scalar==hardware-float, this
+ is also reasonable, but if scalar==software-float, then each compare can be
+ a function call and take real time. To account for that, we have the flag
+ SK_SCALAR_SLOW_COMPARES.
+
+ If this is defined, we have a special trick where we quickly convert floats
+ to a 2's compliment form, and then treat them as signed 32bit integers. In
+ this form we lose a few subtlties (e.g. NaNs always comparing false) but
+ we gain the speed of integer compares.
+ */
+
#ifdef SK_SCALAR_SLOW_COMPARES
typedef int32_t SkScalarCompareType;
typedef SkIRect SkRectCompareType;