diff options
author | mtklein <mtklein@chromium.org> | 2016-01-08 06:32:52 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-08 06:32:52 -0800 |
commit | 55c86abedc7dcc76f5f04a256e46bb3bb065b2cb (patch) | |
tree | a9e615f5405cda747c22b663e7ae90c57898a919 /tests/SwizzlerTest.cpp | |
parent | 06dd0a8222cc97236a2d20d563e27995983e6e0c (diff) |
test+bench new swizzle SkOpts
BUG=skia:skia:4767
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1564233002
Review URL: https://codereview.chromium.org/1564233002
Diffstat (limited to 'tests/SwizzlerTest.cpp')
-rw-r--r-- | tests/SwizzlerTest.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/SwizzlerTest.cpp b/tests/SwizzlerTest.cpp index 95aaf38639..f67cfeef7a 100644 --- a/tests/SwizzlerTest.cpp +++ b/tests/SwizzlerTest.cpp @@ -7,6 +7,7 @@ #include "SkSwizzler.h" #include "Test.h" +#include "SkOpts.h" // These are the values that we will look for to indicate that the fill was successful static const uint8_t kFillIndex = 0x11; @@ -124,3 +125,35 @@ DEF_TEST(SwizzlerFill, r) { } } } + +DEF_TEST(SwizzleOpts, r) { + uint32_t dst, src; + + // forall c, c*255 == c, c*0 == 0 + for (int c = 0; c <= 255; c++) { + src = (255<<24) | c; + SkOpts::premul_xxxa(&dst, &src, 1); + REPORTER_ASSERT(r, dst == src); + SkOpts::premul_swaprb_xxxa(&dst, &src, 1); + REPORTER_ASSERT(r, dst == (uint32_t)((255<<24) | (c<<16))); + + src = (0<<24) | c; + SkOpts::premul_xxxa(&dst, &src, 1); + REPORTER_ASSERT(r, dst == 0); + SkOpts::premul_swaprb_xxxa(&dst, &src, 1); + REPORTER_ASSERT(r, dst == 0); + } + + // check a totally arbitrary color + src = 0xFACEB004; + SkOpts::premul_xxxa(&dst, &src, 1); + REPORTER_ASSERT(r, dst == 0xFACAAD04); + + // swap red and blue + SkOpts::swaprb_xxxa(&dst, &src, 1); + REPORTER_ASSERT(r, dst == 0xFA04B0CE); + + // all together now + SkOpts::premul_swaprb_xxxa(&dst, &src, 1); + REPORTER_ASSERT(r, dst == 0xFA04ADCA); +} |