remove meaningless matrix benches, add mapPts() and add new benches
mapPts definitely faster than mapPoints (identity and perspective same speed). Up to 3x for large values of N.
cloned from https://codereview.chromium.org/1031443002/
BUG=skia:
Review URL: https://codereview.chromium.org/1030653002
diff --git a/tests/MatrixTest.cpp b/tests/MatrixTest.cpp
index 95d33ac..35306b3 100644
--- a/tests/MatrixTest.cpp
+++ b/tests/MatrixTest.cpp
@@ -799,6 +799,48 @@
REPORTER_ASSERT(reporter, !check_decompScale(m));
}
+static void test_mappts(skiatest::Reporter* reporter, const SkMatrix& m, const char type[], int n) {
+ const int MAX = 100;
+ SkPoint src[MAX];
+ SkPoint dst0[MAX], dst1[MAX];
+ SkASSERT(n <= MAX);
+
+ SkRandom rand;
+ for (int i = 0; i < n; ++i) {
+ src[i].fX = rand.nextSScalar1() * 100;
+ src[i].fY = rand.nextSScalar1() * 100;
+ }
+
+ m.mapPoints(dst0, src, n);
+ m.mapPts( dst1, src, n);
+ for (int i = 0; i < n; ++i) {
+ bool eq = SkScalarNearlyEqual(dst0[i].fX, dst1[i].fX) &&
+ SkScalarNearlyEqual(dst0[i].fY, dst1[i].fY);
+ if (!eq) {
+ SkDebugf("%s [%d] points (%g %g) pts (%g %g)\n", type, i, dst0[i].fX, dst0[i].fY, dst1[i].fX, dst1[i].fY);
+ REPORTER_ASSERT(reporter, eq);
+ }
+ }
+}
+
+static void test_mappts(skiatest::Reporter* reporter) {
+ const int counts[] = { 0, 1, 2, 3, 4, 100 };
+ for (size_t i = 0; i < SK_ARRAY_COUNT(counts); ++i) {
+ const int n = counts[i];
+ SkMatrix m;
+ m.reset();
+ test_mappts(reporter, m, "ident", n);
+ m.setTranslate(2, 3);
+ test_mappts(reporter, m, "trans", n);
+ m.postScale(2, 0.5f);
+ test_mappts(reporter, m, "scale", n);
+ m.postRotate(35);
+ test_mappts(reporter, m, "affine", n);
+ m.setPerspX(0.1f);
+ test_mappts(reporter, m, "persp", n);
+ }
+}
+
DEF_TEST(Matrix, reporter) {
SkMatrix mat, inverse, iden1, iden2;
@@ -919,6 +961,8 @@
test_set9(reporter);
test_decompScale(reporter);
+
+ test_mappts(reporter);
}
DEF_TEST(Matrix_Concat, r) {