aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/core/SkScalarCompare.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/core/SkScalarCompare.h')
-rw-r--r--include/core/SkScalarCompare.h12
1 files changed, 12 insertions, 0 deletions
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;