summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2024-04-11 08:55:21 +0200
committerStanislaw Halik <sthalik@misaki.pl>2024-04-11 21:40:00 +0200
commitc362121f04ffe72eed17126affc9129bbb354c49 (patch)
tree3a0918ca5f11bb961d465211a49bd4ecdf3659ac /test
parent9157adfe80dff953687ec364cc612cf45f2b9609 (diff)
rewrite bitmask impl
It's slower than the previous version but fixes a bug when stride isn't a multiple of 8. It can be improved further by setting `auto& byte` all at once instead of setting individual bits of multiple bytes in the innermost loop. ------------------------------------------------------------ New version Time CPU Iterations ------------------------------------------------------------ Bitmask_mean 1911 us 1893 us 5 Bitmask_median 1911 us 1885 us 5 Bitmask_stddev 2.00 us 18.7 us 5 Bitmask_cv 0.10 % 0.99 % 5 ------------------------------------------------------------- ------------------------------------------------------------ Buggy version Time CPU Iterations ------------------------------------------------------------ Bitmask_mean 841 us 841 us 5 Bitmask_median 839 us 837 us 5 Bitmask_stddev 3.29 us 7.80 us 5 Bitmask_cv 0.39 % 0.93 % 5 ------------------------------------------------------------ ----------------------------------------------------------- Naive version Time CPU Iterations ------------------------------------------------------------ Bitmask_mean 4006 us 3997 us 10 Bitmask_median 4006 us 3997 us 10 Bitmask_stddev 2.29 us 0.000 us 10 Bitmask_cv 0.06 % 0.00 % 10 ------------------------------------------------------------
Diffstat (limited to 'test')
-rw-r--r--test/bitmask.cpp2
-rw-r--r--test/bitmask.embed.inc20
2 files changed, 11 insertions, 11 deletions
diff --git a/test/bitmask.cpp b/test/bitmask.cpp
index d0b6c4d8..a1bbd0de 100644
--- a/test/bitmask.cpp
+++ b/test/bitmask.cpp
@@ -20,7 +20,7 @@ constexpr auto size = Vector2i{21, 52};
void bitmask_test()
{
- auto img = loader.texture(loader.SCENERY_PATH, "control-panel"_s);
+ auto img = loader.texture("images/", "bitmask-test1"_s);
auto bitmask = anim_atlas::make_bitmask(img);
fm_assert(bitmask.size() >= size_t{size.product()});
fm_assert(img.pixelSize() == 4);
diff --git a/test/bitmask.embed.inc b/test/bitmask.embed.inc
index 2b1f7a5f..561feee3 100644
--- a/test/bitmask.embed.inc
+++ b/test/bitmask.embed.inc
@@ -1,10 +1,10 @@
-0x03,0x00,0xe0,0x01,0x00,0x7c,0x00,0x80,0x3f,0x00,0xf0,0x1f,0x00,0xfe,0x0f,
-0xc0,0xff,0x03,0xf8,0xff,0x01,0xff,0xff,0xe0,0xff,0x3f,0xfc,0xff,0x9f,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xfe,0xff,0x1f,0xff,0xff,0x83,0xff,0x7f,0xe0,0xff,0x0f,0xf0,0xff,0x01,0xf8,
-0x3f,0x00,0xfe,0x07,0x00,0xff,0x00,0x80,0x1f,0x00,0xc0,0x03,0x00,0x70,0x00,
-0x00,0xb8,
+0xfb,0xf3,0xfd,0xfd,0x04,0x7e,0x08,0xcd,0x3f,0x00,0xf9,0x1f,0x08,0xff,0x0f,
+0xe0,0xff,0xc3,0xfc,0xff,0x91,0xf3,0xff,0x70,0xfe,0xbf,0x8e,0xff,0x9f,0xfb,
+0xff,0x7f,0xff,0xff,0xef,0xff,0xff,0xfd,0xff,0xbf,0xff,0xff,0xf7,0xff,0xff,
+0xff,0xff,0xcf,0xff,0xf7,0xf8,0x7f,0x1e,0xff,0xef,0xff,0xff,0xfd,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0x3f,
+0xf8,0xff,0x07,0x7e,0xfe,0xc0,0xcf,0x1f,0xf8,0xfd,0x87,0xbf,0xff,0xff,0xf7,
+0xff,0xff,0xfe,0xff,0xbf,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,
+0xfe,0x3f,0x1f,0xff,0xc7,0x83,0xff,0x78,0xe0,0x1f,0x0e,0xf0,0xe3,0x11,0xf8,
+0x3f,0x0e,0xfe,0x17,0x03,0xff,0xc3,0x80,0x3f,0x21,0xc0,0x6b,0x08,0xf0,0x08,
+0x06,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,