Chromium Code Reviews| Index: src/core/SkOpts.cpp |
| diff --git a/src/core/SkOpts.cpp b/src/core/SkOpts.cpp |
| index ee88b231690b0e8d7f0cd895a9609f9bf680235b..e8408bef0caca130386c7a52af695d7bce8a24d4 100644 |
| --- a/src/core/SkOpts.cpp |
| +++ b/src/core/SkOpts.cpp |
| @@ -16,6 +16,7 @@ |
| #include "SkFloatingPoint_opts.h" |
| #include "SkMatrix_opts.h" |
| #include "SkMorphologyImageFilter_opts.h" |
| +#include "SkSwizzler_opts.h" |
| #include "SkTextureCompressor_opts.h" |
| #include "SkUtils_opts.h" |
| #include "SkXfermode_opts.h" |
| @@ -49,58 +50,6 @@ |
| #include <cpu-features.h> |
| #endif |
| -namespace sk_default { |
| - |
| -// These variable names in these functions just pretend the input is BGRA. |
| -// They work fine with both RGBA and BGRA. |
| - |
| -static void premul_xxxa(uint32_t dst[], const uint32_t src[], int count) { |
| - for (int i = 0; i < count; i++) { |
| - uint8_t a = src[i] >> 24, |
| - r = src[i] >> 16, |
| - g = src[i] >> 8, |
| - b = src[i] >> 0; |
| - r = (r*a+127)/255; |
| - g = (g*a+127)/255; |
| - b = (b*a+127)/255; |
| - dst[i] = (uint32_t)a << 24 |
| - | (uint32_t)r << 16 |
| - | (uint32_t)g << 8 |
| - | (uint32_t)b << 0; |
| - } |
| -} |
| - |
| -static void swaprb_xxxa(uint32_t dst[], const uint32_t src[], int count) { |
| - for (int i = 0; i < count; i++) { |
| - uint8_t a = src[i] >> 24, |
| - r = src[i] >> 16, |
| - g = src[i] >> 8, |
| - b = src[i] >> 0; |
| - dst[i] = (uint32_t)a << 24 |
| - | (uint32_t)b << 16 |
| - | (uint32_t)g << 8 |
| - | (uint32_t)r << 0; |
| - } |
| -} |
| - |
| -static void premul_swaprb_xxxa(uint32_t dst[], const uint32_t src[], int count) { |
| - for (int i = 0; i < count; i++) { |
| - uint8_t a = src[i] >> 24, |
| - r = src[i] >> 16, |
| - g = src[i] >> 8, |
| - b = src[i] >> 0; |
| - r = (r*a+127)/255; |
| - g = (g*a+127)/255; |
| - b = (b*a+127)/255; |
| - dst[i] = (uint32_t)a << 24 |
| - | (uint32_t)b << 16 |
| - | (uint32_t)g << 8 |
| - | (uint32_t)r << 0; |
| - } |
| -} |
| - |
| -} // namespace sk_default |
| - |
| namespace SkOpts { |
| // Define default function pointer values here... |
| // If our global compile options are set high enough, these defaults might even be |
| @@ -132,9 +81,9 @@ namespace SkOpts { |
| decltype(matrix_scale_translate) matrix_scale_translate = sk_default::matrix_scale_translate; |
| decltype(matrix_affine) matrix_affine = sk_default::matrix_affine; |
| - decltype( premul_xxxa) premul_xxxa = sk_default:: premul_xxxa; |
| - decltype( swaprb_xxxa) swaprb_xxxa = sk_default:: swaprb_xxxa; |
| - decltype(premul_swaprb_xxxa) premul_swaprb_xxxa = sk_default::premul_swaprb_xxxa; |
| + decltype( premul_xxxa) premul_xxxa = sk_default::premul_xxxa<false>; |
|
mtklein
2016/01/13 17:04:36
I'd prefer to add shims to SkSwizzler_opts.h to ke
msarett
2016/01/13 18:52:05
Agreed on all counts! Done.
|
| + decltype( swaprb_xxxa) swaprb_xxxa = sk_default::swaprb_xxxa; |
| + decltype(premul_swaprb_xxxa) premul_swaprb_xxxa = sk_default::premul_xxxa<true>; |
| // Each Init_foo() is defined in src/opts/SkOpts_foo.cpp. |
| void Init_ssse3(); |